基于Verilog-HDL数字频率计设计与实现_第1页
基于Verilog-HDL数字频率计设计与实现_第2页
基于Verilog-HDL数字频率计设计与实现_第3页
基于Verilog-HDL数字频率计设计与实现_第4页
基于Verilog-HDL数字频率计设计与实现_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南工程学院EDA课程设计系 别电气信息工程系专 业电子科学与技术班 级 0941班基于VeriIOg HDL数字频率计设计与实现扌商要:在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方 案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。测量频率 的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以 及便于实现测量过程自动化等优点,是频率测量的重要手段之一。电子计数器测 频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数; 二是间接测频法,如周期测频法。直接测频法适用于高频信号的频率测量,间接测 频法适用于低频信号的频率测量。本文

2、阐述了用VeriIOg HDL语言设计了一个 简单的数字频率计的过程关键词:周期;EDA;VeriIOgHDL;数字频率计;波形仿真目录1引言。错误!未定义书签。1. 1数字频率讣概述喈误!未定义书签。1. 2频率测量的思想和方法错误!未定义书签。2Ve rilog HDL简介错误!未定义书签。2. 1 Ver订Og HDL的简介。错误!未定义书签。2. 2方案比较103数字频率计设计原理以及实现错误!未定义书签。4总结。错误!未定义书签。参考文献嚅误!未定义书签。1引言在电子测量领域中,频率测量的精确度是最髙的,可达IO- 1 0E-13数量级。因此,在 生产过程中许多物理量,例如温度、压力

3、、流量、液位、PH值、振动、位移、速度、加速 度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计来测量, 以提髙精确度。国际上数字频率计的分类很多。按功能分类,测量某种单一功能的汁数器。如频率计数 器,只能专门用来测量高频和微波频率;时间计数器,是以测虽时间为基础的讣数器,其测时 分辨力和准确度很高,可达ns数量级;特种讣数器,它具有特种功能,如可逆计数器、予萱 计数器、差值讣数器、倒数计数器等,用于工业和白控技术等方而。数字频率计按频段分类 低速计数器:最高计数频率 1 OMH z ; (2)中速计数器:最高计数频率IO-IOOMH Z :(3 )高速计数器:最高计数频

4、率10 0 MHz: (4)微波频率计数器:测频范围1-8 0 GHZ 或更高。单片机自问世以来,性能不断提髙和完善,其资源又能满足很多应用场合的需要,加之单 片机具有集成度髙、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此, 在工业控制、智能仪器仪表、数据采集和处理、通信系统、髙级讣算器、家用电器等领域的 应用日益广泛,并且正在逐步取代现有的多片微机应用系统。单片机的潜力越来越被人们所 重视。特别是当前用CMOSl艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干 扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范用,也进一步促使 单片机性能的发展。1 .

5、1数字频率计概述频率计的基本原理是用一个频率稳泄度高的频率源作为基准时钟,对比测量其他信号的频 率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也 可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则没测一次 频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。本文数字频率讣是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周 期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率, 转速,声音的频率以及产品的计件等等。因此,数字频率计是一种应用很广泛的仪器电子系 统非常广泛的

6、应用领域内,到处可见到处理禽散信息的数字电路。数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功能,从而提高 系统可靠性和速度。集成电路的类型很多,从大的方面可以分为模拟电路和数字集成电路2 大类。数字集成电路广泛用于计算机、控制与测量系统,以及其它电子设备中。一般说来, 数字系统中运行的电信号,英大小往往并不改变,但在实践分布上却有着严格的要求,这是 数字电路的一个特点。数字集成电路作为电子技术最重要的基础产品之一,已广泛地深入到 %个应用领域仏1.2频率测星的思想和方法1.频率测量的基本思想测量被测信号在单位时间内的脉冲个数,英数字表达式其中:F为被测信号的频率N为脉冲的

