From 0fa4de71db978ac5bb0ab239218bd6c32558c502 Mon Sep 17 00:00:00 2001 From: Martin Prudek Date: Fri, 27 Mar 2015 12:21:26 +0100 Subject: [PATCH 1/1] qcounter doplnen komentari --- pmsm-control/qcounter.vhdl | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/pmsm-control/qcounter.vhdl b/pmsm-control/qcounter.vhdl index c8e8d77..f1378dc 100644 --- a/pmsm-control/qcounter.vhdl +++ b/pmsm-control/qcounter.vhdl @@ -31,6 +31,8 @@ architecture behavioral of qcounter is := "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, @@ -38,6 +40,8 @@ begin q => a ); + --ustaleni signalu b mezi tiky hodin + --reaguje na nabeznou hranu dff_b: dff port map ( clock => clock, @@ -45,11 +49,13 @@ begin 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'; @@ -57,29 +63,32 @@ begin 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'; @@ -93,3 +102,5 @@ begin end process; end behavioral; +--Poznamky + --proc pouzivan count_prev a neprirazuji rovnou do count? -- 2.39.2