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

 
 
> Вопрос по Multibit Domain Crossing
lim
сообщение Jan 8 2009, 18:21
Сообщение #1


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

Группа: Участник
Сообщений: 101
Регистрация: 27-05-05
Пользователь №: 5 486



Вообщем почитал тут статью по передаче данных между асинхронными доменами.
Многое применил. Но вот пока одну задачу не могу решить - как сделать!

Вообщем, задача такова.
Частоты в передаваемом и принимаемом доменах одинаковые, но асинхронные,
т.е. есть сдвиг по фазе. А именно из FPGA данные выдаются на DAC ( ЦАП).
И хоть FPGA и DAC тактируются от одного генератора - учитывая разницу в разводке,
да и внутри DAC получается задержка. Вообщем из DAC выдаётся частота, к которой
нужно привязать данные из FPGA. Частота эта - высокая, ну в проекте есть ещё только удвоенная,
т.е. фактически скорость выдачи данных на ЦАП в два раза ниже тактовой частоты работы проекта.
Если бы частота выдачи данных была бы значительно ниже тактовой, то тут пути имеются,
а так что-то ничего не придумывается.
Вообще есть ли решение, если тактовая частота проекта всего лишь в два раза выше частоты выдачи данных,
или же нужно обязательно повышать тактовую частоту ?

Буду особенно признателен, за пример, приведённый, на Verilog, или какие-нибудь ссылки на них и т.д.

С Уважением,
Игорь
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
murmel1
сообщение Jan 8 2009, 21:00
Сообщение #2


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

Группа: Свой
Сообщений: 166
Регистрация: 2-11-08
Из: Ростов-на-Дону
Пользователь №: 41 331



1) В вашем случае не совсем верно понятие "асинхронные". Ведь сдвиг фазы между источником и ПЛИС одинаков, более того - известен заранее. IMHO, вся задача сводится к подбору tco/tsu/th (см.).
2) В большинстве случаев когда нужно передать данные между кусками проекта с разными тактовыми частотами, достаточно применять DUAL-CLOCK FIFO. Обычно на более глубокое изучение вопроса (какая частота чаще, и т.д.) и конкретизацию задачи не стоит даже тратить время. Одно универсальное решение удобнее трех специфичных biggrin.gif
Go to the top of the page
 
+Quote Post
Doka
сообщение Jan 9 2009, 16:59
Сообщение #3


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(murmel1 @ Jan 9 2009, 00:00) *
1) В вашем случае не совсем верно понятие "асинхронные". Ведь сдвиг фазы между источником и ПЛИС одинаков, более того - известен заранее. IMHO, вся задача сводится к подбору tco/tsu/th (см.).
+1

Цитата(murmel1 @ Jan 9 2009, 00:00) *
2) В большинстве случаев когда нужно передать данные между кусками проекта с разными тактовыми частотами, достаточно применять DUAL-CLOCK FIFO. Обычно на более глубокое изучение вопроса (какая частота чаще, и т.д.) и конкретизацию задачи не стоит даже тратить время. Одно универсальное решение удобнее трех специфичных biggrin.gif
тем более в FPGA есть такая замечательная штука для этого как true DualPort RAM =)

а почитать об этом можно, например тут
http://www.sunburst-design.com/papers/Cumm...002SJ_FIFO1.pdf
http://www.sunburst-design.com/papers/Cumm...002SJ_FIFO2.pdf


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
cms
сообщение Jan 9 2009, 20:04
Сообщение #4


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

Группа: Свой
Сообщений: 168
Регистрация: 6-07-04
Пользователь №: 266



Главное правило асинхронных переходов - на каждом такте должен меняться только один сигнал (бит).
Поэтому при клоковом переходе шины данных пропускают через память, счетчики делают в коде Грея, а контрольные сигналы по возможности убирают совсем.
Ну и ставят по два-три триггера для подавления метастабильности на транзитные сигналы. У альтеры есть хорошая аппнота на эту тему, поищите на сайте.

Но в Вашем случае это абсолютно излишне. Пропустите входной клок в ПЛИС через PLL с фиксированным фазовым сдвигом. Если фазовый сдвиг обусловлен только постоянными задержками PCB и DAC, то этого будет достаточно для стабильной работы во всем PVT-диапазоне. Ну и поделите клок выходных данных на два, какие проблемы?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 13 2009, 07:09
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Насколько я понял, DAC и FPGA имеют общую опорную относительно низкую частоту, которую DAC умножает своей PLL и выдает на ПЛИС как опорную, а ПЛИС умножает своей PLL и использует как внутреннюю. В таком случае сдвиг по фазе не известен зараннее - он зависит от того, как установятся PLL. Поэтому проще всего в данном случае поставить банальное FIFO, запись в которое (от логики FPGA) будет разрешена всегда, а чтение (со стороны DAC) будет разрешаться простенькой схемой, которая будет давать ему наполниться до половины. А еще проще - в качестве внутренней частоты ПЛИС использовать частоту, которую выдает DAC: вобще все будет прямо и красиво.
Go to the top of the page
 
+Quote Post

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

 


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


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