基于FPGA数字频率计 (可测占空比)

合集下载

fpga测占空比技术文档

fpga测占空比技术文档

方波占空比测量龙树东一、设计要求:1、能测量方波占空比。

2、范围5%—95%。

二、设计达到的参数:1、测量占空比范围为DDS输出的20%—80%。

2、频率范围为3hz—100khz。

3、误差:频率低的情况下没有误差频率到8k以上小数点第一位有跳动。

三、测量数据:设计原理:被测信号和标准时钟经过D触发器得到一与被测信号等脉宽且与标准时钟同相的信号,用标准时钟对D触发器输出的信号的高低电平分别计数,运用公式算出占空比:占空比=高电平计数/(高电平计数+低电平计数)。

附件:分频器模块:module div_clk(reset,clk,clk_1mhz,clk_1khz,clk_12864);input reset,clk;output reg clk_1mhz,clk_1khz,clk_12864;reg[31:0] counter1,counter2,counter3;always@(posedge clk or negedge reset)beginif(!reset)begincounter1<=0;counter2<=0;counter3<=0;clk_1mhz<=0;clk_1khz<=0;clk_12864<=0;endelse beginif(counter1==1) begin counter1<=0;clk_1mhz<=~clk_1mhz; endelse begin counter1<=counter1+1; endif(counter2==24999) begin counter2<=0;clk_1khz<=~clk_1khz; endelse begin counter2<=counter2+1; endendendendmoduleD触发器模块:module D_chufaqi(clk, gatein, gateout);input clk;input gatein;output gateout;reg gateout;always @(posedge clk)begingateout <= gatein;endendmodule计数器模块:module cnt(clk,rst_n,catin,dat_out);input clk,rst_n,catin;output [23:0] dat_out;//首先对脉冲输入进行同步处理reg syn1;reg syn2;always @ (posedge clk)beginsyn1 <= catin;syn2 <= syn1;endreg [23:0] ratio;wire catin_pos;//获得输入脉冲的上升沿assign catin_pos = syn2 & (~syn1);//计算高低电平宽度reg [23:0] Pon_reg,Poff_reg;always @ (negedge rst_n or posedge clk)beginif(!rst_n)beginPon_reg <= 24'b0;Poff_reg <= 24'b0;endelse if(catin_pos)beginratio=1+1000*Pon_reg/(Poff_reg+Pon_reg);Pon_reg <= 24'b0;Poff_reg <= 24'b0;endelse if(syn1)beginPon_reg <= Pon_reg + 1'b1;endelsebeginPoff_reg <= Poff_reg + 1'b1;endendreg [5:0] cnt;reg [7:0] ge,shi,bai,qian;always @ (ratio)if(cnt==20) begincnt<=0;// qian <=ratio/1000%10+"0";bai <=ratio/100%10+"0";shi <=ratio/10%10+"0";ge <=ratio%10+"0";endelse begincnt<=cnt+1;endassign dat_out={bai[7:0],shi[7:0],ge[7:0]};endmodule12864液晶显示模块:/***********************12864底层文件************************/module lcd_12864(clk_r,rst_n,en,rs,rw,dat,lcd_data);input clk_r,rst_n;input [23:0] lcd_data;output [7:0] dat;output rs,rw,en;reg e;reg rs;//reg clk_r,clk_o; //分频后的时钟reg [7:0] dat;reg [7:0] dat1;reg [7:0] dat2;reg [1:0] cnt;reg [15:0] count; //分频计数器reg [6:0] i; //状态机变量/*always @(posedge clk) //分频部分if(!rst_n) count = 0;else begincount = count + 1'b1;if(count == 16'h000f)clk_r=~clk_r;end*/always @(posedge clk_r or negedge rst_n )if(!rst_n) begini <=0;rs<=0;e <=0;dat<=0;endelsecase(i)0: begin rs<=0; dat<=8'h30; i<=i+1'b1; end //lcd初始化1: begin rs<=0; dat<=8'h0c; i<=i+1'b1; end2: begin rs<=0; dat<=8'h6; i<=i+1'b1; end3: begin rs<=0; dat<=8'h81; i<=i+1'b1; end4: begin rs<=1; dat<=8'hd3; i<=i+1'b1; end //玉5: begin rs<=1; dat<=8'hf1; i<=i+1'b1; end6: begin rs<=1; dat<=8'hc1; i<=i+1'b1; end //林7: begin rs<=1; dat<=8'hd6; i<=i+1'b1; end8: begin rs<=1; dat<=8'hca; i<=i+1'b1; end //师9: begin rs<=1; dat<=8'ha6; i<=i+1'b1; end10: begin rs<=1; dat<=8'hb7; i<=i+1'b1; end //范11: begin rs<=1; dat<=8'hb6; i<=i+1'b1; end12: begin rs<=1; dat<=8'hd1; i<=i+1'b1; end //学13: begin rs<=1; dat<=8'ha7; i<=i+1'b1; end14: begin rs<=1; dat<=8'hd4; i<=i+1'b1; end //院15: begin rs<=1; dat<=8'hba; i<=i+1'b1; end16: begin rs<=0; dat<=8'h90; i<=i+1'b1; end //显示第二行17: begin rs<=1; dat<=8'hb5; i<=i+1'b1; end //电18: begin rs<=1; dat<=8'he7; i<=i+1'b1; end19: begin rs<=1; dat<=8'hd7; i<=i+1'b1; end //子20: begin rs<=1; dat<=8'hd3; i<=i+1'b1; end21: begin rs<=1; dat<=8'hb4; i<=i+1'b1; end //创22: begin rs<=1; dat<=8'hb4; i<=i+1'b1; end23: begin rs<=1; dat<=8'hd0; i<=i+1'b1; end //新24: begin rs<=1; dat<=8'hc2; i<=i+1'b1; end25: begin rs<=1; dat<=8'hca; i<=i+1'b1; end //实26: begin rs<=1; dat<=8'hb5; i<=i+1'b1; end27: begin rs<=1; dat<=8'hd1; i<=i+1'b1; end //验28: begin rs<=1; dat<=8'he9; i<=i+1'b1; end29: begin rs<=1; dat<=8'hca; i<=i+1'b1; end //室30: begin rs<=1; dat<=8'hd2; i<=i+1'b1; end31: begin e<=0; rs<=0; dat<=(8'h88+1); i<=i+1'b1; end //定位第三行,重新把en拉低32: begin rs<=1; dat<=8'hd5; i<=i+1'b1; end //占33: begin rs<=1; dat<=8'hbc; i<=i+1'b1; end34: begin rs<=1; dat<=8'hbf; i<=i+1'b1; end //空35: begin rs<=1; dat<=8'hd5; i<=i+1'b1; end36: begin rs<=1; dat<=8'hb1; i<=i+1'b1; end //比37: begin rs<=1; dat<=8'hc8; i<=i+1'b1; end38: begin rs<=1; dat<=8'ha1; i<=i+1'b1; end //:39: begin rs<=1; dat<=8'hc3; i<=i+1'b1; end40: begin rs<=1; dat<=lcd_data[23:16]; i<=i+1'b1; end41: begin rs<=1; dat<=lcd_data[15 :8]; i<=i+1'b1; end42: begin rs<=1; dat<="."; i<=i+1'b1; end //%43: begin rs<=1; dat<=lcd_data[7 :0]; i<=i+1'b1; end //%44: begin rs<=1; dat<=8'ha3; i<=i+1'b1; end //%45: begin rs<=1; dat<=8'ha5; i<=i+1'b1; end46:begin rs<=0; dat<=8'h00;if(cnt!=2'h2)begine<=0; cnt<=cnt+1'b1; i<=1'b0;endelse begine<=1; i<=6'd31;endenddefault: i<=1'b0;endcaseassign en=clk_r|e;assign rw=0;Endmodule综合模块:。

