MAXHAX 0 15 января, 2018 Опубликовано 15 января, 2018 · Жалоба Всем привет. Прошу помощи с заданием по VHDL в Quartus 1. Есть clk и задается сигнал, по сигналу надо выделить момент фронта и спада сигнала, а затем на основе этих 2-х тактов построить сигнал 2. Опять же есть clk и нужно сделать счетчик тактов, а по окончанию работы счетчика выдать 1 такт прикрепляю картинку с заданием, ибо из меня тот еще рассказчик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 15 января, 2018 Опубликовано 15 января, 2018 (изменено) · Жалоба 1.1 Момент фронта импульса и спада находятся при помощи схем - "детектор фронта" Первая же ссылка в google по поиску "VHDL детекторы фронта" 1.2 Что значит на основе этих 2 тактов построить сигнал ? Каков принцип его построения ? Я вижу в простейшем случае это вообще входной сигнал задержанный на 2 такта.... 2.1. Ну так у вас обычный счетчик с сигналом переноса Изменено 15 января, 2018 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
john72 0 15 января, 2018 Опубликовано 15 января, 2018 (изменено) · Жалоба здесь на verilog, есть схема, по ней можно написать код на vhdl. https://marsohod.org/verilog/157-verilogedges Изменено 15 января, 2018 пользователем Evgeny72 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 15 января, 2018 Опубликовано 15 января, 2018 · Жалоба 1. Есть clk и задается сигнал, по сигналу надо выделить момент фронта и спада сигнала, а затем на основе этих 2-х тактов построить сигнал Сигнал In пропускаем через D-триггер, получаем сигнал In0. Сигнал In0 пропускаем через D-триггер, получаем сигнал In1. Out_0 = In0 & ~In1; Out_1 = ~In0 & In1; Out_2 - это выход RS-триггера, на S-вход которого подано Out_0, на R-вход подано Out_1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 15 января, 2018 Опубликовано 15 января, 2018 · Жалоба посмотрите это описание library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity pulse_len_measure is generic ( N : integer:=8); port ( i_clk : in std_logic; i_rstb : in std_logic; i_input : in std_logic; o_pulse_len_hi : out std_logic_vector(N-1 downto 0); o_pulse_len_lo : out std_logic_vector(N-1 downto 0)); end pulse_len_measure; architecture rtl of pulse_len_measure is constant C_MAX_COUNT : unsigned(N-1 downto 0):=(others=>'1'); signal r_count_hi_ena : std_logic; signal r_count_hi : unsigned(N-1 downto 0); signal r_count_lo : unsigned(N-1 downto 0); signal r_count_lo_ena : std_logic; signal r_rise : std_logic; signal r_fall : std_logic; signal p_input : std_logic_vector(0 to 2); -- input pipe begin p_edge_detector : process(i_clk,i_rstb) begin if(i_rstb='0') then r_rise <= '0'; r_fall <= '0'; p_input <= (others=>'0'); elsif(rising_edge(i_clk)) then r_rise <= not p_input(2) and p_input(1); r_fall <= not p_input(1) and p_input(2); p_input <= i_input&p_input(0 to p_input'length-2); end if; end process p_edge_detector; p_count_hi : process(i_clk,i_rstb) begin if(i_rstb='0') then r_count_hi_ena <= '0'; r_count_hi <= to_unsigned(1,N); o_pulse_len_hi <= (others=>'0'); elsif(rising_edge(i_clk)) then if(r_rise='1') then r_count_hi_ena <= '1'; elsif(r_fall='1') then r_count_hi_ena <= '0'; o_pulse_len_hi <= std_logic_vector(r_count_hi); end if; if(r_count_hi_ena='1') then if(r_count_hi<C_MAX_COUNT)then r_count_hi <= r_count_hi + 1; end if; else r_count_hi <= to_unsigned(1,N); end if; end if; end process p_count_hi; p_count_lo : process(i_clk,i_rstb) begin if(i_rstb='0') then r_count_lo_ena <= '0'; r_count_lo <= to_unsigned(1,N); o_pulse_len_lo <= (others=>'0'); elsif(rising_edge(i_clk)) then if(r_fall='1') then r_count_lo_ena <= '1'; elsif(r_rise='1') then r_count_lo_ena <= '0'; o_pulse_len_lo <= std_logic_vector(r_count_lo); end if; if(r_count_lo_ena='1') then if(r_count_lo<C_MAX_COUNT) then r_count_lo <= r_count_lo + 1; end if; else r_count_lo <= to_unsigned(1,N); end if; end if; end process p_count_lo; end rtl; Строб готовности слелаете с помощью r_fall и/или r_rise пропустив через 1 битный сдвигающий регистр ... PS В принципе это описание полностью подходит под Ваше задание, просто здесь сделано чуть-чуть больше... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба Вот так помогай студентам Ни спасибо ни пожалуйста... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба Вот так помогай студентам Ни спасибо ни пожалуйста... Так этот хотя бы написал: "Прошу помощи"... А другие пишут проще: "нужно..." И чего же Вы хотите? Лет через 5-6 придет к Вам новый начальник и даже не вспомнит, что у него были проблемы со счетчиком. Ему же уже показали, что такую работу за него всегда сделают... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXHAX 0 22 января, 2018 Опубликовано 22 января, 2018 · Жалоба Вот так помогай студентам Ни спасибо ни пожалуйста... Безусловно спасибо, код отличный, немного с избытком, но вы и предупреждали об этом. Только у меня возникла небольшая проблема с моделированием данного кода, а именно с редактированием test bench-а Просто если его не редактировать, то не создаются никакие сигналы, что на входе, что на выходе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 22 января, 2018 Опубликовано 22 января, 2018 · Жалоба Только у меня возникла небольшая проблема с моделированием данного кода, а именно с редактированием test bench-а Просто если его не редактировать, то не создаются никакие сигналы, что на входе, что на выходе. Помогу на Verilog-е, если надо. Я так понимаю, это в универе требуют VHDL? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться