VerilogHDL數(shù)字頻率計_第1頁
VerilogHDL數(shù)字頻率計_第2頁
VerilogHDL數(shù)字頻率計_第3頁
VerilogHDL數(shù)字頻率計_第4頁
VerilogHDL數(shù)字頻率計_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于Verilog HDL數(shù)字頻率計設(shè)計與實現(xiàn) 課程設(shè)計任務(wù)書學院:計算機與通信工程學院 專業(yè):網(wǎng)絡(luò)工程專業(yè) 課程名稱計算機組成原理課程設(shè)計時 間20102011學年第一學期1718周學生姓名郭祥斌指導老師陳沅濤題 目主要內(nèi)容:(1)數(shù)字頻率計前端信號的放大整形處理(2)數(shù)字頻率計的Verilog HDL設(shè)計實現(xiàn)(3)數(shù)字頻率計的CPLD/FPGA制作要求:(1)通過對相應(yīng)文獻的收集、分析以及總結(jié),給出相應(yīng)課題的背景、意義 及現(xiàn)狀研究分析。(2)通過課題設(shè)計,掌握計算機組成原理的分析方法和設(shè)計方法。(3)學按要求編寫課程設(shè)計報告書,能正確闡述設(shè)計和實驗結(jié)果。(4)學生應(yīng)抱著嚴謹認真的態(tài)度積極投

2、入到課程設(shè)計過程中,認真查閱相應(yīng) 文獻以及實現(xiàn),給出個人分析、設(shè)計以及實現(xiàn)。應(yīng)當提交的文件:(1)課程設(shè)計報告。(2)課程設(shè)計附件(主要是源程序)。 課程設(shè)計成績評定學 院 計算機通信工程 專 業(yè) 網(wǎng)絡(luò)工程 班 級 網(wǎng)絡(luò)08-02 班 學 號 200858080223 學生姓名 郭祥斌 指導教師 陳沅濤 課程成績 完成日期 2010年12月31日指導教師對學生在課程設(shè)計中的評價評分項目優(yōu)良中及格不及格課程設(shè)計中的創(chuàng)造性成果學生掌握課程內(nèi)容的程度課程設(shè)計完成情況課程設(shè)計動手能力文字表達學習態(tài)度規(guī)范要求課程設(shè)計論文的質(zhì)量指導教師對課程設(shè)計的評定意見綜合成績 指導教師簽字 年 月 日基于Verilo

3、g HDL數(shù)字頻率計設(shè)計與實現(xiàn)學生:郭祥斌 指導老師:陳沅濤摘 要: 在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系,因此頻率的測量就顯得更為重要。測量頻率的方法有多種,其中電子計數(shù)器測量頻率具有精度高、使用方便、測量迅速,以及便于實現(xiàn)測量過程自動化等優(yōu)點,是頻率測量的重要手段之一。電子計數(shù)器測頻有兩種方式:一是直接測頻法,即在一定閘門時間內(nèi)測量被測信號的脈沖個數(shù);二是間接測頻法,如周期測頻法。直接測頻法適用于高頻信號的頻率測量,間接測頻法適用于低頻信號的頻率測量。本文闡述了用Verilog HDL語言設(shè)計了一個簡單的數(shù)字頻率計的過程關(guān)鍵詞:周期;

4、EDA;Verilog HDL;數(shù)字頻率計;波形仿真目錄1 引 言61.1 數(shù)字頻率計概述71.2 頻率測量的思想和方法72 Verilog HDL簡介102.1 Verilog HDL的簡介103 數(shù)字頻率計系統(tǒng)框圖113.1數(shù)字頻率計系統(tǒng)框圖113.2數(shù)字頻率計系統(tǒng)部件簡介114 基于Verilog HDL數(shù)字頻率計程序設(shè)計124.1數(shù)字頻率計系統(tǒng)模塊劃分結(jié)構(gòu)124.2計數(shù)模塊counter134.3門控模塊gate_control164.4分頻模塊fdiv194.5 寄存器模塊flip_latch214.6 多路選擇模塊data_mux234.7 動態(tài)位選模塊dispselect244.

5、8 BCD譯碼模塊dispdecoder264.9 頂層電路top295 總結(jié)32參考文獻331 引 言 在電子測量領(lǐng)域中,頻率測量的精確度是最高的,可達1010E-13數(shù)量級。因此,在生產(chǎn)過程中許多物理量,例如溫度、壓力、流量、液位、PH值、振動、位移、速度、加速度,乃至各種氣體的百分比成分等均用傳感器轉(zhuǎn)換成信號頻率,然后用數(shù)字頻率計來測量,以提高精確度。 國際上數(shù)字頻率計的分類很多。按功能分類,測量某種單一功能的計數(shù)器。如頻率計數(shù)器,只能專門用來測量高頻和微波頻率;時間計數(shù)器,是以測量時間為基礎(chǔ)的計數(shù)器,其測時分辨力和準確度很高,可達ns數(shù)量級;特種計數(shù)器,它具有特種功能,如可逆計數(shù)器、予

