|
|
  |
Передача сигнала из синхронной 66MHz в синхронную схему 50MHz |
|
|
|
Jul 8 2009, 13:03
|

Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 15-06-04
Из: Менделеево
Пользователь №: 30

|
Подск пож: необходимо передать 2 сигнала (hsync, vsync) по 1бит с выхода D триггеров (clk_in=66MHz), на вход триггеров 50MHz. Длительность имп на частоте 50MHz может быть неск тактов (не критично). В схеме 50Mhz будет производиться взаимный анализ сигналов. Код if(vsync) else if(hsync) else Если увеличить длительность пульсов vsync, hsync на частоте 66MHz, все- равно это приводит к иногда (1/100) нестабилльности работы схемы (Chipscope) Спасибо.
|
|
|
|
|
Jul 8 2009, 14:19
|

Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 15-06-04
Из: Менделеево
Пользователь №: 30

|
Цитата(DmitryR @ Jul 8 2009, 17:40)  Ищите: в форуме тема перехода временного домена раскрыта чуть более, чем полностью. Кратко, надо поставить синхронизаторы и длительность импульса на 66 сделать минимум наверное 3 такта. Не очень ищется. http://www.google.ru/search?hl=ru&neww...mp;aq=f&oq=Может ссылочку подбросите?
|
|
|
|
|
Jul 8 2009, 14:33
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(gosha @ Jul 8 2009, 16:03)  Подск пож: необходимо передать 2 сигнала (hsync, vsync) по 1бит с выхода D триггеров (clk_in=66MHz), на вход триггеров 50MHz. Длительность имп на частоте 50MHz может быть неск тактов (не критично). В схеме 50Mhz будет производиться взаимный анализ сигналов. Код if(vsync) else if(hsync) else Если увеличить длительность пульсов vsync, hsync на частоте 66MHz, все- равно это приводит к иногда (1/100) нестабилльности работы схемы (Chipscope) Спасибо. Попробуйте это Код -- Provides a one-shot pulse from a non-clock input, with reset --**Insert the following between the 'architecture' and ---'begin' keywords** signal Q1, Q2, Q3 : std_logic; --**Insert the following after the 'begin' keyword** process(<clock>) begin if (<clock>'event and <clock> = '1') then if (<reset> = '1') then Q1 <= '0'; Q2 <= '0'; Q3 <= '0'; else Q1 <= D_IN; Q2 <= Q1; Q3 <= Q2; end if; end if; end process; Q_OUT <= Q1 and Q2 and (not Q3); код на VHDL Дополнительно скажу: сделайте строб готовности данных - этот строб пропускаете через схему (см код на VHDL), т.о. производите синхронизацию и забираете свои данные уже на другой тактовой частоте
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Jul 8 2009, 18:36
|
Частый гость
 
Группа: Свой
Сообщений: 119
Регистрация: 16-07-07
Из: Тула
Пользователь №: 29 160

|
тут все замечательно расписано: http://en.wikipedia.org/wiki/Clock_domain_crossingтам есть ссылочки на 2 статьи, очень полезные. если тяжко читать по английски, то есть цикл статей вот этого господина http://iosifk.narod.ru/hdl_coding/verilog.htm , глава номер 11. В электронном виде нет, можно либо диск заказть у него, либо взять нужный номер журнала "компоненты и технологии" и почитать там
|
|
|
|
|
Jul 9 2009, 07:42
|

Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 15-06-04
Из: Менделеево
Пользователь №: 30

|
Цитата(des00 @ Jul 9 2009, 07:32)  я бы не решал эту задачу через з...цу, а провел бы взаимный анализ на частоте 66МГц, а результат его передал в домен 50МГц. Это будет проще и надежнее ЗЫ. Если взаимный анализ включает в себя замер временных интервалов, то тем более заниматься этим после нарезки сигнала на 50МГц (с ошибкой по положению фронта) ИМХО глупо. Спасибо. Как я понял: - для передачи одиночного сигнала через временной домен, на приемной стороне необходимо ставить 2 последовательных D триггера (на передающей 66MHz стороне длина имп- не менне 3 такта clk 50MHz?). - для передачи слов данных - использовать FIFO ise_core_generator, которое использует код грея для счетчиков wr_fifo_adr/rd_fifo_adr адресов. - сравнением кодов грея wr_fifo_adr/rd_fifo_adr, ip_core вычислет флаг fifo_empty. Это так?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|