7、个数T为被测信号产生N个脉冲所需的时间频率测量方法直接测呈:法:直接测虽被测信号的频率,通过计数法来对被测信号在一泄时间内的脉冲个数进行计数。直接厕灵法的结构框图如图1.2. 1所示。图1.2. 1直接测量法的结构框图误差来源技术过程中最大存在着±1个字的量化误差 对时间t的准确把握,主要包括准时钟的时间准确性、整形电路、分频电路以及技术时 间控制闸门的开关速度等因素。直接法测量的最大相对误差可以表达为(df/f )max=±( 1N+ I G ) =± ( I 1/ft + G I )其中:N为脉冲的个数,G为标准时钟的频率稳左性,f为被测信号频率,t为被测信号

8、产生N 个脉冲所需的时间。功能及技术指标频率测量范围:IOHz 1 OOMHZ测疑分辨率:IIlZ测量通道灵敏度:50mVpp通道输入阻抗:不小于100 k 测量误差:+1 测量结果显示:6位数码管显示其中,被测信号可以有三种,分别是方波、三角波和正弦波;测量结果显示采用六个数码管来 显示:量程为:0、9 99 9 9 9Hz、2 Ve rilog HDL 简介2.1 Ve r i I Og HDL 的简介Ver i IOg IlDL 是一种硬件描述语言(h a r dwa r e d e S Cri P t i o n IangUa g e)» 为了制作数位电路(数字电路)而用来描

9、述ASICS和FPGAS的设计之用。Verilog的设 计者想要以C程序语言(en: C Progran-Iming IangUage)为基础设计一种语言,可以使 工程师比较熟悉跟容易接受。事实上,它产生与C程序语言类似的不严谨性质,并且大概 与PaSCaI很相像。这种语言跟传统的程序设汁语言不同,在于它的程序叙述并非严格地线性(循序)执行。Ve r ilog模式包含不同模组(modules)的阶层关系。模组(modules)是输出GnP U ts) 和输入(OUtPUt S )所左义出来的一个集合。在每个模组中,有一串的电线(wires).暂存器 (r e g i SterS)和子模组(SU

10、bmOdUIeS)的左义。并且在每个模组里而,语言叙述大部分 都彼群组成为各种的执行区块(blocks),用来泄义该模组所产生的行为描述。在每个区块(bl OCkS)IAJt使用begin和end的关键字来区隔开来,其中的叙述是循序被执行。但是 同一个设计,不同的区块间的执行是平行的。这个语詳的叙述之子集合是可合成(synthesizable)。如果在一个电路设计的模组 中仅包含可合成的叙述,那麽这个电路设计就可以被适当的软件,转换合成为电脑芯片的电路 1 ayou t o22方案比较在设讣过程中,小组的组员由于设汁思路不同选择了两种不同的设计方案,现将两种设汁方 案呈述如下: 四位数码管显示

11、设计方案 六位数码管显示可调量程设计方案经过比对两种方案各有优劣,第一种方案由于简单,可操作性强;第二种方案量程大,实际意 义比较大,所以经过商量,我们组决定两种设计方案都做下来。3数字频率计设计方案及实现方案一要测量待测信号的频率,需要一个基准信号对英计数。我选择了系统自带的2MHz的时 钟信号,通过分频器产生0.5HZ的基准信号,然后利用此信号髙电平或低电平时对输入信号 的上升沿计数,结果即IS内待测信号的上升沿数,即频率。关于量程的显示,首先用IS的基准信号对待测信号汁数,得到的讣数值需要进行判断。 判断过程如下:0<cn t < 1 0 000,量程 10kHz, IedI

