]> rtime.felk.cvut.cz Git - fpga/rpi-motor-control.git/blobdiff - pmsm-control/qcounter.vhdl
Tested version of ADC.
[fpga/rpi-motor-control.git] / pmsm-control / qcounter.vhdl
index c8e8d7761bd1b0dc9dd258c574915dce3ba96a56..b6c34f8c00d194cca695342c03cbc5eddb9fec1b 100644 (file)
@@ -3,7 +3,6 @@ use ieee.std_logic_1164.all;
 use ieee.std_logic_arith.all;
 use ieee.std_logic_unsigned.all;
 use ieee.numeric_std.all;
-use work.dff.all;
 
 entity qcounter is
 port (
@@ -31,6 +30,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 +39,8 @@ begin
                q => a
        );
        
+       --ustaleni signalu b mezi tiky hodin
+       --reaguje na nabeznou hranu
        dff_b: dff
        port map (
                clock => clock,
@@ -45,11 +48,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 +62,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,count_prev) --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 +101,5 @@ begin
        end process;
        
 end behavioral;
+--Poznamky
+       --proc pouzivan count_prev a neprirazuji rovnou do count?