版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> 數(shù)字頻率計是直接用十進制數(shù)字來顯示被測信號頻率的一種測量裝置。它不僅可以測量正弦波、方波、三角波、尖脈沖信號和其他具有周期特性的信號的頻率,而且還可以測量它們的周期。經(jīng)過改裝,可以測量脈沖寬度,做成數(shù)字式脈寬測量儀;可以測量電容做成數(shù)字式電容測量儀;在電路中增加傳感器,還可以做成數(shù)字脈搏儀、計價器等。因此數(shù)字頻率計在測量物理量方
2、面應用廣泛。本設計用VHDL在CPLD器件上實現(xiàn)數(shù)字頻率計測頻系統(tǒng),能夠用十進制數(shù)碼顯示被測信號的頻率,能夠測量正弦波、方波和三角波等信號的頻率,而且還能對其他多種物理量進行測量。具有體積小、可靠性高、功耗低的特點。數(shù)字頻率計是計算機、通訊設備、音頻視頻等科研生產(chǎn)領域不可缺少的測量儀器。采用VDHL編程設計實現(xiàn)的數(shù)字頻率計,除被測信號的整形部分、鍵輸入部分和數(shù)碼顯示部分以外,其余全部在一片F(xiàn)PGA芯片上實現(xiàn),整個系統(tǒng)非常精簡,而且具有靈
3、活的現(xiàn)場可更改性。在不更改硬件電路的基礎上,對系統(tǒng)進行各種改進還可以進一步提高系統(tǒng)的性能。該數(shù)字頻率計具有高速、精確、可靠、抗干擾性強和現(xiàn)場可編程等優(yōu)點。</p><p> 關鍵詞:FPGA芯片、VHDL語言、數(shù)字頻率計、數(shù)字頻率計原理圖、EDA技術</p><p><b> Abstract</b></p><p> Digital c
4、ymometer is to directly show to be measured a kind of diagraph of signal frequency to equip with the decimal system number.It not only can measure sine wave, square wave, triangle wave, sharp pulse signal and other have
5、a period of the frequency of the signal of characteristic, and can also measure their periods.Has been refitted, can measure pulse width, make into the number type vein breadth to measure an instrument;Can measure electr
6、ic capacity to make into a number type the electric</p><p> Key words: The FPGA chip, VHDL language and digital cymometer, the digital cymometer account principle diagram ,EDA technique</p><p>
7、<b> 目錄</b></p><p><b> 引言1</b></p><p> 技術性能指標及分工2</p><p> 第1章 頻率計的設計背景及原理3</p><p> 1.1 設計背景3</p><p> 1.2 設計原理3</p&g
8、t;<p> 1.2.1 頻率計設計原理3</p><p> 1.2.2 原理框圖4</p><p> 1.3 設計思路5</p><p> 第2章 頻率計測量頻率的層次化設計方案6</p><p> 2.1頻率產(chǎn)生器6</p><p> 2.2測頻控制信號發(fā)生器7<
9、/p><p> 2.3十進制計數(shù)器9</p><p> 2.4 24位鎖存器11</p><p> 2.5 數(shù)碼管控制器12</p><p> 2.6 譯碼器14</p><p> 2.7元件聲明及例化16</p><p><b> 總結20</b>
10、;</p><p><b> 心得體會21</b></p><p><b> 參考文獻22</b></p><p><b> 附錄23</b></p><p><b> 引言</b></p><p> 所謂頻率,就是
11、周期性信號在單位時間(1s)里變化的次數(shù)。本頻率計設計測量頻率的基本原理是,首先讓被測信號與標準信號一起通過一個閘門,然后用計數(shù)器計數(shù)信號脈沖的個數(shù),把標準時間內(nèi)的計數(shù)的結果,用鎖存器鎖存起來,最后用顯示譯碼器,把鎖存的結果用LED數(shù)碼顯示管顯示出來。</p><p> 根據(jù)數(shù)字頻率計的基本原理,本設計方案分三個模塊來實現(xiàn)其功能,即整個數(shù)字頻率計系統(tǒng)分為時基產(chǎn)生與測頻時序控制電路模塊、待測信號脈沖計數(shù)電路模塊、
12、鎖存與譯碼顯示控制電路模塊等幾個單元,并且分別用VHDL硬件描述語言對其進行編程,實現(xiàn)了控制電路、計數(shù)電路、鎖存與譯碼顯示電路。</p><p><b> 技術性能指標及分工</b></p><p> 1)能夠測量正弦波、三角波、鋸齒波、矩形波等周期性信號的頻率;</p><p> 2)能直接用十進制數(shù)字顯示測得的頻率;</p>
13、;<p> 3)頻率測量范圍:1HZ~999999HZ;</p><p> 4)測量時間:T<=2.0S;</p><p> 5)用CPLD/FPGA可編程邏輯器件實現(xiàn);</p><p><b> 進度安排:</b></p><p> 2011/06/27 集體針對設計進行分析、討論,
14、確定好分工,明確設計進度,以及對設計</p><p><b> 總體上有個了解。 </b></p><p> 2011/06/28 各組員針對自己的任務,查找相關資料,完成各自相關部分。</p><p> 2011/06/29 集體討論,找出一個較佳的方案。</p><p> 06/30—07/05
15、 進行可行性分析,進行程序設計及仿真,對有錯或不佳的地方加以改正。</p><p> 07/06—07/07 最后分析整理,書寫課程設計報告。</p><p> 2011/07/08 打印相關圖紙,答辯。</p><p><b> 分配任務:</b></p><p> 郭躍明 上網(wǎng)搜集資料,審核,打??;
16、</p><p> 李 寶 對資料進行初步整理,以備選用,寫論文;</p><p> 江時文 確定設計方案,設計程序及仿真。</p><p> 第1章 頻率計的設計背景及原理</p><p><b> 1.1 設計背景</b></p><p> 隨著數(shù)字電子技術的發(fā)展,頻率測
17、量成為一項越來越普遍的工作,因此測頻計常受到人們的青睞。目前許多高精度的數(shù)字頻率計都采用單片機加上外部的高速計數(shù)器來實現(xiàn),然而單片機的時鐘頻率不高導致測頻速度比較慢,并且在這種設計中,由于PCB版的集成度不高,導致PCB板走線長,因此難以提高計數(shù)器的工作頻率。為了克服這種缺點,大大提高測量精度和速度,我們可以設計一種可編程邏輯器件來實現(xiàn)數(shù)字頻率計。</p><p> EDA技術是以大規(guī)??删幊踢壿嬈骷樵O計載體
18、,以硬件語言為系統(tǒng)邏輯描述的主要方式,以計算機、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)為設計工具,通過有關的開發(fā)軟件,自動完成用軟件設計的電子系統(tǒng)到硬件系統(tǒng)的設計,最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術。其設計的靈活性使得EDA技術得以快速發(fā)展和廣泛應用。以QUARTUS II軟件為設計平臺,采用VHDL語言實現(xiàn)數(shù)字頻率計的整體設計。</p><p> 伴隨著集成電路(IC)技術的發(fā)展,電子設計自
19、動化(EDA)逐漸成為重要的設計手段,已經(jīng)廣泛應用于模擬與數(shù)字電路系統(tǒng)等許多領域。電子設計自動化是一種實現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動化設計的技術,它與電子技術,微電子技術的發(fā)展密切相關,它吸收了計算機科學領域的大多數(shù)最新研究成果,以高性能的計算機作為工作平臺,促進了工程發(fā)展。EDA的一個重要特征就是使用硬件描述語言(HDL)來完成的設計文件,VHDL語言是經(jīng)IEEE確認的標準硬件語言,在電子設計領域受到了廣泛的接受。</p>
20、<p><b> 1.2 設計原理</b></p><p> 1.2.1 頻率計設計原理</p><p> 數(shù)字頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù),即閘門時間為1s。閘門時間可以根據(jù)需要取值,大于或小于1s都可以。閘門時間越長,得到的頻率值就越準確,但閘門時間越長
21、,則每測量一次頻率的間隔就越長。閘門時間越短,測得的頻率值刷新就越快,但測得的頻率精度就受影響。一般取1s作為閘門時間。</p><p> 在電子技術中,頻率是最基本的參數(shù)之一,并且與許多電參量的測量方案、測量結果都有十分密切的關系,因此,頻率的測量就顯得更為重要。測量頻率的方法有多種,其中電子計數(shù)器測量頻率具有精度高、使用方便、測量迅速,以及便于實現(xiàn)測量過程自動化等優(yōu)點,是頻率測量的重要手段之一。數(shù)字式頻率計
22、的測量原理有兩類:一是直接測頻法,即在一定閘門時間內(nèi)測量被測信號的脈沖個數(shù);二是間接測頻法即測周期法,如周期測頻法。直接測頻法適用于高頻信號的頻率測量,通常采用計數(shù)器、數(shù)據(jù)鎖存器及控制電路實現(xiàn),并通過改變計數(shù)器閥門的時間長短在達到不同的測量精度;間接測頻法適用于低頻信號的頻率測量,本設計中使用的就是直接測頻法,即用計數(shù)器在計算1S內(nèi)輸入信號周期的個數(shù)。</p><p> 數(shù)字頻率計是數(shù)字電路中的一個典型應用,實
23、際的硬件設計用到的器件較多,連線比較復雜,而且會產(chǎn)生比較大的延時,造成測量誤差、可靠性差。隨著現(xiàn)場可編程門陣列FPGA的廣泛應用,以EDA工具作為開發(fā)手段,運用VHDL等硬件描述語言語言,將使整個系統(tǒng)大大簡化,提高了系統(tǒng)的整體性能和可靠性。</p><p> 本設計中使用的就是直接測頻法,即用計數(shù)器在計算1s內(nèi)輸入信號周期的個數(shù),其測頻范圍為1Hz~999999Hz。</p><p>
24、 1.2.2 原理框圖</p><p> 設計的原理框圖如下所示:</p><p> 圖1 數(shù)字頻率計原理框圖</p><p><b> 1.3 設計思路</b></p><p> 1、通過脈沖轉(zhuǎn)換電路將三角波、鋸齒波、正弦波,矩形波等周期性信號轉(zhuǎn)換成矩形脈沖,本論文中就不涉及這方面的設計。矩形脈沖轉(zhuǎn)換原理如
25、圖:</p><p> 圖2 矩形脈沖生成原理圖</p><p> 2、頻率測量的基本原理是計算每秒鐘內(nèi)待測信號的轉(zhuǎn)換生成的脈沖個數(shù)。這就要求測頻控制信號發(fā)生器testpl的計數(shù)使能信號tsten能產(chǎn)生一個1秒脈寬的周期信號,并對頻率計的每一計數(shù)器cnt10的使能端en進行同步控制。當tsten為高電平"1"時,允許計數(shù);為低電平"0"時停止計數(shù)
26、,并保持其計數(shù)結果。在停止計數(shù)期間,首先需要一個鎖存信號load的上跳沿將計數(shù)器在前1 秒種的計數(shù)值鎖存進24位鎖存器reg24b中。鎖存信號之后,必須有一個清零信號clr_cnt對計數(shù)器進行清零,為下1 秒的計數(shù)操作做準備。然后由外部數(shù)碼管控制器ledcom控制的8段譯碼器ymq譯出,并穩(wěn)定顯示。</p><p> 第2章 頻率計測量頻率的層次化設計方案</p><p><b&
27、gt; 2.1頻率產(chǎn)生器</b></p><p> 頻率計電路工作時先要產(chǎn)生一個計數(shù)允許信號(即閘門信號),閘門信號的寬度為單位時間,如1S。在閘門信號有效時間內(nèi),對被測信號計數(shù),即為信號的頻率。該頻率計電路的精度取決于閘門信號T。</p><p> 本設計中選取的基準信號頻率為40khz,為了得到1s高電平的周期性閘門信號,本設計采用對頻率為40khz基準信號進行分頻就
28、能得到1HZ的基準信號,這樣得到的門閘信號高電平為1秒鐘,處理后可以產(chǎn)生用于測頻所需的計數(shù)允許、鎖存數(shù)據(jù)和清零三個控制信號。同時產(chǎn)生400HZ的信號來控制數(shù)碼管顯示。</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned
29、.all;</p><p> entity lpm_counter0 is</p><p> port(clock: in std_logic ;</p><p> clk_div1 : out std_logic;</p><p> clkq: out std_logic);</p><p> end lp
30、m_counter0;</p><p> architecture syn of lpm_counter0 is</p><p> signal q1,q2 :std_logic;</p><p><b> begin</b></p><p> process(clock) </p><p
31、> variable cnt1 : integer range 1 to 50; </p><p> variable cnt2 : integer range 1 to 400;</p><p><b> begin </b></p><p> if clock'event and clock='1' t
32、hen </p><p> if cnt1=50 then </p><p><b> cnt1:=1; </b></p><p> q1 <= not q1; --掃描信號</p><p> if cnt2=400 then </p><p><b> cnt2:=1
33、; </b></p><p> q2 <=not q2; </p><p><b> else </b></p><p> cnt2:=cnt2+1; </p><p><b> end if; </b></p><p><b> els
34、e </b></p><p> cnt1:=cnt1+1; </p><p><b> end if; </b></p><p><b> end if; </b></p><p> end process;</p><p> clk_div1 <
35、=q1; clkq <=q2;</p><p><b> end syn;</b></p><p> 編譯成功后生成元件圖如下:</p><p> 仿真時設置總時間為4s,對clock引腳輸入設置成時間信號,周期是25ns,則其頻率為40kHZ。經(jīng)過分頻后產(chǎn)生1HZ的基準信號,從clkq輸出。仿真波形如圖下圖:</p>
36、<p> 2.2測頻控制信號發(fā)生器</p><p> 輸入端clk收到1Hz信號后,其輸出端testen控制各個cnt10的使能,clr_cnt控制各個cnt10的清零,load控制鎖存器內(nèi)數(shù)據(jù)的輸出。</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p>
37、<p> use ieee.std_logic_unsigned.all;</p><p> entity testpl is</p><p> port(clk:in std_logic;--1Hz信號</p><p> tsten:out std_logic;--計數(shù)器使能信號</p><p> clr_cn
38、t:out std_logic;--計數(shù)器清零信號</p><p> load:out std_logic);--鎖存器輸出控制信號</p><p> end testpl;</p><p> architecture art of testpl is</p><p> signal div2clk:std_logic;<
39、/p><p><b> begin</b></p><p> process(clk)</p><p><b> begin</b></p><p> if clk'event and clk='1'then</p><p> div2clk&
40、lt;=not div2clk; --div2clk為2Hz</p><p><b> end if ;</b></p><p> end process;</p><p> process (clk ,div2clk)</p><p><b> begin</b></p>&
41、lt;p> if( clk='0'and div2clk='0')then</p><p> clr_cnt<='1'; </p><p> --當div2clk與clk同時為零時計數(shù)器清零</p><p> else clr_cnt<='0'; </p><
42、;p> --當div2clk處于的高電平時計數(shù)器計數(shù)</p><p><b> end if;</b></p><p> end process;</p><p> load<=not div2clk; </p><p> --鎖存器輸出與計數(shù)器使能信號反相</p><p>
43、; tsten<=div2clk; </p><p><b> end art;</b></p><p> 編譯成功后生成元件圖如下:</p><p> 從測頻控制信號發(fā)生器模塊的仿真圖,很鮮明的給出了時鐘信號與計數(shù)允許信號tsten、清零信號clr_cnt和鎖存信號load的關系,從仿真圖可以看出計數(shù)允許信號、清零信號和鎖存信號
44、與變量Q之間所存在的相對應的關系。仿真結果如下圖所示:</p><p><b> 2.3十進制計數(shù)器</b></p><p> 有一時鐘使能輸入端en,用于鎖定計數(shù)值。當高電平"1"時允許計數(shù)器計數(shù),低電平"0"時禁止計數(shù)。多位十進制計數(shù)器時,最低位的計數(shù)器的clk端輸入被測信號,各計數(shù)器的進位輸出端c10將信號輸?shù)较乱晃皇?/p>
45、進制計數(shù)器cnt10的輸入端clk,最高位十進制計數(shù)器cnt10的進位輸出端c10給carry_out,進行報警提示(超出量程)。</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p>
46、<p> entity cnt10 is</p><p> port(clk,clr,en: in std_logic; </p><p> --clk:計數(shù)器時鐘,clr:清零信號,en:計數(shù)使能信號</p><p> q: out std_logic_vector(3 downto 0);</p><p> --
47、q:4位計數(shù)結果輸出</p><p> c10: out std_logic); --計數(shù)進位</p><p> end cnt10;</p><p> architecture art of cnt10 is</p><p> signal cqi: std_logic_vector(3 downto 0);</
48、p><p><b> begin</b></p><p> process (clk,clr)</p><p><b> begin</b></p><p> if clr='1' then cqi<="0000"; </p><p
49、> --當輸入的clr_cnt為低電平0時清零</p><p> elsif clk'event and clk='1' then</p><p> if en='1' then </p><p> --當輸入的tesen為高電平1時允許計數(shù)</p><p> if (cqi&l
50、t;9) then cqi<=cqi+1;</p><p> else cqi<="0000"; --等于9則計數(shù)器清零</p><p><b> end if; </b></p><p> --當輸入的tesen為低電平0時禁止計數(shù),鎖定計數(shù)值 </p><p><b
51、> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> --產(chǎn)生進位</b></p><p> process(cqi) </p><p><b
52、> begin</b></p><p> if cqi="1001" then c10<='1'; </p><p> --當加的9時產(chǎn)生進位輸出</p><p> else c10<='0';</p><p><b> end if;<
53、;/b></p><p> end process;</p><p><b> q<=cqi;</b></p><p><b> end art;</b></p><p> 在項目編譯仿真成功后,將設計的十進制計數(shù)器電路設置成可調(diào)用的元件cnt10.sym,用于以下的頂層設計。編
54、譯成功后生成元件圖如下:</p><p> 在源程序中c10是計數(shù)器進位輸出;q[3..0]是計數(shù)器的狀態(tài)輸出;clk是被測信號轉(zhuǎn)換后的矩形脈沖輸入端;clr是復位控制輸入端,當clr=1時,q[3..0]=0;en是使能控制輸入端,當en=1時,計數(shù)器計數(shù),當en=0時,計數(shù)器保持狀態(tài)不變。編譯成功后進行仿真,其仿真波形如下:</p><p> 2.4 24位鎖存器</p&g
55、t;<p> 將已有24 位bcd碼存在于此模塊的輸入口din[23..0],在信號load的上升沿后即被鎖存到寄存器reg24b的內(nèi)部,并由reg24b的輸出端dout[23..0]輸出,設置鎖存器的好處是,數(shù)碼管上顯示的數(shù)據(jù)穩(wěn)定,不會由于周期性的清零信號而不斷閃爍。</p><p> library ieee;</p><p> use ieee.std_logi
56、c_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity reg24b is</p><p> port (load: in std_logic;--輸出鎖存控制信號</p><p> din: in std_logic_vector(23 down
57、to 0);</p><p> dout: out std_logic_vector(23 downto 0));</p><p> end reg24b;</p><p> architecture art of reg24b is</p><p><b> begin</b></p>
58、<p> process(load,din)</p><p><b> begin</b></p><p> if load'event and load='1'then </p><p> --load為高電平時teten為低電平,計數(shù)器禁止</p><p> dout&l
59、t;=din; --鎖存輸入的數(shù)據(jù)</p><p><b> end if;</b></p><p> end process;</p><p><b> end art;</b></p><p> 編譯成功后生成元件圖如下:</p><p> 在源程序中l(wèi)oad
60、是鎖存信號,上升沿觸發(fā);din[23..0]是寄存器輸入;dout[23..0]</p><p> 是寄存器輸出。仿真結果如下圖所示:</p><p> 2.5 數(shù)碼管控制器</p><p> 兩個輸入端一個為datain[23..0],另一個為數(shù)碼管顯示選擇的掃描頻率輸入端clk,輸出端為數(shù)碼管選擇信號com[5..0]和對應顯示的數(shù)碼管的BCD碼信號端d
61、ataout[3..0],數(shù)碼管顯示選擇隨掃描頻率clk循環(huán)變化,實現(xiàn)穩(wěn)定顯示。</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity ledcom i
62、s</p><p> port(clk:in std_logic; --數(shù)碼管掃描頻率</p><p> datain: in std_logic_vector(23 downto 0);</p><p> --鎖存器輸入的24位信號</p><p> dataout: out std_logic_vector(3 downto 0)
63、;</p><p> --輸出至譯碼器的4位信號</p><p> com: out std_logic_vector(5 downto 0));</p><p> --輸出數(shù)碼管選擇信號</p><p> end ledcom;</p><p> architecture art of ledcom is&
64、lt;/p><p> signal comclk: std_logic_vector(2 downto 0);</p><p><b> begin </b></p><p> --comclk同掃描頻率clk循環(huán)變化</p><p> process(clk)</p><p><b&g
65、t; begin</b></p><p> if rising_edge(clk) then</p><p> if comclk <5 then</p><p> comclk<=comclk+1;</p><p> else comclk <="000";</p>
66、<p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> --數(shù)碼管選擇</b></p><p> process(comclk)</p>
67、<p><b> begin</b></p><p> case comclk is</p><p> when "000" => com<="100000";</p><p> when "001" => com<="010000
68、";</p><p> when "010" => com<="001000";</p><p> when "011" => com<="000100";</p><p> when "100" => com<=&
69、quot;000010";</p><p> when "101" => com<="000001";</p><p> when others =>NULL;</p><p><b> end case;</b></p><p> end pr
70、ocess;</p><p> --對應數(shù)碼管的輸出 </p><p> process(comclk,datain)</p><p><b> begin</b></p><p> case comclk is</p><p> when "101"=>
71、 dataout<=datain(3 downto 0);</p><p> when "100"=> dataout<=datain(7 downto 4);</p><p> when "011"=> dataout<=datain(11 downto 8);</p><p> when
72、 "010"=> dataout<=datain(15 downto 12);</p><p> when "001"=> dataout<=datain(19 downto 16);</p><p> when "000"=> dataout<=datain(23 downto 20);&
73、lt;/p><p> when others =>NULL;</p><p> end case;</p><p> end process;</p><p><b> end art;</b></p><p> 編譯成功后生成元件圖如下:</p><p>
74、 在clk信號的控制下,數(shù)碼管進行循環(huán)控制輸出。仿真結果如圖所示:</p><p><b> 2.6 譯碼器</b></p><p> 輸入端d_in[3..0]將接收BCD碼信號,譯碼后輸出端d_out[7..0]輸出8段數(shù)碼管信號,其中輸出的第8位均為高電平"1"可以使四個數(shù)碼管的小數(shù)點不顯示。經(jīng)譯碼器的處理輸出后數(shù)碼管顯示相應的數(shù)值。&
75、lt;/p><p> library IEEE;</p><p> use IEEE.std_logic_1164.all;</p><p> entity ymq is</p><p> port( d_in: in std_logic_vector(3 downto 0); </p><p> --數(shù)碼
76、管控制器輸入四位信號</p><p> d_out: out std_logic_vector(7 downto 0)); </p><p><b> --輸出8位信號 </b></p><p> end ymq; </p><p> --第8位d_out[7]為逗號</p><p>
77、 architecture art of ymq is</p><p><b> begin</b></p><p> process(d_in)</p><p><b> begin</b></p><p> case d_in is --第8位為1高電平逗號不顯示</p>
78、<p> when "0000" => d_out<="11000000"; --0 </p><p> when "0001" => d_out<="11111001"; --1</p><p> when "0010" => d_out<
79、;="10100100"; --2</p><p> when "0011" => d_out<="10110000"; --3</p><p> when "0100" => d_out<="10011001"; --4</p><p>
80、 when "0101" => d_out<="10010010"; --5</p><p> when "0110" => d_out<="10000010"; --6</p><p> when "0111" => d_out<="11
81、111000"; --7</p><p> when "1000" => d_out<="10000000"; --8</p><p> when "1001" => d_out<="10010000"; --9</p><p> when oth
82、ers =>NULL;</p><p><b> end case;</b></p><p> end process;</p><p><b> end art;</b></p><p> 編譯成功后生成元件圖如下:</p><p> 將相應的BCD碼轉(zhuǎn)換成
83、數(shù)碼管顯示信號,最后以十進制的形式顯示出來。仿真結果如下圖所示:</p><p> 2.7元件聲明及例化</p><p> 將各個元器件依據(jù)設計相連:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity lx
84、 is</p><p> port(clkqq: in std_logic;</p><p> clk0: in std_logic;</p><p> led: out std_logic_vector(7 downto 0);</p><p> ledc: out std_logic_vector(5 downto 0);<
85、/p><p> carry_out: out std_logic);</p><p><b> end lx;</b></p><p> architecture art of lx is</p><p> component lpm_counter0 --待調(diào)用的頻率生成器端口定義</p><
86、p> port(clock: in std_logic ;</p><p> clk_div1 : out std_logic;</p><p> clkq: out std_logic);</p><p> end component;</p><p><b> --十進制計數(shù)器</b></p&g
87、t;<p> component cnt10 --待調(diào)用的有時鐘使能的十進制計數(shù)器端口定義</p><p> port(clk,clr,en: in std_logic;</p><p> q: out std_logic_vector(3 downto 0);</p><p> c10: out std_logic);</p>
88、;<p> end component;</p><p><b> --16位鎖存器</b></p><p> component reg24b --待調(diào)用的32位鎖存器端口定義</p><p> port (load: in std_logic;</p><p> din: in std_lo
89、gic_vector(23 downto 0);</p><p> dout: out std_logic_vector(23 downto 0));</p><p> end component;</p><p><b> --測頻控制器</b></p><p> component testpl --待調(diào)用
90、的測頻控制信號發(fā)生器端口定義</p><p> port(clk:in std_logic;</p><p> tsten:out std_logic;</p><p> clr_cnt:out std_logic;</p><p> load:out std_logic);</p><p> end
91、component;</p><p><b> --數(shù)碼管選擇器</b></p><p> component ledcom --待調(diào)用的數(shù)碼管選擇器端口定義</p><p> port(clk:in std_logic;</p><p> datain: in std_logic_vector(23 downt
92、o 0);</p><p> dataout: out std_logic_vector(3 downto 0);</p><p> com: out std_logic_vector(5 downto 0));</p><p> end component;</p><p><b> --譯碼器</b><
93、/p><p> component ymq --待調(diào)用的譯碼器端口定義</p><p> port(d_in: in std_logic_vector(3 downto 0);</p><p> d_out: out std_logic_vector(7 downto 0));</p><p> end component;</p
94、><p> signal clk1,clk2,clk3: std_logic;</p><p> --clk1為1Hz信號,clk2為被測信號,clk3為數(shù)碼管掃描信號</p><p> signal tsten,clr,load: std_logic;</p><p> signal c1,c2,c3,c4,c5: std_logic;
95、</p><p> signal qout,rout: std_logic_vector(23 downto 0);</p><p> signal datao: std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> u0:testpl por
96、t map(clk1,tsten,clr,load);</p><p> u1:cnt10 port map(clk0,clr,tsten,qout(3 downto 0),c1);</p><p> u2:cnt10 port map(c1,clr,tsten,qout(7 downto 4),c2);</p><p> u3:cnt10 port map(
97、c2,clr,tsten,qout(11 downto 8),c3);</p><p> u4:cnt10 port map(c3,clr,tsten,qout(15 downto 12),c4);</p><p> u5:cnt10 port map(c4,clr,tsten,qout(19 downto 16),c5);</p><p> u6:cnt10
98、 port map(c5,clr,tsten,qout(23 downto 20), carry_out);</p><p> u7:reg24b port map(load,qout(23 downto 0),rout);</p><p> u8:ledcom port map(clk2,rout,datao,ledc);</p><p> u9:ymq p
99、ort map(datao,led);</p><p> u10:lpm_counter0 port map(clkqq, clkq=>clk1, clk_div1=>clk2);</p><p><b> end art;</b></p><p> 編譯成功后生成元件圖如下:</p><p> 其中
100、clk0為系統(tǒng)待測信號,led[7..0]是八段數(shù)碼輸出,ledc[5..0]數(shù)碼管控制片選輸出,carry_out超出量程報警輸出??偟姆抡鏁r間設置1s,clkqq為40KHZ基頻信號,設置周期為25us;clk0為被測信號,周期任意(為了檢測設置周期為80us,計頻率為12.5kHZ,從仿真圖中可以看出測得頻率為12500HZ,與設計的一樣)。經(jīng)過1.5s后就能讀出待測信號的頻率。仿真結果如圖下圖所示:</p><
101、;p><b> 總結</b></p><p> 本頻率計滿足實驗要求,測量頻率范圍是1-999999HZ,采用直接測頻法對被測信號進行測量,但也存在不足的地方,最好的設計方法是用測周法與直接測頻法相結合的方式,在頻率低于1000HZ采用測周法,高于1000HZ時采用直接測頻法,這樣的好處在于減小量化誤差。而兩種測量方法之間進行自動選擇,首先采用測周法進行測量,若頻率超過1000HZ
102、則產(chǎn)生溢出信號,自動選擇采用測頻法進行測量,這樣的設計是最合理的頻率計設計,若只采用某一種方法進行測量都存在不足之處。周期測量時信號頻率越低,測量的誤差越小,周期倍乘的值越大,誤差越小,另外也可以通過更好的時基信號來進行計數(shù)來減小量化誤差的影響。 </p><p><b> 心得體會</b></p><p> 本次實習讓我們體味到設計程序、調(diào)測程序過程中的樂苦與甜
103、。設計是我們將來必需的技能,這次實習恰恰給我們提供了一個應用自己所學知識的機會,從到圖書館查找資料到對電路的設計對電路的調(diào)試試再到最后電路的成型,都對我所學的知識進行了檢驗。在實習的過程中發(fā)現(xiàn)了以前學的知識掌握的不牢。同時在設計的過程中,遇到了一些以前沒有見到過的語句,但是通過查找資料來學習這些語句的功能和使用。</p><p> 調(diào)試程序過程是一個考驗人耐心的過程,不能有絲毫的急躁,馬虎,特別是對仿真波形的調(diào)
104、試要一步一步來,不能急躁,最重要的是要熟練地掌握課堂上的知識,這樣才能對試驗中出現(xiàn)的問題進行分析解決。在整個課程設計完后,總的感覺是:有收獲。</p><p> 以前上課都是上一些最基本的東西而現(xiàn)在卻可以將以前學的東西作出有實際價值的東西。在這個過程中,我的確學得到很多在書本上學不到的東西,如:利用VHDL語言編寫程序等等。但也遇到了不少的挫折,有時在仿真時遇到了一個錯誤怎么找也找不到原兇所在,找了老半天結果發(fā)
105、現(xiàn)是取得時間太短了或是設定錯了頻率。在學習中的小問題在課堂上不可能犯,在動于的過程中卻很有可能犯。特別是在編譯程序時,一不小心就會犯錯,而且很不容易檢查出來。但現(xiàn)在回過頭來看,還是挺有成就感的。我的動手能力又有了進一步的提高,我感到十分的欣慰。鞏固了課堂上所學到的理論性的知識,對VHDL語言有了更深一層的理解,熟練地掌握了QuartusⅡ軟件的應用,能在Quartus II軟件環(huán)境下生成可用的波形文件、文本文件、圖形文件等。</p
106、><p> 通過緊張有序的設計實踐,我覺得自己的動手能力有了很大的提高:自信心也增強了,在課程設計中自己動腦子解決遇到的問題,書本上的知識有了用武之地,這義鞏固和深化了自己的知識結構。</p><p> 總而言之,通過此次的課程設計,我獲益匪淺?。?!</p><p><b> 參考文獻</b></p><p> [1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字頻率計課程設計
- 課程設計--數(shù)字頻率計
- 課程設計——數(shù)字頻率計
- 數(shù)字頻率計課程設計
- 課程設計-數(shù)字頻率計
- 課程設計--數(shù)字頻率計
- 課程設計--數(shù)字頻率計
- 數(shù)字頻率計課程設計
- 數(shù)字頻率計課程設計
- 數(shù)字頻率計課程設計
- eda數(shù)字頻率計課程設計
- 數(shù)字頻率計課程設計 (2)
- eda課程設計--數(shù)字頻率計
- 數(shù)字頻率計課程設計報告
- eda課程設計---數(shù)字頻率計
- 數(shù)字頻率計課程設計 (2)
- 數(shù)字頻率計課程設計報告
- 數(shù)字頻率計--課程設計報告
- 課程設計---eda數(shù)字頻率計
- eda課程設計---數(shù)字頻率計
評論
0/150
提交評論