Jump to content

    

BSACPLD

Свой
  • Content Count

    573
  • Joined

  • Last visited

Everything posted by BSACPLD


  1. Сколько стоит STM32 и сколько FPGA? https://efind.ru/offer/STM32F103 https://efind.ru/offer/10M25 Разница в десять раз! Любой коммерческий проект требует минимальной себестоимости изделия.
  2. Это Вам нужно уточнить у StewartLittle У меня есть цены только за 1 шт. Лучше запросите у него - не знаю, можно ли в открытую публиковать здесь цены...
  3. SAE - есть возможность инициализации RAM из flash. SCE - нет возможности инициализации RAM, соответственно модуль перекачивающий данные из flash в RAM придется писать самостоятельно, что тоже съест часть ресурсов. А сами чипы в 4-5 раз дешевле аналогичных от Intel. Ничто не мешает сделать плату самостоятельно, а не покупать готовую :) Я как раз заказываю себе несколько штук GW2AR-18 чтобы попробовать перевести на них один из своих проектов. На отладочной плате наигрался, теперь буду пробовать делать свои платы. Так сказать от теории перехожу к практике. У Intel и Xilinx регистрация также обязательна когда дело доходит до скачивания среды разработки. GW2A18, GW1NR9.
  4. Да не особо. Есть конечно ряд нюансов связанных с кривизной отладчика и недопиленностью среды разработки, но, как говорится, жить можно. Вот вариант моего AVR для GOWIN под отладочную плату DK-START-GW2A18. https://yadi.sk/d/hzP1aN1GN5kkpQ В проекте реализован простейший пример с Ethernet и прерыванием от кнопки. Возможность патчить битстрим GOWIN пока так и не реализовали, поэтому я сделал загрузку через UART (см. папку tools), чтобы не пересобирать проект каждый раз после смены прошивки CPU.
  5. Где купили если не секрет? Я сами отладки покупал, а вот чипов в продаже нигде не видел :(
  6. Еще важный момент. Нужно брать ПЛИС с маркировкой SAE. С SCE просто так не получится - у них нет возможности инициализировать RAM начальными значениями (прошивка). Порт для динамической смены прошивки в моем AVR есть, но придется добавлять логику для работы с UFM (перекачивание прошивки из UFM в RAM). А она тоже место съест.
  7. Не пойдет. 2195 это только ядро с обрезанными командами. Еще же нужен мультиплексор шины данных. Он тоже место занимает. И запас на разводку в зависимости от настроек. Вот Вам скриншот для понимания масштаба проблемы. 2749 при оптимизации по тактовой частоте. Это с полным ядром где из периферии только калькулятор CRC и сторожевой таймер. Обратите внимание, что при оптимизации по скорости ядро распухло до 2358 LUT. Поэтому я и говорю, что запас по логической емкости нужен как минимум 30-40% от оценочного значения.
  8. Команды как раз поддержаны все необходимые. Различия в периферии. Вообще этот проект это именно ядро. Периферию каждый пользователь может делать свою, какая ему требуется. Нет смысла повторять оригинальную периферию, когда можно сделать ее "под задачу" и упростить прошивку CPU. Вы имеете ввиду прошивку CPU? Нет. Прошивка добавляется в образ памяти команд средствами Quartus. Отдельный программатор для AVR не нужен. Все шьется через USB-Blaster. Конечно не мешает. Это просто отдельный сигнал индицирующий, что передатчик в данный момент активен. Можно. EPROM в ПЛИС нет. Только FLASH. И доступ к ней очень сильно различается в зависимости от выбранного семейства ПЛИС.
  9. Да нет. Просто практика показала, что только в двух проектах было оправданно делать на ассемблере. И то из-за того, что на процессор положили то, что не влезло в логику по причине выбора слишком маленькой ПЛИС. Во всех остальных проектах было удобнее на C, т.к. небольшая потеря в производительности была абсолютно не критична. Сразу замечу, что периферия у меня своя - готовые драйвера от Arduino не подойдут. В SPI, например, сделана двойная буферизация - позволяет слать байты вплотную друг к другу (было нужно для обхода бага в одном Ethernet SPI контроллере). В UART добавлен отдельный сигнал для управления драйвером RS485. Количество бит можно задавать от 1 до 9. Время исполнения команд также отличается (в лучшую сторону). Настройка прерываний тоже нестандартная. У меня они не по фиксированным адресам, а программируемые - экономия 2 тактов при входе в прерывание за счёт отсутствия команды rjmp для перехода с вектора прерывания на подпрограмму обработки прерывания. Т.е. адрес вектора прерывания настраивается сразу на адрес функции обработчика прерывания.
  10. Это чисто ядро без периферии. Полноценный UART еще примерно 300 LUT. Я бы рекомендовал брать 10M08. Так если на C писать, то какая разница? Или у Вас ассемблер? :) Из готовых можете посмотреть платы от Trenz Electronic (не реклама!). https://shop.trenz-electronic.de/en/TEI0001-03-08-C8-MAX1000-IoT-Maker-Board-8kLE-8-MByte-RAM?c=467
  11. Маловата ПЛИС для AVR ядра. Я пробовал обрезать свой AVR по системе команд, но в MAX 10 меньше 2195 LUT на ядро не получалось. Вам лучше посмотреть в сторону risc16f84. https://github.com/freecores/risc16f84 Он намного меньше AVR.
  12. А что нужно подредактировать?
  13. Маркировка как раз взята с их сайта. Это ответные разъёмы для SoM. Санкции. Напрямую работать с нами не хотят.
  14. Коллеги, подскажите, пожалуйста, в чем может быть проблема. Есть проект в Vivado 2019.2 без каких-либо IP от Xilinx кроме MMCM. Проект нормально собирается и генерится *.mmi файл для памяти объявленной через XPM макрос. Память объявлена следующим образом: xpm_memory_spram #( .ADDR_WIDTH_A ($clog2(DATA_SIZE)), .AUTO_SLEEP_TIME (0), .BYTE_WRITE_WIDTH_A (DATA_WIDTH+DATA_WIDTH/8), .CASCADE_HEIGHT (0), .ECC_MODE ("no_ecc"), .MEMORY_INIT_FILE (INIT_FILE), .MEMORY_INIT_PARAM ("0"), .MEMORY_OPTIMIZATION ("false"), .MEMORY_PRIMITIVE ("block"), .MEMORY_SIZE ((DATA_WIDTH+DATA_WIDTH/8)*DATA_SIZE), .MESSAGE_CONTROL (0), .READ_DATA_WIDTH_A (DATA_WIDTH+DATA_WIDTH/8), .READ_LATENCY_A (2), .READ_RESET_VALUE_A ("0"), .RST_MODE_A ("ASYNC"), .SIM_ASSERT_CHK (0), .USE_MEM_INIT (1), .WAKEUP_TIME ("disable_sleep"), .WRITE_DATA_WIDTH_A (DATA_WIDTH+DATA_WIDTH/8), .WRITE_MODE_A ("no_change") ) program_ram ( .dbiterra (), .douta (q_), .sbiterra (), .addra (address), .clka (clock), .dina (data_), .ena (1'b1), .injectdbiterra (1'b0), .injectsbiterra (1'b0), .regcea (1'b1), .rsta (1'b0), .sleep (1'b0), .wea (wren) ) ; Стоит мне только добавить в проект AXI Quad SPI, как Vivado перестает генерить *.mmi файл при сборке проекта. Память не оптимизируется, проект нормально работает, но нет *.mmi файла... Если запустить write_mem_info -force xc7a_test_eth.mmi то выдается ошибка INFO: [Memdata 28-208] The XPM instance: <axi_qspi_sys_0/U0/NO_DUAL_QUAD_MODE.QSPI_NORMAL/QSPI_LEGACY_MD_GEN.QSPI_CORE_INTERFACE_I/FIFO_EXISTS.TX_FIFO_II/xpm_fifo_instance.xpm_fifo_async_inst/gnuram_async_fifo.xpm_fifo_base_inst/gen_sdpram.xpm_memory_base_inst> is part of IP: <axi_qspi_sys_0>. This XPM instance will be excluded from the .mmi because updatemem is prohibited from making changes to an XPM that is part of an IP. INFO: [Memdata 28-208] The XPM instance: <axi_qspi_sys_0/U0/NO_DUAL_QUAD_MODE.QSPI_NORMAL/QSPI_LEGACY_MD_GEN.QSPI_CORE_INTERFACE_I/FIFO_EXISTS.RX_FIFO_II/gnuram_async_fifo.xpm_fifo_base_inst/gen_sdpram.xpm_memory_base_inst> is part of IP: <axi_qspi_sys_0>. This XPM instance will be excluded from the .mmi because updatemem is prohibited from making changes to an XPM that is part of an IP. ERROR: [Common 17-69] Command failed: Failed to create the: /home/sergey/Work/DevKit/Artix/xc7a_test_eth/xc7a_test_eth.mmi file. You will not be able to use the updatemem program to update the bitstream with new data. Проблема возникает только после добавления данного IP с включенным FIFO. Если FIFO выключить, то такой проблемы не возникает. В чем может быть дело?
  15. Коллеги, подскажите пожалуйста, существуют ли аналоги (клоны) следующих разъёмов: Samtec Razor Beam REF-189016-02, LF-04.0, 100 pins, for all 4x5 SoMs Samtec Razor Beam REF-189017-02, LF-04.0, 60 Pins, for all 4x5 SoMs Есть определенные проблемы с их закупкой...
  16. Коллеги, пытаюсь запустить тестбенч с моделью M95XXX с сайта ST. Файлы компилируются без ошибок, но при запуске моделирования получаю кучу ошибок вида: (vopt-7063) Failed to find 'M95XXX_SIM' in hierarchical name 'M95XXX_SIM.M95XXX_Macro_mux.tHLQZ'. Моделирование запускаю через: vsim -gui -voptargs="+acc" work.test ModelSim SE-64 2019.2 Можно ли как-то победить данную проблему?
  17. Дело в том, что в некоторых моделях для симуляции той же DDR, timescale может стоять отличным от того что хотите Вы и он переопределит шаг временного моделирования во всех нижестоящих файлах. Если это память программ, то да. Ее нужно инициализировать. А во всех остальных случаях это лишь потенциальное место для некорректного состояния системы из которого она может никогда не выйти. Вот X как раз и нужны для проверки того как система выходит из некорректных состояний.
  18. Так ведь нехороший человек может и не вписать себя в шапку ;) Для таких случаев как раз и есть svn / git и другие системы контроля версий.
  19. Коллеги, существует ли литература / сайты где подробно описаны основные правила хорошего тона при проектировании под FPGA? - что рекомендуется делать. - что не рекомендуется. - за что бить по рукам. Самому как-то лень писать, да и я тоже могу чего-нибудь не знать... Лично для себя я выработал следующий набор правил: - полностью синхронный проект, асинхронные блоки допускаются только если я точно понимаю как это будет работать, как обконстрейнить и их количество должно стремится к нулю. - чем меньше разных тактовых доменов, тем лучше. - для понижения частоты работы блоков использовать clock enable, а не generated clock. - асинхронный сброс при отпускании должен быть синхронизирован с тактовой частотой триггеров которые он сбрасывает. - все переменные объявляются в начале файла, а не по мере их использования. - все переменные объявляются явно. - для знаковых чисел указывается их знаковость (signed). - аппаратно зависимые блоки оборачиваются во врапперы. - никаких LPM в проекте (Altera/Intel). - никакой схематики и устаревших языков (исключение Block Design в Xilinx и QSYS в Altera). - по возможности использовать стандартные шины (APB, AXI, Avalon, Wishbone). - код пишется максимально кроссплатформенным и параметризованным. - в начале файла обязательно налиличе timescale. - все переменные инициализируются X при моделировании. - код проверяется на соответствие стандарту в ModelSim/NCSim. Это так сказать набор правил выработанный за долгие годы работы, но не факт что он полный / достаточный. Хотелось бы почитать подходящую литературу и узнать мнение знающих людей.
  20. Поставил VX2.7 есть пара вопрсов. - как переключить язык на Английский? В схемном редакторе нашел, а вот Layout никак не могу найти :( - куда пропали кнопки переключения режима выделения Place, Route, Draw и как включить их отображение?
  21. Под 1G есть стандартные покупные свичи под тот же CompactPCI, например. https://www.kontron.com/products/boards-and-standard-form-factors/cpci/6u-switches/cp6925.html И там стандартизована разводка (какие дифпары на какие пины). См. стандарт PICMG 2.16. Сам Ethernet обычный 1000Base-T на медь через трасформатор. Я делал платы как раз для такого форм-фактора. PHY был 88E1111. Работало на ура без каких-либо проблем.
  22. Да там не только плату, а саму идеологию передачи данных нужно переделывать :(