实验六 数字频率计的Verilog HDL语言实现

合集下载

根据Verilog的数字频率计的设计

根据Verilog的数字频率计的设计

根据Verilog的数字频率计的设计以下是一个使用Verilog设计并仿真的数字频率计的示例:```verilogmodule frequency_counterinput reset,input clk,output reg [31:0] frequencyreg [31:0] count;reg [31:0] prev_count;reg counting;if (reset) begincounting <= 0;count <= 0;prev_count <= 0;end else beginprev_count <= count;count <= count + 1;if (prev_count == 0) begincounting <= 1;counting <= 0;frequency <= count;count <= 0;endendendendmodule```为了仿真该模块,可以使用任何支持Verilog仿真的工具,如ModelSim。

以下是一个对该模块进行仿真的示例测试台代码:```verilogmodule frequency_counter_tb;reg reset;reg clk;wire [31:0] frequency;frequency_counter dut.reset(reset),.clk(clk),.frequency(frequency)initial beginreset = 1;;reset = 0;endalways begin;clk = ~clk;endendmodule```在上述测试台代码中,引脚`reset`和`clk`通过不断的切换来产生复位和时钟信号。

然后,通过监视`frequency`引脚,可以检查计算的频率是否正确。

完成设计和测试台代码后,可以使用仿真工具对其进行仿真,以验证设计的正确性和性能。

基于Verilog的数字频率计的设计(包含代码及仿真)

基于Verilog的数字频率计的设计(包含代码及仿真)

一、实验名称数字频率计的设计二、实验地点211楼303三、实验目的和任务(1) 了解数字电路设计的基本特点(2) 了解数字频率计电路的基本原理(3) 基本掌握ISE 软件的使用(设计输入、仿真、实现)(4) 了解可编程逻辑器件(FPGA )的一般情况(5) 基本掌握HDL 的使用四、实验内容(1) 设计出符合设计要求的解决方案(2) 设计出单元电路(3) 利用EDA 软件对各单元电路及整体电路进行仿真(4)利用EDA 软件在ELB 电子课程设计实验板实现设计(5) 观察实验结果五、项目需用仪器设备名称以及所需主要元器件PC 机、EDA教学实验系统一台,带有(SPARTAN -3A XC3S200A芯片,LED 管, 七段数码管等)的实验板一块, 跳线、下载电缆一根,函数发生器。

六、实验任务与要求频率测量范围为10Hz~10MHz,用6只数码管以kHz为单位显示测量结果;有三个带锁按键开关(任何时候都只会有一个被按下)用来选择1S、0.1S和0.01S三个闸门时间中的一个;有一个按钮开关用来使频率计复位;有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。

数字频率计的相关技术指标如下:1、位数:测量频率通过LED数码管为六位十进制数显示。

2、测试频率范围为:10HZ-10MHZ。

3、计数器溢出时要有溢出标志over。

4、需要有闸门标志gate。

5、显示工作方式:a、用BCD七段共阳极数码管显示读数,只有在读数不发生跳变时才是正确的结果。

b、采用记忆显示方法,即在一次测试结束时,显示测试结果,此显示值一直保留到下次测量显示数到来,才将上次显示更新。

用第二次测试结果,更新显示值。

6、要求被测输入信号应是符合数字电路要求的脉冲波。

七、verilog设计环境介绍VerilogVerilog HDL是目前应用最为广泛的硬件描述语言.Verilog HDL可以用来进行各种层次的逻辑设计,也可以进数字系统的逻辑综合,仿真验证和时序分析等。

verilog简易数字频率计报告

verilog简易数字频率计报告

一、实验原理根据原理图,将计数器模块、显示模块、扫描模块、译码器模块等分别做出。

其原理是在1S内用待测信号给计数器计数,并在一秒结束时给计数器清零,计出来用缓存器缓存,在数码管中显示出来。

二、方案论证一、通过50M的时钟进行计数获得精密的1HZ——计数器用Verilog HDL 语言实现在1HZ为底电平时计数——门控电路用或门开启——1HZ为高电平时进行数据锁存与显示——利用Verilog HDL语言使前面的0不显示。

计数器用Verilog HDL语言在写代码时可以用复制粘贴的方法可以简便的实现。

通过50M的时钟进行计数获得精密的1HZ后只是经过很短的时间内进行计数器的清零及数据的琐存,并且得到的是1HZ的精密时钟。

把锁存的数据进行清0的转换后利用分时扫描,后通过数码管译码显示。

说明:Cnt9999:0000~9999计数器;Buffer:锁存器;Scan:扫描显示共8个模块三、实验步骤一、计数器模块计数器模块的仿真波形二、锁存模块利用32位的D触发器进行储存计数器送给它的数据。

在时钟为上升沿的时候触发保存数据。

锁存模块的源代码:module buffer_32(clr,clear,in,out);input clear,clr;input[31:0] in;output[31:0] out;reg[31:0] out;always@(posedge clear or negedge clr)if(!clr)out<=0;//else if(clear)out=in;else out<=in;endmodule三、转化清零模块波形仿真波形module cnt9999(clr,clk,q,c);input clr,clk;output c;output [15:0]q;reg c;reg [15:0]q;always @(posedge clk or negedge clr)beginif(!clr)begin q[15:0]<=0;c<=1'b0;endelse if(q[15:0]==16'H9999) begin q[15:0]<=0;c<=1'b1;endelse if(q[11:0]==12'H999)begin q[15:0]<=q[15:0]+12'H667;c<=1'b0;endelse if(q[7:0]== 8'H99)begin q[15:0]<=q[15:0]+8'H67;c<=1'b0;endelse if(q[3:0]== 4'H9)begin q[15:0]<=q[15:0]+4'H7;c<=1'b0;endelse begin q[15:0]<=q[15:0]+1'b1; c<=1'b0;endendendmodule四、扫描显示模块把存储的数据分别分给8个数码管,利用循环扫描即可显示出所要显示的数据。

VHDL语言设计数字频率计

VHDL语言设计数字频率计

数字频率计的设计一、频率计实现的功能要设计的频率计的测量范围为1MHz。

为了提高测量的精度,量程分为三档,分别是:10kHz、100kHz、1MHz。

