cryax 0 20 июня, 2008 Опубликовано 20 июня, 2008 · Жалоба Имеется два входа: вход SIGNAL и вход CLK И есть выход DETECTED. У CLK частота - пусть 15 ns. Как сделать, чтобы детектилась вот такая форма сигнала (SIGNAL) : |"""""""""""""""|_____|"""""""""""""""|_____|"""""""""""""""| |<---320ns--->|100ns|<---320ns--->| Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 20 июня, 2008 Опубликовано 20 июня, 2008 · Жалоба Извините ошибся не правильно понял, так пришлось полностью отредактировать сообщение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cryax 0 20 июня, 2008 Опубликовано 20 июня, 2008 · Жалоба Спасибо! :a14: Удалось реализовать, другим методом: process(clk) --########### --# Detect signal # --########### if SIGNAL = '0' then if SIGNAL_prev = '1' then SIGNAL_prev <= '0'; d_wc <= conv_std_logic_vector(1,16); if d_wc < 20 then d_pc <= conv_std_logic_vector(0,16); else d_pc <= d_pc + 1; end if; elsif d_wc <= 8 then d_wc <= d_wc + 1; else d_pc <= conv_std_logic_vector(0,16); end if; else if SIGNAL_prev = '0' then SIGNAL_prev <= '1'; d_wc <= conv_std_logic_vector(1,16); if d_wc < 6 then d_pc <= conv_std_logic_vector(0,16); else d_pc <= d_pc + 1; end if; elsif d_wc <= 22 then d_wc <= d_wc + 1; else d_pc <= conv_std_logic_vector(0,16); end if; end if; if d_pc <= conv_std_logic_vector(4,16) then DETECTED <= '0'; else DETECTED <= '1'; end if; в переменной d_pc - количество верных обнаруженных периодов, если их накопилось больше 4, то сигнал обнаружен. Работает! :maniac: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 22 июня, 2008 Опубликовано 22 июня, 2008 · Жалоба Детектировать сигнал сложной формы можно сдвиговым регистром и сравнением его с паттерном. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cryax 0 22 июня, 2008 Опубликовано 22 июня, 2008 · Жалоба Детектировать сигнал сложной формы можно сдвиговым регистром и сравнением его с паттерном. Можно. Но вот думаю - это был бы здоровущий мультиплексор. Да и паттерн такого размера самому неизвестно как набивать. B) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 23 июня, 2008 Опубликовано 23 июня, 2008 · Жалоба Имеется два входа: вход SIGNAL и вход CLK И есть выход DETECTED. signal shift_reg : std_logic_vector(2 downto 0); begin shift:process(CLK) begin if rising_edge(CLK) then shift_reg <= shift_reg(1 downto 0) & SIGN; end if; end process; DETECTED <= shift_reg(2) xor shift_reg(1); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cryax 0 23 июня, 2008 Опубликовано 23 июня, 2008 · Жалоба signal shift_reg : std_logic_vector(2 downto 0); begin shift:process(CLK) begin if rising_edge(CLK) then shift_reg <= shift_reg(1 downto 0) & SIGN; end if; end process; DETECTED <= shift_reg(2) xor shift_reg(1); там временные интервалы у сигнала есть - при единице - 320ns и при нуле - 100ns. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 23 июня, 2008 Опубликовано 23 июня, 2008 · Жалоба там временные интервалы у сигнала есть - при единице - 320ns и при нуле - 100ns. А что значит детектировать. Если этот сигнал для собственных нужд, от периода к периоду этого сигнала при тактировании клоком с длительностью периода 15нс получите разное количество отсчетов как при уровне1, так и при уровне 0. Даже при длительности периода 10нс получите набег. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cryax 0 23 июня, 2008 Опубликовано 23 июня, 2008 · Жалоба А что значит детектировать. Если этот сигнал для собственных нужд, от периода к периоду этого сигнала при тактировании клоком с длительностью периода 15нс получите разное количество отсчетов как при уровне1, так и при уровне 0. Даже при длительности периода 10нс получите набег. Погрешность в несколько тактов при перепадах? учитывается. Незнаю. может я глупость написал. Но вроде моделируется. Посмотрим что на практике будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tolik1 0 27 июня, 2008 Опубликовано 27 июня, 2008 · Жалоба Имеется два входа: вход SIGNAL и вход CLK И есть выход DETECTED. У CLK частота - пусть 15 ns. Как сделать, чтобы детектилась вот такая форма сигнала (SIGNAL) : |"""""""""""""""|_____|"""""""""""""""|_____|"""""""""""""""| |<---320ns--->|100ns|<---320ns--->| А с какой точностью формируются временные интервалы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться