该【数字频率计实验报告 】是由【学锋】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【数字频率计实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.......基于VerilogHDL数字频率计设计与实现学院:专业:学号:姓名:指导教师:完成日期:基于VerilogHDL数字频率计设计与实现摘要:在电子技术中,频率是最根本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间测量被测信号的脉冲个数;二是间接测频法,如周期测频法。直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。本文阐述了用VerilogHDL语言设计了一个简单的数字频率计的过程。关键词:周期;EDA;VerilogHDL;数字频率计;:Beoneofthemostfundamentalparameterinelectrontechnologymediumfrequency,parametermeasurementscheme,measurementresultallhaveveryclosesomethingtodowithalotofelectricityand,,uracyheight,usageisc.....:....convenient,measurementisprompt,easytorealizemeasurementprocessautomationwaitsformeritand,countermeasuresfrequencyhavingtwokindsway:surefrequencylawfirstdirectly,betomeasurethepulsenumberthesignalismeasuredwithincertainsluicegatetime;Twoisindirectmeasurefrequencylaw,iftheperiodmeasuresfrequencylaw,Measurefrequencylawdirectlyapplyingtothehighfrequencysignal':period;EDA;VerilogHDL;Figurefrequencymeter;:.......................................................................................................:....................................................................................................................:..........................................................................................................................:.........................................................................................62VerilogHDL简介..................................................................................................................73数字频率计系统框图...........................................................................................................:...............................................................................................:............................................................................84数字频率计程序设计及实现...........................................................................................::::::......................................................................................................:....:......................................................................................................:::126总结127参考文献138致13附录:131引言在电子测量领域中,频率测量的准确度是最高的,可达10—10E-13数量级。因此,在生产过程中许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计来测量,以提高准确度。国际上数字频率计的分类很多。按功能分类,测量某种单一功能的计数器。如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为根底的计数器,其测时分辨力和准确度很高,可达ns数量级;特种计数器,它具有特种功能,如可逆计数器、予置计数器、差值计数器、倒数计数器等,用于工业和白控技术等方面。数字频率计按频段分类(1)低速计数器:最高计数频率<10MHz;(2)中速计数器:最高计数频率10—100MHz;(3)高速计数器:最高计数频率>100MHz;(4)微波频率计数器:测频围1—80GHz或更高。本实验使用了FPGA工程设计的一般流程〔〕,.:....语言设计了基于直接测频法的简单的中速数字频率计。:频率计的根本原理是用一个频率稳定度高的频率源作为基准时钟,比照测量其他信号的频率。通常情况下计算每秒待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长那么没测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。本文数字频率计是用数字显示被测信号频率的仪器,被测信号是被放大整形后的正弦波,如配以适当的传感器和整形电路,可以对多种物理量进展测试,比方机械振动的频率,转速,声音的频率以及产品的计件等等。因此,数字频率计是一种应用很广泛的仪器,电子系统非常广泛的应用领域,到处可见到处理离散信息的数字电路。:;;。.v.:....:。:众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。因此,频率检测是电子测量领域最根本的测量之一。频率计的根本原理是用一个频率稳定度高的频率源作为基准时钟,比照测量其他信号的频率。通常情况下计算每秒待测信号的脉冲个数,即闸门时间为1s。闸门时间可以根据需要取值,大于或小于1s都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,那么每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1s作为闸门时间。,其数字表达式f=N/t其中:.:....直接测量法:直接测量被测信号的频率,通过计数法来对被测信号在一定时间的脉冲个数进展计数。。〔EDA〕的关键技术之一是要求用形式化方法来描述数字系统的硬件电路,即要用所谓硬件描述语言来描述硬件电路。所以硬件描述语言及相关的仿真、综合等技术的研究是当今电子设计自动化领域的一个重要课题。VerilogHDL是一种硬件描述语言(hardwaredescriptionlanguage),为了制作数位电路(数字电路)而用来描述ASICs和FPGAs的设计之用。Verilog的设计者想要以C程序语言(en:Cprogramminglanguage)为根底设计一种语言,可以使工程师比拟熟悉跟容易承受。这种语言跟传统的程序设计语言不同,在于它的程序表达并非严格地线性(循序)执行。Verilog模式包含不同模组(modules)的阶层关系。模组(modules)是输出(inputs)和输入(outputs)所定义出来的一个集合。在每个模组中,有一串的电线(wires)、暂存器(registers)和子模组(submodules)的定义。并且在每个模组里面,语言表达大局部都被群组成为各种的执行区块(blocks),用来定义该模组所产生的行为描述。在每个区块(blocks),使用begin和end的关键字来区隔开来,其中的表达是循序被执行。但是同一个设计,不同的区块间的执行是平行的。.v.:....:。:数字频率计中的FPGA是频率计的核心,主要实现在一定时间,对被测信号的脉冲个数进展计算,并且转化为相应的频率值显示在六个数码管上。首先将系统分成六个模块来分别设计仿真。分别有以下七个模块:●●基准频率选择模块fbase_sel:也就是实现根据闸门选择开关的不同,选择对应的频率输出。●基准频率,用当前GATE信号来驱动一个led。●●●显示模块display:由利用分频模块的其中一个频率的信号〔本设计采用1khz〕,对存放器中的数据进展显示,就是包括三个子模块:1、模六计数器t6:输出动态显示中的位选信号,利用人眼的视觉暂留效果,动态驱动六个数码管显示。2、多路选择模块mux6to1_4b:根据模六计数器的值,选择相应的数码管对应的存放器,读出存放器中的段选值,输出到BCD译码模块。3、BCD译码模块bcd2led:将输入的BCD码译成数码管的显示数据,分别赋给数码管的每个引脚。.v.:....:在本模块的程序中,div_clk是分频程序的头文件,u1、u2、u3是三个子程序,其原理都一样,例如u2中,采用模十的计数器输出最高位tmp[3]实现对u1输出的1kHZ的时钟分频,得到100Hz的时钟信号,具体见附录分频模块程序。该模块输入端口定义如下:●clk48MHz:石英差生的系统时钟信号。该模块定义输出端口如下:●clk1kHz:分频产生的1Hz时钟信号;●clk10Hz:分频产生的10Hz时钟信号;●clk100Hz:分频产生的100Hz时钟信号。:基准频率选择模块程序。该模块定义输入端口如下:●clk_10hz,clk_100hz,inputclk_1khz:分频模块产生的三种时钟信号;●sw[2:0]:三个闸门选择开关的输入。该模块定义输出端口如下:●fbase:闸门开关对应的基准信号。仿真说明:从modelsim的仿真图中可知,当sw为011时,fbase为clk_10hz;当sw为101时,fbase为clk_100hz;当sw为110时,fbase为clk_1khz;仿真结果说明,此基准频率选择模块可以实现三选一的功能,满足预期要实现的目的,.:....合设计要求。:—该模块定义输入端口如下:●clk:门控模块选择的基准信号。该模块定义输出端口如下:●gate_in:计数使能信号;●latch_t:计数器数据存放信号;●clr_D:计数器清零信号。:该模块定义输入端口如下:●f_in:被测信号;●clr_D:门控模块产生的清零信号;●gate_in:门控模块产生的计数使能信号。该模块定义输出端口如下:●D1,D2,D3,D4,D5,D6:计数器的0位、1位、2位、3位、4位、5位;●Over:溢出指示位。(a)〔b〕〔c〕〔d〕.v.:...a〕、〔b〕、〔c〕、〔d〕四个仿真图来说明本模块的作用,从modelsim的仿真图中可知,六个十进制计数器均能正常工作,都能实现0—:该模块定义输入端口如下:latch_t:存放信号;●D1,D2,D3,D4,D5,D6,DO:计数器的不同位的数据;该模块定义输出端口如下:●Q1,Q2,Q3,Q4,Q5,Q6,QO:存放器。仿真说明:仿真时,随机对D1,D2,D3,D4,D5,D6,DO输入,经仿真,D1,D2,D3,D4,D5,D6,DO一一对应送入Q1,Q2,Q3,Q4,Q5,Q6,QO中,例如:从仿真图中可以看出,当某一时刻D1,D2,D3,D4,D5,D6分别为5、6、2、3、8、9时,Q1,Q2,Q3,Q4,Q5,Q6中对应也是5、6、2、3、8、9,本模块符合设计要求,可采取。:Clk为分频模块产生的1kHZ时钟信号,在本模块中作为动态扫描信号,在此信号的上升沿〔具体程序见附录〕,位选存放器dig自动加1,然后作为6选1模块的选择信号,选择对应的段选值,送入段选存放器seg中进展显示。小数点的控制,通过sw对应的dot编码与位选信号作比拟,当两者相等时,是dou_out有效〔即为低电平〕,从而到达控制功能。显示模块的程序分三个子程序,分别是:t6、mux6to1_4b、bcd2led;.:...6计数器,产生6个位选信号;mux6to1_4b为6选1多路选择器,选择当前位选信号下的段选值,存放在Y中;bcd2led是数码管的译码电路,产生bcd码用于数码管的正确显示。具体见附录显示模块程序。该模块定义输入端口如下:clk:扫描时钟信号1khz;●sw:量程档位选择;●Q1,Q2,Q3,Q4,Q5,Q6,QO:当前存放器数据。该模块定义输出端口如下:●dig:位选信号;●Seg:段选信号;●dp_out:小数点位。仿真说明:仿真之前,每隔1000ns随机给Q1,Q2,Q3,Q4,Q5,Q6设置一组数。从仿真图中可知,dig在每个clk上升沿自动加一,同时将第dig位存放的数字所对应的bcd码选出送到seg中,例如:某一时刻,dig的值为2,此时代表的是第二位,而第二位存放器Q3中的数字是5,,本模块符合设计要求。:(a)(b)仿真说明:为了分别看清分频局部和门控显示等几个模块的具体状态,仿真波形图分两局部〔a〕、〔b〕,分别表示了整个系统的工作状况。.v.:...:对于大批量连续数据,通过统计的方法抽样检验,实现对整体信号的估计。本设计的测试中,为了实现每个数据多有同等被抽到的时机,我采用了分层抽样,同时在层采取简单随机抽样,。(KHZ)-(KHZ)-----(KHZ)--------.:...误差变化图::1、从误差表和趋势图中可以看出,两个尖峰可能是测量出像的误差,整体来看,误差根本保持在百万分之3到百万分之10之间,相对误差很小。2、基于上述实验事实,产生误差的主导因素可能是DDS信号源的方波产生原理——即波形是由屡次谐波数字合成的,有可能是频率计将屡次谐波的尖峰也判定为上升沿因而总是正误差;3、误差的产生还有可能是由于晶振振荡不够稳定——实验板采用的是普通的有源晶振而非恒温晶振,产生的时钟脉冲精度有限最终造成部闸门时间的不准确;4、可以基于上述误差曲线,参加一定的精度调节机制,通过对应频率产生误差的一般大小可以计算到一个更准确的值。可以在该频率计的根底上引入调节机制制作更实用的频率计。5、本设计中有三种基准频率,最小可以测得1Hz,最大可以测得100MHZ,实际设计的测量围是1HZ—100MHZ,完全满足设计要求。6总结1、本程序设计主要介绍了数字频率计的VerilogHDL的设计与实现,其可以用Xilinx公司XC2s200A型号的FPGA实现。通过学习与设计,掌握了VerilogHDL设计与实现。2、统计知识的实际运用,为了增强测试的合理性和有效性,采用分层抽样,.v.:...7参考文献[1]〔第二版〕.航空航天大学;.[2].StephenBrown,ZvonkoVranesic,〔原书第二版〕.机械工业;.[3]皇晓辉,〔ppt〕.电子科技大学;,给我这个自己动手的时机和空间。经过将近一周的时间,终于在指导教师的帮助下完成了频率计设计,对自己的能力有了很大的提升。在他们身上,我学到的不仅仅是知识,更多的是他们严谨的科研态度和优良的教学研究精神,不管在什么地方,做什么工作,这些都是我应该学习的地方。附录:assignena=0;顶层模块:assigngate=gate_DUMMY;module//分频例化topfile(clk,f_in,sw,gate,over,ena,dig,seg,dp_out);div_clku1(.clk48MHz(clk),inputclk,f_in;.clk1kHz(clk1k),input[2:0]sw;.clk10Hz(clk10),outputena,dp_out,over,gate;.clk100Hz(clk100));output[2:0]dig;//基准频率选择例化output[6:0]seg;fbase_selu2(.clk_1khz(clk1k),wireclear,clk1k,clk10,clk100;.clk_10hz(clk10),wire[3:0]D1,D2,D3,D4,D5,D6;.clk_100hz(clk100),wirelatch_clk;.sw(sw[2:0]),wire[3:0]Q1,Q2,Q3,Q4,Q5,Q6;.fbase(ten_f_ref));wireten_f_ref,over_flow,gate_DUMMY;//.:...gate_ctrlu3(.clk(ten_f_ref),clk1kHz,.clr_D(clear),clk10Hz,.gate_in(gate_DUMMY),clk100Hz);.latch_t(latch_clk));inputclk48MHz;//计数例化outputclk1kHz;counteru4(.clr_D(clear),outputclk10Hz;.f_in(f_in),outputclk100Hz;.gate_in(gate_DUMMY),wireclk1kHz_DUMMY;.D1(D1[3:0]),wireclk100Hz_DUMMY;.D2(D2[3:0]),assignclk1kHz=clk1kHz_DUMMY;.D3(D3[3:0]),assignclk100Hz=clk100Hz_DUMMY;.D4(D4[3:0]),div_clk_48000u1(.clkin(clk48MHz),.D5(D5[3:0]),.clkout((D6[3:0]),MY));.over(over_flow));div_clk_10u2(.clkin(clk1kHz_DUMMY),//(clk100Hz_DUMMlatchu5(.DO(over_flow),Y));.D1(D1[3:0]),div_clk_10u3(.clkin(clk100Hz_DUMMY),.D2(D2[3:0]),.clkout(clk10Hz));.D3(D3[3:0]),(D4[3:0]),U1:.D5(D5[3:0]),modulediv_clk_48000(clkin,clkout);.D6(D6[3:0]),inputclkin;.latch_t(latch_clk),outputclkout;.QO(over),reg[15:0]tmp;.Q1(Q1[3:0]),assignclkout=tmp[15];.Q2(Q2[3:0]),always(posedgeclkin).Q3(Q3[3:0]),if(tmp==47999).Q4(Q4[3:0]),tmp<=0;.Q5(Q5[3:0]),(Q6[3:0]));tmp<=tmp+1;//显例如化endmoduledisplayu6(.clk(clk1k),U2:.Q1(Q1[3:0]),modulediv_clk_10(clkin,clkout);.Q2(Q2[3:0]),inputclkin;.Q3(Q3[3:0]),outputclkout;.Q4(Q4[3:0]),reg[3:0]tmp;.Q5(Q5[3:0]),assignclkout=tmp[3];.Q6(Q6[3:0]),always(posedgeclkin).sw(sw[2:0]),if(tmp==9).dig(dig[2:0]),tmp<=0;.dp_out(dp_out),(seg[6:0]));tmp<=tmp+1;Endmoduleendmodule分频模块:U3modulediv_clk(clk48MHz,modulediv_clk_10(clkin,clkout);.v.:....inputclkin;inputclr_D,f_in,gate_in;outputclkout;output[3:0]D1,D2,D3,D4,D5,D6;reg[3:0]tmp;outputover;assignclkout=tmp[3];t_1C1(always(posedgeclkin).clk(f_in),if(tmp==9).clr(clr_D),tmp<=0;.gate_in(gate_in),(D1)tmp<=tmp+1;);endmodulet_2C2(基准频率选择模块:.clk(D1[3]),modulefbase_sel(.clr(clr),inputclk_10hz,.q(D2)inputclk_100hz,);inputclk_1khz,t_2C3(input[2:0]sw,.clk(D2[3]),(clr),);.q(D3)always(clk_10hz,clk_100hz,clk_1khz,sw));case(sw)t_2C4(3'b011:fbase=clk_10hz;.clk(D3[3]),3'b101:fbase=clk_100hz;.clr(clr),3'b110:fbase=clk_1khz;.q(D4)default:fbase=0;);endcaset_2C5((D4[3]),门控模块:.clr(clr),modulegate_ctrl(.q(D5)inputclk,);outputreggate_in,t_2C6(outputreglatch_t,.clk(D5[3]),(clr),);.q(D6)reg[3:0]num;);always(posedgeclk)overOVR((f_in),num<=num+1;.over(over)gate_in<=(num<10););latch_t<=(num==12);Endmoduleclr_D<=(num==13);C1:endmodulet_1(clk,clr,gate_in,q);endmoduleinputclk,clr,gate_in;计数模块:outputreg[
数字频率计实验报告 来自淘豆网m.daumloan.com转载请标明出处.