基于FPGA的数字频率计设计

基于FPGA的数字频率计设计

基于FPGA的数字频率计设计摘要数字频率计是一种常用的电子测量仪器,在工程领域中广泛应用。

与传统的模拟频率计相比,数字频率计具有精度高、响应快、体积小等优点,在现代电子技术领域中广泛应用。

本文将介绍如何使用FPGA设计数字频率计,并通过示例演示FPGA的应用。

介绍数字频率计是一种将输入信号的频率转换成计数信号输出的电子工具,它可以测量频率、周期和时间间隔等参数。

频率计通常采用数字进制计数方式,其测量精度取决于计数器的精度和时钟频率。

在电子电路测试、无线通信、音频、视频等领域中,数字频率计起着至关重要的作用。

FPGA(Field Programmable Gate Array)是一种具有灵活性、可编程性和高速性的逻辑芯片,适用于数字电路的设计和实现。

与ASIC(Application-Specific Integrated Circuit)相比,FPGA具有短设计周期、可重构、低成本等特点。

在数字系统中,FPGA作为计数器的电子部件,使得数字频率计的设计变得更加灵活和简便。

FPGA数字频率计设计系统框图FPGA数字频率计的系统框图如下:FPGA数字频率计系统框图FPGA数字频率计系统框图如图所示,FPGA数字频率计的输入端连接到待测信号,经过放大和滤波处理后送入计数器中进行计数,计数器输出的计数值存储在FPGA的存储器中并进行处理,最终形成数字频率读数并显示在数码管上。

输入端FPGA数字频率计的输入端通常使用低噪声前置放大器和有限带宽滤波器的组合,以保证待测信号的准确度和稳定性。

实际设计中应根据待测信号的具体情况选择合适的放大系数和滤波器参数。

计数器数字频率计的计数器是FPGA实现的核心部件。

计数器根据输入端计数触发信号进行计数,并将计数器输出的计数值存储在FPGA的存储器中。

计数器的计数值越大,频率读数的分辨率就越高。

在FPGA中,计数器可以采用累加计数器或移位寄存器计算,具体实现取决于设计者的需求和性能要求。

基于FPGA的数字频率计

基于FPGA的数字频率计
图3.6EPM570T1445N器件的管脚图
EPM570T1445N器件属于Altera公司MAX7000S系列,EPM570T144C5N器件包含一个二维行和列的架构实现自定义逻辑。行和列的互连提供信号互连之间的逻辑阵列块(实验室)。逻辑阵列组成的实验室,10个逻辑单元,在每个实验室(LE)之间。一个LE是一小单位逻辑用户提供逻辑功能的有效实施。实验室分为行和列上的设备。多轨互连实验室提供快速颗粒之间的时间延迟。括约肌之间的快速路由提供最低的时间延迟逻辑电平的增加与全球路由互连结构。MAX II器件的I / O引脚由我I/ O单元(雇主组织)在劳工顾问委员会的目的所在行和列周围设备的边缘。每个雇主组织包含一个双向I / O缓冲区的多种高级功能。I / O引脚支持施密特触发输入和各种单端标准,例如66兆赫,32位PCI,和LVTTL等级。MAX II器件提供了一个全局时钟网络。全球时钟网络的组成4全局时钟线,在整个整个设备驱动器,提供对所有时钟内资源的设备。全球时钟线也可用于控制信号如明确,预设,或输出使能。如图为EPM570T1445N的逻辑阵列块。
CPLD的LCD_D[7..0]作为总线通过与外部接插件连接,实现与液晶显示屏相连。LCD_DD0-LCD_DD7,以及LCD_RES_X0-LCD_RES_X3、LCD_RESET、片选线等等外部都连接一上拉电阻。如图3.4.2所示。
图3.4.1液晶显示1
图3.4.2 上拉电阻
3.5测频复位电路。
方案二:
2.3 方案选择
3单元模块电路设计
3.1电路设计总体框图
本设计主要由8个部分组成,以CPLD芯片部分为核心展开,待测信号输入,由外部电源,复位电路,单片机电路,液晶显示,标准时钟以及JTAG下载各个单元配合起来实现测试频率并在液晶显示屏上实时显示出数字频率信号。