6、置計數(shù)器、差值計數(shù)器、倒數(shù)計數(shù)器等,用于工業(yè)和白控技術(shù)等方面。數(shù)字頻率計按頻段分類 (1)低速計數(shù)器:最高計數(shù)頻率10MHz; (2)中速計數(shù)器:最高計數(shù)頻率10100MHz; (3)高速計數(shù)器:最高計數(shù)頻率100MHz; (4)微波頻率計數(shù)器:測頻范圍180GHz或更高。單片機自問世以來,性能不斷提高和完善,其資源又能滿足很多應(yīng)用場合的需要,加之單片機具有集成度高、功能強、速度快、體積小、功耗低、使用方便、價格低廉等特點,因此,在工業(yè)控制、智能儀器儀表、數(shù)據(jù)采集和處理、通信系統(tǒng)、高級計算器、家用電器等領(lǐng)域的應(yīng)用日益廣泛,并且正在逐步取代現(xiàn)有的多片微機應(yīng)用系統(tǒng)。單片機的潛力越來越被人們所重視。

7、特別是當前用CMOS工藝制成的各種單片機,由于功耗低,使用的溫度范圍大,抗干擾能力強、能滿足一些特殊要求的應(yīng)用場合,更加擴大了單片機的應(yīng)用范圍,也進一步促使單片機性能的發(fā)展。1.1 數(shù)字頻率計概述 頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù),此時我們稱閘門時間為1秒。閘門時間也可以大于或小于一秒。閘門時間越長,得到的頻率值就越準確,但閘門時間越長則每測一次頻率的間隔就越長。閘門時間越短,測的頻率值刷新就越快,但測得的頻率精度就受影響。本文數(shù)字頻率計是用數(shù)字顯示被測信號頻率的儀器,被測信號可以是正弦波,方波或其它周期性

8、變化的信號。如配以適當?shù)膫鞲衅?,可以對多種物理量進行測試,比如機械振動的頻率,轉(zhuǎn)速,聲音的頻率以及產(chǎn)品的計件等等。因此,數(shù)字頻率計是一種應(yīng)用很廣泛的儀器 電子系統(tǒng)非常廣泛的應(yīng)用領(lǐng)域內(nèi),到處可見到處理離散信息的數(shù)字電路。數(shù)字電路制造工業(yè)的進步,使得系統(tǒng)設(shè)計人員能在更小的空間內(nèi)實現(xiàn)更多的功能,從而提高系統(tǒng)可靠性和速度。 集成電路的類型很多,從大的方面可以分為模擬電路和數(shù)字集成電路2大類。數(shù)字集成電路廣泛用于計算機、控制與測量系統(tǒng),以及其它電子設(shè)備中。一般說來,數(shù)字系統(tǒng)中運行的電信號,其大小往往并不改變,但在實踐分布上卻有著嚴格的要求,這是數(shù)字電路的一個特點。數(shù)字集成電路作為電子技術(shù)最重要的基礎(chǔ)產(chǎn)品

9、之一,已廣泛地深入到各個應(yīng)用領(lǐng)域 1.2 頻率測量的思想和方法1頻率測量的基本思想測量被測信號在單位時間內(nèi)的脈沖個數(shù),其數(shù)字表達式f = N / t 其中: f為被測信號的頻率 N為脈沖的個數(shù) t為被測信號產(chǎn)生N個脈沖所需的時間2 頻率測量方法 直接測量法:直接測量被測信號的頻率,通過計數(shù)法來對被測信號在一定時間內(nèi)的脈沖個數(shù)進行計數(shù)。直接測量法的結(jié)構(gòu)框圖如圖所示。被測信號 測量結(jié)果計 數(shù)放大整形標準時鐘分 頻圖 直接測量法的結(jié)構(gòu)框圖3 誤差來源 技術(shù)過程中最大存在著±1個字的量化誤差 對時間t的準確把握,主要包括準時鐘的時間準確性、整形電路、分頻電路以及技術(shù)時間控制閘門的開關(guān)速度等因

