ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
733340
Evgeny_CD, Архитектор (03.02.2017 03:39, просмотров: 6339)
[Основа] iCE40 - это действительно революция. Но чуть в другом. Почему стоит по новому посмотреть на использование FPGA в мире embedded. http://caxapa.ru/733339.html
http://caxapa.ru/733336.html
Я уже всем плешь проел, что такое iCE40. Типа за $2-$5 можно взять мелкую FPGA в мелкопоганистом корпусе, в которой есть всего понемножку - LUT, блочной памяти, даже DSP блоки в Ultra появились. Но все оно вроде бы как какое-то не такое: забабахаешь туда софткор - ресурсы и закончатся. Очень многие embedded задачи можно разбить на 2 части: * низкоуровневая подсистема hard RT * высокоуровневая soft RT система Для низкоровневого hard RT оптимальны - специализированные блоки на FPGA и программизм в "стиле asm": не обязательно прямо в лоб asm, но мыслить нужно на очень низком уровне, и хорошо понимать, сколько тактов будет выплняться каждая строка кода. На высоком уровне это вредно. Там уровень абстрации сильно выше, С, еще лучше C++ самое то. И когда мы в одной FPGA начинаем совмещать обе подсистемы, наступает экономическая неэффективность для массовых рынков. Апофеоз этого - SoC на Cortex-A9, которые стоят как жменя микроконтроллеров, а ресурсов там весьма немного. Либо много, но цена - как килограмм микроконтроллеров :) Например, мы делаем модем умеренной продвинутости (например, для проводной связи, 1Мбит/сек на несущей 1 МГц, BPSK). Нам надо: * отфильтровать входной сигнал в полосе частот * демодулировать * синхоронизироваться, выделить биты, получить битовый поток * реализовать протокол, который может быть весьма разлапистым. Берем мелкую плиску. ICE5LP2K-SG48ITR50 IC FPGA 39 I/O 48QFN 100 - $4.27 2048 LUT + Flip-Flop, 20 блоков по 512 байт памяти, 4 DSP Blocks (MULT16 with 32-bit Accumulator ICE5LP1K-SG48ITR50 1100 LUT + Flip-Flop, 16 блоков по 512 байт памяти, 2 DSP Blocks 100 - $3.28 Делаем там правильный 16 битный софткор ->, который командует DSP боками (фильтрация, демодулирование) и блоком синхронизации, чтобы получить битовый поток. Описанная выше задача не сильно сложна, ее не так и трудно написать на asm. Блочной памяти все это займет единицы блоков. С качественным симулированием тоже проблем не будет --> А дельше у нас стоит какой-нибудь Cortex-M*, который за $2-$3 дает 100 MIPS производительности (и которой в FPGA сожрал бы кучу ресурсов), который по SPI обменивается с ПЛИСкой и делает протокольную часть. На С или С++, любой симулятор на уровне битового потока сделать умеренно сложно, никаких особых техник не надо. Внешние ЦАП-АЦП при условии, что они SPI, имеют сейчас производительность до 4 MSPS и стоят $0.8...$3 (в зависимости от разрядности и прочего). Параметры у них, как правило, гораздо лучше MCUшных аналоговых блоков. Получаем BOM ~ $10, который довольно трудно переплюнуть другими методами. Если DSP часть не нужна, то цена становится куда интереснее. ICE40UL1K-CM36AI - 1248 LUT + Flip-Flop, 14 блоков по 512 байт памяти, 100 - 1.83. Да, корпус мелкопоганистый - но для серии это пережить можно.