12、灭,en= 01 0000< C nt<l 0 OOOOt 量程 10 0 kHz, I ed2灭,en=l。1 000 0 0<cnt<10 0 0000,量程 1 MHz, Ied 3 灭,e n=2(ent:计数值;Iedr3:分别对应量程xl,xl, X 100; en:选择信号,用于选择 基准时钟)。通过en可以从三个分频器产生的Is, 01 s. 0.0 Is三个中选择一个合适的时钟,通过讣数模块得到计数值送到显示模块,最后的测量值为数码管显示值乘以量程代表值。els e begin Cnt=O;CI k =! elk;系统流程图如下:系统采用自底向上的设计

13、方法,最底层采用V e TilogHDL硬件描述语言实现,尔后生成模 块,连接,调试。三.方案实现。由流程图可以看到共分成8个模块。C IoCkr3:三个分频器,分别产生Is, 0 . 1 s,0. OIS的时钟信号,以CIOCk 1为例,C lk_i n为系统时钟,CIk为分频产生信号。源代码如下:mo d UIe C 1 OCkI(C 1 i n , C Ik): CIOCkl;多一 ClknClICinputCo U tput elk;reg CI k ;reg 25:0 ent:aIway S (posed g e CIk_in)Cnt = C n t ÷ 1 ; / (5

14、0 mhz 1 hz=50000000, cnt< 5000000 0 /if(cnt <24 99 9 9 9 9) 2-1=2 4 999 9 99)endendmodule2 ) COUn t 1:计数模块,用IS时钟对待测信号计数,UnknoWn为待测信号,C nt为计 数值。源代码如下:mod UIeCO Un t 1 (CllG UnknOW n, Cnt);inpu t elk, Un k nown;OUtPUt 24:0 C nt;COUrlt 1ii ClkCntP3.0i UnknQWn in丸reg 24: 0 t emp;Oreg 24: OlC nt:aI

15、wa y s ( p os e d ge Unk nown)begi nOif (Clk)be g ino temP <= t emp+2b' 10;endOeI S eDbeg i n4 if (temp> O ) g o beg i noC n t<=temp;。Oendtemp<=O:>e ndmo d u Ie3) judge:判断模块,对计数值进行判断,IedI3代表量程IOkHZt IOOkHz, IMHz, en用 来选择基准信号。源代码如下:m O dule judge (Cntl Ie d 1, 1 ed2, led3, e n );in

16、put 24: 0 C nt;OUtPU t IedL 1 e d2, led3;OUtPUt 1: 0 en;re g l:0en;reg IedL 1 e d 2, 1 ed 3 ;al way S ( 1 )begini f (cnt<10 0 00)Dbegi nIedK= 1 :1 ed2<= O ;led3<=O ;e n <=2, bOO;Oendelse i f (c nt<100000& & c n t > 1 OOO O )1 edl<= O ;D1 ed2<= 1 :1 e d 3 <二 O ;en&l

17、t;=2t bl;endel s eObeg i nIed 1 <=0 ;Oled2 V = O;4ed3<=l;-en<= 2, bl ;e ndelsebeg i nIed 1 <=0;I ed2<=0:led3<=0;endende ndmo d UIe4 ) SeI e Ct:通过en选择基准信号,clld3为分频产生的时钟信号,通过en选出一个合适的CIk对待测信号计数。源代码如下:modu 1 e SeIeCt (C 1 k 1, c 1 k2t C 1 k 3 l e n, CIk);input CIk 1 , clk2, CIk 3 :inp