10、素。直接法測量的最大相對誤差可以表達為( df/f )max=±( |1/N| + |G| )=±( |1/ft| + |G| ) 其中: N為脈沖的個數(shù),G為標準時鐘的頻率穩(wěn)定性,f為被測信號頻率,t為被測信號產(chǎn)生N個脈沖所需的時間。4 功能及技術(shù)指標 頻率測量范圍: 10Hz 100MHz 測量分辨率: 1Hz 測量通道靈敏度: 50mVpp 通道輸入阻抗:不小于100k 測量誤差:±1 測量結(jié)果顯示:6位數(shù)碼管顯示該數(shù)字頻率計的操作面板如圖所示圖 簡易數(shù)字頻率計的操作面板其中,被測信號可以有三種,分別是方波、三角波和正弦波;測量結(jié)果顯示采用六個數(shù)碼管來顯示;

11、量程分為三個,分別為:0999999Hz、09999.99kHz、099.9999MHz2 Verilog HDL簡介2.1 Verilog HDL的簡介 Verilog HDL是一種硬件描述語言(hardware description language),為了制作數(shù)位電路(數(shù)字電路)而用來描述ASICs和FPGAs的設(shè)計之用。Verilog 的設(shè)計者想要以 C 程序語言(en:C programming language)為基礎(chǔ)設(shè)計一種語言,可以使工程師比較熟悉跟容易接受。事實上,它產(chǎn)生與 C 程序語言類似的不嚴謹性質(zhì),并且大概與Pascal很相像。 這種語言跟傳統(tǒng)的程序設(shè)計語言不同,在于

12、它的程序敘述并非嚴格地線性(循序)執(zhí)行。Verilog 模式包含不同模組(modules)的階層關(guān)系。模組(modules)是輸出(inputs)和輸入(outputs)所定義出來的一個集合。在每個模組中,有一串的電線(wires)、暫存器(registers)和子模組(submodules)的定義。并且在每個模組里面,語言敘述大部分都被群組成為各種的執(zhí)行區(qū)塊(blocks),用來定義該模組所產(chǎn)生的行為描述。在每個區(qū)塊(blocks)內(nèi),使用 begin 和 end 的關(guān)鍵字來區(qū)隔開來,其中的敘述是循序被執(zhí)行。但是同一個設(shè)計,不同的區(qū)塊間的執(zhí)行是平行的。 這個語言的敘述之子集合是可合成(syn

13、thesizable)。如果在一個電路設(shè)計的模組中僅包含可合成的敘述,那麼這個電路設(shè)計就可以被適當?shù)能浖?轉(zhuǎn)換合成為電腦芯片的電路layout。3 數(shù)字頻率計系統(tǒng)框圖3.1數(shù)字頻率計系統(tǒng)框圖設(shè)計如圖所示的數(shù)字頻率計系統(tǒng)電路框圖圖 所示的數(shù)字頻率計系統(tǒng)電路框圖3.2數(shù)字頻率計系統(tǒng)部件簡介1. 放大整形 數(shù)字頻率計允許測量信號的類型有三種:方波、三角波和正弦波,并且信號的測量通道靈敏度為 50mVpp,為此,需要將被測信號放大整形成標準的TTL電平的方波型號,便于CPLD/FPGA對信號脈沖的計數(shù)。 2. SW1、SW2、SW3按鍵SW1、SW2、SW3這三個按鍵用來在測量的時候,用戶根據(jù)被測信號

14、的大致頻率范圍選擇不同的適合被測信號的量程。在按鍵的設(shè)計中,需要考慮實際按鍵的消抖問題3. 標準時鐘 標準時鐘為頻率計測量提供精度相對比較高的時基信號,其時間的穩(wěn)定性與精度將會直接影響到頻率計測量的準確性。4. LED顯示模塊 頻率計將測量的結(jié)果通過6位數(shù)碼管(LED)來顯示。4 基于Verilog HDL數(shù)字頻率計程序設(shè)計4.1數(shù)字頻率計系統(tǒng)模塊劃分結(jié)構(gòu)數(shù)字頻率計中的CPLD/FPGA是頻率計的核心,主要實現(xiàn)在一定時間內(nèi),對被測信號的脈沖個數(shù)進行計算,并且轉(zhuǎn)化為相應(yīng)的頻率值顯示在六個數(shù)碼管上。首先將系統(tǒng)分成七個模塊來分別設(shè)計仿真。分別有以下七個模塊:經(jīng)過上述模塊化劃分后的結(jié)構(gòu)框如圖4.1所示

