VerilogHDL数字频率计_第1页
VerilogHDL数字频率计_第2页
VerilogHDL数字频率计_第3页
VerilogHDL数字频率计_第4页
VerilogHDL数字频率计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、基于Verilog HDL数字频率计设计与实现 课程设计任务书学院:计算机与通信工程学院 专业:网络工程专业 课程名称计算机组成原理课程设计时 间20102011学年第一学期1718周学生姓名郭祥斌指导老师陈沅涛题 目主要内容:(1)数字频率计前端信号的放大整形处理(2)数字频率计的Verilog HDL设计实现(3)数字频率计的CPLD/FPGA制作要求:(1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义 及现状研究分析。(2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。(3)学按要求编写课程设计报告书,能正确阐述设计和实验结果。(4)学生应抱着严谨认真的态度积极投

2、入到课程设计过程中,认真查阅相应 文献以及实现,给出个人分析、设计以及实现。应当提交的文件:(1)课程设计报告。(2)课程设计附件(主要是源程序)。 课程设计成绩评定学 院 计算机通信工程 专 业 网络工程 班 级 网络08-02 班 学 号 200858080223 学生姓名 郭祥斌 指导教师 陈沅涛 课程成绩 完成日期 2010年12月31日指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩 指导教师签字 年 月 日基于Verilo

3、g HDL数字频率计设计与实现学生:郭祥斌 指导老师:陈沅涛摘 要: 在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。本文阐述了用Verilog HDL语言设计了一个简单的数字频率计的过程关键词:周期;

4、EDA;Verilog HDL;数字频率计;波形仿真目录1 引 言61.1 数字频率计概述71.2 频率测量的思想和方法72 Verilog HDL简介102.1 Verilog HDL的简介103 数字频率计系统框图113.1数字频率计系统框图113.2数字频率计系统部件简介114 基于Verilog HDL数字频率计程序设计124.1数字频率计系统模块划分结构124.2计数模块counter134.3门控模块gate_control164.4分频模块fdiv194.5 寄存器模块flip_latch214.6 多路选择模块data_mux234.7 动态位选模块dispselect244.

5、8 BCD译码模块dispdecoder264.9 顶层电路top295 总结32参考文献331 引 言 在电子测量领域中,频率测量的精确度是最高的,可达1010E-13数量级。因此,在生产过程中许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计来测量,以提高精确度。 国际上数字频率计的分类很多。按功能分类,测量某种单一功能的计数器。如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为基础的计数器,其测时分辨力和准确度很高,可达ns数量级;特种计数器,它具有特种功能,如可逆计数器、予

6、置计数器、差值计数器、倒数计数器等,用于工业和白控技术等方面。数字频率计按频段分类 (1)低速计数器:最高计数频率10MHz; (2)中速计数器:最高计数频率10100MHz; (3)高速计数器:最高计数频率100MHz; (4)微波频率计数器:测频范围180GHz或更高。单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。单片机的潜力越来越被人们所重视。

7、特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。1.1 数字频率计概述 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。本文数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性

8、变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。因此,数字频率计是一种应用很广泛的仪器 电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路。数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功能,从而提高系统可靠性和速度。 集成电路的类型很多,从大的方面可以分为模拟电路和数字集成电路2大类。数字集成电路广泛用于计算机、控制与测量系统,以及其它电子设备中。一般说来,数字系统中运行的电信号,其大小往往并不改变,但在实践分布上却有着严格的要求,这是数字电路的一个特点。数字集成电路作为电子技术最重要的基础产品

9、之一,已广泛地深入到各个应用领域 1.2 频率测量的思想和方法1频率测量的基本思想测量被测信号在单位时间内的脉冲个数,其数字表达式f = N / t 其中: f为被测信号的频率 N为脉冲的个数 t为被测信号产生N个脉冲所需的时间2 频率测量方法 直接测量法:直接测量被测信号的频率,通过计数法来对被测信号在一定时间内的脉冲个数进行计数。直接测量法的结构框图如图所示。被测信号 测量结果计 数放大整形标准时钟分 频图 直接测量法的结构框图3 误差来源 技术过程中最大存在着±1个字的量化误差 对时间t的准确把握,主要包括准时钟的时间准确性、整形电路、分频电路以及技术时间控制闸门的开关速度等因

10、素。直接法测量的最大相对误差可以表达为( df/f )max=±( |1/N| + |G| )=±( |1/ft| + |G| ) 其中: N为脉冲的个数,G为标准时钟的频率稳定性,f为被测信号频率,t为被测信号产生N个脉冲所需的时间。4 功能及技术指标 频率测量范围: 10Hz 100MHz 测量分辨率: 1Hz 测量通道灵敏度: 50mVpp 通道输入阻抗:不小于100k 测量误差:±1 测量结果显示:6位数码管显示该数字频率计的操作面板如图所示图 简易数字频率计的操作面板其中,被测信号可以有三种,分别是方波、三角波和正弦波;测量结果显示采用六个数码管来显示;

11、量程分为三个,分别为:0999999Hz、09999.99kHz、099.9999MHz2 Verilog HDL简介2.1 Verilog HDL的简介 Verilog HDL是一种硬件描述语言(hardware description language),为了制作数位电路(数字电路)而用来描述ASICs和FPGAs的设计之用。Verilog 的设计者想要以 C 程序语言(en:C programming language)为基础设计一种语言,可以使工程师比较熟悉跟容易接受。事实上,它产生与 C 程序语言类似的不严谨性质,并且大概与Pascal很相像。 这种语言跟传统的程序设计语言不同,在于

12、它的程序叙述并非严格地线性(循序)执行。Verilog 模式包含不同模组(modules)的阶层关系。模组(modules)是输出(inputs)和输入(outputs)所定义出来的一个集合。在每个模组中,有一串的电线(wires)、暂存器(registers)和子模组(submodules)的定义。并且在每个模组里面,语言叙述大部分都被群组成为各种的执行区块(blocks),用来定义该模组所产生的行为描述。在每个区块(blocks)内,使用 begin 和 end 的关键字来区隔开来,其中的叙述是循序被执行。但是同一个设计,不同的区块间的执行是平行的。 这个语言的叙述之子集合是可合成(syn

13、thesizable)。如果在一个电路设计的模组中仅包含可合成的叙述,那麽这个电路设计就可以被适当的软件,转换合成为电脑芯片的电路layout。3 数字频率计系统框图3.1数字频率计系统框图设计如图所示的数字频率计系统电路框图图 所示的数字频率计系统电路框图3.2数字频率计系统部件简介1. 放大整形 数字频率计允许测量信号的类型有三种:方波、三角波和正弦波,并且信号的测量通道灵敏度为 50mVpp,为此,需要将被测信号放大整形成标准的TTL电平的方波型号,便于CPLD/FPGA对信号脉冲的计数。 2. SW1、SW2、SW3按键SW1、SW2、SW3这三个按键用来在测量的时候,用户根据被测信号

14、的大致频率范围选择不同的适合被测信号的量程。在按键的设计中,需要考虑实际按键的消抖问题3. 标准时钟 标准时钟为频率计测量提供精度相对比较高的时基信号,其时间的稳定性与精度将会直接影响到频率计测量的准确性。4. LED显示模块 频率计将测量的结果通过6位数码管(LED)来显示。4 基于Verilog HDL数字频率计程序设计4.1数字频率计系统模块划分结构数字频率计中的CPLD/FPGA是频率计的核心,主要实现在一定时间内,对被测信号的脉冲个数进行计算,并且转化为相应的频率值显示在六个数码管上。首先将系统分成七个模块来分别设计仿真。分别有以下七个模块:经过上述模块化划分后的结构框如图4.1所示

15、图4.1 模块化划分后的结构 计数模块counter:对包含被测信号频率信息的脉冲进行计数 门控模块gate_control:根据量程,控制技术模块计数。 分频模块fdiv:将标准时钟分频,得到计数以及动态显示所需的时钟。 寄存器模块flip_latch:对计数模块的计数值进行寄存。 多路选择模块data_mux:根据动态选择信号,选择相应的需要显示的计数值 动态为选择模块dispselevt:输出动态显示中的位选信号 BCD译码模块dispdenoder:将BCD码译成数码管的显示数据4.2计数模块counter该模块主要完成对被测信号经过放大整形后输入到可编程逻辑器件的F_IN信号是现在一

16、定的时间下的计数,采用六个异步BCD码十进制计数器来实现 0999999范围的计数。计数模块的结构框图如图所示。图 计数模块的结构框图根据模块实现的功能设计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码十进制计数器的全局使能信号 CLR:异步BCD码十进制计数器复位信号 F_IN:被测信号经过放大与整形处理后的信号该模块定义输出端口如下: F_OUT:超出技术范围0999999的输出信号,用来指示提醒用户选择更大的量程。 Q0:计数器的最低位输

21、出 Q1:计数器的第5位输出 Q2:计数器的第4位输出 Q3:计数器的第3位输出 Q4:计数器的第2位输出 Q5:计数器的第1位输出在Altera公司的软件工具QuartusII中编译和波形仿真得到波形如图所示。图 计数模块counter的仿真波形4.3门控模块gate_control 门控模块实现检测外界量程的选择,并且根据量程输出控制6位BCD码十进制计算器的计数时钟,以及在测量完一次信号频率后,计数器计数值清零。计数器的清零要与后级寄存器的锁存时刻做很好的时序配合。应该实在计数器测量完一次信号频率后,首先将数据锁存到寄存器,然后再将计数器值清零,这样可以惊醒下一次测量。门控模块的结构框图

22、如图所示图 门控模块结构框图 根据模块实现的功能设计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/根据不同的外界量程选择,选择相应的计数基时钟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/根据不同的计数基时钟,提供输出相应的计数器计数值的清除脉冲与锁存器锁存脉冲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:量程选择开关 flhz:1Hz的标准时钟输入 fl0hz:10Hz的标准时钟输入 fl00hz:100Hz的标准时钟输入该模块定义输入端口如下: Latc

26、h_EN:用来是能寄存器所存数据 Counter_Clr:用于计数器的清零 Counter_EN:用于使能计数器开始计数 dp_s1hz:选择999999Hz量程时,用于控制显示中的小数点位置 dp_s10hz:选择9999.99Hz量程时,用于控制显示中的小数点位置 dp_s100hz:选择99.9999Hz量程时,用于控制显示中的小数点位置在Altera公司的软件工具QuartusII中编译和波形仿真得到波形如图所示。图 门控模块的仿真波形4.4分频模块fdiv分频模块在系统全局时钟的驱动下,经过分频得到系统中所需要的多种频率成分的时钟信号。分频模块的结构框图如图所示。图 分频模块结构框图

27、根据模块实现的功能设计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) /实际系统分频值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) /实际系统分频值if(cnt2 < 2) /仿真时的分频值begin f100hz <= 1'b0; cnt2 = cnt2 + 1;endelsebegin f100hz <= 1'b1; cnt2 = 0;endendalways (posedge f100hz)begin/if(cnt3<9) /实际系统分频值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) /实际系统分频值if(cnt4 < 2) /仿真时的分频值begin f1hz <= 1'b0; cnt4 = cnt4 + 1;endelsebegin f1hz <= 1'b1; cnt4 = 0;endendendmodule该模块定义输入端口如下: Clk:全局系统时钟信号该模块定义输出端口如下: F1hz:输

