:= "000000000000000000000000000000";
signal count: std_logic_vector (29 downto 0);
begin
+ --ustaleni signalu a mezi tiky hodin
+ --reaguje na nabeznou hranu
dff_a: dff
port map (
clock => clock,
q => a
);
+ --ustaleni signalu b mezi tiky hodin
+ --reaguje na nabeznou hranu
dff_b: dff
port map (
clock => clock,
q => b
);
+ --prvni dva rady kombinacne
qcount(0) <= a xor b;
qcount(1) <= b;
qcount(31 downto 2) <= count;
- comb_event: process (a_prev, b_prev, a, b)
+ --k cemu tento prosess? jen pro prenos udalosti na piny?
+ comb_event: process (a_prev, b_prev, a, b) --proc je v sensitivity listu i stary stav?? jen kvuli nulovani?
begin
a_rise <= '0';
a_fall <= '0';
b_fall <= '0';
ab_event <= '0';
ab_error <= '0';
- if ((a xor a_prev) and (b xor b_prev)) = '1' then
+ if ((a xor a_prev) and (b xor b_prev)) = '1' then -- a i b se zmenily zaroven
-- forbidden double transition
ab_error <= '1';
else
- a_rise <= (a xor a_prev) and a;
- a_fall <= (a xor a_prev) and not a;
- b_rise <= (b xor b_prev) and b;
- b_fall <= (b xor b_prev) and not b;
- ab_event <= (a xor a_prev) or (b xor b_prev);
+ a_rise <= (a xor a_prev) and a; --a nabezna
+ a_fall <= (a xor a_prev) and not a; --a sestupna
+ b_rise <= (b xor b_prev) and b; --b nabezna
+ b_fall <= (b xor b_prev) and not b; --b sestupna
+ ab_event <= (a xor a_prev) or (b xor b_prev); --a nebo b se zmenily
end if;
end process;
- comb_count: process (a_prev, b_prev, a, b, count)
+ --prechod do 3. radu (binarne)
+ comb_count: process (a_prev, b_prev, a, b, count) --proc jsou v sensitivity prev stavy?
begin
- if (a_prev = '0') and (b_prev = '1') and (a = '0') and (b = '0') then
+ if (a_prev = '0') and (b_prev = '1') and (a = '0') and (b = '0') then --posun dopredu
count <= count_prev + 1;
- elsif (a_prev = '0') and (b_prev = '0') and (a = '0') and (b = '1') then
+ elsif (a_prev = '0') and (b_prev = '0') and (a = '0') and (b = '1') then --posun dozadu
count <= count_prev - 1;
else
count <= count_prev;
end if;
end process;
+ --s nabeznou hranou hodin ulozime stare (prev) hodnoty, pripadne synchronni reset
+ --proc resuteje count_prev misto count?? neprojevi se tato zmena az pri pruchodu comb_count??
seq: process
begin
wait until clock'event and clock = '1';
end process;
end behavioral;
+--Poznamky
+ --proc pouzivan count_prev a neprirazuji rovnou do count?