【正文】
vector(2 downto 0)變量q,它在0至5之間不斷的循環(huán),用來指示當前掃描的哪一根管, 循環(huán)用語句if q=5 then q=000。 end if。再定義一個類型為std_logic_vector(5 downto 0)的sel信號,它用來產(chǎn)生一個長度為6的數(shù),該數(shù)在同一時刻只有一位是高電平表示正在掃描該顯示管,在進程結(jié)束時它的值將賦給selout輸出。最后在進程中定義一個std_logic_vector(3 downto 0)類型的number變量,用來存放時、分、秒的高位或低位,然后將該數(shù)編碼成七段顯示碼,并賦給seg信號。P加1,用case語句根椐p的值,給number賦予當前要掃描的數(shù)碼管的值,用case語句根椐number的值編譯成對應(yīng)的七段顯示管的值并賦給seg,當進程結(jié)束時把seg的值賦給segout,把sel的值賦給selout,然后由這兩個端口輸出。use 。use 。 hz512:out std_logic。 hz64:out std_logic。 hz1:out std_logic )。architecture f of fry is signal q:std_logic_vector(9 downto 0)。event and clk=39。then q=q+1。 end process。 hz256=q(1)。 hz4=q(7)。end f。use 。use 。 sig500,sig1k : out std_logic)。architecture a of alert issignal q : std_logic_vector(15 downto 0)。begin q(15 downto 12)=m1。 q(7 downto 4)=s1。 hring : block begin s500=39。 when q=0101100101010000 else 39。 when q=0101100101010010 else 39。 when q=0101100101010100 else 39。 when q=0101100101010110 else 39。 when q=0101100101011000 else 39。 s1k=39。 when q=0000000000000000 else 39。end block hring。sig1k=s1k。生成器件: 鬧鐘報時系統(tǒng):模塊說明:由于clk的頻率為1024hz,所以可以定義一個std_logic_vector(9 downto 0),使它不停地從0000000000加到1111111111然后又返回0000000000,由于最低位在clk脈沖到來時從0變?yōu)?,然后又在下一個脈沖變回0,因此最低位的時鐘周期為clk的時鐘周期的兩倍,它的頻率就為clk頻率的確1/2即512hz。(5)二路選擇器 源程序: LIBRARY IEEE。ENTITY mux21 IS PORT ( a , b ,s: IN STD_LOGIC 。END ENTITY mux21。039。 ELSE y=b。 END PROCESS。 生成器件:五.課程設(shè)計感想: