|
|
  |
Синхронизатор, Две тактовые, единичные импульсы |
|
|
|
Apr 7 2011, 13:33
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(AlphaMil @ Apr 7 2011, 17:19)  Гуру, подскажите, как правильно сделать: есть одиночный импульс синхронный 100МГц, он должен породить одиночный импульс на 50МГц. Весь проект нет смысла переводить на повышенную частоту. На рисунке 8 в статье разгадка А это базовый синхронизатор оттуда. CODE library IEEE; use IEEE.STD_LOGIC_1164.all; entity syn is port( clk : in STD_LOGIC; in_level : in STD_LOGIC; reset : in STD_LOGIC; imp : out STD_LOGIC ); end syn; architecture syn_body of syn is signal qqq : STD_LOGIC; signal ddd : STD_LOGIC; begin tg: process (clk) begin if clk'event and clk = '1' then if reset='1' then qqq <= '0'; ddd <= '0'; else qqq <= ddd; ddd <= in_level; end if; end if; end process; imp <= ddd xor qqq; end syn_body;
На входе in_level любая смена уровня порождает импульс привязанный к другой частоте. На элементе xor (для этого in_level ) сделаете смену уровня на обратный по вновь поступающему импульсу.... В конце рабочего дня бдительность потерял. Тут просто Т-триггер(делитель)! Усталость... Извините!
Сообщение отредактировал Мур - Apr 7 2011, 16:23
|
|
|
|
|
Apr 7 2011, 17:36
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(Kuzmi4 @ Apr 7 2011, 21:02)  2 Мур Если взглянуть внимательнее ваш HDL модуль вообще один клок имеет  А если мне не изменяет маразм то минимальная комплектация модуля от SM: 1 тригер на clkA, 3 тригера на clkB и 1 лут Вы не внимательны. HDL фрагмент только выходная часть базового синхронизатора. Вход(Т-триггер) на другой частоте. Его тут нет. А что его тут писать,-один триггер на входе? Ещё раз - Рис 8.
|
|
|
|
|
Apr 9 2011, 11:23
|
Частый гость
 
Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354

|
Цитата(Kuzmi4 @ Apr 9 2011, 14:44)  2 Мур посмотрел статейку и рисунок - слямзено с EDN, July 24, 2003. Но суть в другом - не будет эта реализация работать для произвольных клоковых доменов. Там есчё handshake логику нужно добавлять  чтоб честно работало... Имхо, для произвольных доменов будет. Там единственное условие, что частота запускающих импульсов в первом домене должна быть не больше, чем тактовая в принимающем.
--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
|
|
|
|
|
Apr 9 2011, 11:39
|
Частый гость
 
Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354

|
Цитата(Kuzmi4 @ Apr 9 2011, 15:32)  Вот вот..  Ну, с хендшейком в этом случае оно тоже может не работать. Либо из двух импульсов на входе получится один на выходе, либо придется Ack тянуть в генератор. А дальше зависит от исходной задачи. Можно там задержать генерацию импульса или нет )
Сообщение отредактировал Ethereal - Apr 9 2011, 11:40
--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
|
|
|
|
|
Apr 9 2011, 12:44
|
Частый гость
 
Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354

|
Цитата(Kuzmi4 @ Apr 9 2011, 15:50)  2 Ethereal я собственно это к чему, бывали дизайны в которых клоковый домен А мог работать как на большей так и на меньшей скорости чем домен Б (задавалось конфигом). В таких случаях лучше иметь универсальную схему, которая будет передавать 1clk импульс из А в Б. Если это про тактовые, то дизайн работает при clkA<clbB, при clkA>clkB, при clkA=clkB. 1 1clk импульс передается в любую сторону.
Сообщение отредактировал Ethereal - Apr 9 2011, 13:04
--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|