18、 U t 1: 0 en:OUtPU t elk:reg elk;a IWa y S ( 1 )i f (e n =O)begi nCI k <=c 1 k 1;Dendels eOb e ginai f (en= 1 )> begina C 1 k<=clk2;o endOeISeObeg i n4f (en=2)beginCI k < = c 1 k3:o e nden dende n dm o dule5)CGUnt2:计数,cl:T为淸零信号,输入1淸零,CoUtI4为四个寄存器,分别存储让数 值的四位数。源代码如下:mod U Ie C o unt2 (C 1

19、 k, UnknO Wn, C o utl, C o ut2» cout3, CO U t4» c 1 r);input elk, Un k no¼rn, clr;iCIkOoUtl 3.0.9UnkQQwnut23.OGlrut33.OTI iut43.Orurit2, inst1o U tput 3: 0 c o ut 1 , co u t2, C out3, C OUt 4 ; reg -3: 0 numl, num2, num3, num4;reg 3:0 COUt 1 , COU t 2t c OUt 3 , co u t4;a IWayS (PO S

20、edge UnknOWn)i f (!c I r)b e g inif(clk)e ginif (numl>=9)Z e ginn U ml<=0:if (num2>=9 )o begi no num2<=0;。if ( n u m3>=9)beginn u m 3二0;i f(num4>=9)Obe g inOn um4<= 0 ;Oendelsenum4<= n um4+l;o en dOe ISeD num3<=num 3 + 1 ;endelsenum2<=num2+l;endeISeOnUmI<= n uml+1;en

21、dels ebeginif ( n UmI I n um2 num3 I : n um4) g be g i nbeginyou t K= n UIn1;3COUt 2 <= n UnI2;4 C out3<=num3;co U t 4<=num 4 :dend4 numl<= 0 :o num2<=0;。 n Um3V= 0:。nu m4<=0:4 enddels eYOUtl <=0;。cout2<=0;«COUt 3<=0;o COUt 4<=0;。endendel s ebeg i nACO U tl< = O

22、:ocout2<=0;oC o ut3< = 0;aCOUt 4<= O :>ende n d mo d u Ie 6) : d a t a _mux数值选择模块mo d ul e dat a _mux(disp-select, AO, AIt A2, A3, Q);o U tput 3:0 Q:input 1 : 0 JdiSP_ S elec t ;i nput 3:0 AO, Al, A 2 , A3;reg 3: 0 Q;always ( d i SP-SeIeC t , A3, A 2, Al, A 0 , Q)be g i nCaSeO2' bl 1

23、 : Q <= A 3 ;。2' b 1 0 : Q <= A2 ;2, b 0 1 : Q <= Al;2,b00: Q <= AO;o default: Q <= 4'b0;e ndcas eende ndmod UIe7 ) :di s p s e IeCt 位选模块m o dule d i s p s e IeC t (C I k , di s P-SeI e ct, Q);OUtPUt 3:0. Q;o UtPUt 1:0 d i SP-SeIe C t;i npu t elk;reg 3:0 Q;r eg 1:0 d i S P-SeI

