[ RMAN @ 29.03.2009. 21:13 ] @
Imao sam na vezbama na faksu neke zadatke u vhdl-u.
Zadnje 2 nedelje sam bio bolestan pa sam ih propustio. Uglavnom u ovom zadatku se trebala realizovati stoperica koja broji taktove i pravi sekunde i pali led diode.
Znam ja kako to funkcionise ali ne razumem kod. Pa ako moze neko da mi objasni sta se tu desava.
Code:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity stopwatch is
    Port ( iCLK : in  STD_LOGIC;
           inRESET : in  STD_LOGIC;
           inSTOP : in  STD_LOGIC;
           inSTART : in  STD_LOGIC;
           inCONTINUE : in  STD_LOGIC;
           oLED : out  STD_LOGIC_VECTOR (7 downto 0));
end stopwatch;

architecture stopwatch_arch of stopwatch is

constant cCLKMAX: std_logic_vector:="0000000000000000000000011"; -- broj otkucaja klok signala za vreme 1 sec
    signal sENABLE: std_logic:='0'; -- signal za klok
    signal sCNT: std_logic_vector (24 downto 0):="0000000000000000000000000"; -- broja? otkucaja kloka
    signal sENSEC: std_logic:='0'; -- signal za broja? sekundi
    signal sLED: std_logic_vector (7 downto 0):="00000000"; -- izlazni signal
    signal sON: std_logic:='0'; -- indikator stanja ?toperice
    
begin

    process (iCLK) begin
        if (iCLK'event and iCLK='1') then
            if (inRESET='0') then sON<='0'; sENABLE<='0';
            elsif (inSTART='0') then sENABLE<='1'; sON<='1';
            elsif (inSTOP='0') then sENABLE<='0';
            elsif (inCONTINUE='0' and sON='1') then sENABLE<='1';
            else 
                end if;
        end if;
    end process;
    
    process(iCLK) begin
        if(iCLK'event and iCLK='1') then
            if(inRESET='0' or inSTART='0') then
            sCNT<="0000000000000000000000000";
            elsif(sENABLE='1') then
                if(sCNT=cCLKMAX) then
                    sENSEC<='1';
                    sCNT<="0000000000000000000000000";
                else 
                    sCNT<=sCNT+1;
                    sENSEC<='0';
                end if;
            else sENSEC<='0';
            end if;
        end if;
    end process;
    
    process(iCLK) begin
        if(iCLK'event and iCLK='1') then
            if(inRESET='0' or inSTART='0') then
                sLED<="00000000";
                oLED<=sLED;
            elsif (sENSEC='1') then
                    sLED<=sLED+1;
                    oLED<=sLED;
            else
                oLED<=sLED;
                end if;
        end if;
        
    end process;



end stopwatch_arch;