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

Beby

Свой
  • Постов

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

  • Посещение

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

    1

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


  1. Ну, это я и имел в виду, только т.к. я пишу на VHDL, то синтаксис чуточку отличается. Нет тут никакой магии - тут мат. часть учить надо. Т.к. это же - synthesis constraint, то его описание находится не в cdg.pdf, а в соседнем xst.pdf. Соответственно, если использовать не синтезатор XST, то прийдётся читать другой документ, описывающий работу с тем другим синтезатором. Кстати, xst.pdf содержит массу полезной информации, поэтому обязательно с ним ознакомьтесь, для более правильного понимания: как и почему именно так происходит синтез у XST.
  2. Для локализации проблемы необходимы следующие уточнения: 1. Вы используете один источник частоты, или несколько ? 2. Если один - то constaint period задан на входную ножку/линию ? И правильно ли он проходит все PLL/DCM (см. timing report - Derived Clocks) ? 3. А заданы ли constaint'ы offset out для сигналов, поступающих на внешние микросхемы ? Используются ли output flip-flop для этих сигналов ? Как следствие: укладываются ли времянки этих сигналов в то, что требуется внешним микросхемам ? Но даже не зная ответы на эти вопросы, могу посоветовать в Process->Implementation->Place & Route->Post Place & Route Static Timing Report Properties задать Report Unconstraint Paths ну хотя бы с 200. Соответственно появится определённая секция Post Place & Route Static Timing Report. Тут можно поглядеть, что Вы не указали, и что ISE разводит как попало.
  3. Наверняка, я чего-то не знаю, но выхожу из ситуации так: делаю для N выходов N-битный регистр для сигнала OE. На N-битный выходной сигнал регистра накладываю synthersis constaint'ы equivalent register removal = no и iob = true.
  4. Для ознакомления с работой самих временных constraint'ов, Вам необходимо прочитать %xilinx%/doc/usenglish/books/docs/cgd/cgd.pdf Вот тут требуется уточнение: а для чего Вам это надо: 1. Если для задания временных соотношений на выходных I/O pins, то для этого необходимо использовать constraint offset out. 2. Если для задания временных соотношений на каких-либо внутренних линиях, то тут более должн подойти period на тактовый сигнал, стробирующий эти линии. 3. Если для задания временных соотношений на каких-либо внутренних линиях при переходах с одного clock domain в другой, то From to. Также в этом случае может понадобится constaint async_reg, облегчающий моделирование таких мерзких мест.
  5. Хорошо, можно считать, что у Вас не может быть проблем от перечечений версий ISE и ModelSim. Надеюсь, у Вас нет и пересечения Modelsim и Active HDL, т.к. про последний Вы не упомянули. Если Active HDL всё-таки стоит, но Вы не используете его для симуляции - то выкиньте из переменной окружения Path все записи связанные с AHDL. Я делал временное моделирование для V-5LXT, но на ISE 10.1SP3 и Modelsim SE 6.2f - всё было успешно. А вот с ISE 10.1SP3 и Modelsim SE 6.4b - даже при функциональном моделировании возникали проблемы. Вы указали Modelsim SE 6.5b, в местных закромах лежит Modelsim SE 6.5d. Попробуйте взять его - c Modelsim SE 6.5d у меня не было проблем с функциональным моделированием (возникавшие, с Modelsim SE 6.4b) ни с ISE 10.1SP3, ни с ISE 11.5. Может переход от B к D решит ваши проблемы. Также, у Вас используется ISE 11.3 - может быть, 11.4/11.5 смогут Вам помочь. Обратите внимание, есть known isues для 11.5 и V5xxT, которых не было в 11.4 (видать напортачили с V-5xxT, когда улучшали поддержку V-6).
  6. Пожалуйста, по конкретнее: какой ISE вы пользуетесь, и какие ISE еще стоят на Вашей машине ? какая именно FPGA ? какой именно Modelsim Вы используете, и какие еще стоят симуляторы ? откуда взяты библиотеки ? У меня были подобные проблемы на AHDL 7.3 с CoolRunner 1 (только у меня не VCC/GND, а BUF (на которых собирались задержки) глючили - т.е. имели всегда X на выходе) - если вкратце, то были проблемы с библиотеками.
  7. Ну, раз замечание направлено было мне, то, несмотря на то, что уже, в общем-то, интегральный ответ был дан, добавлю отсебятину. Насколько я понял, идёт выбор не между LUT4 и LUT6 (например, Staptan-3A LUT и Staptan-6 LUT), а выбор стоит между Cyclone IV LUT4 и Staptan-6 LUT6, необходимо иметь в виду множество аспектов, приведу некоторые: 1. Собираетесь ли Вы использовать (и насколько активно) distributed RAM, который есть в Staptan-6 и, если я не ошибаюсь, всё ещё нет в Cyclone IV. Если Вы собираетесь умеренно активно использовать distributed RAM, сможет ли его заменить Cyclone IV BlockRAM таким образом, чтобы еще оставались блоки памяти для других нужд. 2. Стоит иметь в виду, что в Xilinx Slice сигналы управления триггерами одни и те же для всей группы триггеров, т.е. в редких случаях вы будете терять 7 триггеров из 8 из-за необходимости использовать уникальный набор CE, RST и CLK. Хоть эти ситуации и редки, но они ситуации неизбежны. 3. Также надо иметь в виду, что 4 из 8 триггеров могут получать данные только с LUT5 ("нижней" половины LUT6) и поэтому не стоит рассчитывать, что они будут часто использоваться. 4. В тоже время есть возможность в пределах одного Slice независимо использовать 4 LUT6 (по 6 входных сигналов на каждый) и 4 триггера со своими четырьмя независимыми входными сигналами, обходящими LUT'ы. Насколько такое возможно в Cyclone IV - не знаю. P.S. Я плотно сижу на Xilinx, т.к. в моих интерфейсных задачах часто и обильно приходится использовать Distributed RAM, и если её пытаться сделать на Cyclone-x Block RAM, то просто похороню огромную кучу BRAM не использовав ёмкость каждого и на 50%. Отталкивайтесь от задач, которые Вам необходимо решать. А также от доставаемости (цены) ПЛИС теми партиями, которые Вам необходимы – это тоже может стать огромной проблемой.
  8. Господа-товарищи, а о чём спор то: какие/чьи попугаи (LE) более честные ?? - да ничьи ! Сначала появились попугаи, теперь эквивалентные попугаи... - бредятина какая-то. Оценивайте в LUTx, FF, BRAM, PLL по отдельности и не заводите никаких интегральных попугаев - всё равно невозможно выбрать универсальных весовых коэффициентов для сведения независимых параметров в кучу. Вот как, например, универсально учесть, что LUT6 - это 2 спаренных LUT5 с независимыми выходами ?? - иногда это даёт удвоение количества LUT, а иногда - просто монопениссуально. Как это иногда учесть в универсальном весовом коэффициенте ?
  9. Нуууу. Можно с разных сторон смотреть на FPGA... Я, лично, вообще вижу практическое отсутствие логических элементов в Xilinx FPGA (за исключением XORCY): 1. FF - это просто триггер. 2. LUTx - это набор 2^X триггеров с выходным мультиплексором 2^X->1. А в Xilinx FPGA ряд LUTx имеют еще и систему управления записи (с дополнительными линиями адреса записи) - именно они и могут мутировать в distributed RAM (1 LUTx в ОЗУшку 2^X на 1 бит) или Shift Register (глубиной до 2^X триггеров). 3. Block RAM - еще больший набор триггер с развитой системой управления и мультиплексирования. 4. Развитая схема тактирования. 5. I/O буфера и ноги (шары). 6. Всякие разные HardCore. Какие тут чудеса ? - тут вроде реали жизни... Не верю! Сделаете? А направно не верите, не ленитесь, посмотрите ug384.pdf (Spartan-6 FPGA Configurable Logic Block) и Вы обнаружите, что несколько недоочениваете Xilinx LUT. Есть, правда, неприятное ограничение для двухпортовой памяти: адрес записи данных совпадает с адресом выходного мультиплексора LUTA (первого из 4 LUT в Slice), поэтому для двухпортовой памяти из 4 LUT получится использовать только 3. Но на этих 3 (трёх) LUT6 можно реализовать DualPort RAM 64x3 бит или DualPort RAM 32x6 бит - вроде весьма приятный расклад.
  10. А Вы пробовали ISE xx.x Quick Start Tutorial ? - обычно они были не очень погаными. Касательно Xilinx FPGA vs Altera FPGA: исторически так сложилось, что в Xilinx FPGA есть возможность превращать часть LUT'ов в RAM (distrebuted RAM), а вот у Altera этого не было. Лично мне (для моих интерфейсных задач) часто нужны небольшие FIFO'шки, которые весьма удобно собирать на distributed RAM (оно и значительно быстрее по сравнению с Block RAM, и имеет меньшие ограничения на размещение в кристалле). Вот тут становится весьма существенным RAM основан на LUT4 или на LUT6 - последний имеет ёмкость в 4 раза больше. Те LUT, которые могут стать distributed RAM, могут мутировать и в сдвиговые регистры, что в ряде случаев позволяет хорошо сэкономить триггера. Ну, и если я ничего не путаю, то в Spartan-6 (как и в Virtex-5/6), вообще-то не настоящие LUT6, а пара LUT5 со связанными входами и выделенным мультиплексором. Поэтому, в ряде случаев, есть возможность использовать этот LUT6, как 2 LUT5. Особенно хорошо получается это использовать, когда хочется иметь небольшой distributed RAM (с шириной адреса 5 и менее), тогда получается в одном LUT6 - RAM на 2 бита сразу. О различных извращениях над LUTx можно прочитать в ug384.pdf (Spartan-6 FPGA Configurable Logic Block). Касательно среды ввода проекта (Design Entry), если есть возможность, что я бы советовал посмотреть на Active HDL 8.x. Мне весьма нравится эта среда для набора HDL текстов - она позволяет очень быстро устранять ряд опечаток/мелких ошибок, также в ней есть весьма неплохой схемный редактор (позволяющий делать включения на HDL !),.. ну и чтобы жилось совсем хорошо: она и моделировать умеет. Что же тогда остаётся ISE ?? - а остаётся ей синтез и implemtntation.
  11. Если Вы работаете около ВУЗов, или каким-либо способом можете попасть под Xilinx University Program, то Xilinx ISE становиться ооооочень дешевым.
  12. Нет, мы не покупали Xilinx IP Core,.. равно как и не использовали. Я для себя разглядывал несколько дешифрованных IP Core: как они в FPGA Editor'е выглядят, и что при этом в исходном тексте есть; чтобы понять, что разработчик в них хотел вложить и что хотел скрыть - может найдётся чего спозаимствовать ? Тогда, к сожалению, уже нечего было заимствовать...
  13. Были такие гадские IP core от Xilinx ISE, в которых "исходные" тексты были "simulation only", а для implementation использовался NGC файл. В таких корках NGC обычно плотно набит constraint'ами, которые отсутствуют в "исходном" тексте. Может это Ваш случай ?
  14. Не, их чуток побольше: TYPE std_ulogic IS ( 'U', -- Uninitialized 'X', -- Forcing Unknown '0', -- Forcing 0 '1', -- Forcing 1 'Z', -- High Impedance 'W', -- Weak Unknown 'L', -- Weak 0 'H', -- Weak 1 '-' -- Don't care );
  15. Ну, например, у Вас голый keep не работал... пришлось еще приписывать keep и для синтезатора в таком виде "/* synthesis syn_noprune = 1 */"(а с XST голый keep обынно работает, автоматически преобразуясь сразу в несколько constraint'ов - об этом где-то упоминалось в XST/CGD Guide'ах).
  16. Агааа... Вот отсюда и проблемы с пропаданием/другим поведением constaint'ов... получается Вам надо делать двойную работу, описывать constraint'ы и для Synplify и для ISE Implementation... Причём еще не факт, что constaint'ы для ISE Implementation можно будет вписывать в HDL код... вот, так сказать, и цена, за более хорошую оптимизацию HDL описания.
  17. Keep обычно проходил сквозь XST, в крайнем случае, можно воспользоваться save (оно же s, который Вы и использовали)... А какой же синтезатор Вы использовали, по ходу дела не XST ??
  18. Не поручусь за точность информации, но вроде в дорогих логических анализаторах стоят по 2 быстродействующих компаратора на каждый вход, настраиваемые на "устойчивые" уровни логического нуля и единицы, тем самым позволяю увидеть, 3 состояния: 0, 1 и X(Z).
  19. Всё делается проще: есть constraint keep, который Вам надо навесить на выходные сигналы интересующих Вас LUT'ов. После установки этого constraint'а, сигналы не будут выкидываться ни на стадии синтеза, ни на стадии MAP'а, а при P&R появится предупреждение только в том случае, если сигналы с этим constraint'ом висят без потребителей.
  20. Ну, сначала понадобится лицензия от соответствующих органов, если Вы собираетесь и далее открыто говорить о криптографической обработке(тем более IP-шифратора) и при этом не поиметь неприятности. Т.к. у ISE крайне ублюдочный Design Entry, а Вы сказали, что будете писать на HDL, то я бы посоветовал добыть Active HDL - весьма приятная (на мой взгляд) среда, для разработки проектов на HDL (она также может и моделировать проекты).
  21. Пользую редактор HDL от ActiveHDL - радуюсь жизни (эта система очень быстро находит много видов опечаток/мелких ошибок, что резко ускоряет процесс проектирования). Может, есть чего и получше, но мне он вполне нравится - гораздо лучше, чем в ISE/ModelSim'е... А заодно, ActiveHDL еще и моделировать умеет...
  22. У меня с этим кабелем проблем никогда не было - может быть тут имеют место "обычные" проблемы USB: не к заду мамки подключили, ну или на мамке корявый контроллер/ПО контроллера, а Вы воткнули в порт№1, а не 0 (я имею ввиду из пары портов), али на парном порту что-то весит нехорошее и т.п.
  23. Не знаю как оно реализовано у Altera FPGA (путь меня поправят знатоки оных, если чего не так), но не думаю, что сильно отличается от Xilinx FPGA, имеющих 3 специальных сигнала: GSR (Global Set/Reset), GCE (Global Clock Enable) и GTS (Global Tri-State). GSR и GCE подключены ко всем синхронным элементам, а GTS ко всем выходным буферам. Т.к. эти 3 сигнала пронизывают всю FPGA, то их не изображают на структурных схемах. Обычно прочитать про эти сигналы можно в секции Configuration или Startup, т.к. в обычных случаях они имеют активное состояние только при загрузке FPGA. Если не прилагать специальных усилий, то обычно GSR действует на синхронные элементы точно также как и Reset этих же элементов.
  24. Если я правильно понял, что Вам надо, то вот схема, предназначенная для вывода clock'а "через триггер". Основным достоинством этой схемы является то, что clock выведенный таким образом будет иметь минимальную разбежку фронтов с данными (выводимыми через Output Flip-Flop тактируемых с того же clock'огого дерева).
  25. Для моделирования замена не равнозначная (тут, по идеи, на others надо ловушки вешать, явно описав все правильные состояния),.. а вот для синтеза - полностью эквивалентная. (Вообще-то для case'ов я использовал перечисляемые типы, и соответственно явно указывал все возможные комбинации. Если же вместо одной из комбинация написать others, то появляется сей неприятный XST Info.)
×
×
  • Создать...