24、eC t : data-mux.di5p-select1A1p.2p.DA? 3.0Q3.0 inst. dispselectCIk disp-sel ect 1 .00(3.0二 in sta I wa y s (PO S edge C Ik)b eginif(d i S p_s e IeCt < 2' b 1 1)ad is p _s e IeC t <= di s P-Se IeCt + 2, b 1;eIS edisp-SeIeCt <= 2'b0 ;xras e (disp-SeIeCt)2,bll: Q <= 4, bl 1 1 ;2,bl0

25、: Q <= 4,bl011;2, bOl: Q <= 4,b 1 10 1;。2, bOO: Q <= 4, b 111 O :d e fault: Q <= 4 , b 1 111;en d c a s eendendmoduledPdeCQderdisp-select1.0data-outp.OCIk T I 8):disp d ec o der显示模块,每位输出转换为七段数码管显示。源代码如下: m o dule dispdecoder (disp-sele c t, da t a_o u t, cl k , d ata_ i n);OU

26、tPU t6:0 d a t a_o ut;input1:0 d i SP-SeIect;in P Utelk;i n putL3: 0 data _in;re g 6:0 dat a_out;aIway S (c 1 k , dis P-SeIeCtf da t a_i n , data_OUt)beg ini f (c 1 k )CaSe ( d a t a _ i n)O : data_OU t <= 7, b 10 O OOO O ;/ /O。1 : data_OU t <= 7 , bl 1 11001;/12 : d ata_o U t <= 7, b O 1 O

27、 Ol O 0:/23 : da t a_o u t <=7 Z b0110000;/3。4 : d a ta_ o U t <= 7, b0011001;/4-5 : da t a.out <= 7f b 0100100;/5。6: data_OUt <= 7* b 10 1 1 111:/ / 6C7 : data_o u t <=7, b 000 1 1 1 1;/78 :da t a-out <= 7fbl 1 111 1 1 ;/8a9 : data_ o Ut < =7fbll 0 1 1 11;/ / 9 d e fau 1 t : d

28、ataout <= 7* bl000000;e ndcas e e nd e ndmodule各模块编译无误后连线组成完整系统。顶层电路图如下:.!=>7MC<F1r'-nnt"CM(«m2f£/«<CHTGl fJ_=叩诃n<wCi dp !"( £9QPDVrlU I¾¾"-r7wde-irt1 0ct<4ui)8.1)* gr©. QCiiJn gr"CkJn oktrip), jInIrifCKCdUlIp 0)U*r<X<

29、;W1 羽 OJOW创<5 OJSeJ; CkcIu.SQp.I聊Al*JP-OIP!*P糾ruf - .f >» H> ,ms/ i»)Vl*w at400 0 n»4OT0rw*| »|PCry< i62XSrCInlffYd22Z25re Xhi4* 蛍 M阿 hllCIk四.方案测试顶层图形文件建立后,对系统进行仿真,由于仿真时对输入输出信号的频率有要求,所以先对每个模块进行仿貞"C IOCkI模块,仿真波形如下:ET m- Bdl由于仿真对分频有要求,因此这里只进行了低分频,仅证明程序可进行分频,此波形为10分

30、频,输入周期为20ns,输出2 OOns,结果正确* 2) j Ud ge 模块,取 Cnt19二 0,即 Cn t =52 4 288Hz (100k, 1M),仿真波形如下:LPLL今Tam3(9 m也rrtLX0 C<b t01(0» KO)M KOXCwC20三<t9E.翊<tcma>t(i) <v*.C)5)<t>tCK)<otcn)<atC)-<at(ll)L>-<cxi(lD)g心】心®心Y心a】心<10<uCllL<oS1&CSGHJWl応3可见Ie d3为1,

31、符合判断结果。3) se 1 e C t模块,取e n = O 1 ,即选择c 1 k2 ,仿真波形如由图可见,输岀C Ik频率即为CIk2频率,但是有一立延时。4 ) d ata_InUX模块,disp_sele c t输入为11, Q取值为A3,波形正确SIaUIfttioa r>cd*: Tlrbin¢1U4)PS80 9 uw160. O v>S-IO. P u>320 P n>4. O tt<90 ,0 n5M<Le10 OI2°S3 AaD Ie:1CCA0 AlB OlOlCoLX IOQJ A2B <KaoBLSSJ

32、 A3B :QOOL<j>ZB 8D BOOOl-QOJF '>22-QfZ)I i>23-QClJB >Z<LQCoJ上25EJlctB 111ZaftzH 11»I>>2TL 0a (Il14 IMs<fir Tinw IaDraFanta: ICfi81 n IrtlfllvJ 14S 81 r<2 SQiI: 0 PiEed5) d ispsel e C t位选模块,根据输入波形扫描位码,GeulA<> cod Tir*lo<< »IPCBrurSl 7 PaSlatl:En

33、ei 9 M eo.o n» IaJ IO uo.o j<jo IO M eo.c6) COUntl模块,在一个完整波形C Ik内对UnknOW n计数,c Ik周期为2us, U nknow n周期为20ns,计数转换为十进制后为100,结果正确。SiBvlatib T*efr*5Maitei Tme 8<r.TOusTfPor询:IXnUc IrteIV1O.OjSIefltEnd I)Ue'NIUe at1.0 US>26cD(2 CGt ur>4Ol H 1. 17 ul.8 21.S WB 0U 0汀皿帧呗测呱测呱测Ininol呱呱n呱呱呱呱