基于FPGA的等精度数字频率计总结

基于FPGA的等精度数字频率计总结

作品总结智冰冰前几天做了数字频率计,虽然做的不是太好吧,但是还算是做出来了,我在这里就对大家分享一下我的制作过程,希望想做频率计的朋友能够少走一些弯路,如果有不好的地方请大家提出来,如果有更好的方法也可以和我交流交流。

拿到这个题目我首先看到题目要求频率计要能测频率、测周期、测占空比,所以我们要准备的东西就要有FPGA板,51开发板(主要利用数码管模块)、直流稳压电源、数字信号发生器。

准备好这些东西之后就要考虑作品方案问题了。

确立作品方案是整个作品中比较重要的一部分,如果作品方案不合理,就不会做出来比较好的作品。

在确立数字频率计设计方案的时候,首先就要确定用什么方法实现测频率、测周期、测占空比,查找了一些资料,大概知道了一下三种方法:(1)测频率法:测频率法是用脉冲信号产生一个固定的闸门时间t,在固定的闸门时间t内对被测信号进行计数,然后运算求出被测信号频率、周期,但是在闸门时间t内不能保证被测信号计数为整数个,这就会让被测信号产生±1的误差,所以当被测信号频率高时测量比较准确,但是测低频时误差就比较大了。

(2)测周期法:测频率法是用被测信号作为门控信号,在闸门时间t内对脉冲信号进行计数,然后运算求出被测信号频率、周期,但是同样的在闸门时间t内不能保证脉冲信号计数为整数个,这就会让脉冲信号产生±1的误差,所以当被测信号频率低时,相对来说比较准确,但对于高频来说误差就大了。

(3)等精度法:等精度测量是用脉冲信号产生一个预置闸门,然后在预置闸门时间内通过被测信号上升沿产生一个实际闸门,这样实际闸门刚好是被测信号的整数倍。

在计数允许时间内,同时对脉冲信号和被测信号进行计数,再通过数学公式推导得到被测信号的频率。

由于门控信号是被测信号的整数倍,就消除了对被测信号产生的±l周期误差,但是会产生对脉冲信号±1周期的误差。

但是相对测频率法来说误差相对较小。

确立好自己的设计方案后,就要设计自己的程序了。

基于 fpga 的数字频率计的设计与实现

基于 fpga 的数字频率计的设计与实现

基于 FPGA 的数字频率计的设计与实现随着现代科技的不断发展,我们对数字信号处理的需求也越来越高。

数字频率计作为一种用来测量信号频率的仪器,在许多领域有着广泛的应用,包括无线通信、雷达系统、声音处理等。

在这些应用中,精确、高速的频率测量常常是至关重要的。

而基于 FPGA 的数字频率计正是利用了 FPGA 高速并行处理的特点,能够实现高速、精确的频率计算,因此受到了广泛关注。

本文将从设计思路、硬件实现和软件调试三个方面,对基于 FPGA 的数字频率计的设计与实现进行详细讲解。

一、设计思路1.1 频率计原理数字频率计的基本原理是通过对信号进行数字化,然后用计数器来记录单位时间内信号的周期数,最后根据计数器的数值和单位时间来计算信号的频率。

在 FPGA 中,可以通过硬件逻辑来实现这一过程,从而实现高速的频率计算。

1.2 FPGA 的优势FPGA 作为一种可编程逻辑器件,具有并行处理能力强、时钟频率高、资源丰富等优点。

这些特点使得 FPGA 在数字频率计的实现中具有天然的优势,能够实现高速、精确的频率测量。

1.3 设计方案在设计数字频率计时,可以采用过采样的方法,即对输入信号进行过取样,得到更高精度的测量结果。

还可以结合 PLL 锁相环等技术,对输入信号进行同步、滤波处理,提高频率测量的准确性和稳定性。

二、硬件实现2.1 信号采集在 FPGA 中,通常采用外部 ADC 转换芯片来对输入信号进行模数转换。

通过合理的采样率和分辨率设置,可以保证对输入信号进行精确的数字化处理。

2.2 计数器设计频率计最关键的部分就是计数器的设计。

在 FPGA 中,可以利用计数器模块对输入信号进行计数,并将计数结果送入逻辑单元进行进一步的处理。

2.3 频率计算通过对计数结果进行适当的处理和归一化,可以得到最终的信号频率。

在这一过程中,需要注意处理溢出、误差校正等问题,以保证频率测量的准确性和稳定性。

三、软件调试3.1 FPGA 开发环境在进行基于 FPGA 的数字频率计设计时,可以选择常见的开发工具,例如 Xilinx Vivado 或 Quartus II 等。

基于FPGA的数字式频率计设计报告

基于FPGA的数字式频率计设计报告

湖南大学电气与信息工程学院本科生课程设计题目:数字频率计课程:电子技术综合设计专业:电子信息工程班级:1703指导老师:设计时间:目录一、选题 (1)二、要求 (1)三、方案原理 (3)四、框图 (4)五、单元电路说明 (6)1分频模块 (6)2 显示模块六、参考资料 (21)一、选题数字式频率计的VERILOG设计二、要求对输入FPGA开发板的一定频率的输入信号的频率进行测量,并通过LCD进行显示,并使可测量范围尽可能大,精度尽可能高三、方案原理(1)L CD显示原理本次设计中使用的是基于HD44780的LCD1602。

管脚定义图如下:要实现液晶显示功能有如下关键步骤:1.确定字符显示位置:要在液晶上的某个位置上显示某个字符,就是要向DDRAM的某个地址写入要显示的数据代码。

屏幕物理位置与DDRAM地址的对应关系如下:2.确定显示字符的内容:液晶要显示某个字符时,实质上就是显示该字符的字模, ,即向DDRAM里写数,数据与字模对照表如下:3.将数据写入LCD:执行以下步骤:清屏指令->功能设置指令->进入模式设置指令->显示开关控制指令->设定DDRAM地址指令->数据写入DDRAM指令,相关指令如下:液晶读数据时序:把数据写入液晶时序:由上图可知要保证液晶能正常显示,在E的下降沿时,数据要有效。

(2)频率测量原理利用分频模块获得一个1HZ的clk脉冲,同时设定一个计数脉冲,clk 脉冲作为时基,同时设定一个计数脉冲,每当clk脉冲跳变时,将计数寄存器中的数据送至显示寄存器,同时清零计数寄存器,并显示寄存器中的内容送至LCD显示模块,即可完成频率测量功能模块例化思路分频模块产生多种频率的信号供不同模块使用顶层文件脉冲计数count门控信号二-十进制转换模块LCD1602模块显示频率(最小单位1Hz)和占空比(最小单位0.1%)Clk_In,sysclkClk_GateClk_500Cnt7~Cnt0countClk_500。

基于fpga的数字频率计设计

基于fpga的数字频率计设计

基于FPGA的数字频率计设计随着科学技术的不断进步,数字电子技术在各个领域都得到了广泛的应用。

其中,FPGA(现场可编程门阵列)作为一种灵活、可编程、可重构的数字电路设备,具有较高的性能和灵活性,被广泛应用于数字信号处理、通信、图像处理等各个领域。

本篇文章将介绍基于FPGA的数字频率计设计。

一、概述数字频率计是一种用于测量信号频率的设备,可以方便快速地获取信号的频率信息。

传统的数字频率计通常采用微处理器或专用集成电路来实现,但是这些方案在某些应用场景下存在着局限性。

使用FPGA来设计数字频率计,既可以充分利用FPGA的灵活性和并行性,又可以实现高性能和低功耗的设计。

二、基于FPGA的数字频率计设计原理基于FPGA的数字频率计主要通过计数器和时钟信号来实现。

其设计原理可以分为以下几个步骤:1. 时钟信号同步:通过FPGA内部的PLL(锁相环)模块,可以实现时钟信号的同步和稳定。

2. 信号输入:将待测信号输入FPGA,可以通过外部接口或模拟输入模块实现。

3. 计数器设计:利用FPGA内部的计数器模块,对输入信号进行计数,从而获取信号的频率信息。

4. 频率计算:根据计数器的计数值和时钟信号的周期,可以计算出输入信号的频率信息。

三、基于FPGA的数字频率计设计实现基于上述原理,可以利用FPGA内部的逻辑资源,设计出一个高性能的数字频率计。

具体实现步骤如下:1. 确定输入信号的接口:选择适合的输入接口,可以是数字信号接口、模拟信号接口或者通用IO口。

2. 设计计数器模块:根据待测信号的频率范围和精度要求,设计合适的计数器模块,可以结合FPGA的时钟管理模块实现高精度计数。

3. 编写频率计算算法:根据计数器得到的计数值和时钟信号的周期,设计频率计算算法,可以采用移位运算、累加运算等实现高效的频率计算。

4. 实现显示与输出:设计合适的显示模块和输出接口,将测得的频率信息在显示屏或者外部设备上进行输出。

四、基于FPGA的数字频率计设计应用基于FPGA的数字频率计设计可以广泛应用于各种领域,如通信、测控、仪器仪表等。

基于FPGA的数字频率计的设计

基于FPGA的数字频率计的设计

基于FPGA的数字频率计的设计摘要:数字频率计(FREQ)是一种用于计算信号频率的设备。

本文提出了一种基于FPGA的数字频率计的设计方案,使用Verilog HDL实现了数字频率计,可以实现输入信号频率的测量和显示。

该数字频率计的设计具有快速响应、低延迟、高精度的特点,并且适用于各种频率范围的输入信号。

关键词:数字频率计;FPGA;Verilog HDL;测量;显示;精度1. 简介数字频率计是一种用于测量信号频率的设备,广泛应用于电子、通信、计算机等领域。

传统的频率计一般采用模拟电路实现,但其精度和速度有限,且易受到噪声和温度等因素的影响,难以应用于高精度和高速测量。

随着FPGA技术的不断发展,基于FPGA的数字频率计逐渐成为一种新的解决方案。

2. 设计方案本文提出了一种基于FPGA的数字频率计的设计方案,使用Verilog HDL实现了数字频率计,可以实现输入信号频率的测量和显示。

数字频率计的核心是计数器,通过计数器来测量输入信号的周期,并计算出信号的频率。