15、圖4.1 模塊化劃分后的結(jié)構(gòu) 計數(shù)模塊counter:對包含被測信號頻率信息的脈沖進行計數(shù) 門控模塊gate_control:根據(jù)量程,控制技術(shù)模塊計數(shù)。 分頻模塊fdiv:將標準時鐘分頻,得到計數(shù)以及動態(tài)顯示所需的時鐘。 寄存器模塊flip_latch:對計數(shù)模塊的計數(shù)值進行寄存。 多路選擇模塊data_mux:根據(jù)動態(tài)選擇信號,選擇相應(yīng)的需要顯示的計數(shù)值 動態(tài)為選擇模塊dispselevt:輸出動態(tài)顯示中的位選信號 BCD譯碼模塊dispdenoder:將BCD碼譯成數(shù)碼管的顯示數(shù)據(jù)4.2計數(shù)模塊counter該模塊主要完成對被測信號經(jīng)過放大整形后輸入到可編程邏輯器件的F_IN信號是現(xiàn)在一

16、定的時間下的計數(shù),采用六個異步BCD碼十進制計數(shù)器來實現(xiàn) 0999999范圍的計數(shù)。計數(shù)模塊的結(jié)構(gòu)框圖如圖所示。圖 計數(shù)模塊的結(jié)構(gòu)框圖根據(jù)模塊實現(xiàn)的功能設(shè)計Verilog HDL源代碼如下:module counter(EN,CLR,F_IN,F_OUT,Q0,Q1,Q2,Q3,Q4,Q5);output 3:0 Q5,Q4,Q3,Q2,Q1,Q0;output F_OUT;input EN;input CLR;input F_IN;reg 3:0 Q5,Q4,Q3,Q2,Q1,Q0;reg F_OUT;reg F_out0,F_out1,F_out2,F_out3,F_out4;always

