版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘要</b></p><p> 數(shù)字頻率計(jì)是直接用十進(jìn)制數(shù)字來顯示被測(cè)信號(hào)頻率的一種測(cè)量裝置。它不僅可以測(cè)量正弦波、方波、三角波、尖脈沖信號(hào)和其他具有周期特性的信號(hào)的頻率,而且還可以測(cè)量它們的周期。經(jīng)過改裝,可以測(cè)量脈沖寬度,做成數(shù)字式脈寬測(cè)量?jī)x;可以測(cè)量電容做成數(shù)字式電容測(cè)量?jī)x;在電路中增加傳感器,還可以做成數(shù)字脈搏儀、計(jì)價(jià)器等。因此數(shù)字頻率計(jì)在測(cè)量物理量方
2、面應(yīng)用廣泛。本設(shè)計(jì)用VHDL在CPLD器件上實(shí)現(xiàn)數(shù)字頻率計(jì)測(cè)頻系統(tǒng),能夠用十進(jìn)制數(shù)碼顯示被測(cè)信號(hào)的頻率,能夠測(cè)量正弦波、方波和三角波等信號(hào)的頻率,而且還能對(duì)其他多種物理量進(jìn)行測(cè)量。具有體積小、可靠性高、功耗低的特點(diǎn)。數(shù)字頻率計(jì)是計(jì)算機(jī)、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測(cè)量?jī)x器。采用VDHL編程設(shè)計(jì)實(shí)現(xiàn)的數(shù)字頻率計(jì),除被測(cè)信號(hào)的整形部分、鍵輸入部分和數(shù)碼顯示部分以外,其余全部在一片F(xiàn)PGA芯片上實(shí)現(xiàn),整個(gè)系統(tǒng)非常精簡(jiǎn),而且具有靈
3、活的現(xiàn)場(chǎng)可更改性。在不更改硬件電路的基礎(chǔ)上,對(duì)系統(tǒng)進(jìn)行各種改進(jìn)還可以進(jìn)一步提高系統(tǒng)的性能。該數(shù)字頻率計(jì)具有高速、精確、可靠、抗干擾性強(qiáng)和現(xiàn)場(chǎng)可編程等優(yōu)點(diǎn)。</p><p> 關(guān)鍵詞:FPGA芯片、VHDL語言、數(shù)字頻率計(jì)、數(shù)字頻率計(jì)原理圖、EDA技術(shù)</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> 技術(shù)性能指標(biāo)及分工2</p><p> 第1章 頻率計(jì)的設(shè)計(jì)背景及原理3</p><p> 1.1 設(shè)計(jì)背景3</p><p> 1.2 設(shè)計(jì)原理3</p&g
8、t;<p> 1.2.1 頻率計(jì)設(shè)計(jì)原理3</p><p> 1.2.2 原理框圖4</p><p> 1.3 設(shè)計(jì)思路5</p><p> 第2章 頻率計(jì)測(cè)量頻率的層次化設(shè)計(jì)方案6</p><p> 2.1頻率產(chǎn)生器6</p><p> 2.2測(cè)頻控制信號(hào)發(fā)生器7<
9、/p><p> 2.3十進(jìn)制計(jì)數(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> 總結(jié)20</b>
10、;</p><p><b> 心得體會(huì)21</b></p><p><b> 參考文獻(xiàn)22</b></p><p><b> 附錄23</b></p><p><b> 引言</b></p><p> 所謂頻率,就是
11、周期性信號(hào)在單位時(shí)間(1s)里變化的次數(shù)。本頻率計(jì)設(shè)計(jì)測(cè)量頻率的基本原理是,首先讓被測(cè)信號(hào)與標(biāo)準(zhǔn)信號(hào)一起通過一個(gè)閘門,然后用計(jì)數(shù)器計(jì)數(shù)信號(hào)脈沖的個(gè)數(shù),把標(biāo)準(zhǔn)時(shí)間內(nèi)的計(jì)數(shù)的結(jié)果,用鎖存器鎖存起來,最后用顯示譯碼器,把鎖存的結(jié)果用LED數(shù)碼顯示管顯示出來。</p><p> 根據(jù)數(shù)字頻率計(jì)的基本原理,本設(shè)計(jì)方案分三個(gè)模塊來實(shí)現(xiàn)其功能,即整個(gè)數(shù)字頻率計(jì)系統(tǒng)分為時(shí)基產(chǎn)生與測(cè)頻時(shí)序控制電路模塊、待測(cè)信號(hào)脈沖計(jì)數(shù)電路模塊、
12、鎖存與譯碼顯示控制電路模塊等幾個(gè)單元,并且分別用VHDL硬件描述語言對(duì)其進(jìn)行編程,實(shí)現(xiàn)了控制電路、計(jì)數(shù)電路、鎖存與譯碼顯示電路。</p><p><b> 技術(shù)性能指標(biāo)及分工</b></p><p> 1)能夠測(cè)量正弦波、三角波、鋸齒波、矩形波等周期性信號(hào)的頻率;</p><p> 2)能直接用十進(jìn)制數(shù)字顯示測(cè)得的頻率;</p>
13、;<p> 3)頻率測(cè)量范圍:1HZ~999999HZ;</p><p> 4)測(cè)量時(shí)間:T<=2.0S;</p><p> 5)用CPLD/FPGA可編程邏輯器件實(shí)現(xiàn);</p><p><b> 進(jìn)度安排:</b></p><p> 2011/06/27 集體針對(duì)設(shè)計(jì)進(jìn)行分析、討論,
14、確定好分工,明確設(shè)計(jì)進(jìn)度,以及對(duì)設(shè)計(jì)</p><p><b> 總體上有個(gè)了解。 </b></p><p> 2011/06/28 各組員針對(duì)自己的任務(wù),查找相關(guān)資料,完成各自相關(guān)部分。</p><p> 2011/06/29 集體討論,找出一個(gè)較佳的方案。</p><p> 06/30—07/05
15、 進(jìn)行可行性分析,進(jìn)行程序設(shè)計(jì)及仿真,對(duì)有錯(cuò)或不佳的地方加以改正。</p><p> 07/06—07/07 最后分析整理,書寫課程設(shè)計(jì)報(bào)告。</p><p> 2011/07/08 打印相關(guān)圖紙,答辯。</p><p><b> 分配任務(wù):</b></p><p> 郭躍明 上網(wǎng)搜集資料,審核,打印;
16、</p><p> 李 寶 對(duì)資料進(jìn)行初步整理,以備選用,寫論文;</p><p> 江時(shí)文 確定設(shè)計(jì)方案,設(shè)計(jì)程序及仿真。</p><p> 第1章 頻率計(jì)的設(shè)計(jì)背景及原理</p><p><b> 1.1 設(shè)計(jì)背景</b></p><p> 隨著數(shù)字電子技術(shù)的發(fā)展,頻率測(cè)
17、量成為一項(xiàng)越來越普遍的工作,因此測(cè)頻計(jì)常受到人們的青睞。目前許多高精度的數(shù)字頻率計(jì)都采用單片機(jī)加上外部的高速計(jì)數(shù)器來實(shí)現(xiàn),然而單片機(jī)的時(shí)鐘頻率不高導(dǎo)致測(cè)頻速度比較慢,并且在這種設(shè)計(jì)中,由于PCB版的集成度不高,導(dǎo)致PCB板走線長(zhǎng),因此難以提高計(jì)數(shù)器的工作頻率。為了克服這種缺點(diǎn),大大提高測(cè)量精度和速度,我們可以設(shè)計(jì)一種可編程邏輯器件來實(shí)現(xiàn)數(shù)字頻率計(jì)。</p><p> EDA技術(shù)是以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體
18、,以硬件語言為系統(tǒng)邏輯描述的主要方式,以計(jì)算機(jī)、大規(guī)模可編程邏輯器件的開發(fā)軟件及實(shí)驗(yàn)開發(fā)系統(tǒng)為設(shè)計(jì)工具,通過有關(guān)的開發(fā)軟件,自動(dòng)完成用軟件設(shè)計(jì)的電子系統(tǒng)到硬件系統(tǒng)的設(shè)計(jì),最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù)。其設(shè)計(jì)的靈活性使得EDA技術(shù)得以快速發(fā)展和廣泛應(yīng)用。以QUARTUS II軟件為設(shè)計(jì)平臺(tái),采用VHDL語言實(shí)現(xiàn)數(shù)字頻率計(jì)的整體設(shè)計(jì)。</p><p> 伴隨著集成電路(IC)技術(shù)的發(fā)展,電子設(shè)計(jì)自
19、動(dòng)化(EDA)逐漸成為重要的設(shè)計(jì)手段,已經(jīng)廣泛應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域。電子設(shè)計(jì)自動(dòng)化是一種實(shí)現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動(dòng)化設(shè)計(jì)的技術(shù),它與電子技術(shù),微電子技術(shù)的發(fā)展密切相關(guān),它吸收了計(jì)算機(jī)科學(xué)領(lǐng)域的大多數(shù)最新研究成果,以高性能的計(jì)算機(jī)作為工作平臺(tái),促進(jìn)了工程發(fā)展。EDA的一個(gè)重要特征就是使用硬件描述語言(HDL)來完成的設(shè)計(jì)文件,VHDL語言是經(jīng)IEEE確認(rèn)的標(biāo)準(zhǔn)硬件語言,在電子設(shè)計(jì)領(lǐng)域受到了廣泛的接受。</p>
20、<p><b> 1.2 設(shè)計(jì)原理</b></p><p> 1.2.1 頻率計(jì)設(shè)計(jì)原理</p><p> 數(shù)字頻率計(jì)的基本原理是用一個(gè)頻率穩(wěn)定度高的頻率源作為基準(zhǔn)時(shí)鐘,對(duì)比測(cè)量其他信號(hào)的頻率。通常情況下計(jì)算每秒內(nèi)待測(cè)信號(hào)的脈沖個(gè)數(shù),即閘門時(shí)間為1s。閘門時(shí)間可以根據(jù)需要取值,大于或小于1s都可以。閘門時(shí)間越長(zhǎng),得到的頻率值就越準(zhǔn)確,但閘門時(shí)間越長(zhǎng)
21、,則每測(cè)量一次頻率的間隔就越長(zhǎng)。閘門時(shí)間越短,測(cè)得的頻率值刷新就越快,但測(cè)得的頻率精度就受影響。一般取1s作為閘門時(shí)間。</p><p> 在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多電參量的測(cè)量方案、測(cè)量結(jié)果都有十分密切的關(guān)系,因此,頻率的測(cè)量就顯得更為重要。測(cè)量頻率的方法有多種,其中電子計(jì)數(shù)器測(cè)量頻率具有精度高、使用方便、測(cè)量迅速,以及便于實(shí)現(xiàn)測(cè)量過程自動(dòng)化等優(yōu)點(diǎn),是頻率測(cè)量的重要手段之一。數(shù)字式頻率計(jì)
22、的測(cè)量原理有兩類:一是直接測(cè)頻法,即在一定閘門時(shí)間內(nèi)測(cè)量被測(cè)信號(hào)的脈沖個(gè)數(shù);二是間接測(cè)頻法即測(cè)周期法,如周期測(cè)頻法。直接測(cè)頻法適用于高頻信號(hào)的頻率測(cè)量,通常采用計(jì)數(shù)器、數(shù)據(jù)鎖存器及控制電路實(shí)現(xiàn),并通過改變計(jì)數(shù)器閥門的時(shí)間長(zhǎng)短在達(dá)到不同的測(cè)量精度;間接測(cè)頻法適用于低頻信號(hào)的頻率測(cè)量,本設(shè)計(jì)中使用的就是直接測(cè)頻法,即用計(jì)數(shù)器在計(jì)算1S內(nèi)輸入信號(hào)周期的個(gè)數(shù)。</p><p> 數(shù)字頻率計(jì)是數(shù)字電路中的一個(gè)典型應(yīng)用,實(shí)
23、際的硬件設(shè)計(jì)用到的器件較多,連線比較復(fù)雜,而且會(huì)產(chǎn)生比較大的延時(shí),造成測(cè)量誤差、可靠性差。隨著現(xiàn)場(chǎng)可編程門陣列FPGA的廣泛應(yīng)用,以EDA工具作為開發(fā)手段,運(yùn)用VHDL等硬件描述語言語言,將使整個(gè)系統(tǒng)大大簡(jiǎn)化,提高了系統(tǒng)的整體性能和可靠性。</p><p> 本設(shè)計(jì)中使用的就是直接測(cè)頻法,即用計(jì)數(shù)器在計(jì)算1s內(nèi)輸入信號(hào)周期的個(gè)數(shù),其測(cè)頻范圍為1Hz~999999Hz。</p><p>
24、 1.2.2 原理框圖</p><p> 設(shè)計(jì)的原理框圖如下所示:</p><p> 圖1 數(shù)字頻率計(jì)原理框圖</p><p><b> 1.3 設(shè)計(jì)思路</b></p><p> 1、通過脈沖轉(zhuǎn)換電路將三角波、鋸齒波、正弦波,矩形波等周期性信號(hào)轉(zhuǎn)換成矩形脈沖,本論文中就不涉及這方面的設(shè)計(jì)。矩形脈沖轉(zhuǎn)換原理如
25、圖:</p><p> 圖2 矩形脈沖生成原理圖</p><p> 2、頻率測(cè)量的基本原理是計(jì)算每秒鐘內(nèi)待測(cè)信號(hào)的轉(zhuǎn)換生成的脈沖個(gè)數(shù)。這就要求測(cè)頻控制信號(hào)發(fā)生器testpl的計(jì)數(shù)使能信號(hào)tsten能產(chǎn)生一個(gè)1秒脈寬的周期信號(hào),并對(duì)頻率計(jì)的每一計(jì)數(shù)器cnt10的使能端en進(jìn)行同步控制。當(dāng)tsten為高電平"1"時(shí),允許計(jì)數(shù);為低電平"0"時(shí)停止計(jì)數(shù)
26、,并保持其計(jì)數(shù)結(jié)果。在停止計(jì)數(shù)期間,首先需要一個(gè)鎖存信號(hào)load的上跳沿將計(jì)數(shù)器在前1 秒種的計(jì)數(shù)值鎖存進(jìn)24位鎖存器reg24b中。鎖存信號(hào)之后,必須有一個(gè)清零信號(hào)clr_cnt對(duì)計(jì)數(shù)器進(jìn)行清零,為下1 秒的計(jì)數(shù)操作做準(zhǔn)備。然后由外部數(shù)碼管控制器ledcom控制的8段譯碼器ymq譯出,并穩(wěn)定顯示。</p><p> 第2章 頻率計(jì)測(cè)量頻率的層次化設(shè)計(jì)方案</p><p><b&
27、gt; 2.1頻率產(chǎn)生器</b></p><p> 頻率計(jì)電路工作時(shí)先要產(chǎn)生一個(gè)計(jì)數(shù)允許信號(hào)(即閘門信號(hào)),閘門信號(hào)的寬度為單位時(shí)間,如1S。在閘門信號(hào)有效時(shí)間內(nèi),對(duì)被測(cè)信號(hào)計(jì)數(shù),即為信號(hào)的頻率。該頻率計(jì)電路的精度取決于閘門信號(hào)T。</p><p> 本設(shè)計(jì)中選取的基準(zhǔn)信號(hào)頻率為40khz,為了得到1s高電平的周期性閘門信號(hào),本設(shè)計(jì)采用對(duì)頻率為40khz基準(zhǔn)信號(hào)進(jìn)行分頻就
28、能得到1HZ的基準(zhǔn)信號(hào),這樣得到的門閘信號(hào)高電平為1秒鐘,處理后可以產(chǎn)生用于測(cè)頻所需的計(jì)數(shù)允許、鎖存數(shù)據(jù)和清零三個(gè)控制信號(hào)。同時(shí)產(chǎn)生400HZ的信號(hào)來控制數(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; --掃描信號(hào)</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> 仿真時(shí)設(shè)置總時(shí)間為4s,對(duì)clock引腳輸入設(shè)置成時(shí)間信號(hào),周期是25ns,則其頻率為40kHZ。經(jīng)過分頻后產(chǎn)生1HZ的基準(zhǔn)信號(hào),從clkq輸出。仿真波形如圖下圖:</p>
36、<p> 2.2測(cè)頻控制信號(hào)發(fā)生器</p><p> 輸入端clk收到1Hz信號(hào)后,其輸出端testen控制各個(gè)cnt10的使能,clr_cnt控制各個(gè)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信號(hào)</p><p> tsten:out std_logic;--計(jì)數(shù)器使能信號(hào)</p><p> clr_cn
38、t:out std_logic;--計(jì)數(shù)器清零信號(hào)</p><p> load:out std_logic);--鎖存器輸出控制信號(hào)</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> --當(dāng)div2clk與clk同時(shí)為零時(shí)計(jì)數(shù)器清零</p><p> else clr_cnt<='0'; </p><
42、;p> --當(dāng)div2clk處于的高電平時(shí)計(jì)數(shù)器計(jì)數(shù)</p><p><b> end if;</b></p><p> end process;</p><p> load<=not div2clk; </p><p> --鎖存器輸出與計(jì)數(shù)器使能信號(hào)反相</p><p>
43、; tsten<=div2clk; </p><p><b> end art;</b></p><p> 編譯成功后生成元件圖如下:</p><p> 從測(cè)頻控制信號(hào)發(fā)生器模塊的仿真圖,很鮮明的給出了時(shí)鐘信號(hào)與計(jì)數(shù)允許信號(hào)tsten、清零信號(hào)clr_cnt和鎖存信號(hào)load的關(guān)系,從仿真圖可以看出計(jì)數(shù)允許信號(hào)、清零信號(hào)和鎖存信號(hào)
44、與變量Q之間所存在的相對(duì)應(yīng)的關(guān)系。仿真結(jié)果如下圖所示:</p><p><b> 2.3十進(jìn)制計(jì)數(shù)器</b></p><p> 有一時(shí)鐘使能輸入端en,用于鎖定計(jì)數(shù)值。當(dāng)高電平"1"時(shí)允許計(jì)數(shù)器計(jì)數(shù),低電平"0"時(shí)禁止計(jì)數(shù)。多位十進(jìn)制計(jì)數(shù)器時(shí),最低位的計(jì)數(shù)器的clk端輸入被測(cè)信號(hào),各計(jì)數(shù)器的進(jìn)位輸出端c10將信號(hào)輸?shù)较乱晃皇?/p>
45、進(jìn)制計(jì)數(shù)器cnt10的輸入端clk,最高位十進(jìn)制計(jì)數(shù)器cnt10的進(jìn)位輸出端c10給carry_out,進(jìn)行報(bào)警提示(超出量程)。</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:計(jì)數(shù)器時(shí)鐘,clr:清零信號(hào),en:計(jì)數(shù)使能信號(hào)</p><p> q: out std_logic_vector(3 downto 0);</p><p> --
47、q:4位計(jì)數(shù)結(jié)果輸出</p><p> c10: out std_logic); --計(jì)數(shù)進(jìn)位</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、> --當(dāng)輸入的clr_cnt為低電平0時(shí)清零</p><p> elsif clk'event and clk='1' then</p><p> if en='1' then </p><p> --當(dāng)輸入的tesen為高電平1時(shí)允許計(jì)數(shù)</p><p> if (cqi&l
50、t;9) then cqi<=cqi+1;</p><p> else cqi<="0000"; --等于9則計(jì)數(shù)器清零</p><p><b> end if; </b></p><p> --當(dāng)輸入的tesen為低電平0時(shí)禁止計(jì)數(shù),鎖定計(jì)數(shù)值 </p><p><b
51、> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> --產(chǎn)生進(jìn)位</b></p><p> process(cqi) </p><p><b
52、> begin</b></p><p> if cqi="1001" then c10<='1'; </p><p> --當(dāng)加的9時(shí)產(chǎn)生進(jì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> 在項(xiàng)目編譯仿真成功后,將設(shè)計(jì)的十進(jìn)制計(jì)數(shù)器電路設(shè)置成可調(diào)用的元件cnt10.sym,用于以下的頂層設(shè)計(jì)。編
54、譯成功后生成元件圖如下:</p><p> 在源程序中c10是計(jì)數(shù)器進(jìn)位輸出;q[3..0]是計(jì)數(shù)器的狀態(tài)輸出;clk是被測(cè)信號(hào)轉(zhuǎn)換后的矩形脈沖輸入端;clr是復(fù)位控制輸入端,當(dāng)clr=1時(shí),q[3..0]=0;en是使能控制輸入端,當(dāng)en=1時(shí),計(jì)數(shù)器計(jì)數(shù),當(dāng)en=0時(shí),計(jì)數(shù)器保持狀態(tài)不變。編譯成功后進(jìn)行仿真,其仿真波形如下:</p><p> 2.4 24位鎖存器</p&g
55、t;<p> 將已有24 位bcd碼存在于此模塊的輸入口din[23..0],在信號(hào)load的上升沿后即被鎖存到寄存器reg24b的內(nèi)部,并由reg24b的輸出端dout[23..0]輸出,設(shè)置鎖存器的好處是,數(shù)碼管上顯示的數(shù)據(jù)穩(wěn)定,不會(huì)由于周期性的清零信號(hào)而不斷閃爍。</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;--輸出鎖存控制信號(hào)</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為高電平時(shí)teten為低電平,計(jì)數(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、是鎖存信號(hào),上升沿觸發(fā);din[23..0]是寄存器輸入;dout[23..0]</p><p> 是寄存器輸出。仿真結(jié)果如下圖所示:</p><p> 2.5 數(shù)碼管控制器</p><p> 兩個(gè)輸入端一個(gè)為datain[23..0],另一個(gè)為數(shù)碼管顯示選擇的掃描頻率輸入端clk,輸出端為數(shù)碼管選擇信號(hào)com[5..0]和對(duì)應(yīng)顯示的數(shù)碼管的BCD碼信號(hào)端d
61、ataout[3..0],數(shù)碼管顯示選擇隨掃描頻率clk循環(huán)變化,實(shí)現(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位信號(hào)</p><p> dataout: out std_logic_vector(3 downto 0)
63、;</p><p> --輸出至譯碼器的4位信號(hào)</p><p> com: out std_logic_vector(5 downto 0));</p><p> --輸出數(shù)碼管選擇信號(hào)</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> --對(duì)應(yīng)數(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信號(hào)的控制下,數(shù)碼管進(jìn)行循環(huán)控制輸出。仿真結(jié)果如圖所示:</p><p><b> 2.6 譯碼器</b></p><p> 輸入端d_in[3..0]將接收BCD碼信號(hào),譯碼后輸出端d_out[7..0]輸出8段數(shù)碼管信號(hào),其中輸出的第8位均為高電平"1"可以使四個(gè)數(shù)碼管的小數(shù)點(diǎn)不顯示。經(jīng)譯碼器的處理輸出后數(shù)碼管顯示相應(yīng)的數(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、管控制器輸入四位信號(hào)</p><p> d_out: out std_logic_vector(7 downto 0)); </p><p><b> --輸出8位信號(hào) </b></p><p> end ymq; </p><p> --第8位d_out[7]為逗號(hào)</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高電平逗號(hào)不顯示</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> 將相應(yīng)的BCD碼轉(zhuǎn)換成
83、數(shù)碼管顯示信號(hào),最后以十進(jìn)制的形式顯示出來。仿真結(jié)果如下圖所示:</p><p> 2.7元件聲明及例化</p><p> 將各個(gè)元器件依據(jù)設(shè)計(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> --十進(jìn)制計(jì)數(shù)器</b></p&g
87、t;<p> component cnt10 --待調(diào)用的有時(shí)鐘使能的十進(jìn)制計(jì)數(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> --測(cè)頻控制器</b></p><p> component testpl --待調(diào)用
90、的測(cè)頻控制信號(hào)發(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信號(hào),clk2為被測(cè)信號(hào),clk3為數(shù)碼管掃描信號(hào)</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)待測(cè)信號(hào),led[7..0]是八段數(shù)碼輸出,ledc[5..0]數(shù)碼管控制片選輸出,carry_out超出量程報(bào)警輸出。總的仿真時(shí)間設(shè)置1s,clkqq為40KHZ基頻信號(hào),設(shè)置周期為25us;clk0為被測(cè)信號(hào),周期任意(為了檢測(cè)設(shè)置周期為80us,計(jì)頻率為12.5kHZ,從仿真圖中可以看出測(cè)得頻率為12500HZ,與設(shè)計(jì)的一樣)。經(jīng)過1.5s后就能讀出待測(cè)信號(hào)的頻率。仿真結(jié)果如圖下圖所示:</p><
101、;p><b> 總結(jié)</b></p><p> 本頻率計(jì)滿足實(shí)驗(yàn)要求,測(cè)量頻率范圍是1-999999HZ,采用直接測(cè)頻法對(duì)被測(cè)信號(hào)進(jìn)行測(cè)量,但也存在不足的地方,最好的設(shè)計(jì)方法是用測(cè)周法與直接測(cè)頻法相結(jié)合的方式,在頻率低于1000HZ采用測(cè)周法,高于1000HZ時(shí)采用直接測(cè)頻法,這樣的好處在于減小量化誤差。而兩種測(cè)量方法之間進(jìn)行自動(dòng)選擇,首先采用測(cè)周法進(jìn)行測(cè)量,若頻率超過1000HZ
102、則產(chǎn)生溢出信號(hào),自動(dòng)選擇采用測(cè)頻法進(jìn)行測(cè)量,這樣的設(shè)計(jì)是最合理的頻率計(jì)設(shè)計(jì),若只采用某一種方法進(jìn)行測(cè)量都存在不足之處。周期測(cè)量時(shí)信號(hào)頻率越低,測(cè)量的誤差越小,周期倍乘的值越大,誤差越小,另外也可以通過更好的時(shí)基信號(hào)來進(jìn)行計(jì)數(shù)來減小量化誤差的影響。 </p><p><b> 心得體會(huì)</b></p><p> 本次實(shí)習(xí)讓我們體味到設(shè)計(jì)程序、調(diào)測(cè)程序過程中的樂苦與甜
103、。設(shè)計(jì)是我們將來必需的技能,這次實(shí)習(xí)恰恰給我們提供了一個(gè)應(yīng)用自己所學(xué)知識(shí)的機(jī)會(huì),從到圖書館查找資料到對(duì)電路的設(shè)計(jì)對(duì)電路的調(diào)試試再到最后電路的成型,都對(duì)我所學(xué)的知識(shí)進(jìn)行了檢驗(yàn)。在實(shí)習(xí)的過程中發(fā)現(xiàn)了以前學(xué)的知識(shí)掌握的不牢。同時(shí)在設(shè)計(jì)的過程中,遇到了一些以前沒有見到過的語句,但是通過查找資料來學(xué)習(xí)這些語句的功能和使用。</p><p> 調(diào)試程序過程是一個(gè)考驗(yàn)人耐心的過程,不能有絲毫的急躁,馬虎,特別是對(duì)仿真波形的調(diào)
104、試要一步一步來,不能急躁,最重要的是要熟練地掌握課堂上的知識(shí),這樣才能對(duì)試驗(yàn)中出現(xiàn)的問題進(jìn)行分析解決。在整個(gè)課程設(shè)計(jì)完后,總的感覺是:有收獲。</p><p> 以前上課都是上一些最基本的東西而現(xiàn)在卻可以將以前學(xué)的東西作出有實(shí)際價(jià)值的東西。在這個(gè)過程中,我的確學(xué)得到很多在書本上學(xué)不到的東西,如:利用VHDL語言編寫程序等等。但也遇到了不少的挫折,有時(shí)在仿真時(shí)遇到了一個(gè)錯(cuò)誤怎么找也找不到原兇所在,找了老半天結(jié)果發(fā)
105、現(xiàn)是取得時(shí)間太短了或是設(shè)定錯(cuò)了頻率。在學(xué)習(xí)中的小問題在課堂上不可能犯,在動(dòng)于的過程中卻很有可能犯。特別是在編譯程序時(shí),一不小心就會(huì)犯錯(cuò),而且很不容易檢查出來。但現(xiàn)在回過頭來看,還是挺有成就感的。我的動(dòng)手能力又有了進(jìn)一步的提高,我感到十分的欣慰。鞏固了課堂上所學(xué)到的理論性的知識(shí),對(duì)VHDL語言有了更深一層的理解,熟練地掌握了QuartusⅡ軟件的應(yīng)用,能在Quartus II軟件環(huán)境下生成可用的波形文件、文本文件、圖形文件等。</p
106、><p> 通過緊張有序的設(shè)計(jì)實(shí)踐,我覺得自己的動(dòng)手能力有了很大的提高:自信心也增強(qiáng)了,在課程設(shè)計(jì)中自己動(dòng)腦子解決遇到的問題,書本上的知識(shí)有了用武之地,這義鞏固和深化了自己的知識(shí)結(jié)構(gòu)。</p><p> 總而言之,通過此次的課程設(shè)計(jì),我獲益匪淺?。?!</p><p><b> 參考文獻(xiàn)</b></p><p> [1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字頻率計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)--數(shù)字頻率計(jì)
- 課程設(shè)計(jì)——數(shù)字頻率計(jì)
- 數(shù)字頻率計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)-數(shù)字頻率計(jì)
- 課程設(shè)計(jì)--數(shù)字頻率計(jì)
- 課程設(shè)計(jì)--數(shù)字頻率計(jì)
- 數(shù)字頻率計(jì)課程設(shè)計(jì)
- 數(shù)字頻率計(jì)課程設(shè)計(jì)
- 數(shù)字頻率計(jì)課程設(shè)計(jì)
- eda數(shù)字頻率計(jì)課程設(shè)計(jì)
- 數(shù)字頻率計(jì)課程設(shè)計(jì) (2)
- eda課程設(shè)計(jì)--數(shù)字頻率計(jì)
- 數(shù)字頻率計(jì)課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)---數(shù)字頻率計(jì)
- 數(shù)字頻率計(jì)課程設(shè)計(jì) (2)
- 數(shù)字頻率計(jì)課程設(shè)計(jì)報(bào)告
- 數(shù)字頻率計(jì)--課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---eda數(shù)字頻率計(jì)
- eda課程設(shè)計(jì)---數(shù)字頻率計(jì)
評(píng)論
0/150
提交評(píng)論