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

Beby

Свой
  • Постов

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

  • Посещение

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

    1

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


  1. Работаю с Win32 (и Win64) ISE 9.2. Вот, ставил скаченый ISE 9.2 IP update 2, при установке он выдал ошибку и процес установки пришлось прервать. При повторном запуске установки заплатки я обратил внимание на то, что update ставился значительно быстрее, ОЗУ не пожиралось сотнями мегабайт (и не создался backup от второго запуска WebUpdate). Мне backup и даром не нужен (все равно "webupdate -uninstall" запускать не буду, а дирректорию .backup стираю - не люблю HDD забивать мусором), поэтому вопрос: как отключить создание backup при запуске WebUpdate ?
  2. У меня была предыдущая версии DS300 (v2.0.1 June 14, 2006), в коией небыло про SPI ни одного слова. В новой версии действительно есть. Если внимательно поглядеть, то в новом кабеле (USB II) на вывод 14 (INIT), навешаны еще и функции WP (для SPI) и HALT (для JTAG) - а вот когда они нужны я не знаю. Соответствено появился и раздел "HALT_INIT_WP Signal in iMPACT" в DS593.
  3. Что-то об SPI я ничего не нашел в DS300.pdf - а где об этом проситать можно ?
  4. В руках не держал Cable USB II (HW-USB-II-G), но из Datasheet следует, что появился в нем режим SPI, который понимают последние семейства Xilinx (например Spartan3A). А вот есть ли толк от этого SPI - не знаю. Может через него можно запрограммировать и не Xilinx Flashmemory ?. Пусть ответят те, кто пользуется SPI. Ознакомьтесь с документом ds593.pdf - "Platform Cable USB II Advance Product Specification" и узнаете чего там нового.
  5. Запустите FPGA Editor и поглядите внимательно в свой кристал: на один порт один WE - все, что рисует FPGA Editor - все есть и при большом желании можно использовать. А Virtex2pro - это не Virtex4 - чего в нем нет - того нет - тут уж извиняйте - никакая версия ISE не поможет. (Особо ловкие люди и в Virtex-E умудрялись использовать GCLKBUF - как буфер с OutputEnable ! (вот например сигнал Locked c DLL туда прекрасно заходит...) - хотя такого примитива нет... а в FPGA Editor все нарисованно "правильно"...) Сам пока не умею - кто может расскажите как это делать... а то много чего вкусного видно - а не дотянешься (вот например для PCI есть блочечек с dedicated routing resource - хотелось бы использовать самому, а не через покупную/воровенную IP core). Думаю по людски никак не выйдет, только через поганый MUX. Если надо увеличить МГц, поставьте за MUX (обязательно LUT'овым) триггеры, но этим Вы увеличите Latency на 1 такт - может это Вас устроит. А хороших решений боюсь нет.
  6. А вот если в предложенном per_aspera_ad_astra коде прикоментировать строчечку DIPB => "00", то можно выиграть от 1 до 4 LUT превращенных в генератор 0, и тем самым заметно облегчить работу PAR... XST/MAP/PAR от ISE 9.x этот фокус прекрасно понимают (пользуюсь этим с ISE 8.x). RAMB16_S4_S18_loop : for i in 0 to 1 generate RAMB16_S4_S18_inst : RAMB16_S4_S18 port map ( DOA => DOA(i*4 + 3 downto i*4), -- Port A 4-bit Data Output DOB => DOB(i*16 + 15 downto i*16), -- Port B 16-bit Data Output DOPB => open, -- Port B 2-bit Parity Output ADDRA => ADDRA, -- Port A 12-bit Address Input ADDRB => ADDRB, -- Port B 10-bit Address Input CLKA => CLKA, -- Port A Clock CLKB => CLKB, -- Port B Clock DIA => DIA(i*4 + 3 downto i*4), -- Port A 4-bit Data Input DIB => DIB(i*16 + 15 downto i*16), -- Port B 16-bit Data Input -- DIPB => "00", -- Port-B 2-bit parity Input ENA => ENA, -- Port A RAM Enable Input ENB => ENB, -- PortB RAM Enable Input SSRA => SSRA, -- Port A Synchronous Set/Reset Input SSRB => SSRB, -- Port B Synchronous Set/Reset Input WEA => WEA, -- Port A Write Enable Input WEB => WEB -- Port B Write Enable Input ); end generate; For YuP: CoreGen - это хорошо и главное быстро... но он далеко не всегда дает хорошие решения.
  7. Что-то у Вас не срастается... наверное Вам нужен побайтный WE по порту A (1024x32) - если я Вас не так понял, то уточните задачу. В такой ситуации можно сделать перед RAMB16 входной мультиплексор (побайтный): либо в этот байт пишется его старое значение, либо новое (но если я не ошибаюсь, при этом надо будет сконфигурировать BRAM на "Read First" - а как это будет сочетаться с вашим поектом я не знаю). Получается на один RAMB16 два независимых мультиплексора (попробуйте, возможно MUX собранный на BUTF Вам подочдет больше, чем MUX собранный на LUT). Такое решение я применял на Virtex-E - работало, но замерно уменьшало быстродействиет (от максимально возможного).
  8. С chds полностью согласел, встречался даже, что в Xilinx XPLA3 проект перестал работать из-за другой партии ПЛИС. Сделал я не очень корректное место (в блочке по переводу события с одного clk на другой). Вот пришли ПЛИС 2007 года выпуска и проект (уже готовая прошивка) перестал работать, а на ПЛИС до 2007 года все работает прекрасно. Заметьте: ревизии ПЛИС совпадают, различаются только даты производства и партии.
  9. Есть еще один вариант задержки, он для системы оптимизаторов менее "прозрачный" - делать задержки на latch с G = '1', только прийдется навесить пачку constraints на этот сигнал G, чтобы система его не выкинула (вместе с latch) - термины/входы по среде Xilinx. Что-то у Вас я не нашел ни ссылку на среды разработки ни на использованный ПЛИС - без этого затруднительно что-то советывать... И имейте ввиду, что и у логики и у триггеров задержки в кристале не всегда максимальные. Вдобавок вы можете положить элементы задержки в разные концы кристала (дял FPGA) - тогда в задержку включиться еще и разводочный ресурс ;-))
  10. На сайте Xilinx библиотеки только для XE версии. А если у Вас ISE 9.x, то надо скомпилировать библиотеки (например самой ISE). Для этого надо в меню ISE выбрать edit->Preference, в появившемся диалоге ISE General->Integrated tools в поле Model Tech simulator указать путь к Вашему MSE 6.1f (exe'шнику). Теперь в окне Sources тыкаем на пиктограму кристала (Virtex 5), в окне Processes в Disign Utility->Compile HDL Simulation Libraries. Если ISE другой, то могут быть вариации, так что если не помогло, то ответьте на все вопросы makc - он плохого не посоветует.
  11. Если в Вашем проекте есть блоки которые работают крайне редко, то можно попробовать снимать с этих блоков Clock, заведя его через отдельный BUGCE (BUFGMUX) - в пределах полугода этот воврос обсуждался на этом форуме (только, помоему, для какой-то разновидностиSpartan3).
  12. А какую частоту Вам надо умножить, по конкретней пожалуйста ? Если более 12.5 МГц, то можно заняться изврашением: сделать корявый умножитель на 2, подняв частоту до 25 МГц, а далее на CLKDLL (с включенной опцией корекции скважности) - может и заработает. А CLKDLLHF для целей умножения частоты никак не подходит - у него просто нет выхода с удвоенной частотой, зато и входная частота у него в два раза больше, чем у CLKDLL. Spartan-2(E) CLKDLL можно включить последоватьно, и таким образом добиться умножения частоты на 4 (с ухудшением блужданий и дрожаний конечно), но что-то мне не попадались упоминания от Xilinx про умножения на 8 (3 каскадно сцепленных DLL) - возможно в таком варианте дрожания фронтов (jitter) становяться непиемлемими. Но может лучше поставить внешний аналоговый PLL. Ведь даже, если бы у Вас была частота 25 и более МГц, то Spartan-2(E) DLL имеет просто отвратительный jitter - и уже по этому параметру может не подойти. Например, поглядите на аналогавый умножитель частоты: ICS511/ICS512 (Integrated Circuit Systems) - сам пользовался этим и остался доволен - может от Вам как раз и подойдет ?
  13. Как и у Alter'ы, у Xilinx в прошивках Spartan-2/2E и Virtex-E (с другими FPGA не довелось пока поработать) тоже в конце есть несколько "FFFF" - "Dummy word", достаточных для того, чтобы (при обычных настройках) прошел FPGA Startup, при этом размер конфигурационного файла (bin) в точности совпадает с размером прошивки указанным в DataSheet. Почитайте документацию по configuration bitstream для Spartan-3E - там должны быть расписанны метки начала/конца конфигурационного потока, тогда Вам станет ясно сколько и чего в bin файл дописанно в конец. Был такой документ XAPP176.pdf "Configuration and Readback of the Spartan-II and Spartan-IIE Families", поищите у Xilinx возможно вы найдете, что-нибудь подобное и для Spartan-3. Можно попробовать поискать в UG332.pdf - "Spartan-3 Generation Configuration User Guide". Да и как-то уже на форуме подымалась тема по содежимому конфигурационного файла для Xilinx FPGA.
  14. После замены MXE63G на MSE62F симуляции стала работать без ошибок и заморочек (ну и конечно значительно быстрее :) ). Кто его знает почему MXE не работал, если вдруг догадаюсь обязательно напишу, но шансов мало т.к. мне значительно больше нравиться MSE с его оптимизацией.
  15. Да, забыл написать сразу: проэкты и Testbench написаны на VHDL. Симуляция тоже проводиться на VHDL с SDF файлами (с ключем -sdfmax). Буду отвечать по мере проведения экспериментов (более детального изучения ситуации) MXE 6.2g, к нему были поставленны: 1. mxe6.2g_9.2sp4_simulation_libraries.zip 2. mxe6.2g_92i_ip2_xilinxcorelib.zip А как это проверить ? (как-то раз я пытался в MXE6.0d затолкать библиотеки от MXE6.1 - тогда я видел кучу ругательств от MXE: точно их не помню, но смысл сводился к тому, что с библиотеками что-то не в порядке. Но сейчас никаких подобных ругательств нет) К сожалению на эту процедуру мне понадобиться некоторое время и быстро я не смогу дать ответ на эту очень интересную рекомендацию. При совместном моделировании (всех PostPar и PostFit) 'X' наблюдается практически на всех парах выход->вход разных FPGA. Для такого эффекта хватает и двух PostPar моделек (например присловутый Spartan-2 PCI и Spartan-2E - просто приобразователь LVTTL->LVPECL - понимаю, решение убогое, но тогда надо было быстро состряпать плату, а разбираться как именно Xilinx LVPECL нужно сдруживать с нормальным LVPECL не было времени) PostFit модельки симулируются нормально и каждая в отдельности и все PostFit вместе. При моделировании (Spartan-2 и всех PostFit) все, что может моделируется нормально. Буду ковыряться дальше. Но вдруг и выше упомянутых ответов хватит на какую-нибудь интересную мысль ? Вот чего получается при ise92sp4 + mxe62g (mxe6.2g_9.2sp4_simulation_libraries + mxe6.2g_92i_ip2_xilinxcorelib) А вот чего получалось при ise91sp3 + mxe60d (mxe6.0d_81i_ip1_xilinxcorelib + mxe6.0d_81isp3_simulation_libraries) А вот если уж совсем охаметь и попробовать ise92sp4 + mxe60d (mxe6.0d_81i_ip1_xilinxcorelib + mxe6.0d_81isp3_simulation_libraries), то получает закономерный результат: не работает внутренний PCI мультиплексор собранных на BUFT. Но тут-то все понятно - библиотеки не для того ISE.
  16. Жил да был у меня проект, в который входят разные подпроектики на: двух XPLA3 (XCR3128XL-10TQ144I), одной XC2S200-5PQ208I (PCI контроллер), четырех XC2S100E-6TQ144I, и двух XCV50E-7PQ240I. Все прошивки естественно разные. Сами ПЛИС'ки стоят на разных платах и прекрасно работают друг с другом. Написал я длинный и жуткий TestBench, для симуляции работы комплекса. Компилировал проектик на ISE 9.1 SP4 и моделировал на MXE 6.0D - несмотря на то, что MXE для более ранней версии ISE, все нормально моделировалось, кроме DLL в одной из XCV50E (в остальных ПЛИС DLL не используются). Вот добыл "лицензионные" ISE 9.2 SP4 и MXE62g (как раз для ISE 9.2 SP4). Но вот почему-то перестал моделироваться мой TestBench. Выглядит это так, пока в симуляции присутствует только одна FPGA и сколько угодно CPLD - все моделируется нормально. Но как только я подключаю две FPGA (любые !) - на временных диаграмах появляются 'X', причем и на время GTS и GSR и уже после их снятия. Симуляцию провожу PostPar/PostFit. Behavioral - мне не интересна, но провести ее с наскоку мне не удалось - я использую свою библиотеку плотно набитую примитивами и RLOC'ами, а до translate - это симулироваться на хочет - не может найти симуляционных образы некоторых компонентов из unisim.vcomponents. Какие будут идеи по исправлению этой досадной неприятности ? Подозреваю, что телепаты из отпуска никак не хотят возвращаться, поэтому жду так же и пожеланий, что нужно добавить к вышесказанному, для более точной и быстрой дигностики проблемы.
  17. Приходится работать с неновыми Virtex-E/Spertan2-E. При компиляции моих проектов, заметил только что: в ISE 9.2 SP4 Win64 (по сравнению с ISE 9.1 SP3 Win32) PAR может достигнуть меньших задержек (где-то на 3-5%), и быстрее работает; разницу работы XST - не ошутил, а MAP дает идентичный результат - что возможно связанно с использованием мною древних кристалов. Fit не сравнивал.
  18. Тут еще пропущенна PE версия. XE или Altera Edition имеют несколько упрощенный интерфейс (на сколько мне показалось), а главное имеют встроенные скомпилированные библиотеки для Xilinx или Altera. По крайнем мере для XE, периодически приходится выкачивать новые библиотеки под текущий ISE ServicePack. PE - это просто рабочая версия ModelSim (без встроенных библиотек Xilinx и Altera). А вот SE (Special Edition) - это PE, но доукомплектованная оптимизатором, который может весьма сильно уменьшить время симуляции (в разы, а может и больше). Мне больше нравиться работать с SE... Вот только пришлось помучаться пока нужный ключик сделал... Ну а если купить, то и мучиться не надо.
  19. Коли есть опыт работы с ПЛИС, то опишите свою схему, скомпилируйте её и запустите POSTFIT/POST Place&Route симуляцию и погоняйте схемку. Посмотрите как легла ваша логика в кристале: Для FPGA удавите ее в один LUT, для CPLD убедитесь, что схема впшего G-триггера реализованна в одном MacroCell. При не POSTFIT/POST Place&Route симуляции симуляторы не могут коректно учитывать задержки связей, поэтому и результат бывает неверный. Еще раз обращу внимание на существеннось задержек в матрице соединений любого семейства ПЛИС, чего в БМК нет. Могу ошибать, но и в случае б) схемы G-триггера все будет работать нормально, при "достаточно длинных" импульсах на входе. Также думаю можно подобрать последовательность коротких импульсов, который и схему а) загонят в "неправильное" состояние. Так, что присрвокупите к вышезапрошенной статье еще и временные диаграммы, на которых показан случай устойчивой работы схема а) и неудовлетворительной работы схемы Б), а то меня тоже начинают терзать темные сомнения...
  20. Судя по вопросу, AntiLL с ПЛИС не работал, поэтому начну несколько из далека. ПЛИС делятся на 2 группы CPLD и FPGA. У каждой из этих архитектур свои способы реализации логики. У FPGA логика реализуется на таблицах истинноти (LookUpTable), в зависимости от семейства/производителя количество входов варьируется от 4 до 6 (в явном виде никаких элементов И-НЕ или ИЛИ-НЕ - просто нет). В большинстве CPLD используется вариант AND-OR-XOR, например в Xilinx XC9500 - (4 элемента AND) - OR - XOR (двух входжовой) в Xilinx XPLA3 - (до 40 элементов AND) - OR - XOR (двух входжовой) Посмотрите смледующуб документаци и надеюсь Вы найдете все ответы на ваши вопросы: http://www.xilinx.com/support/documentatio...heets/DS063.pdf - XC9500 http://www.xilinx.com/support/documentatio...heets/ds012.pdf - CoolRunner (XPLA3) http://www.xilinx.com/support/documentatio...heets/ds090.pdf - CoolRunner II У Alter'ы точно есть аналог XC9500, а вот аналогов CoolRunner помоему нет, хотя я могу и ошибаться - пусть уточнят те, кто работает с Alter'овскими CPLD. На мой взгляд, на ПЛИС лучше вообще-то делать синхронные решения,.. т.к. крайне затруднительно отлаживать схемы с "памятью" собранные только на логических элементах - в ПЛИС осциллографом не залезешь, а ножки ввода/вывода в большинстве случаев не способны выдать наружу высокочастотные glitch'и прочие бякости, коие могут присутствовать в таких асинхронных схемах. P.S. То, что изображено на Вашем рисунке, на мой взгляд, собранное на одном LUT - работать будет. Но вам же хочется именно AND-OR, а это ближе к CPLD. И учтите: в ПЛИС задержка связей "выход-вход" сравнима с быстродействием логических элементов !
  21. В ucf (User Constraint File) прописываются constraint'ы (т.е. ограничения), Вы туда могли прописать только параметры clock'а которые должен соблюсти синтезатор и компилятор. Для симуляции Вам надо сделать TestBench, в нем задать желаемые воздействия и потом моделировать. Ну а как для начинающего с Xilinx ISE, могу посоветовать Вам заглянуть в %xilinx%\doc\usenglish\books - тут вы найдете много полезной документации. В частонсти, настоятельно рекомендую прочитать cgd.pdf (Constraints Guide) и xst.pdf (если Вы пользуетесь Xilinx синтезатором).
  22. Вот что-то пересмотрел тему и подумал, а тут не сказанно, сколько Ван нужно этих Schmitt Trigger. Если Вам их нужно немного (и есть возможность пожертвовать по одной дополнительной ножки IO на гистерезисный вход), то: у Xilinx раньше были TechXclusives, и там была очень забавная старая статейка Six Easy Pieces (Non-Synchronous Circuit Tricks), коию я добавил к этому ответу. Прочитайте ее и Вам станет ясно как в ПЛИС собрать Schmitt Trigger, а может и еще чего. TechXclusives_Six_Easy_Pieces.rar К сожалению теперь на сайте Xilinx в явном виде нет этих TechXclusives: AR #29041 - Title: What happened to TechXclusives? Last Modified 2008-01-23 General description: TechXclusives were a series of articles published to Xilinx.com about special technical topics related to programmable logic systems. The article of interest is missing. Solution TechXclusives have been removed from Xilinx.com. Some of the information will be re-released in technical documentation where appropriate. Some of the articles will be archived for reference.
  23. С Alter'ой не работаю, поэтому не знаю, что именно там есть. У Xilinx: 1. в CoolRunner II - есть Schmitt-trigger (см. DS090.pdf). 2. в CoolRunner (XPLA3) - нет (тут только HalfLatch, причем отключить его невозможно). 3. в Virtex/-E/-EM, и в его брате Spartan2/-2E - нет. 4. в UG331.pdf (Spartan-3 Generation FPGA User Guide) написанно "LVCMOS25/33 and LVTTL standards have about 100 mV of hysteresis on inputs", а именно Schmitt-trigger'а нет, хотя со Spartan-3/-3E/-3A пока еще поработать не успел, так что путь меня поправят те, кто работал со Spartan-3/-3E/-3A. 5. Про Virtex-2 и старше пусть расскажут те, кто с ними работал, таких тут немало.
  24. Т.к. Вы используете XST, то можно гарантировать, что явно описанная инициализация будет работать. После добавления явной инициализации, вы "зацепились" за сигнал GSR, переводящий все триггеры ПЛИС в исходное состояние (заданное принудительно, или как-то назначенное по умолчанию). GSR генерируется автоматически по окончанию загрузки ПЛИС (что похоже, Вам и нужно), или его можно генерировать вручную воспользовавшись блоком STARTUP_SPARTAN3E. Если Ваша FSM тактируется от DCM, то для безотказной работы необходимо использовать сигнал LOCKED, как это описал CaPpuCcino. Для более полного понимания работы синтезатора с FSM, рекомендую прочитать в XST.PDF раздельчик "Finite State Machines (FSMs)" и о всех constraint'ах связанyых с FSM. О том откуда берется GSR и как он работает можно прочитать в DataSheet и UserGuide на Spartan-3E.
  25. Reset FSM - средство действенное, но вообще-то должно и без Reset работать правильно. Поэтому для решения Вашей проблемы, укажите среды разработки которыми Вы пользуетесь для синтеза, имплементации и моделирования (одного названия ПЛИС недостаточно). Также необходимо, чтобы Вы поделились фрагментом кода описывающего этот FSM - тогда можно будет посмотреть: может, что нитак в коде ?
×
×
  • Создать...