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

Beby

Свой
  • Постов

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

  • Посещение

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

    1

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


  1. Всё же, мне кажется, что надо ставить меньше кОм. Т.к. при работе External Pulldown vs Internal Weak Pullup, вы получите: 10кОм/(10кОм+60кОм)*3.3В = 0.47В, при 5.1кОм -> 0.25В, при 3.3кОм -> 0.17В. Решать Вам, что важнее: ниже подтянутый '0' или меньшее энергопотребление. По поводу PullUp: думаю, Вам стоит заглянуть вот в ниже приведенный документ, хоть он и для XCR3128XL, но в нем рассматриваются отличия тех. процессов разных заводов, производящих CoolRunner. И в этом документе есть интересные цифры, которые надо знать, в т.ч. и сопротивление эквивалента внутренних weak pullup'чиков. PCN2003-10: CoolRunner XCR3128XL CPLD Change in Wafer Fabrication Facility
  2. К сожалению даже при Post-Fit симуляции влияние HalfLatch в модели отсутствует, во всем остальном Post-Fit модель весьма точно воспроизводит поведение CoolRunner. Да, т.к. при цикле PowerUp работают HalfLatch, то в приходиться ставить внешние резисторы (я использую 3.3кОм при питании 3.3В - номинал резистора выбирал, для обеспечения тока 1 мА).
  3. Для constraints Вам необходимо в проект добавить User Constraint File (*.ucf). Описание constraints Вы можете найти в файле CGD.PDF (поставляется вместе с ISE). Если Вы будет использовать встроенный синтезатор XST, то: 1. при HDL описании необходимо указать начальные условия в объявлении переменных/сигналов. 2. при схемнов описании необходимо задать constraint INIT ('S'/'R'). Но при любом варианте описания проекта необходимо в опциях fitter'a проставить: Default Powerup Value of Registers = FPGA equivalent. Сброс/предустановка триггеров по power-on reset тоже хорошо помогает. Но помните, при старте CoolRunner некоторое время инициализируется... и в это время все выходы заперты и HalfLatch их подтягивает к '1'.
  4. В Xilinx ISE 8.x были ChipView - программа позволяющая просмотреть потроха CPLD практически полностью (как FPGA Editor для FPGA) - в более новых ISE мне не удалось запустить ChipView (точнее то, что от него осталось). Для просмотра ChipView использует файл *.vm6. Возьмите с закромов родины ISE 8.2 и посмотрите, что же у вас в проекте. Как я понимаю компилятор (fitter) для CoolRunner единственный, и сделал его Xilinx - поэтому и файл vm6 тоже должен быть. Также fitter выдает очень подробный текстовый отчет о прошивки - по нему Вы тоже сможете детально проанализировать, что у Вас за "схема" в ПЛИС (со всеми Pullup, tristate и т.п. - вплоть до использования внутренних Universal Control Term). Только помните про HalfLatch незримо присутстующий в каждой ножке ввода/выводы - это единственная бяка нигде не указывается. Потребуйте себе эти вда файла и Вы сможете детально изучить всё, что для Вас слепили. Если кто знает как в ISE 9.x и 10.x можно запустить ChipView прошу мне подсказать. Если напрямую его запустить не реально, то что необходимо для того, чтобы приладить к ISE 9.x и 10.x ChipView от ISE 8.2 ? P.S. Вы можете эти два файла выложить в этой теме, тогда мы сможем их детвльно проанализировать...
  5. Заранее извиняюсь за offtopic. С дороговизной БМК и ценой ошибки полностью согласен. Но знаю прецеденты сборки схем на БМК, содержащих одновременно как многовходовые операционные усилители (6-8 входов и кучи обратных связей, позволяющих значительно уменьшить влияние деградации кристалла – например, от ионизирующего излучения), так и простенького цифрового интерфейсика.
  6. Предлагаю Вам ознакомиться с документами xapp342.pdf - XPLA3 I/O Cell Characteristics и xapp310.pdf - Power-Up Reset Characteristics of CoolRunner XPLA3 CPLDs. Возможно в них Вам удастся найти ответы. Обратите внимание, XPLA3 вообще не имеет PullDown (а у Вас он фигуригует...) Обратите особое внимание на то, что в XPLA3 (CoolRunner) нет чистых tristate выходов. Во всех IO pin есть HalfLatch, и его никак нельзя отключить. Его нагрузочная способность была достаточна, дабы засветить красный светодиод на моей плате... Если IO pin сконфигурирован как чистый выход, то наличие HalfLatch никак не проявляется.
  7. Да, есть и БМК, но это несколько другие изделия. Обратитесь к истории (проверьте по тому же Белорусскому Интегралу), в 80-х (т.е. лет 25-30 назад, а не 20 как я указал выше - ошибся: постарел лет на семь и даже не заметил как) были также и ПЛИС (в смысле полузаказных). До недавнего времени (а может и сейчас тоже, но в меньшей степени) среди ПЛИС были hardwire продукты - однократного программирования; вот полузаказнухи и "полузаказывались" на уровне логики, а в БМК (как я знаю) "полузаказывается" на уровне транзисторов, т.е. в БМК можно собирать как цифровые, так и аналоговые узлы, что позволяет делать на БМК очень интересные (эксклюзивные) устройства.
  8. Нет, конечно. Во Flash памяти хранятся не переменные а "прошивка" (конфигурационная последовательность, которая является "программой" ПЛИС). А переменные храняться в триггерах - т.е. в элементарных ячейках статической памяти. Т.е. XC9500 имеет 10 тыс циклов перепрограммирования (смены прошивки), а в процессе работы ПЛИС переменные могут менять свои значения сколь угодно много раз. ПЛИС - это русская аббревиатура (Программируемая Логическая Интегральная Схема - правда, лет 20 незад были "Полузаказные Л.И.С." - но время идет, а аббревиатура не меняется). ПЛИС не может быть выполнена по технологии FLASH, просто у CPLD есть nonvolatile memory, сделанная на базе Flash памяти. А вот FPGA (за исключением Actal и Spartan-3AN) имеют только volatile memory (Static RAM) для прошики, в которую необходимо записывать "прошивку" из внешней пямяти, после подачи питания на ПЛИС.
  9. К сожелению, не могу подсказать. С час прорылся в документации, но так и не смог вспомнить, в каком документе я это прочитал. По памяти: рядом с таблицей эквикалентного количества пар питания в завичимости от корпуса (для Virtex/-E/-EM и Spartan-2/-2E) написанно было следующее - дополнительная пара питания может быть добыта ("obtain") путем подключения к VCC/GND двух IOB с IOBSTANDART=LVTTL и SLEW=FAST. Возможно, эта запись балы потихонечку удалена в навых версиях Datasheet. Посмотрите XAPP689 - Managing Ground Bounce in Large FPGAs, может в этом документе Вы найдете что-либо полезное.
  10. Не знаю, как по поводу замыкания именно на GND (у CoolRunner II это тоже предусмотрено, причем IO Block можно специально сконфигурировать именно для прямого подключения к земле, как "дополнительная нога земли"). А вот насчет добавления пар питания для FPGA у Xilinx есть весьма точные рекомендации: сколько необходимо дополнительных пар "питания" полученного из IO PIN (если вообще нужны) для обеспечения нормального питания (и decaupling) при "большом" количестве одновременно переключаемых ног в конкретном IO банке.
  11. Сильно сомневаюсь, что что-нибуль получиться... Запустите FPGAEditor и поглядите внимательно, что ваши ножки могут. Обычно, если нет LVDS - то нет и прочих диф.стандартов.
  12. Вот только YGin надо еще и LVPECL принимать. Официально его могут принять только Spartan-2E и Spartan-3A. Выходы же имеет только Spartan-2E (и то в Xilinx LVPECL вариации). На ряд вопросов о том, как заставить работать выходы Spartan-3A устойчиво с LVPECL, Xilinx support посоветовать мне провести моделирование при помощи HiperLinx и IBIS моделей с учетом моей частоты передачи данных (утверждая, что при "низких" частотах все будет работать, так же как при "высоких" - устойчиво работать точно не будет). Если YGin входов хватит - прекрасно,.. но если понядобяться еще и выходы в LVPECL, то - как повезет...
  13. Смотреть файл лень... Поэтому расскажу про грабли (сапёрские) на которые наткнулся с Virtex-E (Startan-2E), дабы Вы ненароком на них же не попались. Было 2 микросхемы связанных по Xilinx LVPECL. Как-то раз одна из ПЛИС не запрограммировалась, а вторая начала выдавать LVPECL сигнал. В таком состоянии простояло 3 часа. В итоге у Virtex-E (незапрограммированного) повредились входы, на которые приходили LVPECL сигналы (входной 100 ом резистор - внешний). Не сгорели, но задержка входного сигнала возросла на 3-7 нс (по разному на разных входах). Если несколько не в тему, то заранее извиняюсь.
  14. Cпаяет человек себе приблудину (аля Parallel Download Cable III) с 74HCxxx и подаст на них VCCaux (как и положено для CoolRunner II - 3.3B)... И вот тут возникает очень интересный вопрос: а не будет ли насилием для выходов LPT порта (TTL - 5В) иметь в нагрузке 74HCxxx с питанием 3.3B ??? Ну некоторое время LPT'шник протянет... а сколько ? - или я ошибаюмь ? И кстати, с 3.3 еще работать будет, а вот с "и т.д." - 2.5, 1.8 уже наверное нет...
  15. Тяжело найти то, чего его нет. А должен быть аттрибут в IOB "DIFF_TERM", выглядящий, как надпись DIFF_TERM, под которой рамочка и два варианта TRUE и FALSE. Обычно надо смотреть в Positive PIN из пары, но загляните в оба IOB.
  16. Если я не ошибаюсь, то все настройки, даже недокументированные (кромеStartup) можно просмотреть в FPGA Editor'е: Implement/PAR/ View/Edit Routed Design (FPGA Editor). Сам так смотрел во что компилируются мои потуги, дабы видеть что делать не надо. Но с V5 я пока еще не работал, попробуйте, а вдруг получиться.
  17. Не уверен, что данный кабель будет нормально работать от питания 3.3В, пусть тот кто это делал даст свое заключение (можно али нет ?). CoolRunner II не 5 Воль толерантен. Если Вы собираетесь серьёзно работать с ПЛИС Xilinx, то купите себя Platform Cable USB II, на провокации подсунуть Вам Platform Cable USB (первый) не поддавайтесь - они отозваны с производства - морально устарели. Из всего soft'а вам нужен только Stand alone programming tool (impact) - помоему, он весит около 50 Мб, где в конференции оно обсуждалось в пределах недели. Заливать надо jed файл. Я гляжу у Вас много сообщений, Вы можете запроситься в свои и воспользоваться закромами родины...
  18. Не хотелось создавать новую тему, посему подымаю старую. Кто может, поделитесь свеженьким pricelist'ом "официального дистрибьютера" ПЛИС Xilinx. А то представители оного что-то мозги парят...
  19. Подозреваю, что дело с путями (переменной окружения path): AHDL Вы явно ставили раньше, и в path путь на него находится раньше пути на ModelSim. При деинсталяции AHDL он не удаляет из path путь к себе, поэтому после повторной установки AHDL все вернулось на круги своя. Попробуйте просто удалить из path путь относящийся к AHDL (ну или перебросьте его в место после пути к ModelSim). У себя я совсем удалил из path путь к AHDL, но и использую его только как Design Entry - пока побочных эффектов не обнаружил.
  20. Вопрос несомненно очень интересный, но боюсь его надо адресовать не мне (даже если бы я знал, то точно не сказал - ибо все самое действенное имеет подписку о неразглашении, например СС и ОВ; а до простого и бонального можно и самому додуматься, например "бамба" дающая при "взрыве" мощный активационный СВЧ сигнал). Может кто из работавших в совковых ящиках расскажет - наши тоже выдумывали закладки... Поспрошайте у работников минского "Интеграла" они выпекали и топологоанатомировали многие изделия, может и расскажут с чем встречались... Но лично мое мнение таково: нужны и наши микросхемы для комерческого применения, т.е. конкурентно способные, а не только "беззакладочные" породии на зарубежные "аналоги", да еще и за жуткие деньги.
  21. А зачем знать куда именно установлен компонент (например ПЛИС) с закладкой, если можно активировать закладки на территории противника во всех изделиях (точнее сказать в тех, в которых удасться) и, тем самым, нанести противнику некоторый урон. Я имею ввиду массовое поражение изделий: все подряд от бытовухи, систем связи и передачи данных (кабельных и беспроводных), и т.п... вплоть до плохо защищенного оружия - головку ракеты ведь не заэкранируешь и в землю не зароешь... правда, туда и ПЛИС не засунут ;). Важно ведь нанести как можно более обширный урон противнику, дабы отвлечь его от ведения боевых действий на попытки (желательно безуспешные) восстановения инфраструктуры - без неё много не навоюешь. Вспомните войну НАТО (США) с Сербией - помоему америкосы не спешили в прямое боестолкновение, а методично бомбили и уничтожали инфраструктуру. И если классический америкосовский план боевых действий не отличается от примененного в Сербии, то в нем может найти хорошое место и активация закладок...
  22. Не все компоненты можно вставлять из библиотеки (Xilinxcorelib), вот например BinaryCounter v8.0 можно (о чем написанно в DataSheet на эту корку). Т.к. я IPCore аккумулятор не использую, то не знаю можно ли его тоже вставить напрямую из библиотеки, обойдясь без GUI интерфейса (в любом случае в библиотеке должен быть симуляционный эквивалент). Но во многих VHDL файлах сгенерированных корок написанно, что этот файл можно использовать только для behavioral моделирования, т.к. при компиляции такого VHDL файла код получиться субоптимальный, поищите нет ли такого предупреждения в Вашем файле. Когда Вы пользуетесь GUI интерфейсом и создаяте конкретную корку, то Вы задаете параметры по которым генерируется NGC файл (а VHDL прилагающийся к нему используется для целей behavioral симуляции, о чем обычно сверху и написано). При Translate в Ваш проект засасывается сильно оптимизированный NGC файл, как правило, плотненько набитый constraint'ами, а не одноименный VHDL.
  23. Ну какая + бесконечность в VHDL... в нем у каждого типа есть свой предел (для integer это всего лишь 2^32-1), о чем и писалось ранее (про 32 битный счетчик). А счетчик clk_counter - считает только до 4 (при 5 так сказать "сброс" в 0).
  24. Лучше приложите временую диаграмку, а то не очень понятно про задержку. Искрене надеюсь, что так. Но у вас использованы переменные integer - счетчики для них синтезируются 32 разрядные (!!!) и если повезет, как в случае с clk_counter, то после анализа возможных состояний обрезаются до 2 битового счетчика. Лучше используйте std_logic_vector для таких переменных/сигналов, тогда вы сможет правильно задать разрядность вашего счетчика и не будете заставлять синтезатор стадать маразмом. (обязательно ознакомтесь с документом XST.DOC, там расписано как лучше описывать разные синтезируемые конструкции, обратите внимание на то, что в примерах использование integer старательно сведено к необходимому минимому, заменяя его std_logic_vector'ом дабы синтезатору легче было работать - абстракция это хорошо... но Вы же не Visual Basic осваиваете; к томуже, если Вы научитесь видет за языковым описанием схему на примитивах - то сможете проектировать компактные высокоскоростные решения) По поводу логики сильное утвердждение получилось - ценю шутку. Поглядите "View RTL Scematic" может появятся идеи как ненадо описявать логику ;). Также стоит поглядеть "View/Edit Routed Design (FPGA Editor)" - так сказать, увидете результат своих описаний. С логикой работы в вашей схеме проблема из-за того, что разрешений счете счетчиков "cl1_val" и "cl2_val" (название даны по FPGA_editor'у - вот сделали бы Вы signal и совпадали бы названия линий и языкового описания ;) ) берется с компоратора, сравнивающего выход 32 разрядных счеткиков с чем-то... ну что написали (абстракцию) - то и получили. А Вы проводили PostPar симуляцию ??? Еще ни разу её результаты у меня не расходились с практикой (ну только если ноги поперепутал в UCF). Поясните, пожалуйса, какие сигналы выведены на осиллограме - уж больно странно выглядит верхний - ни разу не удавалось видеть на выходах ПЛИС трехуровневые сигналы (ну только если она не конфликтовала с другой микросхемой или на конце метровой несогласованной линии). Может там высокочестотное переключение состояний ? (мачштабчик-то у Вас уж больно сжатый, растяните его до 1-5 ns на клетку) Укажите частоту clk - без нее осциллограма не понятна.
  25. А Вы напишите, что хотели сделать... ну или тот самый схематик приложите, что ли... А то непонятно, что же Вы хотели сделать этим кодом. Вот, например, это место очень подозрительно выглядит: clk_counter := clk_counter + 1; if (clk_counter = 1) then --cl2 rise cl2_val := not cl2_val; cl2 <= cl2_val; if (cl2_val='1') then d0 <= '0'; d1 <= '0'; d2 <= '1'; d3 <= '0'; cl2_counter := cl2_counter + 1; end if; Переменная clk_counter "мгновенно" перейдет в состояние '+1' (= 1), и if обязательно сработает... Затем cl2_val "мгновенно" поменяет свое состояние с '0' на '1' и следующий if сработает.... А т.к. сигналам D(3:0) больше нигде не присваиваются значения, то они ВСЕГДА равны D(3:0) = 0100. А зачем тогда весь этот огород городить ??? Даже XST ругается на это: INFO:Xst:2679 - Register <d0> in unit <main> has a constant value of 0 during circuit operation. The register is replaced by logic. Прочитайте внимательно про разницу между присвоением переменных и сигналов.
×
×
  • Создать...