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

 
 
 
Reply to this topicStart new topic
> Синхронная и асинхронная логика, Достоинства, недостатки, сочетания и переходы.
AlphaMil
сообщение Aug 2 2010, 23:56
Сообщение #1


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

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Насущный вопрос: как несинхронный сигнал, приходящий на вывод ПЛИС сделать синхронным с заданным клоком, но длиной в один период? Исходный сигнал существенно длиннее клокового.
Go to the top of the page
 
+Quote Post
des00
сообщение Aug 3 2010, 02:02
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(AlphaMil @ Aug 2 2010, 18:56) *
Насущный вопрос: как несинхронный сигнал, приходящий на вывод ПЛИС сделать синхронным с заданным клоком, но длиной в один период? Исходный сигнал существенно длиннее клокового.

любая книга по цифровой схемотехнике начиная с 1980-х годов, например Тицце и Шенк %)


--------------------
Go to the top of the page
 
+Quote Post
igorenja
сообщение Aug 3 2010, 02:17
Сообщение #3


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

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



Цитата(AlphaMil @ Aug 3 2010, 06:56) *
Насущный вопрос....


нуно поюзать D-триггер
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 3 2010, 05:24
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(AlphaMil @ Aug 3 2010, 03:56) *
Насущный вопрос: как несинхронный сигнал, приходящий на вывод ПЛИС сделать синхронным с заданным клоком, но длиной в один период? Исходный сигнал существенно длиннее клокового.

Эта тема называется CDC....
Есть примерно 4 способа обработки входного сигнала.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Aug 4 2010, 04:52
Сообщение #5


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

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Так может опишете эти способы. Я только начинаю работать и любая консультация (Ваш опыт) очень полезна.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 4 2010, 05:14
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(AlphaMil @ Aug 4 2010, 08:52) *
Так может опишете эти способы.

Вообще то я это уже сделал. Называется "Краткий Курс HDL". Напечатан в журналах КиТ за 2008-2009. Частично выложен...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Maverick
сообщение Aug 4 2010, 06:10
Сообщение #7


я только учусь...
******

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



Цитата(AlphaMil @ Aug 3 2010, 02:56) *
Насущный вопрос: как несинхронный сигнал, приходящий на вывод ПЛИС сделать синхронным с заданным клоком, но длиной в один период? Исходный сигнал существенно длиннее клокового.

Схемотехника - читаем литературу, которую Вам рекомендовали ранее.
ответ можно посмотреть здесь (VHDL)
Кстати ниже приводится описание реализации (хотя она очень простая)

Цитата(igorenja @ Aug 3 2010, 05:17) *
нуно поюзать D-триггер

D-триггер не решает полностью проблему


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Aug 4 2010, 17:08
Сообщение #8


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

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



К сожалению, вынужден отметить, что тут про грабельки саперные (особо подлые) никто вслух не упомянул: а зовутся они метастабильность.
Для подавления оной мерзости, на «больших» и «средних» частотах не достаточно просто воткнуть 2 триггера подряд. Т.к. метастабильный переходной процесс в триггере длится в разы дольше обычного переходного процесса, то необходимо убедиться, что даже с увеличенным временем переходного процесса будут выполняться временные ограничения. Для этого необходимо использовать дополнительные constraint'ы.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Aug 5 2010, 23:05
Сообщение #9


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

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Спасибо за ссылочку, буду пробовать.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 6 2010, 05:16
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Boris_TS @ Aug 4 2010, 21:08) *
К сожалению, вынужден отметить, что тут про грабельки саперные (особо подлые) никто вслух не упомянул: а зовутся они метастабильность.
....


Вообще то, все о чем Вы пишите и называется CDC. Там и метастабильность, и способы синхронизации.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
tema-electric
сообщение Aug 9 2010, 12:50
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 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


--------------------
Кто сказал МЯУ?
Go to the top of the page
 
+Quote Post
Maverick
сообщение Aug 9 2010, 13:19
Сообщение #12


я только учусь...
******

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



Цитата(tema-electric @ Aug 9 2010, 15:50) *

я схему синхронизации ранее предлагал ...
Какая разница?


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
tema-electric
сообщение Aug 9 2010, 13:34
Сообщение #13


Местный
***

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



Цитата(Maverick @ Aug 9 2010, 20:19) *
я схему синхронизации ранее предлагал ...
Какая разница?


Да в принципе никакой. Исключение только в наличии детектора change и в правильном сбросе такой цепочки. Пардон что проглядел laughing.gif .

Сообщение отредактировал tema-electric - Aug 9 2010, 13:37


--------------------
Кто сказал МЯУ?
Go to the top of the page
 
+Quote Post

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

 


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


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