【文章內(nèi)容簡(jiǎn)介】
library IEEE。 use 。 use 。 use 。 entity XD is Port ( clk1k : in STD_LOGIC。 keyin : in STD_LOGIC。 keyout : out STD_LOGIC)。 end XD。 architecture Behavioral of XD is signal key1,key2:std_logic。 signal count:integer range 1 to 3:=1 begin process(clk1k,keyin) begin if clk1k39。event and clk1k=39。139。 then if count=3 then key1=39。139。 else key1=39。039。 count=count+1。 end if。 key2=key1。 end if。 if keyin=39。039。 then count=1。 end if。 end process。 keyout=(not key1) and key2。 end Behavioral。 仿真波形圖 6 如下 : 在按鍵按下的一個(gè)周期 內(nèi),消抖模塊輸出僅有一個(gè)時(shí)鐘周期, 抑制了按鍵按下?tīng)顟B(tài)不穩(wěn)的情況。 計(jì)數(shù)器 十進(jìn)制計(jì)數(shù)器是每當(dāng)計(jì)數(shù)從 1 記到 9 時(shí) ,下一位產(chǎn)生一個(gè)進(jìn)位信號(hào) ,進(jìn)而輸入到下一個(gè)計(jì)數(shù)器的時(shí)鐘輸入端 ,進(jìn)而達(dá)到秒表所要求的計(jì)數(shù)進(jìn)制 .計(jì)數(shù)器是在時(shí)鐘基準(zhǔn)信號(hào)的情況下 ,分頻為我們需要的計(jì)時(shí)時(shí)間信號(hào) ,電子秒表的最低位為 秒 ,即需要 100Hz 的脈沖 ,當(dāng)最低一位計(jì)數(shù)滿(mǎn) 9 時(shí) ,向前進(jìn) 1,同時(shí)自身為 0,重復(fù)循環(huán) . 本設(shè)計(jì)中采用的是異步計(jì)時(shí)器 ,當(dāng)上一位計(jì)數(shù)到 9時(shí) ,產(chǎn)生時(shí)鐘進(jìn)位 ,下一時(shí)鐘在進(jìn)位成立時(shí) ,開(kāi)始計(jì)時(shí)加 1,以此內(nèi)推 ,最終輸出 6 組 ,計(jì)時(shí)信號(hào) ,分別是 秒位 , 秒位 ,秒個(gè)位 ,10 秒十位 ,分個(gè)位 ,分十位 .當(dāng)計(jì)數(shù)到 59’59’ 59 時(shí)計(jì)數(shù)清零為 00’00’ 00 重復(fù)計(jì)時(shí) .數(shù)字跑表需要用六位七段數(shù)碼管顯示 ,數(shù)碼管顯示數(shù)字分別用 2個(gè) 6進(jìn)制計(jì)數(shù)器和 4個(gè) 10 進(jìn)制計(jì)數(shù)器對(duì)其計(jì)數(shù) ,從秒表顯示的右側(cè)到左側(cè)計(jì)數(shù)器分別為十進(jìn)制、十進(jìn)制、十進(jìn)制、六進(jìn)制、十進(jìn)制、六進(jìn)制、十進(jìn)制計(jì)數(shù)器 ,如圖 7 所示: 圖 7 數(shù)碼管顯示示意圖 計(jì)數(shù)器的設(shè)計(jì)圖如下: 10 進(jìn)制計(jì)數(shù)器的框圖如下 : 圖 8 10 進(jìn)制計(jì)數(shù)器的框圖 6 進(jìn)制計(jì)數(shù)器的框圖如下 : 圖 9 6 進(jìn)制計(jì)數(shù)器的框圖 相應(yīng) 程序設(shè)計(jì)如下 : 10 進(jìn)制程序設(shè)計(jì)如下 : library IEEE。 use 。 use 。 use 。 entity count101 is Port ( rst : in STD_LOGIC。 clk : in STD_LOGIC。 carryin : in STD_LOGIC。 carryout : out STD_LOGIC。 countout : out STD_LOGIC_VECTOR (3 downto 0))。 end count101。 architecture Behavioral of count101 is 11 signal count:STD_LOGIC_VECTOR (3 downto 0):=0000。 begin process(clk,rst) begin if rst=39。139。 then count=0000。 else if rising_edge (clk) then if carryin=39。139。 then if count1001 then count=count+1。 else count=0000。 end if。 end if。 else null。 end if。 end if。 end process。 countout=count。 carryout=39。139。 when carryin=39。139。 and count=1001 else 39。039。 end Behavioral。 6 進(jìn)制程序設(shè)計(jì)如下 : library IEEE。 use 。 use 。 use 。 entity count6 is Port ( rst : in STD_LOGIC。 clk : in STD_LOGIC。 carryin : in STD_LOGIC。 carryout : out STD_LOGIC。 countout : out STD_LOGIC_VECTOR (3 downto 0))。 end count6。 architecture Behavioral of count6 is signal count:STD_LOGIC_VECTOR (3 downto 0):=0000。 begin process(clk,rst) begin if rst=39。139。 then count=0000。 else if rising_edge (clk) then if carryin=39。139。 then if count0101 then count=count+1。 else count=0000。 end if。 end if。 else null。 12 end if。 end if。 end process。 countout=count。 carryout=39。139。 when carryin=39。139。 and count=0101 else 39。039。 end Behavioral。 仿真波形如 下 圖: 10 進(jìn)制的仿真波形如下 : 圖 10 10 進(jìn)制 計(jì)數(shù)器 仿真圖形 由圖可見(jiàn) ,設(shè)計(jì)模塊對(duì)波形個(gè)數(shù)計(jì)數(shù) ,從產(chǎn)生結(jié)果為 2 進(jìn)制的 4 位數(shù) .從 0000到 1001,結(jié)果正確 . 6 進(jìn)制的仿真波形如下 : 圖 11 6 進(jìn)制 計(jì)數(shù)器 的仿真波形 有圖可知 ,6 進(jìn)制計(jì)數(shù)器設(shè)計(jì)正確 ,脈沖時(shí)鐘上升沿到來(lái)時(shí)計(jì)數(shù)器開(kāi)始計(jì)數(shù) ,從 0000 到 1001,然后重復(fù)循環(huán) . 寄存器 數(shù)據(jù)鎖存器 ,在使能為 1時(shí) ,將當(dāng)前數(shù)據(jù)送到寄存器中保存 ,可記錄 4組數(shù)據(jù) ,當(dāng)再次使能時(shí) ,將寄存的數(shù)據(jù)賦給輸出 ,顯示寄存器中的 4 組數(shù)據(jù) . 設(shè)計(jì)框圖 如下圖 : 圖 12 寄存器設(shè)計(jì)框圖 寄存器 程序 設(shè)計(jì)如下 : library IEEE。 use 。 13 use 。 use 。 entity save2 is Port ( lacthin : in STD_LOGIC。 reset : in STD_LOGIC。 mhin : in STD_LOGIC_VECTOR (3 downto 0)。 mlin : in STD_LOGIC_VECTOR (3 downto 0)。 shin : in STD_LOGIC_VECTOR (3 downto 0)。 slin : in STD_LOGIC_VECTOR (3 downto 0)。 dsin : in STD_LOGIC_VECTOR (3 downto 0)。 csin : in STD_LOGIC_VECTOR (3 downto 0)。 mhout : out STD_LOGIC_VECTOR