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

Тактирование без генератора

Поделюсь опытом

 

ПЛИС в основном рассчитаны на построение тактируемых устройств. Для этого они содержат специализированные средства для клоков (выделенные контакты, синтезаторы частот, специально проложенные в кристалле пути с малыми задержками для разводки клоков и т.п.) и соответствующее размещение логики. В таких случаях используется внешний тактовый сигнал нужной частоты от генератора, микропроцессора или других устройств размещенных на плате или подключенных к ней.

Но бывают случаи, когда в устройстве в основном распределенная логика или/и счетчики, регистры и т.п. внешних сигналов, а машины состояний если и нужны, то не большие и не критичные к временным разбросам.

И, если на плате только одна микросхема ПЛИС, то добавление генератора делает существенную прибавку к стоимости устройства.

 

В таких случаях я делаю машины состояний на линиях задержки с отводами.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...........минуты 3 репу чесал, что же написать в ответ :-))))))........

В общем, в силу специфики работы для меня важна детерминированость поведения конечного продукта, а вопрос цены не слишком важен. Так что я, конечно, галочку себе в памяти поставлю на всякий случай, что можно в крайнем случае и вот так извернуться, но применять данный метод пока поостерегусь. :-))))

Все это - IMHO.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в схематике есть возможность приделать зтот UPAD ?

И какие еще способы кто знает чтобы внести задержку в схему(без применения клока! ) ?

Как, например, для CPLD есть атрибута NOREDUCE.

А какие варианты для FPGA, чтобы лишние внесенные для задержки элементы не удалялись (не оптимизировались)?

Задержки порой хотелось бы подстраивать от 2 до 25 нс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В принципе, похожие трюки можно делать, используя атрибуты для цепей (KEEP, S(ave)). Назначение атрибутов можнно посмотреть Libraries Guide.

Альтернативный способ - построить генератор на внутренней логике ПЛИС (используются только внутренние ресурсы). В зависимости от скорости кристалла частота такого генератора может быть порядка 100 - 200 МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Атрибуты KEEP и OPTIMIZE ведут себя, на мой взгляд, как-то нестабильно при транслировании чипа. То одну задержку получишь, то другую. Да и набирать элементов мне приходилось порой очень много - т.е. такое чувство, что все равно оптимизируется..

С внутренним генератором - организовывать как то опасаюсь(да и как сделать не выходя на ножки чипа?).

Кто еще какие способы задержек может предложить?

 

И вопрос к svtsvt - Как вы все таки прописываете UPAD !?

Как определяете номер пина Unbonded ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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нс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

svtsvt

Пробовал нарисовать как Вы рекомендуете, пока не получается - ошибки при трансляции.

А какой версией Вы пользуетесь (ISE..?..)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот пример построения внутреннего генератора, использующего только "внутренности" кристалла. В симуляторе не работает, а в жизни - на всю катушку :) На выбранном кристалле XCV50PQ240-4 внутренняя частота CLK составила 210 МГц. При изменении типа OBUFT изменяется и частота. А дальше используй, хоть для задержек, хоть для работы другой внутренней схемы.

XLG.ZIP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

pergunt

Схемы я рисую в Foundation 4.2, но думю что это без разницы рисовать чем-то или текстом на VHDL/Verilog.

На прицепленном рисунке реально работающая в одном из устройств линия задержки из 8-ми элементов.

ПЛИС - Xilinx XC2S30-5-VQ100

DELAY8.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот еще одна "необычная" схема. На том же кристалле XCV50PQ240-4 внутренняя частота CLK составила 365 МГц ! Хитрость - PULLUP - если убрать, схема после оптимизации становится пустой... ;)

XLG2.ZIP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

svtsvt

Большое спасибо за ИДЕЮ ! и пример.

Мне также удалось в пакете ISE подцепить для задержек Unbonded pins.

Весьма существенно, как Вы отметили, это поиск неподсоединенных падов

через эдитор, т.к. никакого дата шита с их номерами нет.

Прямо в библиотеке UPAD нет, поэтому извратился через bidirect.

 

USTAS

Схему пока открыть не смог. Ваши примеры для какого софта (версии)?!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все же не совсем я понимаю, что во всех этих конструкциях является пороговым элементом?

Мои попытки сделать генератор на atmel AT94 (AT40) ни к чему не привели, получается "серое" состояние.

С софтом, пытающимся оптимизировать петли, я боролся тупо. Делал hard-macro, в vhdl их использовал как черный ящик.

 

Если пожертвовать парой ног ввода-вывода, снаружи их соединить, а внутри зациклить через инвертор, то за счет встроенного триггера шмидта генератор получается надежный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проекты сделаны в Xilinx Foundation v4.1.

Обычно я использую для открытия таких архивов в меню Project Manager (File\Restore Project).

Если не получается, то вот копии TOP Sheet этих двух проектов.

И еще раз напоминаю, что в симуляторе такие вещи дают неопределенное состояние, а в реальном кристалле - нормальный генератор. Так что приходится в симуляторе навязывать стимул.

XLG.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

USTAS

Спасибо за схемы !

Насколько стабильная получалась частота генерации?

Запускалась всегда?

Могут ли быть срывы?

А как возможно прикинуть частоту этих генераторов?

Как изменить частоту(в осцилляторе)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все же не совсем я понимаю, что во всех этих конструкциях является пороговым элементом?

Мои попытки сделать генератор на atmel AT94 (AT40) ни к чему не привели, получается "серое" состояние.

С софтом, пытающимся оптимизировать петли, я боролся тупо. Делал hard-macro, в vhdl их использовал как черный ящик.

 

Если пожертвовать парой ног ввода-вывода, снаружи их соединить, а внутри зациклить через инвертор, то за счет встроенного триггера шмидта генератор получается надежный.

В AT94 вроде есть возможность поправить прошивку плис со стороны авр

не пробовал?

если там есть доступ к конфигурации PAD можно наверно и частотой поиграть изменяя задержки ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...