|
Тактирование без генератора, Нетактируемые задержки в ПЛИС |
|
|
|
Oct 26 2004, 11:13
|
Участник

Группа: Свой
Сообщений: 33
Регистрация: 26-10-04
Пользователь №: 983

|
Поделюсь опытом
ПЛИС в основном рассчитаны на построение тактируемых устройств. Для этого они содержат специализированные средства для клоков (выделенные контакты, синтезаторы частот, специально проложенные в кристалле пути с малыми задержками для разводки клоков и т.п.) и соответствующее размещение логики. В таких случаях используется внешний тактовый сигнал нужной частоты от генератора, микропроцессора или других устройств размещенных на плате или подключенных к ней. Но бывают случаи, когда в устройстве в основном распределенная логика или/и счетчики, регистры и т.п. внешних сигналов, а машины состояний если и нужны, то не большие и не критичные к временным разбросам. И, если на плате только одна микросхема ПЛИС, то добавление генератора делает существенную прибавку к стоимости устройства.
В таких случаях я делаю машины состояний на линиях задержки с отводами. А эти линии задержки - это последовательно соединенные не подключенные к ногам ПЛИС блоки ввода/вывода (unbonded I/O pad - UPAD). Обычно их довольно много на кристалле и чем меньше ног у корпуса, тем больше количество UPAD. Сама задержка в основном определяется задаваемым выходным током UPAD - чем меньше ток, тем больше задержка. Например, для Spartan2 при заданном выходном токе в 2мА (минимальный) задержка на UPAD составляет около 25нс.
|
|
|
|
|
Oct 26 2004, 13:52
|

Местный
  
Группа: Свой
Сообщений: 310
Регистрация: 15-10-04
Пользователь №: 884

|
...........минуты 3 репу чесал, что же написать в ответ :-))))))........ В общем, в силу специфики работы для меня важна детерминированость поведения конечного продукта, а вопрос цены не слишком важен. Так что я, конечно, галочку себе в памяти поставлю на всякий случай, что можно в крайнем случае и вот так извернуться, но применять данный метод пока поостерегусь. :-)))) Все это - IMHO.
--------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингисхан.
|
|
|
|
|
Oct 27 2004, 13:19
|
Участник

Группа: Свой
Сообщений: 46
Регистрация: 27-09-04
Пользователь №: 731

|
В принципе, похожие трюки можно делать, используя атрибуты для цепей (KEEP, S(ave)). Назначение атрибутов можнно посмотреть Libraries Guide. Альтернативный способ - построить генератор на внутренней логике ПЛИС (используются только внутренние ресурсы). В зависимости от скорости кристалла частота такого генератора может быть порядка 100 - 200 МГц.
|
|
|
|
|
Oct 28 2004, 14:48
|
Участник

Группа: Свой
Сообщений: 33
Регистрация: 26-10-04
Пользователь №: 983

|
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нс.
|
|
|
|
|
Oct 28 2004, 15:49
|
Участник

Группа: Свой
Сообщений: 46
Регистрация: 27-09-04
Пользователь №: 731

|
Вот пример построения внутреннего генератора, использующего только "внутренности" кристалла. В симуляторе не работает, а в жизни - на всю катушку  На выбранном кристалле XCV50PQ240-4 внутренняя частота CLK составила 210 МГц. При изменении типа OBUFT изменяется и частота. А дальше используй, хоть для задержек, хоть для работы другой внутренней схемы.
Прикрепленные файлы
XLG.ZIP ( 66.18 килобайт )
Кол-во скачиваний: 125
|
|
|
|
|
Oct 29 2004, 05:34
|
Участник

Группа: Свой
Сообщений: 33
Регистрация: 26-10-04
Пользователь №: 983

|
perguntСхемы я рисую в Foundation 4.2, но думю что это без разницы рисовать чем-то или текстом на VHDL/Verilog. На прицепленном рисунке реально работающая в одном из устройств линия задержки из 8-ми элементов. ПЛИС - Xilinx XC2S30-5-VQ100
Прикрепленные файлы
DELAY8.pdf ( 22.61 килобайт )
Кол-во скачиваний: 187
|
|
|
|
|
Oct 29 2004, 06:03
|
Участник

Группа: Свой
Сообщений: 46
Регистрация: 27-09-04
Пользователь №: 731

|
А вот еще одна "необычная" схема. На том же кристалле XCV50PQ240-4 внутренняя частота CLK составила 365 МГц ! Хитрость - PULLUP - если убрать, схема после оптимизации становится пустой...
Прикрепленные файлы
XLG2.ZIP ( 65.92 килобайт )
Кол-во скачиваний: 106
|
|
|
|
|
Oct 29 2004, 09:26
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Все же не совсем я понимаю, что во всех этих конструкциях является пороговым элементом? Мои попытки сделать генератор на atmel AT94 (AT40) ни к чему не привели, получается "серое" состояние. С софтом, пытающимся оптимизировать петли, я боролся тупо. Делал hard-macro, в vhdl их использовал как черный ящик.
Если пожертвовать парой ног ввода-вывода, снаружи их соединить, а внутри зациклить через инвертор, то за счет встроенного триггера шмидта генератор получается надежный.
|
|
|
|
|
Oct 29 2004, 13:42
|
Участник

Группа: Свой
Сообщений: 46
Регистрация: 27-09-04
Пользователь №: 731

|
Проекты сделаны в Xilinx Foundation v4.1. Обычно я использую для открытия таких архивов в меню Project Manager (File\Restore Project). Если не получается, то вот копии TOP Sheet этих двух проектов. И еще раз напоминаю, что в симуляторе такие вещи дают неопределенное состояние, а в реальном кристалле - нормальный генератор. Так что приходится в симуляторе навязывать стимул.
Прикрепленные файлы
XLG.pdf ( 5.91 килобайт )
Кол-во скачиваний: 157
|
|
|
|
|
Oct 29 2004, 19:48
|
Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 22-10-04
Пользователь №: 963

|
Цитата(Shtirlits @ Oct 29 2004, 01:26 PM) Все же не совсем я понимаю, что во всех этих конструкциях является пороговым элементом? Мои попытки сделать генератор на atmel AT94 (AT40) ни к чему не привели, получается "серое" состояние. С софтом, пытающимся оптимизировать петли, я боролся тупо. Делал hard-macro, в vhdl их использовал как черный ящик.
Если пожертвовать парой ног ввода-вывода, снаружи их соединить, а внутри зациклить через инвертор, то за счет встроенного триггера шмидта генератор получается надежный. В AT94 вроде есть возможность поправить прошивку плис со стороны авр не пробовал? если там есть доступ к конфигурации PAD можно наверно и частотой поиграть изменяя задержки
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|