并要求在测量频率大于或小于选择的量程时,频率计自动换档。

1、当读数大于999时,频率计处于超量程状态,下一次测量时,量程自动增加一档。

2、当读数小于009时,频率计处于欠量程状态,下一次测量时,量程自动减小一档。

3、当超出测量范围时,显示错误。

4、在计数时不显示数据,计数完成后只显示测量结果。

5、小数点位置要自动移位。

二、频率计各部分的分析在这个设计中,需要用计数器来进行计数,而且计数器在各个档位要被重复使用,在测量的过程中,计数允许时钟信号还要进行调整,故将计数器设计成一个单独的模块,提供计数值的输出。

显示结果包括数值显示,档位显示及溢出标志显示。

其中数值显示要用到三个数码管,实验箱上连在一起的三个数码管中,只有两个数码管内部接有译码器,因此我们自己还要在程序中为那个没有译码器的数码管再加一段七段译码器程序来显示结果。

档位标志由三个LED灯来显示,代替数码管上的小数点的功能。

溢出标志由两个LED灯来显示,其中一个显示结果溢出,另一个显示输入信号在测量范围之内。

该频率计的顶层逻辑电路原理图如图(1)所示:图(1)三、频率计各部分的设计和实现从上面的分析可以知道,频率计可以由三个模块来组成。

下面对各个模块的设计方法和实现方法进行详细说明。

1、时基进程的设计和实现在实际使用时,输入的信号是随意的,没有办法预知输入的频率。

因此选取频率计的时基是非常重要的。

在设计要求中,将量程分为三档,在某一档进行测量时,需要提供该档的时基。

在10kHz档,该档最大读数为9.99kHz,最小读数为0.01 kHz,所以要提供的时基是频率为0.01 kHz的脉冲。

同理,在100 kHz档上,要提供的时基应该是频率为0.1 kHz的脉冲。

在1 MHz档上,要提供的时基是频率为1 kHz的脉冲。

verilog hdl实验报告

verilog hdl实验报告

verilog hdl实验报告《Verilog HDL实验报告》Verilog HDL(硬件描述语言)是一种用于描述电子系统的硬件的语言,它被广泛应用于数字电路设计和硬件描述。

本实验报告将介绍Verilog HDL的基本概念和使用方法,并通过实验展示其在数字电路设计中的应用。

实验目的:1. 了解Verilog HDL的基本语法和结构2. 掌握Verilog HDL的模块化设计方法3. 熟悉Verilog HDL的仿真和综合工具的使用实验内容:1. Verilog HDL的基本语法和结构Verilog HDL是一种硬件描述语言,其语法和结构类似于C语言。

它包括模块定义、端口声明、信号赋值等基本元素。

在本实验中,我们将学习如何定义Verilog模块,并使用端口声明和信号赋值描述数字电路的行为。

2. Verilog HDL的模块化设计方法Verilog HDL支持模块化设计,可以将复杂的电路分解为多个模块,每个模块描述一个子电路的行为。

在本实验中,我们将学习如何设计和实现Verilog模块,并将多个模块组合成一个完整的数字电路。

3. Verilog HDL的仿真和综合工具的使用Verilog HDL可以通过仿真工具进行功能验证,也可以通过综合工具生成实际的硬件电路。

在本实验中,我们将使用Verilog仿真工具对设计的数字电路进行功能验证,并使用综合工具生成对应的硬件电路。

实验步骤:1. 学习Verilog HDL的基本语法和结构2. 设计一个简单的数字电路,并实现Verilog模块描述其行为3. 使用仿真工具对设计的数字电路进行功能验证4. 使用综合工具生成对应的硬件电路实验结果:通过本实验,我们学习了Verilog HDL的基本概念和使用方法,并成功设计和实现了一个简单的数字电路。

我们使用仿真工具对设计的数字电路进行了功能验证,并使用综合工具生成了对应的硬件电路。

实验结果表明,Verilog HDL在数字电路设计中具有重要的应用价值。

Verilog-数字频率计

Verilog-数字频率计

目录I第一章测量原理与方法所谓“频率”,就是周期性信号在单位时间(秒)内变化的次数。

若在一定的时间间隔T内计数,计得某周期性信号的重复变化次数为N,则该信号的频率可表达为:f = N / T所以测量频率就要分别知道N和T的值,由此,测量频率的方法一般有三种:测频方法、测周方法和等精度测量。

1.1 测频方法这种方法即已知时基信号(频率或周期确定)做门控信号,T为已知量,然后在门控信号有效的时间段内进行输入脉冲的计数,原理图如下图所示:图1-1 测频方法原理图首先,被测信号①(以正弦波为例)经过放大整形后转变成方波脉冲②,其重复频率等于被测信号频率。

把方波脉冲②加到闸门的输入端。

由一个高稳定的石英振荡器和一系列数字分频器组成了时基信号发生器,它输出时间基准(或频率基准)信号③去控制门控电路形成门控信号④,门控信号的作用时间T是非常准确的(由石英振荡器决定)。

门控信号控制闸门的开与闭,只有在闸门开通的时间内,方波脉冲②才能通过闸门成为被计数的脉冲⑤由计数器计数。

闸门开通的时间称为闸门时间,其长度等于门控信号作用时间T。

比如,时间基准信号的重复周期为1S,加到闸门的门控信号作用时间T亦准确地等于1S,即闸门的开通时间——“闸门时间”为1S。

在这一段时间内,若计数器计得N=100000个数,根据公式f = N / T,那么被测频率就是100000Hz。

如果计数式频率计的23显示器单位为“KHz”,则显示100.000KHz ,即小数点定位在第三位。

不难设想,若将闸门时间设为T=0.1S ,则计数值为10000,这时,显示器的小数点只要根据闸门时间T 的改变也随之自动往右移动一位(自动定位),那么,显示的结果为100.00Khz 。

在计数式数字频率计中,通过选择不同的闸门时间,可以改变频率计的测量范围和测量精度。

1.2 测周方法测周方法即:被测信号(频率或周期待测)做门控信号,T 为未知量,做门控信号T ,然后在门控信号有效的时间段内对时基信号脉冲计数,原理图如下图所示:图 1-2 测周方法原理图计数器测周的基本原理刚好与测频相反,即由被测信号控制主门开门,而用时标脉冲进行计数,所以实质上也是一种比较测量方法。

