[ 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; |