【正文】
end process。 when 011 = =000100。 end case。when 011= dataout=datain(11 downto 8)。 when others =NULL。編譯成功后生成元件圖如下: 在clk信號的控制下,數(shù)碼管進行循環(huán)控制輸出。use 。 第8位d_out[7]為逗號architecture art of ymq isbegin process(d_in) begin case d_in is 第8位為1高電平逗號不顯示 when 0000 = d_out=11000000。 3 when 0100 = d_out=10011001。 7 when 1000 = d_out=10000000。 end process。use 。 ledc: out std_logic_vector(5 downto 0)。 clk_div1 : out std_logic。 q: out std_logic_vector(3 downto 0)。 din: in std_logic_vector(23 downto 0)。 tsten:out std_logic。數(shù)碼管選擇器ponent led 待調(diào)用的數(shù)碼管選擇器端口定義port(clk:in std_logic。end ponent。 signal clk1,clk2,clk3: std_logic。 signal datao: std_logic_vector(3 downto 0)。 u3:t10 port map(c2,clr,tsten,qout(11 downto 8),c3)。 u7:reg24b port map(load,qout(23 downto 0),rout)。end art。而兩種測量方法之間進行自動選擇,首先采用測周法進行測量,若頻率超過1000HZ則產(chǎn)生溢出信號,自動選擇采用測頻法進行測量,這樣的設(shè)計是最合理的頻率計設(shè)計,若只采用某一種方法進行測量都存在不足之處。在實習(xí)的過程中發(fā)現(xiàn)了以前學(xué)的知識掌握的不牢。以前上課都是上一些最基本的東西而現(xiàn)在卻可以將以前學(xué)的東西作出有實際價值的東西。特別是在編譯程序時,一不小心就會犯錯,而且很不容易檢查出來。 通過緊張有序的設(shè)計實踐,我覺得自己的動手能力有了很大的提高:自信心也增強了,在課程設(shè)計中自己動腦子解決遇到的問題,書本上的知識有了用武之地,這義鞏固和深化了自己的知識結(jié)構(gòu)。我的動手能力又有了進一步的提高,我感到十分的欣慰。但也遇到了不少的挫折,有時在仿真時遇到了一個錯誤怎么找也找不到原兇所在,找了老半天結(jié)果發(fā)現(xiàn)是取得時間太短了或是設(shè)定錯了頻率。調(diào)試程序過程是一個考驗人耐心的過程,不能有絲毫的急躁,馬虎,特別是對仿真波形的調(diào)試要一步一步來,不能急躁,最重要的是要熟練地掌握課堂上的知識,這樣才能對試驗中出現(xiàn)的問題進行分析解決。 心得體會本次實習(xí)讓我們體味到設(shè)計程序、調(diào)測程序過程中的樂苦與甜??偟姆抡鏁r間設(shè)置1s,clkqq為40KHZ基頻信號,設(shè)置周期為25us;clk0為被測信號,周期任意(為了檢測設(shè)置周期為80us,從仿真圖中可以看出測得頻率為12500HZ,與設(shè)計的一樣)。 u9:ymq port map(datao,led)。 u5:t10 port map(c4,clr,tsten,qout(19 downto 16),c5)。 u1:t10 port map(clk0,clr,tsten,qout(3 downto 0),c1)。 signal c1,c2,c3,c4,c5: std_logic。 d_out: out std_logic_vector(7 downto 0))。 dataout: out std_logic_vector(3 downto 0)。 load:out std_logic)。end ponent。end ponent。end ponent。end lx。 clk0: in std_logic。編譯成功后生成元件圖如下: 將相應(yīng)的BCD碼轉(zhuǎn)換成數(shù)碼管顯示信號,最后以十進制的形式顯示出來。 9 when others =NULL。 5 when 0110 = d_out=10000010。 1 when 0010 = d_out=10100100。 數(shù)碼管控制器輸入四位信號 d_out: out std_logic_vector(7 downto 0))。經(jīng)譯碼器的處理輸出后數(shù)碼管顯示相應(yīng)的數(shù)值。 end process。 when 001= dataout=datain(19 downto 16)。對應(yīng)數(shù)碼管的輸出 process(clk,datain) begin case clk is when 101= dataout=datain(3 downto 0)。 when 101 = =000001。 when 001 = =010000。 end if。輸出數(shù)碼管選擇信號end led。entity led isport(clk:in std_logic。仿真結(jié)果如下圖所示: 數(shù)碼管控制器兩個輸入端一個為datain[23..0],另一個為數(shù)碼管顯示選擇的掃描頻率輸入端clk,輸出端為數(shù)碼管選擇信號[5..0]和對應(yīng)顯示的數(shù)碼管的BCD碼信號端dataout[3..0],數(shù)碼管顯示選擇隨掃描頻率clk循環(huán)變化,實現(xiàn)穩(wěn)定顯示。 鎖存輸入的數(shù)據(jù) end if。architecture art of reg24b isbegin process(load,din) begin if load39。entity reg24b is port (load: in std_logic。編譯成功后進行仿真,其仿真波形如下: 24位鎖存器將已有24 位bcd碼存在于此模塊的輸入口din[23..0],在信號load的上升沿后即被鎖存到寄存器reg24b的內(nèi)部,并由reg24b的輸出端dout[23..0]輸出,設(shè)置鎖存器的好處是,數(shù)碼管上顯示的數(shù)據(jù)穩(wěn)定,不會由于周期性的清零信號而不斷閃爍。q=cqi。 當(dāng)加的9時產(chǎn)生進位輸出 else c10=39。 end if。 then 當(dāng)輸入的tesen為高電平1時允許計數(shù)