реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> синхронизация компонент внутри ПЛИС
cornflyer
сообщение Jul 11 2006, 08:14
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729



Большие проекты для ПЛИС обычно разбиваюца на отдельные части - компоненты. Реализацию пишут, например, на VHDL. В моем случае я сперва разработал архитектуру проекта, соединил "кубики" в графическом редакторе ISE 7. Написал на VHDL код для этих "кубиков". Один из компонентов проекта - ресивер для RS-232. Я сделал ему клок 50 МГц чтобы не мучаца с ошибками. Остальные компоненты у меня раюотают от частоты 20МГц, т.к. у меня внешнее АЦП работает от 20МГц. Возникла проблема синхронизации данных. Клок сделал как написано в мануале - взял DCM, вытацил из него через буфферы BUFG два клока - 50 МГц и 20 МГц, завел feedback (цепь обратной связи для синхронизации). Но полезли глюки ))) вот сижу и думаю, как бы сделать синхронизацию. Есть идеи!?
Go to the top of the page
 
+Quote Post
vetal
сообщение Jul 11 2006, 08:18
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Этот вопрос рассматривался в теме: метастабильность.
http://electronix.ru/forum/index.php?showt...%ED%EE%F1%F2%FC
Go to the top of the page
 
+Quote Post
makc
сообщение Jul 11 2006, 08:23
Сообщение #3


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



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


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Wild
сообщение Jul 11 2006, 08:36
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 216
Регистрация: 26-05-06
Из: Коломна
Пользователь №: 17 479



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


Вам надо из тактового домена A передать данные в тактовый домен B.

1. Для этого на регистре в тактовом домене A выставляются данные и подается импульс в тактовый домен B.
Фактически задача сводится к передаче импульса из одного тактового домена в другой.
Как это сделать?
2. В тактовом домене А формируем сигнал(назовем его SA), который изменяет свой уровень по импульсу из A. (можно в А формировать не импульс, а сразу изменение уровня некоторого сигнала).

3. Так как изменение SA асинхронно такту домена B, необходимо избежать метастабильности. Пропускаем SA через два (можно больше но минимум два ) триггера, тактируемых тактом B, полученный сигнал назовем SB.
4. По условию, что SB на предыдущем такте не равен SB в текущем такте, защелкиваем данные в домене B.
Go to the top of the page
 
+Quote Post
sazh
сообщение Jul 11 2006, 09:05
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



А почему приемник rs232 от 20 мГц не запустить. Какая разница для него, 50 или 20.
И проблем не будет.
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Jul 11 2006, 11:41
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729



Может из одного DCM'а сгенерить 20МГц и 40МГц. Может тогда они будут синхронны?
Go to the top of the page
 
+Quote Post
sazh
сообщение Jul 11 2006, 12:02
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Они будут синхронны. И наверняка с прогнозируемыми временами установки фронтов друг относительно друга. Я одного не пойму. У Вас несущая 20 мГц. Все модули сидят на ней. Почему нельзя на нее модуль rs232 посадить. О каких погрешностях Вы говорите. Нет разницы что 20, что 40, что 50 мГц. Только разрядностью счетчика отличается.
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Jul 11 2006, 12:28
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729



20 МГц - это значит длительность одного бита на шине будет измеряца квантами по 50 ns. У меня скорость передачи максимальна - 115200 бит в секунду, т.е. длительность одного бита на шине = 8.680 мкс. 8.680/50=174 клока будет длица один бит. Частота получица 174*50=8.700 мкс. Видишь частота разная. Будет копица ошибка, в конце байта она будет 500 нс. По спецификации допустимо 2-3% от периода байта, кажеца...
Go to the top of the page
 
+Quote Post
sazh
сообщение Jul 11 2006, 13:06
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



По какой это спецификации. Если это UBRR для микроконтроллеров, так они жестко привязаны к своей формуле.
Если гука открыть, там речь о скорости идет.
20 мГц поделить на 174 это 114942 бод. Меньше 1% получается. Действительно на 4 мкс потеряете 500 нс. (если от середины считать) 3.5 мкс еще останется.
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Jul 12 2006, 05:17
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729



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

будет ли девайс работать, если по фронту выставлять данные, а по спаду - читать?
Go to the top of the page
 
+Quote Post
Kopart
сообщение Jul 12 2006, 08:01
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(cornflyer @ Jul 12 2006, 09:17) *
да, наверное лучший вариант - работать с 20МГц. ща попробую

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


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

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


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Jul 12 2006, 11:24
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729



я же использую DCM для генерации стабильного клока. К тому же я испоользую Spartan 3, а у него в мануале написано, что он поддерживает DDR. Значит можна использовать оба фронта
Go to the top of the page
 
+Quote Post
sazh
сообщение Jul 12 2006, 11:31
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



О каких данных идет речь?
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Jul 12 2006, 13:45
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729



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

вроде все работает!!!!!!!!!!! ура!!!!!!!!!!!!!!
Go to the top of the page
 
+Quote Post
AlexB
сообщение Jul 14 2006, 13:08
Сообщение #15


Участник
*

Группа: Свой
Сообщений: 37
Регистрация: 9-08-05
Из: The Netherlands
Пользователь №: 7 477



Цитата(cornflyer @ Jul 12 2006, 15:24) *
я же использую DCM для генерации стабильного клока. К тому же я испоользую Spartan 3, а у него в мануале написано, что он поддерживает DDR. Значит можна использовать оба фронта


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

Сообщение отредактировал AlexB - Jul 14 2006, 13:19
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.0163 секунд с 7
ELECTRONIX ©2004-2016