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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> формирование короткого импульса, читал конференцию но есть вопрос
dsp
сообщение Oct 26 2005, 10:31
Сообщение #1


Участник
*

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



есть тактовая частота 50 мгц и асинхронно к ней приходящий срез сигнала по этому срезу надо сформировать положительный импульс длительностью 1 такт тактовой частоты и синхронный с этой тактовой частотой пробовал что описано здесь что-то не получается подскажите пожалуйста что можно сделать ?
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 26 2005, 10:57
Сообщение #2


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

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



Цитата(dsp @ Oct 26 2005, 05:31)
есть тактовая частота 50 мгц и асинхронно к ней приходящий срез сигнала по этому срезу надо сформировать положительный импульс длительностью 1 такт тактовой частоты и синхронный с этой тактовой частотой пробовал что описано здесь что-то не получается подскажите пожалуйста что можно сделать ?
*

Без обид.
1. Сесть подумать, почему у всех работает а у вас нет.
2. Драйвера переставить.

wink.gif


--------------------
Go to the top of the page
 
+Quote Post
Alexandr
сообщение Oct 26 2005, 11:44
Сообщение #3


Знающий
****

Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283



Код
process(clk)
variable i: std_logic:='0';

begin
if rising_edge(clk)  then
        if ext_imp='1' then i:='0'; int_imp<='0';
        else
                if i='0' then int_imp<='1'; i:='1';
                else int_imp<='0'; end if;
        end if;
end if;
end process;


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
Gate
сообщение Oct 26 2005, 13:48
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943



Цитата(Alexandr @ Oct 26 2005, 15:44)
Код
process(clk)
variable i: std_logic:='0';

begin
if rising_edge(clk)  then
        if ext_imp='1' then i:='0'; int_imp<='0';
        else
                if i='0' then int_imp<='1'; i:='1';
                else int_imp<='0'; end if;
        end if;
end if;
end process;

*


Код я не проверял, но на первый беглый взгляд он не подходит для практической имплементации - не учитывается и не исправляется возможная метастабильность. Обычно ставят последовательно 2 триггера.


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
dsp
сообщение Oct 27 2005, 05:41
Сообщение #5


Участник
*

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



я синтезирую Synplify 8.2 размещение Xilinx 7.1 Sp4 timing симуляция Activ-Hdl 6.3 Sp2 беру схему формирователя короткого импульса одну из описанных выше она корректно работает некоторое время а потом начинает глючить выходной сигнал одновременно 1 и 0 то же самое при размещении Altera 4.1
все работает нормально посему вопрос что за глюк и откуда ноги растут?
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 27 2005, 10:00
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Я не знаком с языками HDL, но схемотехнически могу пояснить. Нужно использовать два триггера. Первым триггером входной асинхронный сигнал делается синхронным, а на втором триггере делается формирователь импульса по срезу или спаду (как вам хочется).
Go to the top of the page
 
+Quote Post
k0t
сообщение Oct 27 2005, 10:25
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 53
Регистрация: 11-01-05
Пользователь №: 1 889



Если просто два триггера, есть возможность пропустить фронт. Лучше делать так:
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Victor®
сообщение Nov 1 2005, 16:27
Сообщение #8


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(k0t @ Oct 27 2005, 13:25)
Если просто два триггера, есть возможность пропустить фронт. Лучше делать так:
Прикрепленное изображение

*


Если убрать средний тригер - получится схема из MAX+PLUS II Help.
Непонятно как можно не пропустить фронт в Вашем варианте,
особенно если между поступлением импульсов время будет меньше периода CLK?

Мне кажется, что схема с 3 тригерами от этого не спасает.
Единственное, что в 3-х тригерном варианте хорошо - так то, что
вероятность попадания в метастабильное состояние намного меньше.

Всего наилучшего.


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
k0t
сообщение Nov 2 2005, 11:39
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 53
Регистрация: 11-01-05
Пользователь №: 1 889



Цитата(Victor® @ Nov 1 2005, 20:27)
Цитата(k0t @ Oct 27 2005, 13:25)
Если просто два триггера, есть возможность пропустить фронт. Лучше делать так:
Прикрепленное изображение

*


Если убрать средний тригер - получится схема из MAX+PLUS II Help.

Гм? Действительно smile.gif Но без среднего триггера хуже с точки зрения метастабильности (ИМХО).

Непонятно как можно не пропустить фронт в Вашем варианте,
особенно если между поступлением импульсов время будет меньше периода CLK?

Если частота следования импульсов больше clk, то вообще не возможно поймать ВСЕ фронты... Да и зачем это может быть нужно? smile.gif
Эта схема гарантированно ловит 1 фронт, какова бы не была длительность (в разумных пределах, конечно) импульса.

Мне кажется, что схема с 3 тригерами от этого не спасает.
Единственное, что в 3-х тригерном варианте хорошо - так то, что
вероятность попадания в метастабильное состояние намного меньше.

