【正文】
nto 0))。architecture art of led is signal clk: std_logic_vector(2 downto 0)。 else clk =000。 end if。數(shù)碼管選擇 process(clk) begin case clk is when 000 = =100000。 when 010 = =001000。 when 100 = =000010。 when others =NULL。 end process。 when 100= dataout=datain(7 downto 4)。 when 010= dataout=datain(15 downto 12)。 when 000= dataout=datain(23 downto 20)。 end case。end art。仿真結(jié)果如圖所示: 譯碼器輸入端d_in[3..0]將接收BCD碼信號,譯碼后輸出端d_out[7..0]輸出8段數(shù)碼管信號,其中輸出的第8位均為高電平1可以使四個(gè)數(shù)碼管的小數(shù)點(diǎn)不顯示。library IEEE。entity ymq is port( d_in: in std_logic_vector(3 downto 0)。 輸出8位信號 end ymq。 0 when 0001 = d_out=11111001。 2 when 0011 = d_out=10110000。 4 when 0101 = d_out=10010010。 6 when 0111 = d_out=11111000。 8 when 1001 = d_out=10010000。 end case。end art。仿真結(jié)果如下圖所示:將各個(gè)元器件依據(jù)設(shè)計(jì)相連:library ieee。entity lx is port(clkqq: in std_logic。 led: out std_logic_vector(7 downto 0)。 carry_out: out std_logic)。architecture art of lx isponent lpm_counter0 待調(diào)用的頻率生成器端口定義 port(clock: in std_logic 。 clkq: out std_logic)。十進(jìn)制計(jì)數(shù)器ponent t10 待調(diào)用的有時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器端口定義 port(clk,clr,en: in std_logic。 c10: out std_logic)。16位鎖存器ponent reg24b 待調(diào)用的32位鎖存器端口定義 port (load: in std_logic。 dout: out std_logic_vector(23 downto 0))。測頻控制器ponent testpl 待調(diào)用的測頻控制信號發(fā)生器端口定義 port(clk:in std_logic。 clr_t:out std_logic。end ponent。 datain: in std_logic_vector(23 downto 0)。 : out std_logic_vector(5 downto 0))。譯碼器ponent ymq 待調(diào)用的譯碼器端口定義 port(d_in: in std_logic_vector(3 downto 0)。end ponent。clk1為1Hz信號,clk2為被測信號,clk3為數(shù)碼管掃描信號 signal tsten,clr,load: std_logic。 signal qout,rout: std_logic_vector(23 downto 0)。begin u0:testpl port map(clk1,tsten,clr,load)。 u2:t10 port map(c1,clr,tsten,qout(7 downto 4),c2)。 u4:t10 port map(c3,clr,tsten,qout(15 downto 12),c4)。 u6:t10 port map(c5,clr,tsten,qout(23 downto 20), carry_out)。 u8:led port map(clk2,rout,datao,ledc)。 u10:lpm_counter0 port map(clkqq, clkq=clk1, clk_div1=clk2)。編譯成功后生成元件圖如下:其中clk0為系統(tǒng)待測信號,led[7..0]是八段數(shù)碼輸出,ledc[5..0]數(shù)碼管控制片選輸出,carry_out超出量程報(bào)警輸出。仿真結(jié)果如圖下圖所示:總結(jié)本頻率計(jì)滿足實(shí)驗(yàn)要求,測量頻率范圍是1999999HZ,采用直接測頻法對被測信號進(jìn)行測量,但也存在不足的地方,最好的設(shè)計(jì)方法是用測周法與直接測頻法相結(jié)合的方式,在頻率低于1000HZ采用測周法,高于1000HZ時(shí)采用直接測頻法,這樣的好處在于減小量化誤差。周期測量時(shí)信號頻率越低,測量的誤差越小,周期倍乘的值越大,誤差越小,另外也可以通過更好的時(shí)基信號來進(jìn)行計(jì)數(shù)來減小量化誤差的影響。設(shè)計(jì)是我們將來必需的技能,這次實(shí)習(xí)恰恰給我們提供了一個(gè)應(yīng)用自己所學(xué)知識的機(jī)會,從到圖書館查找資料到對電路的設(shè)計(jì)對電路的調(diào)試試再到最后電路的成型,都對我所學(xué)的知識進(jìn)行了檢驗(yàn)。同時(shí)在設(shè)計(jì)的過程中,遇到了一些以前沒有見到過的語句,但是通過查找資料來學(xué)習(xí)這些語句的功能和使用。在整個(gè)課程設(shè)計(jì)完后,總的感覺是:有收獲。在這個(gè)過程中,我的確學(xué)得到很多在書本上學(xué)不到的東西,如:利用VHDL語言編寫程序等等。在學(xué)習(xí)中的小問題在課堂上不可能犯,在動于的過程中卻很有可能犯。但現(xiàn)在回過頭來看,還是挺有成就感的。鞏固了課堂上所學(xué)到的理論性的知識,對VHDL語言有了更深一層的理解,熟練地掌握了QuartusⅡ軟件的應(yīng)用,能在Quartus II軟件環(huán)境下生成可用的波形文件、文本文件、圖形文件等。 總而言之,通過此次的課程設(shè)計(jì),我獲益匪淺?。?!參考文獻(xiàn)[1] (第二版). 北京:科學(xué)出版社,2005.[2] . 北京:清華大學(xué)出版社,2010.附錄 總電路圖