本设计方案采用了高速计数器的设计思路,具体步骤如下:(1) 输入信号经过芯片引脚电路,进入FPGA芯片。

(2) FPGA内置的输入输出模块将输入信号进行采样和滤波处理,得到纯净的数字信号。

(3) 数字信号经过计数器进行计数,计数值存储在计数器的寄存器中。

(4) 计数值经过时钟分频和计算,得到输入信号的周期和频率。

(5) 输入信号的频率通过显示模块在数码管或LCD显示屏上显示,同时可以通过按键或旋转编码器进行设置和控制。

3. 实验结果本设计方案采用ALTERA CYCLONE III系列FPGA芯片,频率范围从1Hz到50MHz,精度为0.01Hz。

实验结果表明,数字频率计响应速度快,延迟较低(约为100ns),精度高(误差小于0.1%),同时可以适应各种信号频率范围的测量。

4. 总结本文提出了一种基于FPGA的数字频率计的设计方案,采用了高速计数器的设计思路,具有快速响应、低延迟、高精度的特点,并且适用于各种频率范围的输入信号。

FPGA1-99MHZ数字频率计可测量占空比资料

FPGA1-99MHZ数字频率计可测量占空比资料

物理与机电工程学院课程设计报告课程名称:电子系统设计专业班级:2009级电子信息工程(2)班学生姓名:吴仁路学号:2009041636指导教师:赖义汉完成时间:2012年9月28日报告成绩:评阅意见:评阅教师日期目录一、设计任务与要求 (1)二、方案设计与论证 (1)方案一 (1)方案二 (2)三、硬件电路设计 (2)四、软件电路设计 (3)1.分频器模块 (3)2.十进制计数器模块 (3)3. 占空比测量模块 (4)4. 扫描显示锁存模块 (4)5.显示译码器模块 (4)6. 3线8线译码器模块 (4)五、仿真过程与仿真结果 (5)1、十进制计数模块的仿真结果。

(5)2、分频模块的仿真结果 (5)3、占空比模块的仿真结果 (5)4、3-8译码模块的仿真结果 (6)5、显示模块的仿真结果 (6)6、顶层模块的仿真结果 (6)六、安装与调试 (7)七、结论与心得 (9)八、参考文献 (10)附录一:VHDL源程序 (10)附录二:原理图及PCB (19)基于FPGA数字频率计一、设计任务与要求1、设计一个能测量方波信号频率的频率计。

2、测量的频率范围是1Hz 5MHz。

3、结果用十进制数显示。

4、扩展部分:测量输入方波信号的占空比并显示出来。

二、方案设计与论证频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。

通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1 s。

闸门时间可以根据需要取值,大于或小于1 s都可以。

闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。

闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。

一般取1 s作为闸门时间,此测量方法称为直接测频法。

由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为±1个脉冲误差。

进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量相对误差为Tx/T=Tx=1/Fx。

基于FPGA的数字频率计设计

基于FPGA的数字频率计设计

基于FPGA的数字频率计设计-机电论文基于FPGA的数字频率计设计荆科科(郑州城市职业学院,河南新密452370)【摘要】设计是以FPGA为处理模块,以VHDL做为描述语言。

20MHz的晶振做为主时钟,外部两个按键分别是使能按键和复位按键,便于进行人工控制。

该设计通过直接测量的方法对被测信号的频率进行检测并显示。

详细介绍了系统的各个设计模块,并对调试过程进行说明。

该设计可以做成便携式手持设备用于测量手机中的实时时钟信号频率,还可以对音频信号的频率进行检测。

关键词FPGA;频率计;VHDL;模块设计;元件例化0引言频率计是根据其应用来设计的。

频率计数器最常见的应用是确定发射机和接收机的特性。

发射机的频率必须进行检验和校准,才能符合有关规章制度的要求。

频率计数器能对输出频率和一些关键的内部频率点(如本振)进行测量,查明无线电发射时候是否满足技术指标。

频率计数器的另一些应用包括计算机领域,在此领域中的数据通信、微处理器和显示器中都使用了高性能时钟。

对性能要求不高的应用领域包括对机电产品进行测量。

本设计采用FPGA作为控制核心,利用直接测量法对被测信号的频率进行测量显示。

1 设计要求1)设计4位十进制数字显示的频率计,其频率测量范围为10k—9999kHz;2)要求量程能够自动转换;3)当输入的信号小于10kHz时,输出显示全0;当输入的信号大于9999kHz 时,输出显示全F。

2设计原理本设计利用直接测量法进行测量计算,用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率,也就是周期性的被测信号在单位时间内变化的次数。

计数器是严格按照f=N/T的定义进行测频,其对应的测频原理方框图如图1所示。

工作时间波形如图2所示。

频率计的系统主要由被测信号、计数器电路、锁存器电路、时分复用、译码显示、时钟输入和分频电路组成2.1 整体设计思路本设计以频率为20MHz的晶振作为主时钟,在设计中,需要用到的信号有频率为5Hz的闸门信号,25Hz的按键消抖延时信号以及200Hz的数码管动态显示扫描信号;这三种信号由分频器产生。

毕业设计(论文)-基于FPGA的数字频率计的设计

毕业设计(论文)-基于FPGA的数字频率计的设计

摘要在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得十分重要。

数字频率计是数字电路中的典型应用,是电子测量与仪表技术最基础的电子仪器之一,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。

与传统的频率计相比,数字频率计具有精度高、测量范围大、可靠性好等优点。

是频率测量的重要手段之一。