34、测五、系统框图方案二数字频率计允许测量信号的类型有三种:方波、三角波和正弦波,并且信号的测量通道灵敏度 为5 Om Vpp,为此,需要将被测信号放大整形成标准的TTL电平的方波型号,便于CPLD/F PGA对信号脉冲的计数。在按键的设讣中,需要考虑实际按键的消抖问题。标准时钟为频 率计测量提供精度相对比较髙的时基信号,其时间的稳左性与精度将会直接影响到频率计测 量的准确性。频率计将测量的结果通过6位数码管(LED)来显示。数字频率计中的C PLD / FPGA是频率计的核心,主要实现在一左时间内,对被测信号的脉冲个数进行计算,并且转 化为相应的频率值显示在六个数码管上。首先将系统分成七个模块来

35、分别设汁仿真。分别有 以下七个模块:经过上述模块化划分后的结构框如图4. 1所示图4.1模块化划分后的结构计数模块C O Unter:对包含被测信号频率信息的脉冲进行计数门控模块g at e_co n trol:根据量程,控制技术模块计数。分频模块fdiv:将标准时钟分频,得到计数以及动态显示所需的时钟。寄存器模块fl i p.latch:对计数模块的计数值进行寄存。多路选择模块data_mux:根据动态选择信号,选择相应的需要显示的计数值动态为选择模块dis pse levt:输出动态显示中的位选信号 BCD译码模块di S Pden o der:将BCD码译成数码管的显示数据计数模块COU

36、nter该模块主要完成对被测信号经过放大整形后输入到可编程逻辑器件的F-I N信号是现 在一左的时间下的计数,采用六个异步BCD码十进制汁数器来实现099 9 999范用的计 数。计数模块的结构框图如图4. 2. 1所示。"counterUII-ENQ53. 0CLRQ43 0FJNQ33.03Q23. 0-Q13.0Q03. 0F.OUTInStr厂图4. 2. 1计数模块的结构框图根拯模块实现的功能设讣VeriIOg HDL源代码如下:CLR, F_IN, Fj)UT,Q0,Q3, Q2,Q1,modu IeCOU nte r (EN,OUtPUt 3:0Q5, Q4,Q0;O

37、U tput F_ O UT:in p u t EN;i npu t C L R : input F_IN;reg 3: 0 Q5, Q4, Q3,Q2,QbQO ;reg Fj)UT;reg F-OUt0, F_OU t 1, F_out2 ,F-OU t 3, F_ o u t 4 ;a 1 W ays (POS edge F_I N)b egi nQ1,Q2, Q 3 , Q4, Q5);1 , bO)&&(Qo != 4, bl001)beginQO <= Q O + 4' b0001;oF_OUT <= bO:ende Is eb e gin期O

