八位十进制数字频率计设计报告(共12页)_第1页
八位十进制数字频率计设计报告(共12页)_第2页
八位十进制数字频率计设计报告(共12页)_第3页
八位十进制数字频率计设计报告(共12页)_第4页
八位十进制数字频率计设计报告(共12页)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上题 目: 作 者: 学 号: 所属学院: 专业年级: 完成时间: 8位十进制数字频率计的设计 摘 要数字频率计是用数字显示被测信号频率的仪器,被测信号是方波信号。数字频率计广泛应用于科研机构、学校、实验室、企业生产车间等场所。研究数字频率计的设计和开发,有助于频率计功能的不断完善、性价比的提高和实用性的加强。 本文介绍了一种自顶向下分层设计多功能数字频率计的设计方法。该频率计采用 Verilog 硬件描述语言编程,以 QuartusII为开发环境,极大地减少了硬件资源的占用。数字频率计模块划分的设计具有相对独立性,可以对模块单独进行设计、调试和修改,缩短了设计周期。所

2、设计的Verilog语言通过仿真能够较好的测出所给频率并且满足数字频率计的自动清零和自动测试的功能要求,具有理论与实践意义。关键词:Verilog ;数字频率计; EDA; QuartusII第一章 EDA技术原理与概述1.1可编程逻辑器件基本原理FPGA 4-5是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达1000万门/片以上,系统性能可达300MHz。由于FPGA器件集成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用。FPGA采用了逻辑单元阵列LCA(Logic Cell A

3、rray)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O

4、模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。 FPGA器件优点:高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证。1.2硬件描述语言 目前最主要的硬件描述语言是VHDL和Verilog HDL,Verilog HDL和HDL都是用于逻辑设计的硬件描述语言,并且都已成为IEEE标准。VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起

5、来的一种硬件描述语言,语法较自由。 VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog自由的语法也容易让少数初学者出错。Verilog HDL和VHDL作为描述硬件电路设计的语言,其共同的特点在于:能形式化地抽象表示电路的行为和结构、支持逻辑设计中层次与范围的描述、可借用高级语言的精巧结构来简化电路行为的描述、具有电路仿真与验证机制以保证设计的正确性、支持电路描述由高层到低层的综合转换、硬件描述与实现工艺无关。本设计是用的Verilog语言来实现数字频率计的设计的,本设计将重点介绍Verilog语言。Verilog语言主要用于描述数字系统的结

6、构,行为,功能和接口。Verilog的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是Verilog系统设计的基本点。Verilog语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。Verilog程序组成部分由实体、构造体、配置、包集合、库5个部分组成。各组成部分的作用是:(1)实体:用于描述所设

7、计的系统的外部接口信号。(2)构造体:用于描述系统内部结构和行为。(3)配置:用于从库中选取不同单元(器件)来组成系统设计的不同版本。(4)包集合:存放各设计模块都能共享的数据类型,常数和子程序等。(5)库:可由系统工程师生成或由ASIC芯片商提供,以便在设计中共享。 详细介绍QuartusII文本编辑输入法的使用方法:1.编辑设计文件(1) 新建一个文件夹。利用资源管理器,新建一个文件夹,如e:SIN GNT。(2) 输入源程序。打开QuartusII,执行FileNew,在New窗口中的“Device Design Files”中选择编译文件的语言类型,这里选“Verilog Files”

8、,然后在Verilog文本编译窗口中键入Verilog程序。如图2.3所示。(3) 文件存盘。执行FileSave As,找到已设立的文件夹e:SIN_GNT,存盘文件名应该与实体名一致。2.创建工程(1)建立新工程管理窗。执行FileNew Project Wizard命名,在图2.4对话框进行工程设置。(2)将设计文件加入工程中。(3)选择仿真器和综合器类型。(4)选择芯片。(5)结束设置。3.编译前设置 (1) 选择目标芯片,执行Assignmemtssettings命令,在弹出的对话框中选Compiler Settings项下的Device选目标芯片。(2)选择目标器件编程配置方式,由

9、图2.5的按钮Device Pin Options进入选择窗,可选Configuration方式为Active Serial。 (3)在下图所示的Programming Files窗口,Hexadecimal(Intel-Format)output File,即产生下载文件的同时,产生二进制十六进制配置文件fraqtest.hexout,可用于单片机与EPROM构成的FPGA配置电路系统如图2.6所示。4.编译及了解编译结果首先执行ProcessingStart Compilation命令,启动全程编译,如果工程中的文件有错误,在下方的Processing处理栏中会显示出来。对于Process

10、ing栏显示出的语句格式错误,可双击此条文,即弹出Verilog文件,在闪动的光标处(或附近)可发现文件中的错误。再次进行编译直至排除所有错误第二章 数字频率计的系统分析2.1 8位十进制数字频率计系统设计的原理2.1.1数字频率计的基本原理数字频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。数字频率计的主要功能是测量周期信号的频率。频率是单位时间(1

11、S)内信号发生周期变化的次数。如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。这就是数字频率计的基本原理。2.1.2 系统总体框架图 总体框图设计思路:由20MHz系统时钟分频得到0.5Hz的基准时钟。在基准时钟的1S 高电平期间计被测频率的脉冲个数,1S高电平结束时计数结束,所记录的脉冲个数是被测信号的频率,为了在数码管上显示计数结果需要锁存器将所计的数锁存,因此,在基准时钟下降沿来