该论文研究基于FPGA的数字频率计的设计,在QuartusII环境中,运用VHDL语言完成数字频率计的设计,并对设计进行综合、编译、仿真。

通过仿真分析,证明该频率计测量结果的正确性。

本文的主要介绍了数字频率计的基本内容和重要性,并对数字频率计的国内外研究现状进行了总结;数字频率计设计开发环境,并对FPGA、QuartusII、VHDL进行了详细介绍对开发流程详细说明;根据实际需要对数字频率计设计方法、方案进行了可行性比较,并对其实现的功能进行了具体要求,对设计模块进行了划分,并定义了每个模块所实现的功能;用VHDL语言编程,具体实现频率计各个模块的功能, 对数字频率计仿真并验证其功能。

关键词: FPGA;QuartusII;VHDL;频率计AbstractIn electronics,frequency is one of the most basic parameters.And it have a close relationship with many measurement program of electrical parameters and measurement results, so the measurement of frequency is very important.Digital frequency meter is a typical applications in digital circuit,and one of the most basic electronic devices in electronic measurement and instrumentation technology.Digital frequency meter is an indispensable measuring instruments for scientific research and production as computers, communications equipment, audio, video. Compared with the conventional frequency counter,digital frequency meter have a high accuracy, measurement range and a good reliability. It is one of important measure for frequency measurement:The thesis research in design of digital frequency meter,FPGA-based. VHDL language is used to complete the design of digital frequency meter in QuartusII,and completed thesis with composited, compiled, simulated. Through simulation and analysis, The results show that the accuracy of measure for the frequency. This article mainly introduces the importance and basic content of digital frequency meter, and current research is summarized .the main tasks and content of this design are summarized.Design and development environment of digital frequency meter are introduced.FPGA, QuartusII and VHDL are described in detail.According to the actual needs of the digital frequency meter, design method and design program are compared to achieve the functions of their specific requirements, and defines the functions of each module to achieve the function.Keywords : FPGA,QuartusII ,VHDL,digital frequency met目录摘要 (I)Abstract (II)第1章绪论 (1)1.1 课题背景与意义 (1)1.2 课题目的 (1)1.3 技术指标 (1)第2章FPGA开发相关知识简介 (3)2.1 FPGA的介绍 (3)2.2 FPGA开发环境 (4)软件开发环境——Quartus II的介绍 (4)软件仿真环境——Modelsim的介绍 (5)2.3 硬件描述语言——Verilog HDL (6)2.4 FPGA开发流程 (8)本章小结 (11)第3章频率计的设计方案 (12)3.1 系统的总体设计 (12)3.1.1 设计思路 (12)频率计的基本原理 (12)3.2 数字频率计原理方框图 (13)本章小结 (13)第4章频率计的实现 (14)4.1 时钟信号分频模块的设计 (14)4.2 测频控制信号发生模块的设计 (15)4.3 十进制计数模块的设计 (16)4.4 八位十进制计数模块的设计 (18)4.5 三十二位锁存器模块的设计 (20)4.6 顶层模块的设计 (20)本章小结 (23)结论 (24)致谢 (25)参考文献 (26)附录1 译文 (27)附录2 英文参考资料 (30)第1章绪论1.1 课题背景与意义在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,频率的测量就显得尤为重要,而频率计的研究工作更具有重大的科研意义。

基于FPGA占空比检测系统

基于FPGA占空比检测系统

微软用户北华大学电子系统工程实习报告——基于FPGA的脉冲占空比测量系统设计学院:电气信息工程学院专业:电子信息工程班级:姓名:学号:指导教师:实习日期:2015.9.07—2015.9目录1实习题目 (1)2实习目的与要求 (1)3实习内容 (1)4 实习原理 (2)4.1Multisim 软件 (2)4.2Quartus II 软件 (2)4.3ModeSim软件 (3)4.4UA741CN芯片 (3)5 系统硬件电路设计与程序流程设计 (3)5.1系统电压放大硬件电路设计 (3)5.2系统软件程序流程设计 (4)6 系统调试与仿真 (5)6.1实验步骤 (5)6.2系统仿真 (6)7实验结论与分析 (7)8实习心得 (9)9参考文献 (9)附录程序代码及电路原理图 (10)附录程序代码 (10)电路原理图 (16)PCB图 (16)实物图 (17)1实习题目基于FPGA矩形脉冲占空比测量系统。

2实习目的与要求在两周的实习中,需掌握verilog语言的使用,提高模拟电路设计的能力,掌握FPGA器件基本使用方法,掌握波形发生器及示波器等仪器的使用方法,通过方案设计来对测量系统进行逐步实现,最终完成实习。

实习要求如下:1.被测信号为矩形波,频率范围为1Hz~5MHz;2.被测信号峰峰值电压范围为50mV~1V;3.被测脉冲信号占空比的范围为10%~90%;4.显示的分辨率为0.1%,测量相对误差的绝对值不大于0.01。

系统框图如图2.1所示:图2.1 系统架构图3实习内容1.在模拟电路部分利用运算放大器对50mV~1V电压进行放大,所以需要设计出电压放大电路,仿真完成后,并作出实物;2.在数字电路部分利用quartus II 11.0软件进行设计,用verilog语言进行编辑程序,用ModelSim进行时序仿真,直至占空比测量满足误差位置;3.在时序仿真完成后,加上按键控制,数码管显示模块,BCD码转换模块,在对管脚进行正确分配后,下到FPGA中对系统进行测试,在实际情况下对系统进行调试。

eda课程设计基于fpga的数字频率计

eda课程设计基于fpga的数字频率计

