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

 
 
> Virtex4 + ISE Foundation тактирование по двум клокам, создание проекта с тактированием по двум клокам
MarkII
сообщение Aug 10 2009, 15:51
Сообщение #1





Группа: Участник
Сообщений: 4
Регистрация: 28-01-09
Пользователь №: 44 091



Помогите! Возникла проблема с синтезом проекта в ISE Foundation 10.1i Тактирование осуществляется по двум тактовым сигналам. Синтаксически проект компилируется в ModelSim'e. Проект представляет из себя организацию двунаправленного последовательного порта с записью/чтением данных в память, организованную внутри ПЛИС. Необходимо синхронизировать схему по обоим фронтам. При приеме данных синхронизация происходит от сигнала передатчика (50 МГц) плюс вспомогательный внутренний клок удвоенной частоты, а при передаче данных - от внутреннего клока (50 МГц). Подскажите, пожалуйста, как стоить подобный проект?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MarkII
сообщение Aug 20 2009, 10:35
Сообщение #2





Группа: Участник
Сообщений: 4
Регистрация: 28-01-09
Пользователь №: 44 091



Нашел строку кода, из за которой выдается такое сообщение об ошибке. Закоментировал строку и синтез прошел удачно. Строка кода следующая:
flag <= clk_link_out'stable(12 ns);
busy <= '0' when flag else '1';

Если в двух словах, есть внешний тактовый сигнал, по которому принимаются данные, и требуется сделать сигнал (в данном случае busy), который бы устанавливался в "1" при наличии тактового сигнала "clk_link_out" на входе и падал в "0" при его отсутствии.
У кого какие идеи?
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Aug 20 2009, 14:18
Сообщение #3


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(MarkII @ Aug 20 2009, 14:35) *
Если в двух словах, есть внешний тактовый сигнал, по которому принимаются данные, и требуется сделать сигнал (в данном случае busy), который бы устанавливался в "1" при наличии тактового сигнала "clk_link_out" на входе и падал в "0" при его отсутствии.
У кого какие идеи?

С наскоку, могу предложить только тривиальный вариант. Предположим (ибо это не прозвучало явно), что:
1. Busy должен быть простробирован с некоей частотой, обзовём этот сигнал CLK_BUSY.
2. clk_link_out и CLK_BUSY имеют разные частоты, и частота CLK_BUSY выше раза в 2, чем у clk_link_out.

Тогда, решение представляется таким образом:
1. clk_link_out последовательно проходит пару триггеров, тактируемых CLK_BUSY (примитивный вариант clock domain перехода), с последнего триггера выходит сигнал BUSY_CB_RST.
2. делаем маленький счетчик: синхронный сброс BUSY_CB_RST (active high), тактируется CLK_BUSY, перенос BUSY_CB_CY, разрешение счета not(BUSY_CB_CY).

Как только clk_link_out замрёт в состонянии '0', то на счетчик перестанут подаваться сбросы, соответственно через некоторое время он досчитает до предельного значения, на выходе появиться перенос BUSY_CB_CY (блокирующий дальнейший счёт), который и можно использовать, как busy.
Go to the top of the page
 
+Quote Post



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

 


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


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