基于verilog语言的数字频率计设计

基于verilog语言的数字频率计设计

基于verilog语言的数字频率计设计以下是一种基于Verilog语言的数字频率计设计:```verilogmodule frequency_counterinput clk, //输入时钟input reset, //复位信号input enable, //启用信号input signal_in, //输入信号output [31:0] frequency //输出频率reg [31:0] count; //计数器if (reset) begincount <= 0;end else if (enable) beginif (signal_in) begincount <= count + 1;endendendassign frequency = count; //将计数器值赋给输出端口endmodule```在此设计中,我们使用一个32位的计数器(count)来计算输入信号(signal_in)的高电平脉冲数。

输入时钟(clk)用于同步计数器的操作。

复位信号(reset)用于将计数器复位为0。

启用信号(enable)用于控制计数器的启用与禁用。

当reset为高电平时,计数器会被复位为0。

当enable为高电平时,计数器会逐渐增加,直到输入信号(signal_in)为低电平。

此时,计数器的值会保持不变。

最终,计数器的值会通过输出端口frequency输出。

在这个设计中,frequency是一个32位的输出端口,表示输入信号的高电平脉冲数。

这个设计可以通过Verilog仿真工具进行仿真,并且可以综合到FPGA芯片中进行硬件实现。

Verilog-数字频率计

Verilog-数字频率计

摘要本文介绍了基于FPGA的数字频率计的设计方法,设计采用硬件描述语言Verilog,在软件开发平台ISE上完成,可以在较高速时钟频率(48MHz)下正常工作。

该数字频率计采用测频的方法,能准确的测量频率在10Hz到100MHz之间的信号。

使用ModelSim仿真软件对Verilog程序做了仿真,并完成了综合布局布线,最终下载到芯片Spartan3A上取得良好测试效果。

关键词:FPGA,Verilog,ISE,测频方法IAbstractThis paper introduces the design method of digital frequency meter based on FPGA,which use hardware description language-Verilog in software development platform ISE and can word in relatively high-speed clock of48MHz.The frequency meter uses the method of frequency measurement,which could accurately measure the frequency of signals between10Hz to100MHz.This system uses the simulation tool-ModelSim to run and debug the Verilog program,and design the circuit placement.A good result can be achieved when the program was burnt on the chip Spartan3A.KeywordsKeywords::FPGA,Verilog,ISE,Frequency MeasurementIIII目录第一章测量原理与方法................................................................................................................................................................................................441.1测频方法.............................................................................................................41.2测周方法.............................................................................................................51.3等精度测量法....................................................................................................51.4放大整形电路....................................................................................................61.5时基信号产生. (7)第二章任务要求..........................................................................................................................................................................................................................88第三章各模块功能及介绍....................................................................................................................................................................................883.1分频器..................................................................................................................84.2闸门选择器........................................................................................................104.3频率计数器........................................................................................................124.4锁存器................................................................................................................144.5扫描显示控制译码系统.. (15)第四章顶层电路及总体仿真............................................................................................................................................................................16164.1顶层电路.. (16)4.2总体仿真结果 (16)4.3测试结果 (19)第一章测量原理与方法所谓“频率”,就是周期性信号在单位时间(秒)内变化的次数。

在FPGA上用VHDL实现数字频率计 实验报告

在FPGA上用VHDL实现数字频率计 实验报告

数字系统设计实验报告一、设计要求:1、(1)频率测量范围10Hz~1MHz(2)量程自动转换,量程分为10KHz (1s) 、100KHz (0.1s) 、1MHz (10ms)三档。

转换规则如下:当读数大于9999时,频率计处于超量程状态,下一次测量时,量程自动增大一档;当读数小于0999时,频率计处于欠量程状态,下一次测量时,量程自动减小一档(3)数据采用记忆显示方式,即计数过程中不显示数据,待计数过程结束以后,显示计数结果,并将此显示结果保持到下一次计数结束。

(4)用发光二极管显示量程二、方案选则1测量原理:当预置门控信号为高电平时,启动计数器,被测信号(频率为fx) 计数当预置门控信号为低电平时,关闭计数器设在一次预置门控时间Tg内对被测信号计数值为Nx,则fx= Nx / Tg2具体方案:本设计中将2MHz的时钟分三次频,分别作为防抖电路的周期信号、显示模块片选信号、计数及锁存模块闸门信号。

防抖电路滤去窄波,显示模块用模4计数器来分别输出四位测量结果。

计数器通过在0.1s内对输入信号的高电平(发生期)进行计数来得出结果,并且为了达到换挡目的,测量时计六位数,通过结果选择档位进行输出。