17、 (posedge F_IN)begin if(EN = 1'b1)&&(CLR = 1'b0)&&(Q0 != 4'b1001) begin Q0 <= Q0 + 4'b0001;F_OUT <= 1'b0; end else beginQ0 <= 4'b0000;if(EN = 1'b1)&&(CLR = 1'b0)&&(Q1 != 4'b1001)begin Q1 <= Q1 + 4'b0001; F_OUT <=

18、1'b0;endelsebegin Q1 <= 4'b0000; if(EN = 1'b1)&&(CLR = 1'b0)&&(Q2 != 4'b1001) begin Q2 <= Q2 + 4'b0001; F_OUT <= 1'b0; end else beginQ2 <= 4'b0000;if(EN = 1'b1)&&(CLR = 1'b0)&&(Q3 != 4'b1001)begin Q3 <= Q3 + 4

19、'b0001; F_OUT <= 1'b0;endelsebegin Q3 <= 4'b0000; if(EN = 1'b1)&&(CLR = 1'b0)&&(Q4 != 4'b1001) begin Q4 <= Q4 + 4'b0001; F_OUT <= 1'b0; end else begin Q4 <= 4'b0000; if(EN = 1'b1)&&(CLR = 1'b0)&&(Q5 != 4'b

20、1001) begin Q5 <= Q5 + 4'b0001; F_OUT <= 1'b0; end else begin Q5 <= 4'b0000; F_OUT <= 1'b1; end end end end end endendEndmodule該模塊定義輸入端口如下: EN:異步BCD碼十進制計數(shù)器的全局使能信號 CLR:異步BCD碼十進制計數(shù)器復位信號 F_IN:被測信號經(jīng)過放大與整形處理后的信號該模塊定義輸出端口如下: F_OUT:超出技術(shù)范圍0999999的輸出信號,用來指示提醒用戶選擇更大的量程。 Q0:計數(shù)器的最低位輸

21、出 Q1:計數(shù)器的第5位輸出 Q2:計數(shù)器的第4位輸出 Q3:計數(shù)器的第3位輸出 Q4:計數(shù)器的第2位輸出 Q5:計數(shù)器的第1位輸出在Altera公司的軟件工具QuartusII中編譯和波形仿真得到波形如圖所示。圖 計數(shù)模塊counter的仿真波形4.3門控模塊gate_control 門控模塊實現(xiàn)檢測外界量程的選擇,并且根據(jù)量程輸出控制6位BCD碼十進制計算器的計數(shù)時鐘,以及在測量完一次信號頻率后,計數(shù)器計數(shù)值清零。計數(shù)器的清零要與后級寄存器的鎖存時刻做很好的時序配合。應(yīng)該實在計數(shù)器測量完一次信號頻率后,首先將數(shù)據(jù)鎖存到寄存器,然后再將計數(shù)器值清零,這樣可以驚醒下一次測量。門控模塊的結(jié)構(gòu)框圖

22、如圖所示圖 門控模塊結(jié)構(gòu)框圖 根據(jù)模塊實現(xiàn)的功能設(shè)計Verilog HDL源代碼如下:module gate_control(SW0,SW1,SW2,f1hz,f10hz,f100hz,Latch_EN,Counter_Clr,Counter_EN,dp_s1hz,dp_s10hz,dp_s100hz); output Latch_EN;output Counter_Clr;output Counter_EN;output dp_s1hz,dp_s10hz,dp_s100hz;input SW0,SW1,SW2;input f1hz,f10hz,f100hz;reg dp_s1hz,dp_s1

23、0hz,dp_s100hz;reg fref;reg wire_1;reg wire_2;/初始化輸入以及中間量initialbegin fref <= 1'b0; wire_1 <= 1'b0; wire_2 <= 1'b0;end/根據(jù)不同的外界量程選擇,選擇相應(yīng)的計數(shù)基時鐘always (SW0 or SW1 or SW2 or f1hz or f10hz or f100hz)begin if(SW2 = 1'b1) begin fref <= f100hz; dp_s1hz,dp_s10hz,dp_s100hz <= 3&#

24、39;b001; end else if(SW1 = 1'b1) begin fref <= f10hz; dp_s1hz,dp_s10hz,dp_s100hz <= 3'b010; end else if(SW0 = 1'b1) begin fref <= f1hz; dp_s1hz,dp_s10hz,dp_s100hz <= 3'b100; endend/根據(jù)不同的計數(shù)基時鐘,提供輸出相應(yīng)的計數(shù)器計數(shù)值的清除脈沖與鎖存器鎖存脈沖always (posedge fref)begin wire_1 <= ! wire_1;endal

25、ways (negedge fref)begin wire_2 <= wire_1;endassign Counter_EN = wire_1;assign Latch_EN = (! Counter_EN) & wire_2;assign Counter_Clr = (! Counter_EN) & (! Latch_EN) | (! wire_2);endmodule 該模塊定義輸入端如下: SW0、SW1、SW2:量程選擇開關(guān) flhz:1Hz的標準時鐘輸入 fl0hz:10Hz的標準時鐘輸入 fl00hz:100Hz的標準時鐘輸入該模塊定義輸入端口如下: Latc

26、h_EN:用來是能寄存器所存數(shù)據(jù) Counter_Clr:用于計數(shù)器的清零 Counter_EN:用于使能計數(shù)器開始計數(shù) dp_s1hz:選擇999999Hz量程時,用于控制顯示中的小數(shù)點位置 dp_s10hz:選擇9999.99Hz量程時,用于控制顯示中的小數(shù)點位置 dp_s100hz:選擇99.9999Hz量程時,用于控制顯示中的小數(shù)點位置在Altera公司的軟件工具QuartusII中編譯和波形仿真得到波形如圖所示。圖 門控模塊的仿真波形4.4分頻模塊fdiv分頻模塊在系統(tǒng)全局時鐘的驅(qū)動下,經(jīng)過分頻得到系統(tǒng)中所需要的多種頻率成分的時鐘信號。分頻模塊的結(jié)構(gòu)框圖如圖所示。圖 分頻模塊結(jié)構(gòu)框圖

27、根據(jù)模塊實現(xiàn)的功能設(shè)計Verilog HDL源代碼如下:module fdiv(clk,f1hz,f10hz,f100hz,f1khz);output f1hz,f10hz,f100hz,f1khz;input clk;reg f1hz,f10hz,f100hz,f1khz;integer cnt1=0,cnt2=0,cnt3=0,cnt4=0;always (posedge clk)begin/if(cnt1<9999) /實際系統(tǒng)分頻值if(cnt1 < 2) /仿真時的分頻值begin f1khz <= 1'b0;cnt1 = cnt1 + 1;endelseb

28、egin f1khz <= 1'b1; cnt1 = 0;endendalways (posedge f1khz)begin/if(cnt2<9) /實際系統(tǒng)分頻值if(cnt2 < 2) /仿真時的分頻值begin f100hz <= 1'b0; cnt2 = cnt2 + 1;endelsebegin f100hz <= 1'b1; cnt2 = 0;endendalways (posedge f100hz)begin/if(cnt3<9) /實際系統(tǒng)分頻值if(cnt3 < 2) /仿真時的分頻值begin f10hz &

29、lt;= 1'b0; cnt3 = cnt3 + 1;endelsebegin f10hz <= 1'b1; cnt3 = 0;endendalways (posedge f10hz)begin/if(cnt4<9) /實際系統(tǒng)分頻值if(cnt4 < 2) /仿真時的分頻值begin f1hz <= 1'b0; cnt4 = cnt4 + 1;endelsebegin f1hz <= 1'b1; cnt4 = 0;endendendmodule該模塊定義輸入端口如下: Clk:全局系統(tǒng)時鐘信號該模塊定義輸出端口如下: F1hz:輸

30、出1Hz的時鐘信號 F10hz:輸出1Hz的時鐘信號 F1khz:輸出1Hz的時鐘信號在Altera公司的軟件工具QuartusII中編譯和波形仿真得到波形如圖所示。圖 分頻模塊的仿真波形4.5 寄存器模塊flip_latch寄存器模塊實現(xiàn)每一個測量頻率時,計數(shù)器計算值的暫時存儲。寄存器模塊的結(jié)構(gòu)框圖如圖所示。圖 寄存器模塊根據(jù)模塊實現(xiàn)的功能設(shè)計Verilog HDL源代碼如下:module flip_latch(clk,A0,A1,A2,A3,A4,A5,Q0,Q1,Q2,Q3,Q4,Q5);output 3:0 Q0,Q1,Q2,Q3,Q4,Q5;input clk;input 3:0 A

31、0,A1,A2,A3,A4,A5;reg 3:0 Q0,Q1,Q2,Q3,Q4,Q5;always (posedge clk)beginQ0 <= A0;Q1 <= A1;Q2 <= A2;Q3 <= A3;Q4 <= A4;Q5 <= A5;endEndmodule該模塊定義輸入端口如下: clk:所存數(shù)據(jù)信號輸入,當clk的上升沿到來時,寄存器將輸入端信號鎖存進寄存器,并且改變輸出。 A0,A1,A2,A3,A4,A5:寄存器的數(shù)據(jù)輸入端該模塊定義輸出端口如下: Q0,Q1,Q2,Q3,Q4,Q5:寄存器的數(shù)據(jù)輸出端。在Altera公司的軟件工具Quar

32、tusII中編譯和波形仿真得到波形如圖所示。圖 寄存器模塊的仿真波形4.6 多路選擇模塊data_mux多路選擇模塊實現(xiàn)測量頻率值的分時顯示,即動態(tài)顯示。經(jīng)過多路選擇器模塊來分時地傳輸數(shù)據(jù)。多路選擇模塊的結(jié)構(gòu)如圖所示。圖 多路選擇模塊結(jié)構(gòu)框圖根據(jù)模塊實現(xiàn)的功能設(shè)計Verilog HDL源代碼如下:module data_mux(disp_select,A0,A1,A2,A3,A4,A5,Q);output 3:0 Q;input 2:0disp_select;input 3:0 A0,A1,A2,A3,A4,A5;reg 3:0 Q;always (disp_select,A5,A4,A3,A

33、2,A1,A0,Q)begin case(disp_select) 3'b000: Q <= A5; 3'b001: Q <= A4; 3'b010: Q <= A3; 3'b011: Q <= A2; 3'b100: Q <= A1; 3'b101: Q <= A0; default: Q <= 4'b0; endcaseendEndmodule該模塊定義輸入端口如下: disp_select:選擇信號輸入 A0,A1,A2,A3,A4,A5:多路選擇模塊的數(shù)據(jù)輸入端口該模塊定義輸出端口如下:

34、多路選擇模塊的數(shù)據(jù)輸出端口。在Altera公司的軟件工具QuartusII中編譯和波形仿真得到波形如圖所示。圖 多路選擇模塊的仿真波形4.7 動態(tài)位選模塊dispselect動態(tài)位選模塊用來驅(qū)動數(shù)碼動態(tài)地顯示頻率測量數(shù)據(jù),分時地選擇各個數(shù)碼管進行顯示 動態(tài)位選的結(jié)構(gòu)框圖所示。圖 動態(tài)位選模塊的結(jié)構(gòu)框圖根據(jù)模塊實現(xiàn)的功能設(shè)計Verilog HDL源代碼如下:module dispselect(clk,disp_select,Q);output 5:0 Q;output 2:0 disp_select;input clk;reg 5:0 Q;reg 2:0 disp_select;always (

35、posedge clk)beginif(disp_select < 3'b101)disp_select <= disp_select + 3'b1;elsedisp_select <= 3'b0;case(disp_select) 3'b000: Q <= 6'b100000; 3'b001: Q <= 6'b010000; 3'b010: Q <= 6'b001000; 3'b011: Q <= 6'b000100; 3'b100: Q <= 6&

36、#39;b000010; 3'b101: Q <= 6'b000001; default: Q <= 6'b000000; endcaseendendmodule該模塊定義輸入端口如下: clk:動態(tài)位選的時鐘信號輸入,一般取1KHz左右的標準時鐘。該模塊定義輸出端口如下: disp_select:動態(tài)位選中間量輸出,用于與系統(tǒng)中其他模塊之間的同步。 Q:動態(tài)位選信號輸出,可以直接接到數(shù)碼管的公共端。在Altera公司的軟件工具QuartusII中編譯和波形仿真得到波形如圖所示。圖 動態(tài)位選模塊的仿真波形4.8 BCD譯碼模塊dispdecoderBCD譯碼

37、模塊主要實現(xiàn)BCD碼到7段數(shù)碼管顯示碼字段的轉(zhuǎn)換,同時,考慮到頻率測量中的一些“零”的處理,比如選擇量程1999999Hz,但被測信號頻率為100Hz,這樣在顯示的時候就需要將6為數(shù)碼管的前三位屏蔽。BCD譯碼模塊的結(jié)構(gòu)框圖如圖所示。圖 BCD譯碼模塊的結(jié)構(gòu)框圖根據(jù)模塊實現(xiàn)的功能設(shè)計Verilog HDL源代碼如下:module dispdecoder(data_in,disp_select,dp_s1hz,dp_s10hz,dp_s100hz,Q5,Q4,Q3,Q2,Q1,Q0,counter_out,data_out,dp);output 6:0 data_out;output dp;in

38、put 3:0 data_in;input 2:0 disp_select;input dp_s1hz,dp_s10hz,dp_s100hz;input 3:0 Q5,Q4,Q3,Q2,Q1,Q0;input counter_out;reg dp;reg 6:0 data_out;reg hide;initial begin dp <= 1'b0; hide <= 1'b0;end/譯碼顯示數(shù)據(jù)always (data_in,hide,data_out)begin if(hide = 1'b0) begincase(data_in) 4'b0000

39、: data_out <= 7'b1111110; /04'b0001 : data_out <= 7'b0110000; /14'b0010 : data_out <= 7'b1101101; /24'b0011 : data_out <= 7'b1111001; /34'b0100 : data_out <= 7'b0110011; /44'b0101 : data_out <= 7'b1011011; /54'b0110 : data_out <= 7

40、'b1011111; /64'b0111 : data_out <= 7'b1110000; /74'b1000 : data_out <= 7'b1111111; /84'b1001 : data_out <= 7'b1110011; /9default : data_out <= 7'b0000000;endcase endend/小數(shù)點位置與零數(shù)字的處理always (disp_select,dp_s1hz,dp_s10hz,dp_s100hz, Q5,Q4,Q3,Q2,Q1,counter_out,

41、dp,hide)begin if (disp_select = 3'b001) && (dp_s100hz = 1'b1)| (disp_select = 3'b011) && (dp_s10hz = 1'b1)| (disp_select = 3'b101) && (dp_s1hz = 1'b1) dp <= 1'b1; else dp <= 1'b0; case(disp_select) 3'b000: begin if(counter_out = 1'

42、;b0) && (Q5 = 4'b0) hide <= 1'b1; else hide <= 1'b0; end 3'b001: begin if(counter_out = 1'b0) && (Q5 = 4'b0) && (Q4 = 4'b0) &&(dp_s100hz != 1'b1) hide <= 1'b1; else hide <= 1'b0; end 3'b010: begin if(counter_out

43、= 1'b0) && (Q5 = 4'b0) && (Q4 = 4'b0) && (Q3 = 4'b0) && (dp_s100hz != 1'b1) hide <= 1'b1; else hide <= 1'b0; end 3'b011: begin if(counter_out = 1'b0) && (Q5 = 4'b0) && (Q4 = 4'b0) && (Q3 = 4'

44、;b0) && (Q2 = 4'b0) && (dp_s100hz != 1'b1)&& (dp_s10hz != 1'b1) hide <= 1'b1; else hide <= 1'b0; end 3'b100: begin if(counter_out = 1'b0) && (Q5 = 4'b0) && (Q4 = 4'b0) && (Q3 = 4'b0) && (Q2 = 4'

45、b0) && (Q1 = 4'b0) && (dp_s100hz != 1'b1)&& (dp_s10hz != 1'b1) hide <= 1'b1; else hide <= 1'b0; end default: hide <= 1'b0; endcaseendendmodule該模塊定義輸入端口如下: data_in:BCD碼字輸入信號 disp_select:來自動態(tài)顯示位模塊,實現(xiàn)兩者之間的同步 dp_s1hz,dp_s10hz,dp_s100hz:輸入小數(shù)點位置控制信號

46、來自門控模塊 Q5,Q4,Q3,Q2,Q1,Q0:計數(shù)器的計數(shù)值輸入,用來控制“零”顯示控制 counter_out:計數(shù)器計數(shù)溢出信號,用來提示用戶更換更大量程該模塊定義輸出端口如下: data_out:經(jīng)過譯碼后的7段數(shù)碼管顯示數(shù)據(jù)輸出,可以直接連接到數(shù)碼管的數(shù)據(jù)端口 dp:小數(shù)點控制信號在Altera公司的軟件工具QuartusII中編譯和波形仿真得到波形如圖所示。圖 BCD譯碼模塊的仿真波形4.9 頂層電路top在設(shè)計完各個模塊后,需要將各個模塊有機地組合成一個整體,最后來實現(xiàn)系統(tǒng)的功能。在數(shù)字頻率計中,同時采用了電路原理圖示的設(shè)計以及Verilog HDL語言來編寫的頂層電路,其中頂

47、層如圖所示。圖 頂層電路top用Verilog HDL語言描述如下:module main(Clock,SW2,SW1,SW0,F_in,over_alarm,dp,disp_data,disp_select);inputClock;inputSW2;inputSW1;inputSW0;inputF_in;outputover_alarm;outputdp;output6:0 disp_data;output5:0 disp_select;wireSYNTHESIZED_WIRE_0;wireSYNTHESIZED_WIRE_1;wireSYNTHESIZED_WIRE_2;wire3:0 S

48、YNTHESIZED_WIRE_32;wire3:0 SYNTHESIZED_WIRE_33;wire3:0 SYNTHESIZED_WIRE_34;wire3:0 SYNTHESIZED_WIRE_35;wire3:0 SYNTHESIZED_WIRE_36;wire3:0 SYNTHESIZED_WIRE_37;wireSYNTHESIZED_WIRE_9;wireSYNTHESIZED_WIRE_10;wireSYNTHESIZED_WIRE_11;wireSYNTHESIZED_WIRE_12;wireSYNTHESIZED_WIRE_13;wireSYNTHESIZED_WIRE_1

49、4;wireSYNTHESIZED_WIRE_15;wire3:0 SYNTHESIZED_WIRE_16;wire2:0 SYNTHESIZED_WIRE_38;wireSYNTHESIZED_WIRE_24;wire3:0 SYNTHESIZED_WIRE_25;wire3:0 SYNTHESIZED_WIRE_26;wire3:0 SYNTHESIZED_WIRE_27;wire3:0 SYNTHESIZED_WIRE_28;wire3:0 SYNTHESIZED_WIRE_29;wire3:0 SYNTHESIZED_WIRE_30;assignover_alarm = SYNTHES

50、IZED_WIRE_15;counterb2v_inst(.EN(SYNTHESIZED_WIRE_0),.CLR(SYNTHESIZED_WIRE_1),.F_IN(F_in),.F_OUT(SYNTHESIZED_WIRE_15),.Q0(SYNTHESIZED_WIRE_32),.Q1(SYNTHESIZED_WIRE_33),.Q2(SYNTHESIZED_WIRE_34),.Q3(SYNTHESIZED_WIRE_35),.Q4(SYNTHESIZED_WIRE_36),.Q5(SYNTHESIZED_WIRE_37)fdivb2v_inst1(.clk(Clock),.f1hz(S

51、YNTHESIZED_WIRE_9),.f10hz(SYNTHESIZED_WIRE_10),.f100hz(SYNTHESIZED_WIRE_11),.f1khz(SYNTHESIZED_WIRE_24);flip_latchb2v_inst2(.clk(SYNTHESIZED_WIRE_2),.A0(SYNTHESIZED_WIRE_32),.A1(SYNTHESIZED_WIRE_33),.A2(SYNTHESIZED_WIRE_34),.A3(SYNTHESIZED_WIRE_35),.A4(SYNTHESIZED_WIRE_36),.A5(SYNTHESIZED_WIRE_37),.

52、Q0(SYNTHESIZED_WIRE_25),.Q1(SYNTHESIZED_WIRE_26),.Q2(SYNTHESIZED_WIRE_27),.Q3(SYNTHESIZED_WIRE_28),.Q4(SYNTHESIZED_WIRE_29),.Q5(SYNTHESIZED_WIRE_30);gate_controlb2v_inst3(.SW0(SW0),.SW1(SW1),.SW2(SW2),.f1hz(SYNTHESIZED_WIRE_9),.f10hz(SYNTHESIZED_WIRE_10),.f100hz(SYNTHESIZED_WIRE_11),.Latch_EN(SYNTHESIZED_WIRE_2),.Counter_Clr(SYNTHESIZED_WIRE_1),.Counter_EN(SYNTHESIZED_WIRE_0),.dp_s1hz(SYNTHESIZED_WIRE_12),.dp_s10hz(SYNTHESIZED_WIRE_13),.dp_s100hz(SY

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論