qcounter doplnen komentari
authorMartin Prudek <prudemar@fel.cvut.cz>
Fri, 27 Mar 2015 11:21:26 +0000 (12:21 +0100)
committerMartin Prudek <prudemar@fel.cvut.cz>
Fri, 27 Mar 2015 11:21:26 +0000 (12:21 +0100)
pmsm-control/qcounter.vhdl

index c8e8d77..f1378dc 100644 (file)
@@ -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?