|
|
  |
Синхронная и асинхронная логика, Достоинства, недостатки, сочетания и переходы. |
|
|
|
Aug 3 2010, 02:17
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(AlphaMil @ Aug 3 2010, 06:56)  Насущный вопрос.... нуно поюзать D-триггер
|
|
|
|
|
Aug 4 2010, 06:10
|

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

|
Цитата(AlphaMil @ Aug 3 2010, 02:56)  Насущный вопрос: как несинхронный сигнал, приходящий на вывод ПЛИС сделать синхронным с заданным клоком, но длиной в один период? Исходный сигнал существенно длиннее клокового. Схемотехника - читаем литературу, которую Вам рекомендовали ранее. ответ можно посмотреть здесь (VHDL)Кстати ниже приводится описание реализации (хотя она очень простая) Цитата(igorenja @ Aug 3 2010, 05:17)  D-триггер не решает полностью проблему
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Aug 9 2010, 12:50
|

Местный
  
Группа: Свой
Сообщений: 309
Регистрация: 18-04-08
Из: Томск
Пользователь №: 36 887

|
Цитата(AlphaMil @ Aug 3 2010, 06:56)  Насущный вопрос: как несинхронный сигнал, приходящий на вывод ПЛИС сделать синхронным с заданным клоком, но длиной в один период? Исходный сигнал существенно длиннее клокового. Просто и сердито на VHDL пользую обработчик фронта. По крайней мере я его так называю. Эта же конструкция позволяет отслеживать и спад входящих асинхронных длинных сигналов. Идея заключается в том, что входной сигнал сначала проходит триггер, работающий на системной частоте. Дальше полученный "синхронный сигнал" поступает на вход второго триггера задержки. С обоих триггеров сигнал поступает на комбинаторную логику. Если вам нужно реагировать по изменению сигнала, применяем операцию xor, если на фронт или спад, один из сигналов инвертируется. На выходе такой цепочки вы получите импульс длиной в один период вашей системной тактовой частоты. Код -------------------------------------------------------------------------------------------------- -- синхронизация длинного по отношению к тактовой частоте системы асинхронного сигнала с системной частотой.
library IEEE; use IEEE.STD_LOGIC_1164.ALL;
entity Synchonizator is port ( Clk : in std_logic; Reset : in std_logic; InSignal : in std_logic; Signal_is_change : out std_logic; -- изменение сигнала Signal_is_fall : out std_logic; -- фронт сигнала Signal_is_rise : out std_logic -- спад сигнала ); end Synchonizator;
architecture rtl of Synchonizator is
signal sInput_signal : std_logic_vector(1 downto 0); -- триггеры задержки
begin
sInput_signal <= sInput_signal(0)&InSignal when Reset = '1' else sInput_signal(0)&InSignal when rising_edge(Clk);
Signal_is_change <= sInput_signal(0) xor sInput_signal(1); -- изменение сигнала Signal_is_rise <= sInput_signal(0) xor not sInput_signal(1); -- фронт сигнала Signal_is_fall <= not sInput_signal(0) xor sInput_signal(1); -- спад сигнала end rtl;
-------------------------------------------------------------------------------------------------- Схема ...
Если будете применять данную конструкцию, не забывайте добавлять по 2 триггера для ресинхронизации на остальные линии, например шину данных. А эту конструкцию используйте для управляющих сигналов. Если жалко триггеры, смотрите по ситуации. Если у вас исключена возможность того, что за время обработки сигнала управления данные изменятся, то дерзайте. ПС: Когда начинал на ПЛИС, мучился тем же вопросом ...
Сообщение отредактировал tema-electric - Aug 9 2010, 13:03
--------------------
Кто сказал МЯУ?
|
|
|
|
|
Aug 9 2010, 13:34
|

Местный
  
Группа: Свой
Сообщений: 309
Регистрация: 18-04-08
Из: Томск
Пользователь №: 36 887

|
Цитата(Maverick @ Aug 9 2010, 20:19)  я схему синхронизации ранее предлагал ... Какая разница? Да в принципе никакой. Исключение только в наличии детектора change и в правильном сбросе такой цепочки. Пардон что проглядел  .
Сообщение отредактировал tema-electric - Aug 9 2010, 13:37
--------------------
Кто сказал МЯУ?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|