38、<= Af bOO O O;i f(E N = b 1 )&& (CLR1 ,b) && (Ql != 4,bl00 1 )a b egi nO Q 1 <二 Ql + 4' b0001;F_OUT <= l'b;endelseif (EN =二 f bl) && (CLR =b e ginQ4 <= Q4 + 4,b0 0 01;Q 1 <= 4, b 000 0 ;。if (EN = ItbI) && (CLR =二 l,b)&& (Q2!二 4, blOO 1 )

39、begin。 Q2 <二 Q2 + 4, b 0 001:FJ)UT <=1 ,b;endO e ISe。beg i n。Q2 <= 4,b00 0 0;。 if(EN 二= l'bl)&& (CLR =bO)ft(Q3 ! = 4,bl0 0 1 )O beginQ3 <= Q3 + 4,b00 0 1;。 Fj)UT <= 1 z b ;O end。el s e。begi n。Q3 <= 4, b 0 0 0 0 ;a if (EN =二 rbl)&&(CLR = 1,b) &&(Q4!二 4,bl

40、001)。 FJ)UT <= bO :。 endA e 1 Seabeg i nOQ4 <= 4, bOOOO:i f ( (EN = lz bl) && (CLR =二 bO) &&(Q5!= 4, b 1 00 1)be g inQ 5 <= Q5 + 4,b0001:F.OUT <= bO;Dendaelsebe g inQ5 <= 4, b 0000; g F_OUT <= bl;en de nden dendendb eginendend mod U Ieend该模块雄义输入端口如下: EN:异步BCD码十进制计数器

41、的全局使能信号 CLR:异步BCD码十进制计数器复位信号 F-I N :被测信号经过放大与整形处理后的信号该模块左义输出端口如下: F_0UT:超出技术范围0为99 9 99的输出信号,用来指示提醒用户选择更大的量 Q0:计数器的最低位输出 Q 3:计数器的第3位输出 Q 1 :计数器的第5位输出 Q4:计数器的第2位输岀 Q2 :计数器的第4位输岀 Q5:计数器的第1位输出在AIte r a公司的软件工具QUartU S I I中编译和波形仿真得到波形如图4. 2. 2所 /Jx o.4 rit¼川9"*>A八“:<lwH*0c*EYWOi*卜 S 0.岂&l

42、t; 6 % 埠:M "t << .tq ? 'L «1IuMC1讣数模块C o Unter的仿貞.波形图42.2门控模块g a teCO n trol门控模块实现检测外界量程的选择,并且根据咼程输出控制6位BCD码十进制计算器的计数时钟,以及在测量完一次信号频率后,计数器讣数值淸零。计数器的涓零要与后级寄存器 的锁存时刻做很好的时序配合。应该实在计数器测量完一次信号频率后,首先将数据锁存到 寄存器,然后再将计数器值淸零,这样可以惊醒下一次测量。门控模块的结构框图如图4.3. 1所示gatecontrolSWOLatCheENSWlCOUnter-CIr

43、SW2COUntereENf1hzdps1hzf10hzdp-s10hzf100hzdp-s100hzinst3图4.3. 1门控模块结构框图根据模块实现的功能设计Veri 1 Og HDL源代码如下:InOdUlega t e_C o ntrol (aSWO, SWl, SW2,o f 1 h z, f IOhZt f 10 0 hz,3LatCh-ENtaCO U nter_C lr>a C OUn t er-EN,aXlP_ S lhz, dp_s IOhz, d P_SIOO h Z);OUtPUt Lat C h_EN;OU t PUt COUnte r_C 1 r :o Ut

44、PU t C OUnt e r_E N :OUtPUt d P _sl h z, dp_s 1 0 h z, d p _ s 10 0 hz;input SW 0 , SWIt SW2 ;input f Ih z f IOhz, f 1 OOhz;reg dp_ S IhZt dp_slOhz, dp-slOO h Z ;reg fref;reg Wire- 1 ;reg Wi r e_ 2 ;/初始化输入以及中间量in i t i alb e g infref <= b 0 ;W i re_l <= 1 ' b;Wire_2<= 1, b;end/ /根据不同的外界

45、量程选择,选择相应的 计数基时钟always (SWO Or SWI Or SW2o rf 1 hz Or f IOhZ Or f IOOhZ) beginif (SW 2 = bl)beginf r ef <= fl 0 hz;dp_ S Ihz, d p_slOhz, d PeSIOOhz<=3, b 0 0 1;endelse i f (SWI = bl)beginfre f <= fl Ohz;d P _SIhz, d P -SIOhz, dp_ S IOOhz <= 3,b010:endel se i f (SW 0 = 1' b 1 )b e g i

46、nfref <= flhz;dp_slhz, d P -SI 0 hz, d p_s 1OOhz <=3, b 100:endend/根据不同的讣数基时钟,提供输出相应 的汁数器计数值的淸除脉冲与锁存器锁存 脉冲alw ays© (POSed g e fref)b e ginWir e _1<= ! Wi r e_l;endalwa y S ©(negedge fref)be g inWir e _2 <= wire-l;endass i g n C o U nter-EN = Wi r e_1 ;assi g n LatC h _EN=(ICOU

47、nter-EN)& W i r e _ 2 ;as S i gn C o u n t er_CI r = ( ! COUnter _EN) & (! La t Ch-EN) (! Wire _2);e ndmodule该模块龙义输入端如下: SWO. SWK SW2 :程选择开关 f lhz: IHZ的标准时钟输入 HOhz: 1 OHZ的标准时钟输入 f 1 00 hz: IOOHZ的标准时钟输入该模块立义输入端口如下: LatCh_EN:用来是能寄存器所存数据 Counter_Clr:用于计数器的淸零 Co u nter_EN:用于使能计数器开始计数 dp_slhz:选择9

48、99999H Z 程时,用于控制显示中的小数点位巻 d P-SlOhz:选择9 9 99.9 9HZ量程时,用于控制显示中的小数点位置 dp_s IOOhz:选择99. 9999II z 程时,用于控制显示中的小数点位置在AItera公司的软件工具QU a rtusll中编译和波形仿真得到波形如图4.3.2所示。8 hl £4i« ¼ b>>< Amo*、FtI>)> Y>* 4*U>分频模块f div分频模块在系统全局时钟的驱动下,经过分频得到系统中所需要的多种频率成分的时钟 信号。实际的分频模块总共有四个分频时钟,在程

49、序上只需要改变其参数要求即可,所以在这 里只介绍50MHZ到1 MHZ的分频,其余的不在介绍。分频模块的结构框图如图4. 4.1所示。UIV Iclk.50MClklresetinst图4 . 4. 1分频模块结构框图很摒模块实现的功能设if- Veril Og H DL源代码如下:mo d u I e div 1 (clk-50M, ClkL re S e t ): / 端口的左义inp U t CIk_50M, re s e t ;/ / 总的时钟是 50MOUtPUt CIkl : /分频后输出的时钟IKHZreg c Ik 1 ;reg 31: O COUnt: /32 位的计数器a

50、IWayS ( P OSe d ge clk-50M Or n e ge d g e r eset) / /异步复位be g inif (! r e se t )beg i nClk 1 <, d O :COUnt = 3 2 , d;endelse i f (COUnt=3 2 , d 5 0_000)/ 判断计时器记到了 50_0 O O 吗 beginCOUn t <=32, d; / /计到5 O _0 O O计数器淸零C 1 kl<=clkl: /输出的时钟取反enden d b egine 1 Se COUnt<=count+ dl;/ 没计到 50_Ooo

51、 计数器加一end / en d alwa y Senodule /结朿分频模块该模块泄义输入端口如下: Clk:全局系统时钟信号该模块定义输出端口如下: c 1 kl为分频信号 res e t为复位按键在Altera公司的软件工具QUar tusll中编译和波形仿真得到波形如图4.4. 2所J euxr< X* 1 v4rH'亍 » X 45 <0 I © AI vl.vwW125 M<*<15<X応"&10eo>LK». 3I 4 I O I图4.4.2分频模块的仿真波形 寄存器模块f IiPJa t Ch寄存器模块实现每一个测量频率时,汁数器汁算值的暂时存储。寄存器模块的结构框图如图45. 1所示。inst2A53.OA43.OA33.OA23.OA13.OAO3.OClkQ53. OQ43.OO33. OQ23. OQ13. OQO3. OfliQ ledch图45I寄存器模块根据模块实现的功能设计VerilOg H DL源代码如下:mo d UIe f IiP_ I atch(clk, AO,Al ,A2,A3, A4,A5, Q0, Qb Q2,Q3,Q4, Q5);OUt PUt 3:0 QOt Q 1 , Q2, Q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论