摘要等精度频率计在工业生产中具有很重要的作用,它在仪表测量领域扮演着重要的角色,它应用等精度测频原理,其测量精度优于普通频率计。

基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。

本次设计频率测量范围为2K-999KHZ,作品已经与DDS信号源搭配成功的完成了调试,其测量精度高,性能稳定。

本次设计方案是基于FPGA完成全系统设计,应用ALTERA公司的CYCLONE II芯片构成系统主体。

本次设计的软件部分应用VHDL语言。

应用Quartus II 6.0完成系统的设计,具有较高的灵活性与可靠性。

关键词:等精度;频率计;FPGA;VHDLAbstractEqual accuracy cymometer play a very important role in the frequency of industrial production and in the field of measurement instrumentation, the application of precision frequency measurement principle, the accuracy is better than ordinary cymometer. The cymometer based on the principles of traditional frequency measurement of the accuracy will face more practical limitations when the frequency of the signal decrease.the equal accuracy cymometer not only has high accuracy, but also maintain constant accuracy in the whole frequency region.The frequency of this design is in the range of 2 K-999KHZ, it has been works with DDS signal generator successfully,completed with the commissioning, its high precision,stable performance.Key words:equal accuracy;cymometer;FPGA;VHDL目录引言 (1)1 设计功能及要求 (1)2等精度测频原理 (1)3 FPGA概述 (3)3.1 FPGA概念 (3)3.2设计工具Quartus II 6.0 (4)4 详细设计方案 (5)5 结论 (12)谢辞 (13)参考文献 (14)附录 (15)引言频率测量是电子测量的重要领域。

FPGA频率计

FPGA频率计

最近自己拿FPGA弄了一个简易频率计(verilog):精度1HZ,可以测试占空比,但是精度只有10%。

下面讲解一下,希望对想弄这个的人有一点帮助:我的硬件说明:EP1C3T144C8N核心板、8位数码管、按键、8位LED、20M晶振首先说一下测量方波信号频率的原理:首先一个几位(比如4位)的计数器在方波信号的跳变沿(比如下降沿激励)激励下,来一个激励脉冲(比如下降沿)计数器将加一,但是问题出现了,这个计数器一直加的话不是溢出了?你怎么样通过这个加的数值来确定你的方波频率?先卖个关子,先来说说这个计数器!计数器肯定是一直在加的(前提是只要你的IO口有跳变沿),那么你的计数的最高数值就是由你的计数器的位数决定的,比如这里是2的4次方,又回到原来的问题,你的计数器不是有跳变沿就加一吗?那岂不是不同的方波信号频率都是加到了最大值?但是你想到没有,不同的方波信号频率输入的话,你的计数器加到最大值的时间是不同的,这里才是设计理解的关键!那么我们就是通过这个不同的时间来判断的。

下面讲解原理:我们让这个计数器在规定的时间内加,然后设定的时间一到我们把这个加的数值存起来,同时将这个计数器清零(很多人这里或许还是不理解为什么要这样,继续往下看)。

那么我们先假设这个待测输入的方波信号的频率是固定不变的,也就是说在这个设定的时间内,计数器加的数值,也就是检测到的跳变沿的个数,具体假设是下降沿,在理论上是一个固定的值!(这里可以仔细想一下),因为每次时间一到这个计数器将被清零了。

我们为了后面计算的方便,假设我们设定的时间是1秒钟,也就是1HZ,在这个1HZ时钟的控制下面,每秒钟将会把这个计数器清零,那么很显然,这个计数器在这个时间1秒钟内加的数值N就是你测的的方波的频率值!这个就是一个很简单的数学的问题,在相同的1秒钟时间内,clk信号相当于加了一次,signal信号加了N次,那么你的signal信号的频率肯定是这个clk频率的N 倍,你的测量的精度显然就是你的设定比较的时钟1HZ咯。

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

VHDL 课程设计报告——基于FPGA的数字频率计姓名:学号:班级:目录1 设计原理 (1)2功能设计 (1)3系统总体框图 (1)4各功能块设计说明 (2)5实验结果 (14)6结论分析 (15)一、设计原理频计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。

通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1 s。

闸门时间可以根据需要取值,大于或小于1 s都可以。

闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。

闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。

一般取1 s作为闸门时间,此测量方法称为直接测频法。

由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为±1个脉冲误差。

进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量相对误差为Tx/T=Tx=1/Fx。

由此可知直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。

二、功能设计1、测量范围:1HZ--------99MHZ,测量精度±1HZ。

2、测量结果高4位与低4位进行分页显示。

当超过9999HZ时,系统亮灯提示超出低4位显示范围,可通过按键进行高低4位结果的显示切换。

高4位显示时,伴有小数点位的点亮,提示已成功切换到高4位。

3、测量所测信号的占空比。

能够快速测出输入待测信号的占空比,并且通过按键,切换到占空比显示状态。

4、内置自测信号由内部时钟产生三个特定时钟,以供自身测试功能是否正常。

三、系统总体框图系统总框图四、各功能块设计说明1、时钟发生器通过对50MHZ的晶振时钟进行50M的分频,等到一个1HZ信号。

再通过此信号,通过2分频,得到一个0.5HZ的信号,从而得到高电平为1秒的闸门控制信号en来控制计数器的计数时间.再通过对en求反,等到锁存信号load.而清零信号clr则通过en与1HZ信号共同产生.同时对50MHZ信号进行500分频,一个两位的std_logic_vector(1 downto 0)信号在分频信号的驱动下不断加‘1’,等到“00”、“01”、“10”、“11”四种片选信号,对应4个数码管,从而驱动数码管的动态扫描显示。

