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

des00

Модератор
  • Постов

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

  • Победитель дней

    4

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


  1. для синтеза без разницы, но ИМХО если смотреть с точки зрения оптимизации по скорости моделирования, то генерейт работает быстрее, т.к.в этом случае нет перебора всех вариантов на каждом шаге. Когда то давно я мерил сие профайлером в альдеке и сделал такой вывод %) Хотя сейчас может быть все сменилось с точностью до наоборот.
  2. немного добавлю вообще это фича всей динамической памяти. об этом в даташите на память всегда подробно расписано %) в вот реализация нечетных масок на ддр возможная но достаточно геморойная, да и не нужна она в большинстве случаев, т.к. обычно, с точки зрения системы, память видится как 2*DDR_DATA_W. А вот четные маски не помешали бы :)
  3. ИМХО "серебряной пули" на все случаи жизни здесь нет. В каждом конкретном случае оптимальное решение будет свое, при этом оно будет зависеть не только от способа кодирования КА, но и от его взаимодействия с окружающей средой. Более того гонка за площадью может выглядеть по разному(миниму триггеров, минимум логики) и не всегда имеет смысл, ИМХО тут важна оптимальность. Ну а решение об уровне оптимальности каждый принимает сам, исходя из ТЗ, предпочтений, опыта и т.д.
  4. позвольте угадать, вам нужны счетчики на часовом кварце?
  5. раскажите для повышения образованности, а какую теорию и алгоритмы вы имели в виду ? правила всех арифметических операций однозначно вытекают из определения форматов чисел. И какой именно сравнительный анализ вы имели в виду? Сравнивать что лучше плавучка или фиксированная точка в общем смысле? но на этот вопрос можно дать однозначный ответ %)
  6. а как же наши поделки? не помню кто анонсировал 3-х башковый чипак (2DSP + CPU, вроде звали его Гидра) с AMBA AXI кросс свичем на 3 порта, если мне память не изменяет там вся переферия была ММ.
  7. это одномерный упакованный массив, который квартус всегда поддерживал. Если бы он этого не делал, тогда никакой бы V код, не собирался в нем в режиме SV. В SV отказались от понятия вектор, которое было введено в V, для общности изложения. А квартус имел проблемы с поддержкой многомерных упакованных массивов. Т.е. говоря языком кода logic [7:0] a; в V это 8 ми разрядный вектор, в SV формально одномерный упакованный массив :: вектор logic [3:0][7:0] а; в V такой конструкции нет, в SV это многомерный упакованный массив, который в 8 ой версии поддерживался не корректно logic [7:0] a [3:0]; в V это память :: одномерный массив векторов, в SV это одномерный неупакованный массив одномерных упакованных массивов :: одномерный массив векторов. 1 можно использовать в V свободно 3 можно использовать в V свободно, но не в портах (!!!) о чем весь сыр бор. 1-3 можно использовать в SV свободно, где угодно.
  8. угу, теперь еще учтем что что b и с в нашем случае вектора, и в итоге получим c <= ({8{a} & b) | (~{8{a}} & c); а если разрядности векторов были еще и плавающие, то запись будет еще интереснее и через год/два самое главное вспомнить что имелось в виду %) ЗЫ. такой способ записи не одобряю %)
  9. хммм, может я что-то не понимаю, но у меня на поиск по имени, по сорцам уходит максимум минуты 2-3. потом внимательно читаю что написано между источником и приемником и вуаля, сразу видно затык %) Да и Technology Mapper, если пользоваться фильтрами на источник, приемник позволяет вытащить промежуточную логику.
  10. Не знаю как вы смотрите, у меня всегда таймквест пишет полное иерархическое имя источника и приемника, для которых измерен путь. Нет никаких сложностей сопоставить что к чему. смотря какие констрейны. разрабатывая RTL общего применения я пишу вообще без опоры на какие либо констрейны, но с учетом предполагаемых тактовых частот.
  11. вы бы хоть стандарт почитали что ли, всего ~200 страниц(в SV ~1500 страниц), из которых вам надо страниц 20. if step_driver_set(i) = '1' then end_reg(i)(7 downto 0) <= fd; end if; и в цикл это, а лучше в generate
  12. да есть такие фанаты, которым надо передать кадры без потерь на синху а отдельную линию под строб зажали...
  13. в данном примере упакованных массивов нет, а по сабжу никак Xilinx не поддерживает SV и в ближайшее время не будет.
  14. +1 и через этот же разъем логику диагностики %) кстати по идее можно использовать jtag разъем, который к плис подключен.
  15. inLineNumber: in std_logic_vector(natural(CEIL(LOG2(real(BUS_WIDTH))))-1 downto 0); .... outCountedSignal <= std_logic_vector(to_unsigned(natural(cntVal), CLK_WIDTH)); мы не ищем легких путей %)))
  16. module sum_test (input shortint a, b, output shortint c); assign c = a + b + 7 + 25; endmodule вы аттач имеете в виду ? тогда объясните как квартус реализовал это все на ЗЫ. RTL это не то что синтезируется %)
  17. любые книги об оптимизации, например библия Дугласа Смита HDL chip Design или Advanced FPGA Design Architecture, Implementation, and Optimization. Затем обычная логика здравого смысла + эксперементы с синтезатором, опираясь на даташит целевой фпга.
  18. насколько я в курсе, никак вы это не сделаете. Если собираете из исходников, то в проекте нужна ссылка на исходные файлы. При этом не обязательно подключать эти файлы к проекту, можно прописать пути до библиотек. Единственный известный мне вариант, это импорт нетлиста vqm/qxp, но этот вариант чреват бОльшими ограничениями как по семействам плис, так и по софту. на форуме были масштабные обсуждения методологии разработки и управления большими ХДЛ проектами, пользуйтесь поиском.
  19. в своих проектах встречал такое поведение, как раз из-за того что синхронизаторы, в некоторых случаях, ставило раком. как я понял вы интуитивно нашли способ "лечения" вопроса и порекомендовал вам еще раз проверить логику работы вашего синхронизатора. ИМХО где-то есть неучтенная логическая ветка, которая стреляет в некоторых условиях.
  20. vqm можно только для старых семейств сделать, да и то не для всех. можно его подключить к bdf символу.
  21. потому как синтезатор видит в хдл коде, что вам нужна задержка в 1 такт, и именно один. Потому то он ничего и не может сделать. Поставте задержку 3 такта и разрешите ретйминг, будут те же яйца что и при синтезе с си. Но зато вы точно будете знать что задержка этого сумматора 3 такта, а не плавающая как при синтезе с Си. для таких вещей лучше подходит матлаб с симулинком %)
  22. используйте оптимизацию. Примеры для квесты, с разным уровнем оптимизации лежат там
  23. дык в чем проблема ? :) используйте "ленивые классы" чистого верилога %) пишете модуль, у него нужные порты, в нем таски, функции, внутренние константы и подключаете его как есть в топ модуль %) можно и без портов %) а потом ... ms.config_control_memory_map(CONTROL_REG1, SIZE); ..... ms.write_control_reg(vRegFPGA); tmp = ms.read_control_reg(); кстати яник в своих книгах по верилогу много так финтит %)
  24. Если вы не против то чуть приоткрою %) wire это не ошибка, это признак. Где то есть ситуация, когда ваш синхронизатор зависает и не может выбраться из патового состояния. Power Up Care как то влиял на вероятность этой ситуации.
  25. это же очевидно, если бы вы знали как делаются асинхронные фифо, то знали бы что на прерывающихся клоках (как в вашем случае) делать такие фифо нельзя %) Это же тоже очевидно, в максе II нет блоков памяти EAB, которые ждет этот компонент. Пройдитесь поиском по форуму, документы от гуру как делать такие фифо выкладывались многократно. Или почитайте доки как делаются такие фифо на сайте альтеры. Ну или хотя бы запустите RTL-Viewer на свой код и посмотрите из чего состоит компонент lpm_fifo_dc, остальные вопросы уйдут сами собой Удачи !!!
×
×
  • Создать...