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

 
 
> Как правильно сформировать сигнал DATA READY?
eteP
сообщение May 17 2005, 14:31
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 24-06-04
Пользователь №: 166



Привет.

Посмотрите плз. код.
Хотелось бы сделать так как показыно на картинке ну и с наименьшими затратами ресурсов в FPGA.
Сигнал DRY не зависел от длинны ND.
Ну и передний фрот DRY на 180 сдвинут от CLK.

Спасибо.

Код
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;

entity a2b is
    port(
 CLK:    in std_logic;
 RSTl:    in std_logic;
 ND:  in std_logic;
 DIN:    in std_logic_vector(15 downto 0);
 DRY:    out std_logic;
 DOUT:    out std_logic_vector(15 downto 0)
    );
end a2b;


architecture a2b_arch of a2b is

signal DRY1: std_logic;
signal R: std_logic;

begin

P1:    process (CLK, RSTl)
begin
    
    if RSTl = '0' then

 DRY1 <= '0';
 DOUT <= (others => '0');
    
    elsif CLK'event and CLK = '1' then
 
 if ND = '1' then
     DOUT <= DIN;
     DRY1 <= '1';
 else
     DRY1 <= '0';
 end if;
 
    end if;
    
end process P1;

P2: process (CLK, RSTl, R)
begin

    if RSTl = '0' then
    
 DRY <= '0';
 R <= '0';
 
    elsif CLK'event and CLK = '0' then
    
 if R = '1' then
     DRY <= '0';
 elsif DRY1 = '1' then
     DRY <= '1';
     R <= '1';
 else
     R <= '0';
 end if;
 
 end if;
end process P2;

end a2b_arch;
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
oval
сообщение May 19 2005, 12:27
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 265
Регистрация: 15-03-05
Из: Москва
Пользователь №: 3 367



Цитата(eteP @ May 18 2005, 18:06)
Тригер Q0 клокируется сигналом ND и не зависит от сигнала CLK. А это значит, что на выходе его будет стоять или 0 или 1 стабильно. Но должно быть выполнино одно условие: частота сигнала ND < CLK. Не зависимо когда придет передний фронт сигнала CLK, тригер Q1 перейдет или в 0 или в 1 когда все идет нормально или выходя из метастабильного состояния. Допустим что на входе Q1 устанавливается 1 и в этот момент пришел CLK. Q1 перешел не в правильное состояние и на выходе у него 0. Тогда на следующем клоке он захватит все равно 1. (вот почему должно выполняться условие ND < CLK). Единственное что, сигнал DRY будет черт знает что вытворять. Но и тут можно поставить еще один тригер, тогда вероятность метостабильности уменьшается. Где-то я даже формулу видел как это вычисляется.

Так вот это я все вижу.
*

Идею понял, но каким образом она увеличивает стабильность схемы (т. е. параметр MTBF (Mean Time Between Failures)) так и не понял. Переключение то выхода триггера Q0 попрежнему остается асинхронным по отношению к clk. Следовательно, Q1 может оказаться в метастабильном состоянии с не меньшей вероятностью, чем если просто подать сигнал ND на вход Q1. Вообщем, такое решение встречаю впервые. Думаю триггер Q0 здесь не несет никакой полезной функции, поскольку его выход попрежнему остается асинхронным по отношению к clk. Допустим, сигнал ND формируется где-то в другом тактовом домене, через сколько бы последовательных триггеров того тактового домена он не проходил (хоть даже через несколько разных асинхронных по отношению к clk) "синхроннее" к clk он не станет. Заменяем тактирование триггера Q0 на clk и подаем ND на его вход, вот стандартная (правда одноуровневая) схема синхронизации, которая приводится во всех документах, которые я видел по данной теме. Таким образом, Q0 синхронизирует появление метастабильного состояния по отношению к clk. Для относительно малых частот одного уровня синхронизации (т. е. триггера Q0)достаточно, для больших частот может потребоваться еще один уровень синхронизации. Все зависит от характеристик технологии (от параментра времени нахождения триггера в метастабильном состоянии). Вот что на этот счет когда-то писала Altera:
Прикрепленный файл  an042.pdf ( 167.9 килобайт ) Кол-во скачиваний: 435
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- eteP   Как правильно сформировать сигнал DATA READY?   May 17 2005, 14:31
- - tocha   Если надо сформировать по фронту короткий импульс ...   May 17 2005, 15:45
- - oval   Обычно я поступаю следующим образом: Кодsignal DRY...   May 17 2005, 16:26
|- - eteP   А основной процесс работает по фронту? Эта схема ...   May 17 2005, 16:37
- - makc   Если я не ошибаюсь, то в вышеприведенных схемах не...   May 17 2005, 17:48
|- - eteP   А не должно ли быть здесь Код process(clk...   May 17 2005, 18:35
||- - makc   Цитата(eteP @ May 17 2005, 21:35)А не должно ...   May 18 2005, 06:12
|- - des00   Цитата(makc @ May 17 2005, 12:48)Если я не ош...   May 18 2005, 04:12
|- - makc   Цитата(des00 @ May 18 2005, 07:12)Цитата(makc...   May 18 2005, 06:05
- - oval   Действительно, если сигнал ND асинхронен по отноше...   May 18 2005, 10:43
|- - eteP   Я использую среду альдек. Ситезатор XST 6.3 мапир...   May 18 2005, 12:33
- - oval   Цитата(eteP @ May 18 2005, 15:33)Я использую ...   May 18 2005, 13:28
|- - eteP   Когда я говорил что есть различия в моделирование,...   May 18 2005, 14:00
- - oval   Цитата(makc @ May 17 2005, 20:48)Если я не ош...   May 18 2005, 13:45
- - oval   Цитата(eteP @ May 18 2005, 17:00)Когда я гово...   May 18 2005, 14:33
|- - eteP   Тригер Q0 клокируется сигналом ND и не зависит от ...   May 18 2005, 15:06
|- - makc   Цитата(eteP @ May 18 2005, 18:06)Тригер Q0 кл...   May 18 2005, 15:12
- - sazh   Признаюсь, такую реализацию увидел в первый раз. Е...   May 19 2005, 06:38


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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 23:36
Рейтинг@Mail.ru


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