时钟发生器的代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clock isport(clk0:in std_logic;load,en,clr:out std_logic;pian:buffer std_logic_vector(1 downto 0));end entity clock;architecture run of clock issignal en1,en2,en3:std_logic;beginonehz:process(clk0) --产生1HZ信号variable cnt:integer range 0 to 50000000;variable x:std_logic;beginif(clk0'event and clk0='1') thenif(cnt<24999999) thencnt:=cnt+1;else cnt:=0; x:=not x;end if;en1<=x;end if;end process onehz;zreo5hz:process(en1) --产生0.5HZ信号beginif(en1'event and en1='1') thenen2<=not en2;end if;en<=en2;end process;locks:process(en2) --对en信号进行取反,得到锁存信号load beginload<=not en2;end process;clr1:process(en1,en2) --由en信号与1HZ信号共同产生清零信号clrbeginif(en1='0'and en2='0') thenclr<='1';else clr<='0';end if;end process;onekhz:process(clk0) --对50MHZ信号进行500分频variable cnt1:integer range 0 to 50000000;variable x1:std_logic;beginif(clk0'event and clk0='1') thenif(cnt1<500) thencnt1:=cnt1+1;else cnt1:=0; x1:=not x1;end if;en3<=x1;end if;end process;pianx:process(en3) --由500分频信号得到片选信号beginif(en3'event and en3='1') thenpian<=pian+1;end if;end process;end architecture run;2、信号输入器通过对50MHZ信号进行不同的2的n次方分频,得到781250HZ,195313HZ,24HZ这三个内部自测信号,以检测频率计是够正常。

通过按键key1,key2,key3来选择三个中的一个信号输入以对频率计进行自检。

而信号输入器的默认情况是输入外部待测信号。

由于使用if---elsif语句,三个按键中,优先级最高的是key1,然后是key2,最后是key3。

信号输入器的代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fenpin isport(cin,k1,k2,k3,p:in std_logic;clkout,pp:out std_logic);end entity fenpin;architecture run3 of fenpin issignal temp:std_logic_vector(50 downto 0);beginc:process(cin) --对50Mhz进行2的n次方分频beginif(cin'event and cin='1') thentemp<=temp+1;end if;end process;d:process(p,k1,k2,k3)beginif(k1='0') thenclkout<=temp(20); --得到24HZ信号elsif(k2='0') thenclkout<=temp(7); --得到195313HZ信号elsif(k3='0') thenclkout<=temp(5); --得到781250HZ信号else clkout<=p; --默认情况下检测外部信号end if;end process;pp<=temp(20); --向外输出一个24HZ的频率,可供自身测试使用end architecture run3;3、计数器根据在时基有效时间内的计数值进行判断,计数器可以直接定义成8个std_logic_vector(3 downto 0)的32位信号,在待测时钟上升沿到来的时候,使用语句“计数器<=计数器+1;”,当信号的值小于“1001”时,信号就不断自增;当信号大于或等于“1001”时,就归零。

由于if语句的特性,使得到一个二进制显示的十进制计数器,对于后续的显示代码转换也是十分的方便。

当高4位不全为零时,产生一个信号来点亮板上的led灯,告诉使用者待测频率已经超过9999hz,需要翻页才能看到结果的高4位数据。

同时通过一个按键key5,产生一个高低4位传送切换信号。

当key5信号为0时,送低4位到译码显示电路;当key5信号为1时,送高四位到译码显示电路。

默认情况下是送低4位到译码显示电路。

这样就可以通过按键来实现高低四位的换页显示了。

Key5也同时控制着小数点的显示与否,若小数点点亮,则表示切换到高位成功,否则,仍然显示低位。

计数器代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity counter isport(clkin,clr0,do,k:in std_logic;biao,dian:out std_logic;d1,d2,d3,d4:out std_logic_vector(3 downto 0));end entity counter;architecture run1 of counter isbegina:process(clkin)variable a1,a2,a3,a4,a5,a6,a7,a8:std_logic_vector(3 downto 0);beginif(clkin'event and clkin='1') then --1 32位宽的信号进行加1计算,得到频率值if(do='1') then --11 最低位if(a1<"1001") thena1:=a1+1;else a1:="0000";if(a2<"1001") thena2:=a2+1;else a2:="0000";if(a3<"1001") thena3:=a3+1;else a3:="0000";if(a4<"1001") thena4:=a4+1;else a4:="0000";if(a5<"1001") thena5:=a5+1;else a5:="0000";if(a6<"1001") thena6:=a6+1;else a6:="0000";if(a7<"1001") thena7:=a7+1;else a7:="0000";if(a8<"1001") then --最高位a8:=a8+1;else a8:="0000";end if;end if;end if;end if;end if;end if;end if;end if;end if; --11if(clr0='1') then --12 清零信号有效时,对32位宽信号进行清零,为下一次计数做好准备a1:="0000";a2:="0000";a3:="0000";a4:="0000";a5:="0000";a6:="0000";a7:="0000";a8:="0000";end if; --12end if; --1if(a5/="0000") or (a6/="0000") or (a7/="0000")or (a8/="0000")then --2biao<='1'; --待测信号是否超出9999HZ的判断,从而产生高位翻页提醒信号elsebiao<='0';end if; --2if(k='0') then --3 高低4位翻页切换信号的产生与执行d4<=a8;d3<=a7;d2<=a6;d1<=a5;dian<='0';elsed4<=a4;d3<=a3;d2<=a2;d1<=a1;dian<='1';end if; --3end process;end architecture run1;4、占空比测量电路以50MHZ信号作为计数的频率基准。

相关文档
最新文档