二、原理图三、总体电路图四、流程图五、设计清单1、防抖电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY debounce ISPORT(key,cp: IN STD_LOGIC; --复位键imp:OUT STD_LOGIC); --去掉窄波后输出END debounce;ARCHITECTURE base OF debounce ISSIGNAL ql,q2:STD_LOGIC;BEGINPROCESS(cp)BEGINIF cp'event AND cp='1'THENq2<=ql; ql<=key;END IF;END PROCESS;imp<=ql AND NOT q2;END base;时序仿真波形:2、分频电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY dividefre4 ISPORT(cp_2m:IN STD_LOGIC; --2MHzcpl:OUT STD_LOGIC; --200Hzcp2:OUT STD_LOGIC; --25Hzcp3:OUT STD_LOGIC); --5HzEND dividefre4;ARCHITECTURE behavior OF dividefre4 IS SIGNAL tout:INTEGER RANGE 0 TO 4999; --5000分频SIGNAL toutl:INTEGER RANGE 0 TO 7; --8分频SIGNAL tout2:INTEGER RANGE 0 TO 39; --40分频SIGNAL cp_1:STD_LOGIC;SIGNAL cp_2:STD_LOGIC;SIGNAL cp_3:STD_LOGIC;SIGNAL cp:STD_LOGIC;BEGINPROCESS(cp_2m) –分出400Hz时钟BEGINIF(cp_2m'event AND cp_2m='1')THENIF tout=4999 THENtout<=0;ELSE tout<=tout+1;END IF;IF tout=2499 THENcp<='0';ELSE cp<='1';END IF;END IF;END PROCESS;PROCESS(cp) --200Hz时钟BEGINIF(cp'event AND cp='1')THENcp_1<=NOT cp_1;END IF;END PROCESS;PROCESS(cp_1) --25Hz时钟和5HzBEGINIF(cp_1'event AND cp_1='1')THENIF toutl=7 THEN toutl<=0;ELSE toutl<=toutl+1;END IF;IF toutl=3 THENcp_2<='1';ELSIF toutl=7 THEN cp_2<='0'; --8分频得25Hz END IF;IF tout2=39 THEN tout2<=0; --40分频得5HzELSE tout2<=tout2+1;END IF;IF tout2=39 THENcp_3<='1';ELSIF tout2=19 THEN cp_3<='0';END IF;END IF;END PROCESS;cpl<=cp_1;cp2<=cp_2;cp3<=cp_3;END behavior;仿真波形:(因原程序所分频倍数太大,所以这里将5000倍分频降至50倍)3、计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY fretest ISPORT(enable:IN STD_LOGIC; --使能cp3:IN STD_LOGIC; --闸门INput:IN STD_LOGIC; --被测信号reset:IN STD_LOGIC; --复位信号overflow:OUT STD_LOGIC; --大于1000kHzPlay0,playl,play2,play3:OUT INTEGER RANGE 0 TO 9;decimal:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--小数点,即档位END fretest;ARCHITECTURE behavior OF fretest ISSIGNAL r0_1,r1_1,r2_1,r3_1,r4_1,r5_1:INTEGER RANGE 0 TO 9;BEGINPROCESS(INput,enable,reset,cp3)BEGINIF enable='0'THEN NULL; --不测量ELSIF(input'event AND input='1')THEN --检测被测信号IF reset='1'THEN --同步复位,高电平有效overflow<='0';r0_1<=0;r1_1<=0;r2_1<=0;r3_1<=0;r4_1<=0;r5_1<=0;ELSIF cp3='0'THEN --闸门为0时清零Overflow<='0';r0_1<=0;r1_1<=0;r2_1<=0;r3_1<=0;r4_1<=0;r5_1<=0;ELSE --闸门为高电平计数r0_1<=r0_1+1;IF r0_1=9 THEN r1_1<=r1_1+1;r0_1<=0;IF(r1_1=9)THEN r2_1<=r2_1+1;r1_1<=0;IF(r2_1=9)THEN r3_1<=r3_1+1;r2_1<=0;IF(r3_1=9)THEN r4_1<=r4_1+1;r3_1<=0;IF(r4_1=9)THEN r5_1<=r5_1+1;r4_1<=0;IF(r5_1=9)THEN r5_1<=0;overflow<='1'; --大于1000kHz END IF;END IF;END IF;END IF;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(r5_1,r4_1)BEGINIF r5_1=0 AND r4_1=0 THEN --为小于9999Hz时play0<=r0_1;playl<=r1_1;play2<=r2_1;play3<=r3_1;decimal<="100";ELSIF r5_1=0 THEN --为几十kHz时play0<=r1_1;playl<=r2_1;play2<=r3_1;play3<=r4_1;decimal<="010";ELSE --为几百kHz时play0<=r2_1;playl<=r3_1;play2<=r4_1;play3<=r5_1;decimal<="001";END IF;END PROCESS;END behavior;仿真波形4、锁存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY frelatch ISPORT(reset:IN STD_LOGIC; --复位cp3:IN STD_LOGIC; --时钟Overflow: IN STD_LOGIC; --大于1000kHz表示play0,playl,play2,play3:IN INTEGER RANGE 0 TO 9;decimal:IN STD_LOGIC_VECTOR(2 DOWNTO 0);--小数点overlatch:OUT STD_LOGIC; --大于1000kHzp0latch,pllatch,p21atch,p31atch:OUT INTEGER RANGE 0 TO 9; delatch:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--小数点END frelatch;ARCHITECTURE behavior OF frelatch ISBEGINPROCESS(cp3,reset)BEGINIF reset='1'THENoverlatch<='0';p0latch<=0;pllatch<=0;p21atch<=0;p31atch<=0;delatch<=decimal;ELSIF cp3'event AND cp3='0'THENoverlatch<=overflow;p0latch<=play0;pllatch<=playl;p21atch<=play2;p31atch<=play3;delatch<=decimal;END IF;END PROCESS;END behavior;仿真波形5、显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY display ISPORT( cpl:IN STD_LOGIC; --时钟overflow:IN STD_LOGIC; --高于1000kHz标志p0,p1,p2,p3:IN INTEGER RANGE 0 TO 9;--BCD码输入 show:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--7段码输出 sel:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--位扫描码END dISplay;ARCHITECTURE behavior OF display ISSIGNAL count: INTEGER RANGE 0 TO 3;SIGNAL sel_1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(cpl)BEGINIF(cpl'event AND cpl='1') THENIF count=3 THEN count<=0;ELSEcount<=count+1;END IF;END IF;END PROCESS;PROCESS(count)BEGINCASE count ISWHEN 0=>sel_1<="1110"; --第0位WHEN 1=>sel_1<="1101"; --第1位WHEN 2=>sel_1<="1011"; --第2位WHEN 3=>sel_1<="0111"; --第3位END CASE;END PROCESS;PROCESS(overflow,sel_1)BEGINIF(overflow='1')THENshow<="0110111"; --高于1000kHz,显示HELSIF(sel_1(0)='0')THEN --第0位数码管译码CASE p0 ISWHEN 0=>show<="1111110";--显示0,a-gWHEN 1=>show<="0110000";--1WHEN 2=>show<="1101101";--2WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111";WHEN 9=>show<="1110011";END CASE;ELSIF(sel_1(1)='0')THEN --第1位译码 CASE p1 ISWHEN 0=>show<="1111110";WHEN 1=>show<="0110000";WHEN 2=>show<="1101101";WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111"; WHEN 9=>show<="1110011";END CASE;ELSIF(sel_1(2)= '0')THEN --第2位译码 CASE p2 ISWHEN 0=>show<="1111110";WHEN 1=>show<="0110000";WHEN 2=>show<="1101101";WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111";WHEN 9=>show<="1110011";END CASE;ELSIF(sel_1(3)='0')THEN --第3位译码 CASE p3 ISWHEN 0=>show<="1111110";WHEN 1=>show<="0110000";WHEN 2=>show<="1101101";WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111";WHEN 9=>show<="1110011";END CASE;END IF;END PROCESS; sel<=sel_1; END behavior; 仿真波形。

基于Verilog HDL的数字频率计设计及仿真实现

基于Verilog HDL的数字频率计设计及仿真实现

基于Verilog HDL的数字频率计设计及仿真实现基于veriloghdl的数字频率计设计及仿真实现摘要:在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都存有十分紧密的关系,因此频率的测量就变得更为重要。

测量频率的方法存有多种,其中电子计数器测量频率具备精度高、使用方便、测量快速,以及易于同时实现测量过程自动化等优点,就是频率测量的关键手段之一。

电子计数器测频存有两种方式:一就是轻易测频法,即为在一定闸门时间内测量被测信号的脉冲个数;二就是间接测频法,例如周期测频法。

轻易测频法适用于于高频信号的频率测量,间接测频法适用于于低频信号的频率测量。

本文阐释了为veriloghdl语言设计了一个直观的数字频率计的过程关键词:周期;eda;veriloghdl;数字频率计;波形仿真郭祥斌基于veriloghdl数字频率计设计与同时实现第-2-页共37页1引言在电子测量领域中,频率测量的精确度就是最低的,仅约10―10e-13数量级。

因此,在生产过程中许多物理量,比如温度、压力、流量、液位、ph值、振动、加速度、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计去测量,以提升精确度。

国际上数字频率计的分类很多。

按功能分类,测量某种单一功能的计数器。

如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为基础的计数器,其测时分辨力和准确度很高,可达ns数量级;特种计数器,它具有特种功能,如可逆计数器、予置计数器、差值计数器、倒数计数器等,用于工业和白控技术等方面。

数字频率计按频段分类(1)低速计数器:最高计数频率<10mhz;(2)中速计数器:最高计数频率10―100mhz;(3)高速计数器:最高计数频率>100mhz;(4)微波频率计数器:测频范围1―80ghz或更高。

单片机自问世以来,性能不断提升和健全,其资源又能够满足用户很多应用领域场合的须要,加之单片机具备集成度低、功能弱、速度快、体积小、功耗高、使用方便、价格低廉等特点,因此,在工业掌控、智能仪器仪表、数据采集和处置、通信系统、高级计算器、家用电器等领域的应用领域日益广为,并且正在逐步替代现有的多片微机应用领域系统。

频率测量及其Verilog HDL的实现方法

频率测量及其Verilog HDL的实现方法
被测信号经过放大整形后变为矩形脉冲clkx送人cpld器件时钟电路用来提供标准时钟脉冲elk用于闸门时间的计时可采用16m晶振配合门电路产生16m时钟送人cpldcpld内部设计两个计数器计数器1用来对16m时钟进行计数产生给定的闸门时36图1测频电路原理框图间t如ls此时计数值为16m同时用计数器2对整形后的被测信号进行计数
在 电子产品测试与维修领域 ,频率计是必不可少 的设备之一。测量频率有 两种方式 :直接测频法和间 接 测频法。直接测频法适用于高频 信号 的频率测量 ,
间接 测 频 法适 用 于任 何 频 段 的频率 测 量 。
j 频 原理 I l I
11 直 接测 量 法 .
即在一 定 闸 门时 间 ( 常设 定 为 l )内测 量 被测 通 s
王 宜 结
淮 南 师 范 学院 ( 安徽 淮 南 2 2 0 ) 301
摘要 : 测量频率的方法有直接测量和 间接测量两种 。 直接测量是测量给定的时间内被测信号的周期个数 ,
直接 测 量精 度 随 着测 量 的频 率 而 变化 。 间接 测 量是 通 过 测 量被 测 信 号 的 整数 个 周期 内所 占用 的 时 间 间接 求
图 1测 频 电 路 原 理 框 图
信号的脉冲个数。闸门时间的控制可以通过对给定频
率 的时钟 计 数来 实 现 , 频 电路 原理 框 图如 图 1 测 所示 。 被测 信 号 经 过放 大 整形 后 变 为矩 形 脉 冲 c x 人 l 送 k
间 T( l, 时 计 数值 为 1M ) 如 s此 6 ,同时 用计 数 器 2对
整形后的被测信号进行计数 。 假定在 T时间内测得脉
冲个数 为 N,则 被测 信号 的频 率 为 N r 由于直 接测 厂。 量 法存 在 正 负一 个 被测 时 钟 的误差 ,当被测 时钟频 率 很低 时 ,就 会 产生 很 大 的相 对误 差 。 比如 ,当被测 信 号 的频率 为 1H 时 ,则 测 得 的频 率 可 能是 9或 l 0z 0或

Verilog_HDL_数字频率计

Verilog_HDL_数字频率计

基于Verilog HDL数字频率计设计与实现课程设计任务书学院:计算机与通信工程学院专业:网络工程专业课程名称计算机组成原理课程设计时间2010~2011学年第一学期17~18周学生姓名郭祥斌指导老师陈沅涛题目主要内容:(1)数字频率计前端信号的放大整形处理(2)数字频率计的Verilog HDL设计实现(3)数字频率计的CPLD/FPGA制作要求:(1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义及现状研究分析。

(2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。

(3)学按要求编写课程设计报告书,能正确阐述设计和实验结果。

(4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。

应当提交的文件:(1)课程设计报告。

(2)课程设计附件(主要是源程序)。

课程设计成绩评定学院计算机通信工程专业网络工程班级网络08-02 班学号200858080223 学生姓名郭祥斌指导教师陈沅涛课程成绩完成日期2010年12月31日指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩指导教师签字年月日基于Verilog HDL数字频率计设计与实现学生:郭祥斌指导老师:陈沅涛摘要:在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。

电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。

直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。

EDA实验编程答案

EDA实验编程答案

实验三、数字频率计4位数字频率计控制模块modulefre_pm1(clk,rst,count_en,count_clr,load); input clk,rst;output count_en,count_clr,load;regcount_en,load;always @(posedge clk)begin if(rst) begin count_en<=0;load<=1;endelse begin count_en<=~count_en;load<=~count_en;endendassign count_clr=~clk&load; endmodule四位频率计计数子模块module a1(out,cout,en,clr,clk);input en,clr,clk;output[3:0] out;output cout;reg[3:0] out;always @(posedge clk or posedge clr)begin if(clr) out<=0;else if(en) begin if(out==9) out<=0;else out<=out+1;endendassign cout=((out==9)&en)?1:0; endmodule十六位锁存器模块module b1(qo,din,load);input load;input[15:0] din;output[15:0] qo;reg[15:0] qo;always @(posedge load)begin qo=din;endendmodule实验四英文之母显示电路module abcd(clr,clk,a,b,c,d,e,f,g,w); input clr,clk;output a,b,c,d,e,f,g,w;reg[3:0] out;reg a,b,c,d,e,f,g,w;always @(posedge clk or posedge clr) begin if(clr) out<=0;elsebegin if(out==15) out<=0;else out<=out+1;endendalways @(out)begincase(out)4'h0:{a,b,c,d,e,f,g}=7'b1111110;4'h1:{a,b,c,d,e,f,g}=7'b0110000;4'h2:{a,b,c,d,e,f,g}=7'b1101101; 4'h3:{a,b,c,d,e,f,g}=7'b1111001;4'h4:{a,b,c,d,e,f,g}=7'b0110011;4'h5:{a,b,c,d,e,f,g}=7'b1011011;4'h6:{a,b,c,d,e,f,g}=7'b1011111;4'h7:{a,b,c,d,e,f,g}=7'b1110000;4'h8:{a,b,c,d,e,f,g}=7'b1111111;4'h9:{a,b,c,d,e,f,g}=7'b1110011;4'ha:{a,b,c,d,e,f,g}=7'b1110111;4'hb:{a,b,c,d,e,f,g}=7'b0011111;4'hc:{a,b,c,d,e,f,g}=7'b1001110;4'hd:{a,b,c,d,e,f,g}=7'b0111101;4'he:{a,b,c,d,e,f,g}=7'b1001111;4'hf:{a,b,c,d,e,f,g}=7'b1000111; default:{a,b,c,d,e,f,g}=7'b0000001; endcasew=1;endendmodule实验五序列检测器module lychy(x,z,clk,reset,state);input x,clk,reset;output z;output[3:0]state; reg[3:0]state;reg z;parameters0='b000,s1='b001,s2='b010,s3='b011,s4='b10 0,s5='b101,s6='b110,s7='b111;always @(posedge clk)begin if(reset) begin state<=s0;z<=0;end else casex(state)s0: beginif(x==0) begin state<=s0;z<=0;endelse begin state<=s1;z<=0;endends1: beginif(x==0) begin state<=s0;z<=0;endelse begin state<=s2;z<=0;endends2: beginif(x==0) begin state<=s0;z<=0;endelse begin state<=s3;z<=0;endends3: beginif(x==0) begin state<=s4;z<=0;endelse begin state<=s3;z<=0;endends4: beginif(x==0) begin state<=s5;z<=0;endelse begin state<=s1;z<=0;endends5: beginif(x==0) begin state<=s0;z<=0;endelse begin state<=s6;z<=0;endends6: beginif(x==0) begin state<=s7;z<=1;endelse begin state<=s2;z<=0;endends7: beginif(x==0) begin state<=s0;z<=0;endelse begin state<=s1;z<=0;endenddefault: state<=s0;endcaseendendmodule实验六、数字频率计的Verilog HDL语言实现module sdfrequent(clk,reset,signal_in,fout);input clk,reset,signal_in;output[23:0] fout;reg[23:0] fout;wire count_en,count_clr,load;reg[23:0] ffout;wire cout0,cout1,cout2,cout3,cout4,cout5;fre_ctrl fre_ctrl0(clk,reset,count_en,count_clr,load);count10 count0(ffout[3:0],cout0,count_en,count_clr,signal_in); count10 count1(ffout[7:4],cout1,count_en,count_clr,cout0); count10 count2(ffout[11:8],cout2,count_en,count_clr,cout1); count10 count3(ffout[15:12],cout3,count_en,count_clr,cout2);count10 count4(ffout[19:16],cout4,count_en,count_clr,cout3); count10 count5(ffout[23:20],cout5,count_en,count_clr,cout4); latch_24 latch0(fout,ffout,load);endmodulemodule count10(out,cout,en,clr,clk);input en,clr,clk;output[3:0] out;output cout;reg[3:0] out;always @(posedge clk or posedge clr)begin if(clr) out<=0;else if(en)begin if(out==9) out<=0;else out<=out+1;endendassign cout=((out==9)&en)?1:0;endmodulemodule fre_ctrl(clk,rst,count_en,count_clr,load);input clk,rst;output count_en,count_clr,load;reg count_en,load;always @(posedge clk)begin if(rst)begin count_en=0;load=1;endelse begin count_en=~count_en;load=~count_en;endendassign count_clr=~clk&load;endmodule方法二module sdf(q0,clk,clr,in);input clk,clr;input in;output[23:0] q0;reg[23:0] q0;reg [23:0] out;wire count_clr,load,cout1,cout2,cout3,cout4,cout5;fre_ctrl szfre_ctrl(clk,rst,count_en,count_clr,load);count10 szcount10_1(out[3:0],cout1,en,clr,in);count10 szcount10_2(out[7:4],cout2,en,clr,cout1);count10 szcount10_3(out[11:8],cout3,en,clr,cout2);count10 szcount10_4(out[15:12],cout4,en,clr,cout3); count10 szcount10_5(out[19:16],cout5,en,clr,cout4); count10 szcount10_6(out[23:20],cout6,en,clr,cout5);latch_24 szlatch_24(q0,out,load);endmodulemodule fre_ctrl(clk,rst,count_en,count_clr,load);input clk,rst;output count_en,count_clr,load;reg count_en,load;always @(posedge clk)begin if(rst) begin count_en=0;load=1;endelse begin count_en=~count_en;load=~count_en;endendassign count_clr=~clk&load;endmodulemodule count10(out,cout,en,clr,clk);input en,clr,clk;output[3:0] out;output cout;reg[3:0] out;always @(posedge clk or posedge clr)begin if(clr) out<=0;else if(en) begin if(out==9);else out<=out+1;end endassign cout=((out==9)&en)?1:0;endmodulemodule latch_24(q0,din,load);input load;input[23:0] din;output [23:0] q0;reg[23:0] q0;always @(posedge load)begin q0=din;endendmodule实验一八三译码器和模13BCD码实验二、数字跑表图(1)数字跑表原理图图(2)模100B计数器原理图及仿真图图(3 )模60计数器原理图实验七脉冲发生器module pulse(in,clk,out);input in,clk;output out;reg out;reg[1:0] counter;reg flag;always@(posedge clk)beginif (in)beginif(!flag) begin out=1;counter=counter+1; endif (counter==3) begin out=0;flag=1; endendelsebegin flag=0;counter=0;out=0; endendendmodule用状态机实现模7计数器module counter_fsm(clk,clear,co,q);input clk,clear;output co;output[3:0] q;reg co;reg[3:0] current,next,q;parameter ST0=0,ST1=1,ST2=2,ST3=3,ST4=4,ST5=5,ST6=6; always@(posedge clk)beginif(!clear) begin q=0;co=0;next=ST1;end else begincase(current)ST0:begin q=current;co=0;next=ST1;end ST1:begin q=current;co=0;next=ST2;end ST2:begin q=current;co=0;next=ST3;end ST3:begin q=current;co=0;next=ST4;end ST4:begin q=current;co=0;next=ST5;end ST5:begin q=current;co=0;next=ST6;end ST6:begin q=current;co=1;next=ST0;end default: next=ST0;endcase。

数字频率计verilogHDL代码

数字频率计verilogHDL代码
input lock;
input[3:0]
datain1,datain2,datain3,datain4,datain5,datain6,datain7,datain8;
output[3:0]
dataout1,dataout2,dataout3,dataout4,dataout5,dataout6,dataout7,dataout8;
testctl m1(clk,clr_cnt,clken,lock,div2clk);
bwjsq m2(fx,clr_cnt,clken,dataout1,dataout2,dataout3,dataout4,dataout5,dataout6,dataout7,dataout8,);
lock m3(lock,dataout1,dataout2,dataout3,dataout4,dataout5,dataout6,dataout7,dataout8,dataout11,dataout12,dataout13,dataout14,dataout15,dataout16,dataout17,dataout18);
jsq m1(clk,reset,clken,dataout1,co1);
jsq m2(co1,reset,clken,dataout2,co2);
jsq m3(co2,reset,clken,dataout3,co3);
jsq m4(co3,reset,clken,dataout4,co4);
end
end
endmodule
reg co;
always@(posedge clk or posedge reset)
begin
if(reset)

基于Verilog HDL数字频率计的设计

基于Verilog HDL数字频率计的设计

EDA设计课程论文题目基于Verilog HDL数字频率计的设计学院通信学院专业班级学生姓名大彬哥指导教师大陆会2013年5月17日EDA设计基础实验论文摘要频率是常用的物理量, 在实际测量过程中总是尽可能地把被测参量转换成频率参量进行测量。

例如工程中用振弦式方法测量力、时间测量、速度控制等, 都可转化为频率测量。

随着科学技术与计算机应用的不断发展, 以单片机作为核心的测量控制系统层出不穷。

在被测信号中, 较多的是模拟和数字开关信号, 此外还经常遇到以频率为参数的测量信号, 例如流量、转速、晶体压力传感器以及经过参变量一频率转换后的信号等等。

因此, 频率测量是电子测量技术中最基本的测量之一。

电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。

直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。

本文运用现代电子设计工具, 采用V er ilogHDL语言在CPLD器件上实现了简易数字频率计的设计。

在10Hz ~ 100MHz 频率测量范围内, 该频率计能根据输入被测频率信号, 自动调整测试量程进行测试并给出测试结果的BCD 码及七段LED 译码显示。

具有体积小、可靠性高、功耗低的特点。

关键词:数字频率计 Verilog_HDL 分频计数IEDA设计基础实验论文AbstractFrequency is a common physical quantities, in actual measurement process is always possible, the measured parameters are converted into the frequency parameter measurement. For example, engineering with vibrating method for measuring force, measurement of time, velocity control, can all be converted into frequency measurement. With the development of science and technology and the continuous development of computer applications, to single-chip microcomputer as the core control system for measuring the emerge in an endless stream. In the measured signal, more is analog and digital switch signal, in addition also frequently encountered with a frequency parameter measurement signal, such as flow rate, rotational speed, crystal pressure sensor and the variable frequency converted signal and so on. Therefore, the frequency measurement is the electronic measurement technology in the most fundamental measurement of.Electronic counter frequency measurement in two ways : one is the direct frequency measurement Law, or within a certain time gates of measured signal pulse number; two is the indirect frequency measurement Law, such as cycle frequency measurement method. Direct frequency measurement Law is applicable to the high frequency signal frequency measurement, indirect frequency measurement Law is applicable to low-frequency signals in the frequency measurement. The use of modern electronic design tool, using V Er ilogHDL language in CPLD device achieves simple digital frequency meter design. In the10Hz100MHz frequency measurement range, the frequency meter according to input the measured frequency signal, automatic adjustment and test range tested and the test results are given in the BCD code and the seven LED decoding display. Has the advantages of small volume, high reliability, low power consumption.Keywords: digital frequency meter Verilog_HDL frequency countingIIEDA设计基础实验论文目录摘要 (I)ABSTRACT (II)第1章绪论 (1)1.1数字频率计概况 (1)1.2本文研究内容 (1)1.3目的与意义 (2)第2章系统设计方案 (3)2.1数字频率计总体设计方案 (3)2.1.1 放大整形 (3)2.1.2 SW1、SW2、SW3按键 (3)2.1.3 标准时钟 (3)2.1.4 LED显示模块 (3)2.2系统的参数 (4)2.2.1 频率测量 (4)2.2.2 频率测量方法 (4)2.2.3 功能及技术指标 (4)第3章数字频率计的基本原理 (6)3.1计数模块COUNTER (6)3.2门控模块GATE_CONTROL (6)3.3分频模块FDIV (7)3.4寄存器模块FLIP_LATCH (7)3.5多路选择模块DATA_MUX (8)3.6动态位选模块DISPSELECT (9)3.7BCD译码模块DISPDECODER (11)第4章数字频率计软件设计 (15)4.1软件实现功能综述 (15)4.2多路选择模块DATA_MUX的设计 (15)4.2.1 多路选择模块data_mux的接口电路 (15)4.2.2 多路选择模块data_mux程序设计 (16)4.3动态位选模块DISPSELECT的设计 (17)4.3.1 动态位选模块dispselec的接口电路 (17)4.3.2 动态位选模块dispselec的程序设计 (17)IIIEDA设计基础实验论文4.4BCD译码模块DISPDECODER的设计 (18)4.4.1 BCD译码模块dispdecoder的接口电路 (18)4.4.2 BCD译码模块dispdecoder的程序设计 (19)第5章数字频率计系统的仿真分析 (23)5.1系统原理图 (23)5.2多路选择模块DATA_MUX的仿真分析 (24)5.3动态位选模块DISPSELEC的仿真分析 (25)5.4BCD译码模块DISPDECODER的仿真分析 (25)5.5软硬件调试 (26)结论 (28)参考文献 (29)IVEDA设计基础实验论文第1章绪论1.1数字频率计概况频率是常用的物理量, 在实际测量过程中总是尽可能地把被测参量转换成频率参量进行测量。

数电编程实验报告

数电编程实验报告

实验名称:基于Verilog HDL的数字频率计设计实验日期:2023年11月1日实验目的:1. 掌握Verilog HDL编程语言的基本语法和编程技巧。

2. 理解数字频率计的工作原理和设计方法。

3. 培养团队合作和问题解决能力。

实验内容:本次实验要求设计一个基于Verilog HDL的数字频率计,能够测量输入信号的频率,并将结果显示在数码管上。

实验原理:数字频率计的基本原理是利用计数器对输入信号的周期进行计数,然后通过计算得到频率。

具体步骤如下:1. 使用一个时钟信号作为计数器的时钟输入。

2. 计数器在时钟信号的作用下对输入信号的周期进行计数。

3. 当计数器达到预设的值时,停止计数,并计算出频率。

4. 将计算出的频率显示在数码管上。

实验步骤:1. 环境搭建:在Quartus II软件中创建一个新的工程,并添加Verilog HDL源文件。

2. 模块设计:设计一个名为`frequency_counter`的模块,该模块包含以下功能:- 输入信号:时钟信号`clk`、复位信号`reset`、输入信号`signal`。

- 输出信号:计数器输出`count`、频率输出`frequency`。

- 功能:对输入信号的周期进行计数,并计算出频率。

3. 数码管驱动模块设计:设计一个名为`segment_display`的模块,该模块包含以下功能:- 输入信号:计数器输出`count`、数码管段选信号`seg`。

- 输出信号:数码管显示信号`display`。

- 功能:将计数器输出转换为数码管显示信号。

4. 顶层模块设计:设计一个名为`top`的顶层模块,该模块包含以下功能:- 输入信号:时钟信号`clk`、复位信号`reset`、输入信号`signal`。

- 输出信号:数码管显示信号`display`。

- 功能:调用`frequency_counter`和`segment_display`模块,实现数字频率计的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六 数字频率计的Verilog HDL 语言实现
一、实验目的:
1、掌握较复杂数字电路或系统的纯Verilog HDL 实现方法;
2、体会纯Verilog HDL 语言输入设计与原理图输入设计的差别。

二、实验原理:
数字频率计是用来测量输入信号的频率并显示测量结果的系统。

数字频率计的原理示意图如图3-1所示。

一般基准时钟的高电平的持续时间为s T 10 ,若在这0T 内被测信号的周期数为N 则被测信号的频率就是N ,选择不同的0T ,可以得到不同的测量精度。

一般0T 越大,测量精度越高,但一次的测量时间及频率计所需的硬件资源也增加。

三、设计任务与要求:
1、设计一个6位频率计,测量范围从1Hz 到99 99 99Hz ,测量结果用6个数码管显示,基准时钟频率为1Hz ;
2、只显示测量结果,中间计数过程不显示;结果更新时间2秒一次;
3、频率计只设一个复位键,按下该键(reset=0)系统复位,释放该键(reset=1)系统工作,测量并显示结果。

4、显示用静态方式;
5、用Verilog HDL 实现上述要求的频率计。

四、设计提示:
1、用Verilog HDL 输入设计与用原理图输入设计相比,当设计的系统比较复杂时,前者有更大的优越性,且设计越复杂,前者的优点越突出;
2、本设计可用8个always 块来实现,8个块的基本功能如下:
① always@(posedge clock_1Hz) // 把1Hz 基准时钟分频;
② always@(posedge signal_in) // 当count_en=1时对输入信号signal-in 计数(个位);
③ always@ (……) // 对signal_in 计数(十位);
④ always@ (……) // 对signal_in 计数(百位);
⑤ always@ (……) // 对signal_in 计数(千位);
⑥ always@ (……) // 对signal_in 计数(万位);
⑦ always@ (……) // 对signal_in 计数(十万位);
⑧ always@ (……) // 在count_en 下沿锁存计数结果。

3、本设计的难点在于8个敏感变量表的选择和相互配合;第2个模块也是
难点,根据count_en信号确定什么时候计数器开始计数,什么时候计数器清零。

五、实验报告要求:
1、给出设计源程序并注释;
2、给出仿真结果;
3、心得体会。

六、思考题:
1、本设计的测量结果在6个数码管上显示,若采用静态显示的方式,每位显示需4根输出线,共需24根据输出线;若用动态扫描方式,只需6+7=13根线。

什么叫动态扫描显示方式?你能写出动态扫描输出显示的程序吗?
2、本设计与教材《数字系统设计与Verilog HDL语言》第203页的设计有何不同?。

相关文档
最新文档