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

синхронизация компонент внутри ПЛИС

Большие проекты для ПЛИС обычно разбиваюца на отдельные части - компоненты. Реализацию пишут, например, на VHDL. В моем случае я сперва разработал архитектуру проекта, соединил "кубики" в графическом редакторе ISE 7. Написал на VHDL код для этих "кубиков". Один из компонентов проекта - ресивер для RS-232. Я сделал ему клок 50 МГц чтобы не мучаца с ошибками. Остальные компоненты у меня раюотают от частоты 20МГц, т.к. у меня внешнее АЦП работает от 20МГц. Возникла проблема синхронизации данных. Клок сделал как написано в мануале - взял DCM, вытацил из него через буфферы BUFG два клока - 50 МГц и 20 МГц, завел feedback (цепь обратной связи для синхронизации). Но полезли глюки ))) вот сижу и думаю, как бы сделать синхронизацию. Есть идеи!?

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


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

Этот вопрос рассматривался в теме: метастабильность.

http://electronix.ru/forum/index.php?showt...%ED%EE%F1%F2%FC

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


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

Тут есть два варианта: либо делайте все на 50 МГц, либо ставьте синхронизаторы и FIFO для передачи данных и управляющих сигналов между блоками, работающими на разных частотах.

Поищите на форуме по ключевым словам "синхронизатор", "метастабильность". Эта тема уже не раз обсуждалась в разных вариациях.

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


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

А почему приемник rs232 от 20 мГц не запустить. Какая разница для него, 50 или 20.

И проблем не будет.

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


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

Они будут синхронны. И наверняка с прогнозируемыми временами установки фронтов друг относительно друга. Я одного не пойму. У Вас несущая 20 мГц. Все модули сидят на ней. Почему нельзя на нее модуль rs232 посадить. О каких погрешностях Вы говорите. Нет разницы что 20, что 40, что 50 мГц. Только разрядностью счетчика отличается.

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


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

20 МГц - это значит длительность одного бита на шине будет измеряца квантами по 50 ns. У меня скорость передачи максимальна - 115200 бит в секунду, т.е. длительность одного бита на шине = 8.680 мкс. 8.680/50=174 клока будет длица один бит. Частота получица 174*50=8.700 мкс. Видишь частота разная. Будет копица ошибка, в конце байта она будет 500 нс. По спецификации допустимо 2-3% от периода байта, кажеца...

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


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

По какой это спецификации. Если это UBRR для микроконтроллеров, так они жестко привязаны к своей формуле.

Если гука открыть, там речь о скорости идет.

20 мГц поделить на 174 это 114942 бод. Меньше 1% получается. Действительно на 4 мкс потеряете 500 нс. (если от середины считать) 3.5 мкс еще останется.

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


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

да, наверное лучший вариант - работать с 20МГц. ща попробую

 

будет ли девайс работать, если по фронту выставлять данные, а по спаду - читать?

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


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

да, наверное лучший вариант - работать с 20МГц. ща попробую

 

будет ли девайс работать, если по фронту выставлять данные, а по спаду - читать?

 

Лучше избегать таких решений, если не требуется еще большая производительность.

 

Принцип синхронного дизайна предусматривает работу либо от фронта либо от спада.

Во первых так вреде синтезаторам проще

Во вторых у Вас точно не будет глюков, если скважность тактовой будет плавать

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


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

я же использую DCM для генерации стабильного клока. К тому же я испоользую Spartan 3, а у него в мануале написано, что он поддерживает DDR. Значит можна использовать оба фронта

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


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

данные - цифровые сигналы на шинах

по фронту - грузяца всякие спец-регистры

по спаду клока - вычисляюца промежуточные данные

опять по фронут клока - в спец-регистры засылаюца промежуточные данные

по спаду клока - вычисляюца следующие промежуточные данные

и т. д.

там у меня несколько FSM

 

вроде все работает!!!!!!!!!!! ура!!!!!!!!!!!!!!

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


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

я же использую DCM для генерации стабильного клока. К тому же я испоользую Spartan 3, а у него в мануале написано, что он поддерживает DDR. Значит можна использовать оба фронта

 

Советую Вам внимательно прочесть страницы 37 и 38. ( http://direct.xilinx.com/bvdocs/appnotes/xapp462.pdf )

Изменено пользователем AlexB

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


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

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

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

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

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

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

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

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

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

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