12、的时候锁存器实现锁存功能。为了下次计数必须将本次计数的结果清零,所以在基准时钟低电平期间对计数器清零。被测频率从计数器的是中端输入实现频率的测试。将锁存器锁存的数据输入扫描器,通过译码器将锁存的二进制数译成十进制然后显示到数码管上,最终被读出来。2.2 8位十进制数字频率计设计任务及要求用测频法设计一个八位十进制的数字频率器,测频范围是1HZ到HZ。(1)测量范围信号:方波、正弦波;幅度:0.5V5V;频率:1HzHZ。(2)测量范围信号:脉冲波;幅度:0.5V5V;脉冲宽度100s.测量误差1%。(3)显示器:十进制数字显示,显示刷新时间110秒连续可调,对上述三种测量功能分别用不同颜色的发

13、光二极管指示。 (4)具有自校功能,时标信号频率为1HZ第三章 各功能模块基于Verilog的设计3.1 8位十进制数字频率计的电路逻辑图 8位十进制数字频率计的电路逻辑图,它由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B 8组成。以下分别叙述频率计各逻辑模块的功能与设计方法。8位十进制数字频率计的电路逻辑如图4.18所示。图4.1 8位十进制数字频率计的电路逻辑图3.2系统时钟分频的功能模块(1)系统时钟分频的分频功能模块如图4.4所以。图4.4 系统时钟分频的功能模块图(2)源程序如下: module fre_div(

14、clk,clkout); /输入20MHz,输出分频到1Hzinput clk; output clkout;reg clkout;reg31:0 counter; / 中间变量counter定义为寄存器型parameter N=20_000_000; always(posedge clk) begin if(counter= N/2-1)beginclkout <= clkout; counter<=0;end else counter<=counter+1'b1; endendmodule3.4.2锁存器的功能模块(1)32位锁存器的功能模块如图4.6所示。图4.

15、6 锁存器的功能模块图(2)源程序如下:module REG32B (LOAD, DIN, DOUT); input LOAD; input31:0 DIN; output31:0 DOUT; reg31:0 DOUT; always (posedge LOAD) begin : xhdl_1 / 时钟到来时,锁存输入示 DOUT <= DIN ; end endmodule3.5 数码管扫描的功能模块(1)数码管扫描8的功能模块如图4.8所示。图4.8 数码管扫描的功能模块(2)源程序如下:module seven_seg( clk ,rst_n,d,dig ,seg);input c

16、lk ; /20MHzinput rst_n ; /复位信号,低电平有效input 31:0 d; /要显示的32位数据output 7:0 dig ; /位选信号output 7:0 seg; /段码dp到a由高到低排列parameter N= 20000; /分频系数reg clkout ; /扫描时钟reg 13:0cnt; /分频计数器reg 2:0 scan_cnt ; /扫描计数器 reg 3:0 disp_dat ; /每一位数码管待译码数据reg 7:0 dig;reg 7:0 seg_r;always ( posedge clk or negedge rst_n) /分频到1

17、KHzbegin if (!rst_n)cnt <= 0 ;else begin if(cnt= N/2-1)beginclkout <= clkout; cnt<=0;end else cnt<=cnt+1'b1; endendalways (posedge clkout or negedge rst_n) /产生扫描计数值 begin if (!rst_n) scan_cnt <= 0 ; else scan_cnt <= scan_cnt + 1'b1; endalways ( scan_cnt,d) /8位数码管位选择,同时送相应要显

18、示数据begin case ( scan_cnt )3'b000 : begin dig<= 8'b0000_0001;disp_dat<= d3:0; end3'b001 : begin dig<= 8'b0000_0010;disp_dat<= d7:4; end3'b010 : begin dig<= 8'b0000_0100;disp_dat<= d11:8; end3'b011 : begin dig<= 8'b0000_1000;disp_dat<= d15:12; en

19、d3'b100 : begin dig<= 8'b0001_0000;disp_dat<= d19:16; end3'b101 : begin dig<= 8'b0010_0000;disp_dat<= d23:20; end3'b110 : begin dig<= 8'b0100_0000;disp_dat<= d27:24; end3'b111 : begin dig<= 8'b1000_0000;disp_dat<= d31:28; end default : begin di

20、g<= 8'b0000_0001;disp_dat<= d3:0; end endcaseendalways ( disp_dat ) /共阳极数码管译码begin case (disp_dat) 4'h0 : seg_r = 8'hc0; /显示"0" 4'h1 : seg_r = 8'hf9; /显示"1" 4'h2 : seg_r = 8'ha4; /显示"2" 4'h3 : seg_r = 8'hb0; /显示"3" 4&#

21、39;h4 : seg_r = 8'h99; /显示"4" 4'h5 : seg_r = 8'h92; /显示"5" 4'h6 : seg_r = 8'h82; /显示"6" 4'h7 : seg_r = 8'hf8; /显示"7" 4'h8 : seg_r = 8'h80; /显示"8" 4'h9 : seg_r = 8'h90; /显示"9" 4'ha : seg_r = 8&

22、#39;h88; /显示"a" 4'hb : seg_r = 8'h83; /显示"b" 4'hc : seg_r = 8'hc6; /显示"c" 4'hd : seg_r = 8'ha1; /显示"d" 4'he : seg_r = 8'h86; /显示"e" 4'hf : seg_r = 8'h8e; /显示"f" default: seg_r = 8'hff;/灭 endcaseendassign seg=seg_r; /取反变成共阴极段码endmodule3.7 十进制计数器的功能模块4.7.1计数器计数是一种最简单基本的运算,计数器15就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触

温馨提示

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

评论

0/150

提交评论