30、出1Hz的时钟信号 F10hz:输出1Hz的时钟信号 F1khz:输出1Hz的时钟信号在Altera公司的软件工具QuartusII中编译和波形仿真得到波形如图所示。图 分频模块的仿真波形4.5 寄存器模块flip_latch寄存器模块实现每一个测量频率时,计数器计算值的暂时存储。寄存器模块的结构框图如图所示。图 寄存器模块根据模块实现的功能设计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:所存数据信号输入,当clk的上升沿到来时,寄存器将输入端信号锁存进寄存器,并且改变输出。 A0,A1,A2,A3,A4,A5:寄存器的数据输入端该模块定义输出端口如下: Q0,Q1,Q2,Q3,Q4,Q5:寄存器的数据输出端。在Altera公司的软件工具Quar

32、tusII中编译和波形仿真得到波形如图所示。图 寄存器模块的仿真波形4.6 多路选择模块data_mux多路选择模块实现测量频率值的分时显示,即动态显示。经过多路选择器模块来分时地传输数据。多路选择模块的结构如图所示。图 多路选择模块结构框图根据模块实现的功能设计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:多路选择模块的数据输入端口该模块定义输出端口如下:

34、多路选择模块的数据输出端口。在Altera公司的软件工具QuartusII中编译和波形仿真得到波形如图所示。图 多路选择模块的仿真波形4.7 动态位选模块dispselect动态位选模块用来驱动数码动态地显示频率测量数据,分时地选择各个数码管进行显示 动态位选的结构框图所示。图 动态位选模块的结构框图根据模块实现的功能设计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:动态位选的时钟信号输入,一般取1KHz左右的标准时钟。该模块定义输出端口如下: disp_select:动态位选中间量输出,用于与系统中其他模块之间的同步。 Q:动态位选信号输出,可以直接接到数码管的公共端。在Altera公司的软件工具QuartusII中编译和波形仿真得到波形如图所示。图 动态位选模块的仿真波形4.8 BCD译码模块dispdecoderBCD译码

37、模块主要实现BCD码到7段数码管显示码字段的转换,同时,考虑到频率测量中的一些“零”的处理,比如选择量程1999999Hz,但被测信号频率为100Hz,这样在显示的时候就需要将6为数码管的前三位屏蔽。BCD译码模块的结构框图如图所示。图 BCD译码模块的结构框图根据模块实现的功能设计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/译码显示数据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/小数点位置与零数字的处理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:来自动态显示位模块,实现两者之间的同步 dp_s1hz,dp_s10hz,dp_s100hz:输入小数点位置控制信号

46、来自门控模块 Q5,Q4,Q3,Q2,Q1,Q0:计数器的计数值输入,用来控制“零”显示控制 counter_out:计数器计数溢出信号,用来提示用户更换更大量程该模块定义输出端口如下: data_out:经过译码后的7段数码管显示数据输出,可以直接连接到数码管的数据端口 dp:小数点控制信号在Altera公司的软件工具QuartusII中编译和波形仿真得到波形如图所示。图 BCD译码模块的仿真波形4.9 顶层电路top在设计完各个模块后,需要将各个模块有机地组合成一个整体,最后来实现系统的功能。在数字频率计中,同时采用了电路原理图示的设计以及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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论