Всего наилучшего.
*

Go to the top of the page
 
+Quote Post
lutik
сообщение Nov 2 2005, 14:58
Сообщение #10


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

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



Цитата(dsp @ Oct 26 2005, 13:31)
есть тактовая частота 50 мгц и асинхронно к ней приходящий срез сигнала по этому срезу надо сформировать положительный импульс длительностью 1 такт тактовой частоты и синхронный с этой тактовой частотой пробовал что описано здесь что-то не получается подскажите пожалуйста что можно сделать ?
*


предлагаю разбить задачу на 2этапа
1 - перевод асинхронного входного сигнала в клок домен
2 - выделение заднего фронта синхронного сигнала

1- смотрите как делать во вложении..
что то типа

signal inS_async, inS, inSdly : std_logic;
process begin
wait until (clk='1' and clk'event);
inSdly <= inS_async;
inS <= inSdly;
end process;

2 - могу предложить типа


--------------------
однако..
Go to the top of the page
 
+Quote Post
lutik
сообщение Nov 2 2005, 15:02
Сообщение #11


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

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



Цитата(dsp @ Oct 26 2005, 13:31)
есть тактовая частота 50 мгц и асинхронно к ней приходящий срез сигнала по этому срезу надо сформировать положительный импульс длительностью 1 такт тактовой частоты и синхронный с этой тактовой частотой пробовал что описано здесь что-то не получается подскажите пожалуйста что можно сделать ?
*


предлагаю разбить задачу на 2этапа
1 - перевод асинхронного входного сигнала в клок домен
2 - выделение заднего фронта синхронного сигнала

1- смотрите как делать во вложении..
что то типа

signal inS_async, inS, inSdly : std_logic;
process begin
wait until (clk='1' and clk'event);
inSdly <= inS_async;
inS <= inSdly;
end process;

2 - могу предложить типа

port (data,clk : in std_logic;
pQ,mQ,dQ : out std_logic
);
-----------------------------------
signal s : std_logic ;
-----------------------------------
process begin
wait until (clk='1' and clk'event);
s <= not data after 5ns;
end process ;

pQ <= data and s ;
mQ <= not(data or s);
dQ <= not data xor s ;

pQ - положительный фронт
mQ - отрицательный фронт
dQ - оба smile.gif

обьединяете два куска и получаете работоспособное решение вашей проблемы


--------------------
однако..
Go to the top of the page
 
+Quote Post
lutik
сообщение Nov 2 2005, 15:06
Сообщение #12


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

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



Цитата(dsp @ Oct 26 2005, 13:31)
есть тактовая частота 50 мгц и асинхронно к ней приходящий срез сигнала по этому срезу надо сформировать положительный импульс длительностью 1 такт тактовой частоты и синхронный с этой тактовой частотой пробовал что описано здесь что-то не получается подскажите пожалуйста что можно сделать ?
*


разбейте задачу на две:

1-приведение асинхронного сигнала в клок домен
2-выделение из синхронного сигнала заднего фронта

1'е решается сдвиговым регистром из 2-3х триггеров

2'e чем то типа

entity front is
port (data,clk : in std_logic;
pQ,mQ,dQ : out std_logic);
end;
architecture arc of Front is
signal s : std_logic ;
begin
process(clk) begin
if clk='1' and clk'event then
s <= not data after 5ns;
end if ;
end process ;
pQ <= data and s ;
mQ <= not(data or s);
dQ <= not data xor s ;
end;

соедините два куска вместе и получите вполне работоспособное решение вашей проблемы


--------------------
однако..
Go to the top of the page
 
+Quote Post
lutik
сообщение Nov 2 2005, 15:08
Сообщение #13


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

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



во глюк то..

извиняюсь дико


--------------------
однако..
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Nov 3 2005, 06:22
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(lutik @ Nov 2 2005, 18:08)
во глюк то..

извиняюсь дико
*

Вы как аффтар можете удалить свои сообщения, нажав соотвецтвующую кнопку.
Go to the top of the page
 
+Quote Post
YUV
сообщение Nov 10 2005, 10:40
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 27-04-05
Пользователь №: 4 551



Есть еще одна схемка...
Надеюсь, не нужно объяснять как она работает?
Go to the top of the page
 
+Quote Post
sazh
сообщение Nov 10 2005, 13:22
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



//Есть еще одна схемка...
Надеюсь, не нужно объяснять как она работает?//
Если открыть учебник Титца и Шенка Полупроводниковая схемотехника, на странице 360
Есть схема синхронного одновибратора. Все ясно и понятно.
Все потуги сделать что то лучше изначально обречены на провал. Хотя бы потому, что НЕЧИТАЕМО сходу. Вторая причина. Они ущербны. Что предложенные на автомате, что Ваша. Попробуйте подать на вход IN меандр с частотой CLK/2. Они будут пропускать эти данные.
Go to the top of the page
 
+Quote Post

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

 


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


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