版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业电子科技大学设计论文论文题目: 基于Verilog HDL频率计设计与实现 指导老师: 学生姓名: 学 号: 专 业: 摘要在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间
2、接测频法,如周期测频法。直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。本文阐述了用Verilog HDL语言设计了一个简单的数字频率计的过程关键词: 周期;EDA;Verilog HDL;数字频率计;波形仿真SummaryIn electronics,thefrequency isoneofthemostbasicparameters,andmeasurement programwithalot of electric parameters, the measurement result-shave a very close relationship,andfrequ
3、encymeasurementbecomesmore important.There are several waysofmeasuring frequency,theelectroniccounter to measurefrequencywithhigh precision,easy to use,rapidmeasurement, andeasytoautomatethe measurement process, etc.,isoneoftheimportantmeansoffrequency measurement.Electronic counterfrequency measure
4、mentin two ways:First, the directfrequency measurement methodtomeasurethenumberofpulsesofthemeasuredsignal, that is,ina certaingate time;indirectfrequency measurement method,such asthecyclefrequency measurement method.Directfrequency measurement methodforhigh-frequencysignalfrequency measurement,fre
5、quencymeasurementsindirectlymeasuredthefrequencymethod is suitable forlow-frequency signals.This paper describes thedesignofa simpledigital frequency meterusing Verilog HDL languageKeywords:period;the EDA;the Verilog HDL;digital frequency meter;waveformsimulation目录 TOC o 1-4 h z u 1引言在电子测量领域中,频率测量的精
6、确度是最高的,可达1010E-13数量级。因此,在生产过程中许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计来测量,以提高精确度。 国际上数字频率计的分类很多。按功能分类,测量某种单一功能的计数器。如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为基础的计数器,其测时分辨力和准确度很高,可达ns数量级;特种计数器,它具有特种功能,如可逆计数器、予置计数器、差值计数器、倒数计数器等,用于工业和白控技术等方面。数字频率计按频段分类 (1)低速计数器:最高计数频率10MHz; (2)中
7、速计数器:最高计数频率10100MHz; (3)高速计数器:最高计数频率100MHz; (4)微波频率计数器:测频范围180GHz或更高。单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。单片机的潜力越来越被人们所重视。特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应
8、用范围,也进一步促使单片机性能的发展。1.1频率计概述频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则没测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。本文数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。因此,数字频率计是一种应用很广
9、泛的仪器 电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路。数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功能,从而提高系统可靠性和速度。 集成电路的类型很多,从大的方面可以分为模拟电路和数字集成电路2大类。数字集成电路广泛用于计算机、控制与测量系统,以及其它电子设备中。一般说来,数字系统中运行的电信号,其大小往往并不改变,但在实践分布上却有着严格的要求,这是数字电路的一个特点。数字集成电路作为电子技术最重要的基础产品之一,已广泛地深入到各个应用领域1.2设计目的1.学会使用Veilog 硬件描述语言;2.学会利用Xilinx进行层次化计;3.学会电路模块化设
10、计。1.3设计内容设计一个计数式频率计,其频率测量范围为10Hz10MHz,测量结果用6只数码管显示。有三个带锁按键开关(任何时候都只能有一个被按下)被用来选择1S、0.1S和0.01S三个闸门时间中的一个。有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。1.4频率测量的思想和方法众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。因此,频率检测是电子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1 s。闸门时间可以根据需要取值,大于或小于1 s
11、都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1 s作为闸门时间。测量的思想和方法1、频率测量的基本思想测量被测信号在单位时间内的脉冲个数,其数字表达式f = N / t其中: F为被测信号的频率 N为脉冲的个数T为被测信号产生N个脉冲所需的时间2、频率测量方法直接测量法:直接测量被测信号的频率,通过计数法来对被测信号在一定时间内的脉冲个数进行计数。直接厕灵法的结构框图如下所示。直接测量法的结构框图功能及技术指标 频率测量范围: 10Hz 10MHz 测量结果显示:6位数码管显示 溢
12、出灯指示是否溢出 1s,0.1s,0.01s三个门控选项该数字频率计的操作面板如下所示简易数字频率计的操作面板其中,门控选择可选1s,0.1s,0.01s三种,测量结果显示采用六个数码管来显示。2 Verilog HDL 简介 Verilog HDL是一种硬件描述语言(hardware description language),为了制作数位电路(数字电路)而用来描述ASICs和FPGAs的设计之用。Verilog 的设计者想要以 C 程序语言(en:C programming language)为基础设计一种语言,可以使工程师比较熟悉跟容易接受。事实上,它产生与 C 程序语言类似的不严谨性质
13、,并且大概与Pascal很相像。 这种语言跟传统的程序设计语言不同,在于它的程序叙述并非严格地线性(循序)执行。Verilog 模式包含不同模组(modules)的阶层关系。模组(modules)是输出(inputs)和输入(outputs)所定义出来的一个集合。在每个模组中,有一串的电线(wires)、暂存器(registers)和子模组(submodules)的定义。并且在每个模组里面,语言叙述大部分都被群组成为各种的执行区块(blocks),用来定义该模组所产生的行为描述。在每个区块(blocks)内,使用 begin 和 end 的关键字来区隔开来,其中的叙述是循序被执行。但是同一个设
14、计,不同的区块间的执行是平行的。 这个语言的叙述之子集合是可合成(synthesizable)。如果在一个电路设计的模组中仅包含可合成的叙述,那麽这个电路设计就可以被适当的软件,转换合成为电脑芯片的电路layout。3 数字频率计系统框图设计如下所示的数字频率计系统电路框图数字频率计系统电路框图3.1数字频率计系统部件介绍1. 放大整形 数字频率计允许测量信号的类型有三种:方波、三角波和正弦波,并且信号的测量通道灵敏度为 50mVpp,为此,需要将被测信号放大整形成标准的TTL电平的方波型号,便于CPLD/FPGA对信号脉冲的计数。2. SW1、SW2、SW3按键SW1、SW2、SW3这三个拨
15、动开关用来在测量的时候,用户可选择不同的门控时间。3. 标准时钟 标准时钟为频率计测量提供精度相对比较高的时基信号,其时间的稳定性与精度将会直接影响到频率计测量的准确性。本实验采用FPGA板上的48MHZ时钟4. LED显示模块 频率计将测量的结果通过6位数码管(LED)来显示。并通过LED灯来显示工作状态和溢出状态。3.2数字频率计系统模块划分结构数字频率计中的CPLD/FPGA是频率计的核心,主要实现在一定时间内,对被测信号的脉冲个数进行计算,并且转化为相应的频率值显示在六个数码管上。整体芯片图如下:将系统分成七个模块来分别设计仿真。分别有以下七个模块: 顶层模块frequent:将下面各
16、模块链接起来,形成整体的工作模块。 分频模块clk_div:将标准时钟分频,得到计数以及动态显示所需的时钟。 基准频率选择模块sw_sel:将分频模块所分得的三个频率通过三个拨动开关选择不同的基准频率。 门控模块gate_control:根据所选响应的基准频率,控制计数模块计数。 计数模块counter:对包含被测信号频率信息的脉冲进行计数 锁存器模块latch:对计数模块的计数值进行锁存。 显示模块display:将BCD码译成数码管的显示数据,生成位选信号,根据位选,选择相应的需要显示的计数值,输出动态显示中的数字。4 数字频率计程序设计及实现4.1分频模块div_clk 在系统全局时钟的
17、驱动下,经过分频得到系统中所需要的多种频率成分的时钟信号。分频模块的结构图如下所示该模块定义输入端口如下: clk:系统时钟信号。该模块定义输出端口如下: clk_1kHz:输出1Hz的时钟信号;clk_100Hz:输出100Hz的时钟信号;clk_10Hz:输出10Hz的时钟信号。编译和波形仿真得到波形如图4.2基准频率选择模块sw_sel该模块实现检测外界量程的选择,并且根据量程输出需要选择的基准频率。基准频率选择模块的结构框图如下所示该模块定义输入端口如下:clk10hz,clk100hz, clk_1khz:分频模块送出的分频信号;sw:开关的输入状态。该模块定义输出端口如下: clk
18、_sel:开关状态控制下输出的基准信号。编译和波形仿真得到波形4.3门控模块gate_ctrl 本模块通过16进制计数器用来产生三种控制信号,控制计数模块计数、清零和寄存器模块的锁存。门控模块模块的结构框图如下所示该模块定义输入端口如下:clkin:门控模块选择的基准信号。该模块定义输出端口如下:gate_rs:计数使能信号;latch:计数所得数据寄存信号;clr_cnt:计数器清零信号。编译和波形仿真得到波形4.4计数模块counter该模块主要完成对经过放大整形后的被测信号的计数,这个计数由门控模块产生的信号来控制。计数模块的结构框图如下所示该模块定义输入端口如下: frequent:外
19、部的输入信号;clr_cnt:门控模块产生的清零信号;gate_rs:门控模块产生的计数使能信号。该模块定义输出端口如下:Q1,Q2,Q3,Q4,Q5,Q6:计数器的0位、1位、2位、3位、4位、5位;over:溢出指示位。编译和波形仿真得到波形整体:精细部分:4.5锁存器模块latch本模块在门控制模块产生的锁存信号的控制下,对计数模块的计数值进行锁存。锁存器模块的结构框图如下所示该模块定义输入端口如下: latch_in:寄存信号;Q1,Q2,Q3,Q4,Q5,Q6,QO:计数器的不同位的数据和溢出标志;该模块定义输出端口如下:D1,D2,D3,D4,D5,D6,DO:锁存器的锁存结果。编
20、译和波形仿真得到波形4.6显示模块 display本模块用于对速测频率的显示,寄存器模块的结构框图如下所示该模块定义输入端口如下: clkin:扫描时钟信号1khz;sw:量程档位选择;Q1,Q2,Q3,Q4,Q5,Q6,QO:当前锁存器数据。该模块定义输出端口如下:dig:位选信号;seg:段选信号;dp:小数点位。编译和波形仿真得到波形4.7顶层模块 topfile在设计完各个模块后,需要将各个模块有机地组合成一个整体,最后来实现系统的功能。在数字频率计中,同时采用了电路原理图示的设计以及Verilog HDL语言来编写的顶层电路。顶层如下所示。该模块定义输入端如下:clk:频率为48M时
21、钟;sw:量程档位选择;frequent:信号发生器输入频率;该模块定义输出端如下:dig:位选信号;seg:段选信号;dp:小数点位;ena:数码管使能;gate:计数器使能;over:溢出标志。编译和波形仿真得到波形整体:精细部分:5 设计实现5.1实验设备计算机 Xilinx ise软件 modelsim6.0EDA实验箱5.2管脚分布NET clk LOC = T8;NET dig LOC = F8;NET dig LOC = D8;NET dig LOC = E7;NET dp LOC = C11;NET ena LOC = D7;NET frequent LOC = A14;NET
22、 gate LOC = C10;NET over LOC = A10;NET seg LOC = B14;NET seg LOC = A13;NET seg LOC = C13;NET seg LOC = C12;NET seg LOC = A12;NET seg LOC = B12;NET seg LOC = A11;NET sw LOC = L6;NET sw LOC = N5;NET sw LOC = L7;5.3下载过程Synthesize-Implement Design-Generate Programing File-Configure Device-读取top.bit文件-右键
23、芯片program-下载成功6 系统测试与结果分析6.1系统测试设备准确测量范围在10HZ10MHZ,超过量程将会有溢出。在数据统计中我们采用三个档位分层抽样,每层中采用随机抽样以提高数据的准确性。下页为所测数据:信号源频率12hz50hz78hz120hz180hz300hz550hz790hz1.24khz1S0.0120.050.780.120.180.30.550.791.24频率计显示(KHZ)0.1S0.0120.050.780.120.180.30.550.791.240.01S0000.120.180.30.550.791.241S000000000相对误差0.1S000000
24、0000.01S0.0120.050.78000000信号源频率2.4khz5khz20khz50khz100khz200khz450khz999.999khz1.24mhz1S2.45205099.996199.998449.996999.995khz溢出频率计显示(KHZ)0.1S2.452050100200499.99999.991239.980.01S2.452050100200450khz999.9khz12401S00000.0040.0020.0040.004相对误差0.1S0000000.0100.020.01S000000000.02信号源频率2.5mhz10mhz20mhz
25、25mhz30mhz40mhz45mhz50mhz55mhz1S溢出溢出溢出溢出溢出溢出溢出溢出溢出频率计显示(KHZ)0.1S2499.989999.96溢出溢出溢出溢出溢出溢出溢出0.01S25009999.919999.9溢出溢出溢出溢出溢出溢出1S相对误差0.1S0.020.040.01S0.020.040.1误差趋势图6.2 结果分析:从误差表和趋势图中可以看出,测量误差基本保持在百万分之1 到百万分之8之间,相对误差非常小,在对精度要求不大或在具备误差调节机制条件下可以忽略该误差。2、产生上述误差的因素可能是信号源的方波产生,或是由于晶振振荡不够稳定产生。3、本设计中有三种基准频率
26、,最小可以测得1Hz,最大可以测得100MHZ,实际设计的测量范围是1HZ100MHZ,完全满足设计要求的10HZ-10MHZ。7总结 本程序设计主要介绍了数字频率计的Verilog HDL的设计与实现,其可以用Xilinx公司XC3s200A型号的FPGA实现。通过学习与设计,掌握了Verilog HDL设计与实现: 分频模块div_clk的Verilog HDL设计与实现。 基准频率选择模块fbase_sel的Verilog HDL设计与实现。 门控模块gate_ctrl的Verilog HDL设计与实现。 寄存器模块flip_latch的Verilog HDL设计与实现。 计数模块cou
27、nter的Verilog HDL设计与实现。 寄存器模块latch的Verilog HDL设计与实现。 显示模块 display的Verilog HDL设计与实现。7.1 结束语通过本次课设,我不仅学到了关于EDA的许多专业知识,同时也让我感觉到团队合作的重要性。其实如何有效和快速的找到资料也是课设给我的启发,利用好图书馆和网络,是资源的到最好的利用。另外,与他人交流思想是取得成功的关键,在交流中,不仅强化了自己原有的知识体系也可以扩展自己的思维。通过思考、发问、自己解惑并动手、改进的过程,才能真正的完成课题。经过这次课程设计的过程,我相信在以后的课程设计中我们会吸取经验教训,做出更好的设计来
28、。7.2谢辞感谢学校和老师能给我这个自己动手的机会。在将近一周的时间内,我在xxx老师和xx老师的帮助下顺利完成了频率计设计。这不仅是对自己动手实践能力的锻炼与提升,也是对自己认真的学习态度的考验。指导老师们严谨的科研态度和优良的教学研究精神,都是我们在日后的学习、工作中的宝贵的精神财富。参考文献VHDL语言及其应用 付永庆 高等教育出版社VHDL应用开发技术 求是科技 人民邮电出版社VHDL数字电路设计教程 电子工业出版社夏宇闻.Verilog数字系统设计教程(第二版).北京航空航天大学; 2008,06.Stephen Brown,Zvonko Vranesic,夏宇闻 译.数字逻辑基础与
29、Verilog设计(原书第二版).机械工业出版社;2007,10.皇晓辉,刘壅.频率计设计(ppt).电子科技大学;2012.3.附录分频模块:module div_clk(clk,clk1khz,clk100hz,clk10hz);input clk;output clk1khz;output clk100hz;output clk10hz;wire clk_1khz;wire clk_100hz;wire clk_10hz;assign clk1khz=clk_1khz;assign clk100hz=clk_100hz;assign clk10hz=clk_10hz;cnt48000 u
30、1 ( .clkin(clk), .clk_1khz(clk_1khz) );cnt u2 ( .clkin(clk), .clk_100hz(clk_100hz) );cnt u3 ( .clkin(clk), .clk_10hz(clk_10hz) );endmoduleU1:module cnt48000(clkin,clk_1khz);input clkin;output clk_1khz;reg 15:0count;assign clk_1khz=count15;always(negedge clkin)if (count=47999)count=0;else count=count
31、+1;endmoduleU2:module cnt(clkin,clk_100hz);input clkin;output clk_100hz;reg 18:0count;assign clk_100hz=count18;always(negedge clkin)if (count=)count=0;else count=count+1;endmoduleU3:module cnt(clkin,clk_10hz);input clkin;output clk_10hz;reg 22:0count;assign clk_10hz=count22;always(negedge clkin)if (
32、count=)count=0;else count=count+1;endmodule基准频率选择模块module sw_sel(clk1khz,clk100hz,clk10hz,sw,clk_sel);input clk1khz;input clk100hz;input clk10hz;input 2:0 sw;output reg clk_sel;always(sw,clk1khz,clk100hz,clk10hz)case (sw)3b011:clk_sel=clk10hz;3b101:clk_sel=clk100hz;3b110:clk_sel=clk1khz;default:clk_
33、sel=0;endcase endmodule门控模块:module gate_control(clkin,gate_rs,latch,clr_cnt);input clkin;output reg gate_rs;output reg latch;output reg clr_cnt;reg 3:0count;always(posedge clkin)begincount=count+1;gate_rs=(count10);latch=(count=11);clr_cnt=(count=13);endendmodule计数模块:module counter(clr_cnt,frequent,
34、gate_rs,Q1,Q2,Q3,Q4,Q5,Q6,over);input clr_cnt,frequent,gate_rs;output reg3:0 Q1,Q2,Q3,Q4,Q5,Q6;output reg over;/第一位计数always (posedge frequent)if(clr_cnt) Q1=0;else if(gate_rs) if(Q1=9) Q1=0; else Q1=Q1+1;/第二位计数 always (posedge frequent)if(clr_cnt) Q2=0;else if(gate_rs) if(Q2=9)&(Q1=9) Q2=0; else if(
35、Q1=9) Q2=Q2+1;/第三位计数always (posedge frequent)if(clr_cnt) Q3=0;else if(gate_rs) if(Q3=9)&(Q2=9)&(Q1=9) Q3=0; else if (Q2=9)&(Q1=9) Q3=Q3+1;/第四位计数always (posedge frequent)if(clr_cnt) Q4=0;else if(gate_rs) if(Q4=9)&(Q3=9)&(Q2=9)&(Q1=9) Q4=0; else if (Q3=9)&(Q2=9)&(Q1=9) Q4=Q4+1;/第五位计数always (posedge fr
36、equent)if(clr_cnt) Q5=0;else if(gate_rs) if(Q5=9)&(Q4=9)&(Q3=9)&(Q2=9)&(Q1=9) Q5=0; else if (Q4=9)&(Q3=9)&(Q2=9)&(Q1=9) Q5=Q5+1;/第六位计数always (posedge frequent)if(clr_cnt) Q6=0;else if(gate_rs) if(Q6=9)&(Q5=9)&(Q4=9)&(Q3=9)&(Q2=9)&(Q1=9) Q6=0; else if (Q5=9)&(Q4=9)&(Q3=9)&(Q2=9)&(Q1=9) Q6=Q6+1;/溢出标志always (negedge frequent)if(clr_cnt)over=1b1; else if(gate_rs)&(Q6=9)&(Q5=9)&(Q4=9)&(Q3=9)&(Q2=9)&(Q1=9)over=1b0;endmodule锁存器模块:Module latch(latch_in,Q6,Q5,Q4,Q3,Q2,Q1,QO,D6,D5,D4,D3,D2,D1,DO);input latch_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论