Перейти к содержанию
    

GriXa

Свой
  • Постов

    54
  • Зарегистрирован

  • Посещение

Весь контент GriXa


  1. Да, проект под ПЛИС Вам придётся переделывать заново - у Lattice семейства ECP нет встроенного PCIE-контроллера. Есть только блок сериалайзера-десериалайзера, а само ядро PCIE выполнено с помощью логического IP-блока. Ещё рекомендую Вам узнать отдельно цену ядра, оно не бесплатное. Так же в зависимости от сложности остальной части проекта следует проверить его реализуемость под конкретно выбранную ПЛИС - ядро PCIE, в зависимости от конфигурации, может занимать от ~6K до ~14K ячеек.
  2. А, да, извиняюсь, не посмотрели и неправильный скриншот отправил.
  3. Проект, в котором я обновлял память процессора *.mem - файлом, к сожалению, восстановить сейчас не удастся. Но там я BRAM подключал не вручную, он автоматически генерировался при создании ядра mico-процессора. В top-файле я использовал лишь instance всего ядра. Сейчас я попробовал создать тестовую память в Clarity Designer с такими параметрами: Подгрузил к ней инициализирующий mem-файл: После компилляции в ECO-editor'е ещё раз попробовал подцепить этот файл, вроде всё получилось удачно: Я пишу на VHDL, кусок кода с BRAM-памятью выглядит у меня так: test_mem_inst : entity work.test_mem port map( WrAddress => (others => '0'), RdAddress => q_ra.read_addr(8 downto 0), Data => (others => '0'), WE => '0', RdClock => clk_100, RdClockEn => '1', Reset => rst, WrClock => rx_pclk_1, WrClockEn => '1', Q => mem_data_out );
  4. Я использовал ECO-editor для обновления BRAM-блоков с программой для MICO32 soft-процессора. Elf-бинарник, создаваемый при компиляции сишного проекта, конвертировал в *.mem файл и обновлял с помощью ECO-editor'a. Diamond весьма капризный в плане подключения подобных файлов. Можно для начала попробовать поработать с mem-редактором. Создать новый Memory File (File -> New -> File... -> Others Files -> Memory Files) и поэксперементировать с разными форматами, размерностями и прочим.
  5. Да, можно. Для этого есть ECO-Editor. Во вкладке Memory Initialization можно выбрать необходимый BRAM, добавить файл инициализации, сохранить и сгенерировать заново бинарник. В ECO-Editor'e можно изменять так же параметры многих других компонент ПЛИСины.
  6. Добрый день! Озвучьте, пожалуйста, каой САПР планируется использовать? Судя по изображениям Altium?
  7. Это анализатор протокола Summit T24 от Teledyne. Софт - Teledyne LeCroy PCIe Protocol Suite
  8. Добрый день! Возникла следующая проблема. ПЛИС Lattice ECP5UM, PCIExpress Core v6.5 подключен к COM-модулю. В ПЛИС работает таймер, который вызывает прерывание 0. После прерывания необходимо сбросить флаг состояния. Если писать в этот регистр напрямую через JTAG, всё работает нормально. Если это происходить при загрузке ОС, ПЛИС шлёт третее прерывание с неправильным номером пакета на Data Link уровне. Картинка с анализатора прикреплена ниже. После отправки пакета с неправильным номером, CPU отвечает NAK-пакетом. ПЛИС повторяет попытку еще два раза, затем уходит в LinkTraining, затем повторяет попытку с неправильным номером и так до бесконечности. Абсолютно не понятно, почему ядро в этом случае пропускает один номер. И всегда на третьем прерывании. Кто-нибудь сталкивался с подобным поведением?
  9. Да, именно так. С помощью этого скрипта так же автоматически увеличивается номер версии и дата компилляции. Удобно при чтении регистров узнавать какая именно версия загружена в ПЛИС.
  10. Для таких случаев использую отдельный *_pkg.vhd файл, в котором указываю необходимые константы. Tcl-скрипт парсит этот файл, подставляет нужные значения, и, к примеру, запускает компилляцию. В проекте в качестве generic-значения присваиваю эту константу. Можно так же и в top-файле это делать, но на мой взгляд настраиваемые переменные удобнее держать в одном файле.
  11. В своих проектах использую tcl скрипты для автоматического добавления номера версии и времени компиляции проекта. К примеру, в регистре сохраняется версия прошивки и дата-время компиляции. Для golden и working версии она может быть разная. Пример такого файла на vhdl Скрипт создает этот файл, потом запускает компиляцию. При каждой последующей компиляции увеличивает, к примеру, счетчик версий и изменяет время на текущее. После успешной компиляции - копирует текущую прошивку в отдельную папку с названием, соответствующим данной прошивке. Что-то типа name_working_v12.bit
  12. Добрый день! Содержание документа не смотрел, но рассылать резюме было бы предпочтительнее в pdf-формате.
  13. Поделитесь, пожалуйста, какие именно баги в работе ПО анализатора Summit T28 Вы обнаружили?
  14. Есть замечательная книга под названием "Advanced FPGA Design Architecture, Implementation, and Optimization" Steve Kilts. ISBN 978-0-470-05437-6 В книге показано на примерах, как структура дизайна влияет на скорость/пропускную способность/задержки в проекте. Мне показалось, что там подробно расписано, в каких случаях удобно использовать FSM, где лучше использовать тонну комбинаторной логики, а где кучу маленьких процессов. Если для описания используется VHDL, то Вам, возможно, было бы интересно обратить внимание еще на Two Process Method (Jiri Gaisler).
  15. Добрый день! Использую ПЛИС от Lattice (MACHXO3). В верхнем модуле в качестве входов-выходов хочу использовать type record. Проблема в том, что если в Diamond установить в качестве синтезатора Sinplify, он не сохраняет название сети. К примеру, есть *_pkg.vhd, где у меня описан type: package pkg1 is type t_my_type is record test_input_1 : std_logic; test_input_2 : std_logic; test_input_3 : std_logic; end record end package pkg1; В *_top.vhd использую этот тип: entity test is port ( .... .... group1 : out t_my_type; .... ); end entity test; В итоге, после синтеза имею для этих выходов следующие имена цепей: group1[0] group1[1] group1[2] А хотелось бы, что бы сохранялось полное имя типа group1.test_input_1 group1.test_input_2 group1.test_input_3 Lattice LSE сохраняет имена как надо, но можно ли сделать подобное в Synplify?
  16. Не могу ответить на этот вопрос. Работаю только с VHDL. Про SV пишут следующее. Так что высока вероятность, что нет. Использование синплифай это, безусловно, достоинство. Вот только если через годик-другой они его вдруг выкинут из Diamond'а, то могут появиться проблемы со старыми дизайнами. Результаты синтеза Синплифая и Даймонда отличаются как по используемым в ПЛИС ресурсам, так и по времянкам.
  17. Все в Лэтисах хорошо, только 1. Сырой родной софт для синтеза. Поэтому они встраивают в свой Даймонд Синплифай. Часто Синплифай дает лучшие результаты. Есть весьма забавный баг с FSM в LSE-синтезаторе. Будут ли они в будущем отказываться от Синплифая - неизвестно. И эта неизвестность немножко напрягает. 2. Очень мало примеров и обучающих материалов. Не сравниться с Ксайлинксом или Альтерой. 3. Сыроватая документация. Можно встретить в двух разных документах противоречащие утверждения. 4. Недоработанная автоматизация сборки проекта. Невозможно с помощью скрипта генерировать IP ядра для ECP5. Вот-вот должно выйти обновление для Даймонда. Быть может часть недоработок в ней будет исправлена. Но в итоге вполне себе хорошие ПЛИСЫ по очень приятной цене.
  18. А если взять ПЛИС с PCIExpress и прописать в Configruation Header Class Code 0x07 - Simple Communication Controller, Sub-Class 0x00 Interface 0x01 ... 0x06 16xxx-compatible А дальше к нему прикрутить контроллер, к примеру контроллер 16650, то может он сможет автоматически распознаваться в UEFI?
  19. Вы имеете в виду гербера? Они есть в формате pdf на официальном сайте
  20. По поводу библиотек, как уже написал Tausinov, нельзя совместно использовать ieee.numeric_std и std_logic_arith. Как пишут здесь, "The alternative numeric package ieee.std_logic_arith should not be used for new designs" Ну и тут подробнее: http://insights.sigasi.com/tech/deprecated...-libraries.html. Для преобразовываете std_logic_vector в signed или unsigned и наоборот, удобно пользоваться шпаргалкой.
  21. Добрый день. Проблема может быть в неправильной времянке, неправильно подключеных пинах и еще во многом другом. Я бы Вам посоветовал пощупать это дело осциллографом, чтобы убедиться, что все остальное функционирует соглсано ожиданиям.
  22. К сожалению, помочь разобраться не могу. Волею судеб Линукс и Зедборд лежат на полке. Их место занял Лэттис и PCIE.
  23. Неплохие материалы для освоения Зинки в целом и Линукса в нем: http://www.googoolia.com/wp/2014/10/29/les...m-host-of-zynq/ https://embeddedcentric.com/zynq-training-course/ https://embeddedcentric.com/embedded-operating-systems/ И еще немножко тут: https://forums.xilinx.com/t5/Xcell-Daily-Bl...ded/ba-p/651297
  24. Добрый день! Мне кажется, с помощью простых if и else, парсер сделать крайне затруднительно. Нужно думать в сторону сложной комбинаторики, функций и for ... loop'ов Подобный парсер видел для SPI интерфейса. Решение для VHDL было весьма изящно, на мой взгляд. Для модуля создавался package, в котором с помощью констант и type были описаны параметры строковых данных. К примеру, package parser_pkg is --! maximum length of data packet constant MAX_DATA_LEN : integer := 54; -- Serial communication constants --! message is from command interface constant SER_COM_CMD_INTF_TYPE : std_logic_vector(7 downto 0) := X"55"; -- ... куча других констант --! command data structure type cmd_t is record --! message command cmd : std_logic_vector(15 downto 0); --! message type msg_type : bc_msg_type_t; --! interface intf_type : bc_intf_type_t; --! message length msg_len : integer range 0 to MAX_DATA_LEN; --! answer code answer : std_logic_vector(15 downto 0); --! answer length answer_len : integer range 0 to MAX_DATA_LEN; --! target host FPGA (Master / Slave) target_host: target_host_t; end record cmd_t; constant CMD_MIO_DUMMY : std_logic_vector(15 downto 0) := X"0000"; --! dummy command to reset interface type cmd_arr is array(integer range <>) of cmd_t; -- List of all supported commands with length (in bytes) and category constant BC_CMD_CMD_LIST : bc_cmd_arr := ( (CMD_MIO_DUMMY, MIO, CMD_INTF,0,EC_OK,0,BOTH), (CMD_MIO_GETNBTIMMEAS, MIO, CMD_INTF,0,EC_OK,2,SINGLE), (CMD_MIO_GETSTATUS, MIO, CMD_INTF,0,EC_OK,2,SINGLE), (CMD_MIO_GETLKDMODINF, MIO, CMD_INTF,4,EC_OK,12,SINGLE), (CMD_MIO_GETNBLKDMOD, MIO, CMD_INTF,0,EC_OK,2,SINGLE), (CMD_MIO_STOREUID, MIO, CMD_INTF,6,EC_OK,0,BOTH), (CMD_MIO_GETUID,MIO, CMD_INTF,0,EC_OK,6,SINGLE), (CMD_MIO_GETVERSION,MIO, CMD_INTF,0,EC_OK,8,SINGLE), (CMD_MIO_GETERRORCODE,MIO, CMD_INTF,0,EC_OK,4,SINGLE), (CMD_MIO_GETHWINF,MIO, CMD_INTF,0,EC_OK,52,BOTH), (CMD_MIO_DECLAREMASTER,SCO,CMD_INTF,16,EC_OK,12,BOTH), (CMD_MIO_STARTSAFECOM,SCO,CMD_INTF,0,EC_OK,0,BOTH), (CMD_MIO_TAKECFGDATA,SCO,CMD_INTF,24,EC_OK,0,BOTH), (CMD_MIO_STORECFGDATA,SCO,CMD_INTF,0,EC_OK,0,BOTH) ); -- далее следует огромный список функций для работы с командами, к примеру: -- Function declaration --! @details Get command message properties --! --! InP: Command --! OutP: message properties function get_bc_cmd_cmd (cmd : std_logic_vector(15 downto 0)) return cmd_t; end package parser_pkg; Подобные функции используются в State Machine для реализации парсера. Получился большой блок комбинаторной логики. К счастью, он работал лишь на частотах меньше 50МГц.
  25. Не нашел такой темы в этой ветке, потому создал новую. Анонс новости на Digi-Key : https://www.digikey.com/en/news/press-relea...d-pads-makerpro Тут есть документация : https://eewiki.net/display/MentorGraphicsDo...umentation+Home
×
×
  • Создать...