svtsvt 0 26 октября, 2004 Опубликовано 26 октября, 2004 · Жалоба Поделюсь опытом ПЛИС в основном рассчитаны на построение тактируемых устройств. Для этого они содержат специализированные средства для клоков (выделенные контакты, синтезаторы частот, специально проложенные в кристалле пути с малыми задержками для разводки клоков и т.п.) и соответствующее размещение логики. В таких случаях используется внешний тактовый сигнал нужной частоты от генератора, микропроцессора или других устройств размещенных на плате или подключенных к ней. Но бывают случаи, когда в устройстве в основном распределенная логика или/и счетчики, регистры и т.п. внешних сигналов, а машины состояний если и нужны, то не большие и не критичные к временным разбросам. И, если на плате только одна микросхема ПЛИС, то добавление генератора делает существенную прибавку к стоимости устройства. В таких случаях я делаю машины состояний на линиях задержки с отводами. А эти линии задержки - это последовательно соединенные не подключенные к ногам ПЛИС блоки ввода/вывода (unbonded I/O pad - UPAD). Обычно их довольно много на кристалле и чем меньше ног у корпуса, тем больше количество UPAD. Сама задержка в основном определяется задаваемым выходным током UPAD - чем меньше ток, тем больше задержка. Например, для Spartan2 при заданном выходном токе в 2мА (минимальный) задержка на UPAD составляет около 25нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PorychikKize 4 26 октября, 2004 Опубликовано 26 октября, 2004 · Жалоба ...........минуты 3 репу чесал, что же написать в ответ :-))))))........ В общем, в силу специфики работы для меня важна детерминированость поведения конечного продукта, а вопрос цены не слишком важен. Так что я, конечно, галочку себе в памяти поставлю на всякий случай, что можно в крайнем случае и вот так извернуться, но применять данный метод пока поостерегусь. :-)))) Все это - IMHO. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pergunt 0 27 октября, 2004 Опубликовано 27 октября, 2004 · Жалоба А в схематике есть возможность приделать зтот UPAD ? И какие еще способы кто знает чтобы внести задержку в схему(без применения клока! ) ? Как, например, для CPLD есть атрибута NOREDUCE. А какие варианты для FPGA, чтобы лишние внесенные для задержки элементы не удалялись (не оптимизировались)? Задержки порой хотелось бы подстраивать от 2 до 25 нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
USTAS 0 27 октября, 2004 Опубликовано 27 октября, 2004 · Жалоба В принципе, похожие трюки можно делать, используя атрибуты для цепей (KEEP, S(ave)). Назначение атрибутов можнно посмотреть Libraries Guide. Альтернативный способ - построить генератор на внутренней логике ПЛИС (используются только внутренние ресурсы). В зависимости от скорости кристалла частота такого генератора может быть порядка 100 - 200 МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pergunt 0 27 октября, 2004 Опубликовано 27 октября, 2004 · Жалоба Атрибуты KEEP и OPTIMIZE ведут себя, на мой взгляд, как-то нестабильно при транслировании чипа. То одну задержку получишь, то другую. Да и набирать элементов мне приходилось порой очень много - т.е. такое чувство, что все равно оптимизируется.. С внутренним генератором - организовывать как то опасаюсь(да и как сделать не выходя на ножки чипа?). Кто еще какие способы задержек может предложить? И вопрос к svtsvt - Как вы все таки прописываете UPAD !? Как определяете номер пина Unbonded ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svtsvt 0 28 октября, 2004 Опубликовано 28 октября, 2004 · Жалоба pergunt Один элемент задержки - это IOBUF (от IOBUF_S_24 до IOBUF_S_2 - последний - самый медленный) с прицепленным UPAD c атрибутом LOC=UNBx. Номер (х) UNB беру из структуры кристалла через FPGA editor (это быстрее, чем искать в документации). Вот кусочек из Post Layout Timing Report Source |Destination | Delay | ---------------+---------------+---------+ H4/DUP2 |H4/DUP3 | 24.434| H4/DUP2 |H4/DUP4 | 49.460| H4/DUP2 |H4/DUP5 | 73.984| H4/DUP2 |H4/DUP6 | 99.064| H4/DUP2 |H4/DUP7 | 123.448| H4/DUP2 |H4/DUP8 | 147.866| DUP2-3-4-5-6-7-8 - это последовательно соединенные элементы задержки из IOBUF_S_2 и UPAD. Видно, что задержка на каждом практически одинаковая - около 25нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pergunt 0 28 октября, 2004 Опубликовано 28 октября, 2004 · Жалоба svtsvt Пробовал нарисовать как Вы рекомендуете, пока не получается - ошибки при трансляции. А какой версией Вы пользуетесь (ISE..?..)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
USTAS 0 28 октября, 2004 Опубликовано 28 октября, 2004 · Жалоба Вот пример построения внутреннего генератора, использующего только "внутренности" кристалла. В симуляторе не работает, а в жизни - на всю катушку :) На выбранном кристалле XCV50PQ240-4 внутренняя частота CLK составила 210 МГц. При изменении типа OBUFT изменяется и частота. А дальше используй, хоть для задержек, хоть для работы другой внутренней схемы. XLG.ZIP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svtsvt 0 29 октября, 2004 Опубликовано 29 октября, 2004 · Жалоба pergunt Схемы я рисую в Foundation 4.2, но думю что это без разницы рисовать чем-то или текстом на VHDL/Verilog. На прицепленном рисунке реально работающая в одном из устройств линия задержки из 8-ми элементов. ПЛИС - Xilinx XC2S30-5-VQ100 DELAY8.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
USTAS 0 29 октября, 2004 Опубликовано 29 октября, 2004 · Жалоба А вот еще одна "необычная" схема. На том же кристалле XCV50PQ240-4 внутренняя частота CLK составила 365 МГц ! Хитрость - PULLUP - если убрать, схема после оптимизации становится пустой... ;) XLG2.ZIP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pergunt 0 29 октября, 2004 Опубликовано 29 октября, 2004 · Жалоба svtsvt Большое спасибо за ИДЕЮ ! и пример. Мне также удалось в пакете ISE подцепить для задержек Unbonded pins. Весьма существенно, как Вы отметили, это поиск неподсоединенных падов через эдитор, т.к. никакого дата шита с их номерами нет. Прямо в библиотеке UPAD нет, поэтому извратился через bidirect. USTAS Схему пока открыть не смог. Ваши примеры для какого софта (версии)?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 29 октября, 2004 Опубликовано 29 октября, 2004 · Жалоба Все же не совсем я понимаю, что во всех этих конструкциях является пороговым элементом? Мои попытки сделать генератор на atmel AT94 (AT40) ни к чему не привели, получается "серое" состояние. С софтом, пытающимся оптимизировать петли, я боролся тупо. Делал hard-macro, в vhdl их использовал как черный ящик. Если пожертвовать парой ног ввода-вывода, снаружи их соединить, а внутри зациклить через инвертор, то за счет встроенного триггера шмидта генератор получается надежный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
USTAS 0 29 октября, 2004 Опубликовано 29 октября, 2004 · Жалоба Проекты сделаны в Xilinx Foundation v4.1. Обычно я использую для открытия таких архивов в меню Project Manager (File\Restore Project). Если не получается, то вот копии TOP Sheet этих двух проектов. И еще раз напоминаю, что в симуляторе такие вещи дают неопределенное состояние, а в реальном кристалле - нормальный генератор. Так что приходится в симуляторе навязывать стимул. XLG.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pergunt 0 29 октября, 2004 Опубликовано 29 октября, 2004 · Жалоба USTAS Спасибо за схемы ! Насколько стабильная получалась частота генерации? Запускалась всегда? Могут ли быть срывы? А как возможно прикинуть частоту этих генераторов? Как изменить частоту(в осцилляторе)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hlebn 0 29 октября, 2004 Опубликовано 29 октября, 2004 · Жалоба Все же не совсем я понимаю, что во всех этих конструкциях является пороговым элементом? Мои попытки сделать генератор на atmel AT94 (AT40) ни к чему не привели, получается "серое" состояние. С софтом, пытающимся оптимизировать петли, я боролся тупо. Делал hard-macro, в vhdl их использовал как черный ящик. Если пожертвовать парой ног ввода-вывода, снаружи их соединить, а внутри зациклить через инвертор, то за счет встроенного триггера шмидта генератор получается надежный. В AT94 вроде есть возможность поправить прошивку плис со стороны авр не пробовал? если там есть доступ к конфигурации PAD можно наверно и частотой поиграть изменяя задержки ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться