基于fpga数字频率计

2024-07-26

基于fpga数字频率计(精选8篇)

篇1:基于fpga数字频率计

EDA 简易数字频计 设计性实验 2008112020327 ** 电子信息科学与技术

物电

电工电子中心2009年5月绘制

2008.6.10 湖北师范学院电工电子实验教学省级示范中心电子版实验报告

简易数字频率计设计

一.任务解析

通过对选择题的分析,认为该简易数字频率计应该能达到以下要求: 1. 准确测出所给的方波信号的频率(1HZ以上的信号)。2. 在显示环节上,应能实现高位清零功能。3. 另外还有一个总的清零按键。

二.方案论证

本实验中所做的频率计的原理图如上图所示。即在一个1HZ时钟信号的控制下,在每个时钟的上升沿将计数器的数据送到缓冲器中保存起来,再送数码管中显示出来。

第2页,共11页 湖北师范学院电工电子实验教学省级示范中心电子版实验报告

在本实验中,用到过几中不同的方案,主要是在1HZ时钟信号的选择和计数器清零环节上:

1. 在实验设计过程中,考滤到两种1HZ时钟信号其波形如下图所

对于上术的两种波形,可以调整各项参数来产生两种1HZ时钟信号。最后通过实验的验证发现第二种波形对于控制缓冲器获得数据和控制计数器清零更易实现。并且,用第二种波形做为时钟信号,可以在很短的高电平时间内对计数器清零,在低电平时间内让计数器计数,从面提高测量的精度。而用第一种波形则不易实现这个过程。

2.在计数器的清零过程中,也有两个方案,分别是能通过缓冲器反回一个清零信号,另一个是在时钟的控制下进行清零。最终通过实验发现,用时钟进行清零更易实现。因为如果用缓冲器反回一个清零信号,有一个清零信号归位问题,即当缓冲器反回一个低电平清零信号时,计数器实现清零,但不好控制让缓器冲的清零信号又回到高电平,否则计数器就一直处于清零状态面不能正常计数了。

三.实验步骤

通过上分析后,实验分为以下几步:

1.1HZ时钟信号的产生(产生该信号的模块如下):

module ones(clk,clkout);input clk;output clkout;parameter parameter N=24000000;n=24;

第3页,共11页 湖北师范学院电工电子实验教学省级示范中心电子版实验报告

reg [n:0]cnt;reg clkout;

always @(posedge clk)begin if(cnt==N)else end endmodule begin cnt=0;

clkout=1;clkout=0;end

end begin cnt=cnt+1;最终产生的信号的波形:

2. 计数模块。其主要公能是在每个被测信号的上升沿自动加一,并且有一个清零信号的输入端,在1HZ时钟信号的高电平时间里进行清零。模块如下:

module count_99999999(sign,clr,b0,b1,b2,b3,b4,b5,b6,b7);input sign,clr;output [3:0]b0,b1,b2,b3,b4,b5,b6,b7;reg [3:0]b0,b1,b2,b3,b4,b5,b6,b7;always @(posedge sign or posedge clr)

if(clr)begin b0=0;b1=0;b2=0;b3=0;b4=0;b5=0;b6=0;b7=0;end else begin if(b0<9)b0=b0+1;else begin b0=0;if(b1<9)

第4页,共11页 湖北师范学院电工电子实验教学省级示范中心电子版实验报告

b1=b1+1;else begin b1=0;if(b2<9)b2=b2+1;else begin

b2=0;

if(b3<9)

b3=b3+1;

else begin

b3=0;

if(b4<9)

b4=b4+1;

else begin

b4=0;

if(b5<9)

b5=b5+1;

else begin

b5=0;

if(b6<9)

b6=b6+1;

else begin

b6=0;

if(b7<9)

b7=b7+1;

else b7=0;

第5页,共11页

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

end

end

end

end

end

end end

end endmodule 如果要访真该模块,要设定较长的访真时间,故在此不进行软件访真,只在实验箱上进行实验。

3. 数据缓冲模块。在每个秒级门控信号的上升沿接收计数器的数据,并送到驱动八个数码管的显示模块里。

module fre_count(clk,clr,b0,b1,b2,b3,b4,b5,b6,b7,a0,a1,a2,a3,a4,a5,a6,a7);input clk,clr;input [3:0]b0,b1,b2,b3,b4,b5,b6,b7;output [3:0]a0,a1,a2,a3,a4,a5,a6,a7;reg clro;reg [3:0]a0,a1,a2,a3,a4,a5,a6,a7;always @(posedge clk or negedge clr)//clk应该为1HZ的信号// begin if(!clr)

begin

a0<=0;a1<=0;a2<=0;a3<=0;a4<=0;a5<=0;a6<=0;a7<=0;end else

第6页,共11页 湖北师范学院电工电子实验教学省级示范中心电子版实验报告

end begin a0<=b0;a1<=b1;a2<=b2;a3<=b3;a4<=b4;a5<=b5;a6<=b6;a7<=b7;end endmodule 在此模块中用了到了<=阻塞赋值的方式。

4.编写控制高位清零的模块,利用在扫描模块中控制SEL的值来实现高位清零。即先从高位开始判断,当只有个位有数据时,SEL只能等于0,当只有个位和十位有数据时,SEL要小于1,依此类推,实现高位清零功能。module scan(clk,a1,a2,a3,a4,a5,a6,a7,sel);input clk;input [3:0]a1,a2,a3,a4,a5,a6,a7;output [2:0]sel;reg [2:0]sel;always @(posedge clk)if({a1,a2,a3,a4,a5,a6,a7}==0000000)sel=0;else if({a2,a3,a4,a5,a6,a7}==000000)if(sel<1)sel=sel+1;else sel=0;else if({a3,a4,a5,a6,a7}==00000)if(sel<2)sel=sel+1;else sel=0;else if({a4,a5,a6,a7}==0000)if(sel<3)sel=sel+1;

第7页,共11页 湖北师范学院电工电子实验教学省级示范中心电子版实验报告

else sel=0;else if({a5,a6,a7}==000)if(sel<4)sel=sel+1;else sel=0;else if({a6,a7}==00)if(sel<5)sel=sel+1;else sel=0;else if({a7}==0)if(sel<6)sel=sel+1;else sel=0;else sel=sel+1;endmodule 5.上述三个模块为本次实验的主要模块。除此,还用到了,译码,数据选择器模块。相应的模块代码省略。

6.所有模块都写完后,就是写顶层文件。

module top(clk,clr,sig_in,a,b,c,d,e,f,g,dp,sel);input clk,clr,sig_in;output [2:0]sel;output a,b,c,d,e,f,g,dp;

wire clk1,clk2,clk3;wire [2:0]sel_sign;wire [3:0] QA,QB,QC,QD,QE,QF,QG,QH;wire [3:0] b0_o,b1_o,b2_o,b3_o,b4_o,b5_o,b6_o,b7_o;wire [3:0] org_data;

第8页,共11页 湖北师范学院电工电子实验教学省级示范中心电子版实验报告

assign sel=sel_sign;assign clk3=clk;

fre_count frequence(.clk(clk2),.clr(clr),.b0(b0_o),.b1(b1_o),.b2(b2_o),.b3(b3_o),.b4(b4_o),.b5(b5_o),.b6(b6_o),.b7(b7_o),.a0(QA),.a1(QB),count_99999999 mycounter(.sign(sig_in),.clr(clk2),.b0(b0_o),.b1(b1_o),.a2(QC),.a3(QD),.a4(QE),.a5(QF),.a6(QG),.a7(QH));.b2(b2_o),.b3(b3_o),.b4(b4_o),.b5(b5_o),.b6(b6_o),.b7(b7_o));

clk_div clksource(.clk(clk3),.clko1(clk1));

ones ones_con(.clk(clk3),.clkout(clk2));scan myscan(.clk(clk1),.a1(QB),.a2(QC),.a3(QD),.a4(QE),.a5(QF),.a6(QG),.a7(QF),.sel(sel_sign));mux81 mymux81(.sel(sel_sign),.a(QA),.b(QB),.c(QC),.d(QD),.e(QE),.f(QF),.g(QG),.h(QH),.out(org_data));

第9页,共11页 湖北师范学院电工电子实验教学省级示范中心电子版实验报告

decode3_8 decode(.org(org_data),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g),.dp(dp));

endmodule

7. 写完了全部代码后,就是器件选择,分配引脚,下载程序,最后在实验箱上进行实验。

在实验的验证过程中,用到了DDS函数信号发生器,从其TTL输出端输出各种不同频率的方波信号,接入接简易频率计的被测信号输入端,在八个数码管上显示出相应的测量结果。

四.结果分析

在上述实验过程中,我们选取了若干组不同的TTL输出进行测量,发现当被测信号的频率不小于1HZ时,简易频率计可以精确的测出被测信号的频率。但是,当被测信号小于1HZ时,显示的测量结果在0和1之间跳动,不稳定。分析简易频率计的结构可知,在如下图所示波形关系中,当被测信号的频率小于1HZ时,在秒级门控信号的一个周期内,计数器要么能计数一次,要么计数零次,因而不能准确的测出被测信号的频率。

五.经验总结

1.本实验中的频率计由于其在结构上存在缺限,因而在测量小于1HZ的信号时,会有较大的误码差,在测量频率大于1HZ信号时,也可能存1HZ误差,其原因在于如果在一个秒级门控信号的周期内,被测信号的上升沿的个数正好

第10页,共11页 湖北师范学院电工电子实验教学省级示范中心电子版实验报告

和其周数相同,则测量结果是准确的,如果上升沿的个数比周期数多一,则测量结果比实际值大一。

2.提高测量精度的另一个关键地方在所产生的秒级门控信号的精度。只有所产生的秒级门控信号的低电平时间长度为严格的一秒时,测量结果才会更精确。由于实验箱上所使用的晶振不是严格等于24MHZ,因而可用示波器测出晶振的准确频率后,再在parameter

N=24000000;语句中改变N的值。也可以在实验中逐渐调整N的值,直到测量结果最精确为止。最终我们的实验中,N的值取的是24000351。

3.对于高位清零功能的加入,正是仪器设计人性化的一个体现。如果没有这个功能,再未显示数据的数码管也一直处于工作状态,一则是对资源的乱费,二则是会减少器件的使用寿命。

第11页,共11页

篇2:基于fpga数字频率计

摘要:介绍了DDFS的原理和Altera公司的FPGA器件ACEX 1K的主要特点,给出了用ACEX 1K系列器件EP1K10TC144-1实现数字频率合成器的工作原理、设计思路、电路结构和仿真结果。

关键词:DDFS;FPGA;快速通道互连;仿真

1 概述

1971年,美国学者J.Tierncy,C.M.Rader和B.Gold提出了以全数字技术,从相位概念出发直接合成所需波形的一种新的频率合成方法。限于当时的技术和器件水平,它的性能指标尚不能与已有技术相比,故未受到重视。近30年间,随着集成电路技术和器件水平的提高,一种新的频率合成技术――直接数字频率合成(DDFS)得到了飞速的发展,它以有别于其它频率合成方法的优越性能和特点成为现代频率合成技术中的佼佼者。

随着微电子技术的发展?现场可编程门阵列?FPGA?器件得到了飞速发展。由于该器件具有工作速度快,集成度高和现场可编程等优点,因而在数字信号处理中得到了广泛应用,越来越受到硬件电路设计工程师们的青睐。直接数字频率合成(DDFS)技术以其具有频率分辨率高,频率变换速度快,相位可连续线性变化等特点,而在数字通信系统中被广泛采用。本文基于DDFS的基本原理,给出了利用AL-TERA公司的FPGA芯片(ACEX 1K系列EP1K10TC144-1器件)完成DDFS系统设计的具体方法。

(本网网收集整理)

ACEX 1K系列器件是Altera公司着眼于通信(如Xdsl?路由器等)、音频处理及类似场合的应用而推出的新型芯片系列。ACEX 1K系列器件具有以下特性:

(1)采用查找表(LUT)和EAB相结合的结构模式,可提供高效低功耗的优良性能。因为LUT结构适用于实现高效的数据通道、增强型寄存器、数学运算及数字信号处理设计,而EAB结构可实现复杂的逻辑功能和存储器功能。

(2) 密度高,典型门数为1万到10万门,有多达49152位的RAM(每个EAB有4096个RAM)。

(3)系统内核采用2.5V电压,I/O脚可支持2.5V/3.5V/5.0V多电压标准;器件功耗低;具有高达250MHz的双向I/O功能;完全支持33MHz的PCI总线标准;内置JTAG边界扫描电路;不需测试矢量和扫描链即可对所有器件进行100%的功能测试。

?4?具有快速连续式延时可预测的快速通道互连(FAST TRACK);能实现快速加法器、计数器和比较器等算术运算功能;具有专用链和实现高速多扇入逻辑功能的专用级链;具有能实现内部三态总线的三态仿真;具有多达6个全局时钟信号和4个全局清除信号。

(5)每个引脚都有独特的三态输出使能控制;可编程输出的压摆率控制可以减少电平转换产生的噪声;引脚与引脚间具有用户可选的钳位电路;支持热插拔操作。

2 DDFS基本原理

DDFS技术是一种可把一系列数字量形式信号通过DAC转换成模拟量形式信号的合成技术。目前使用最广泛的一种DDFS方式是利用高速存储器作查寻表,然后通过高速DAC产生已用数字形式存入的正弦波。图1是DDFS的`基本原理图。

2.1 相位累加器

相位累加器由N位加法器与N位累加寄存器级联构成。时钟脉冲每触发一次,加法器便将频率控制数据与累加寄存器输出的累加相位数据相加,然后把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟的作用下继续与频率控制数据相加。这样,相位累加器在参考时钟的作用下将进行线性相位累加,相位累加器累加满量时,就会产生一次溢出,以完成一个周期性的动作,这个周期就是DDFS合成信号的一个频率周期,累加器的溢出频率就是DDFS输出的信号频率。

2.2 相位-幅值转换

用相位累加器输出的数据作为取样地址来对正弦波波形存储器进行相位-幅值转换,即可在给定的时间上确定输出的波形幅值。

2.3 数模转换

通过DAC可将数字量形式的波形幅值转换成所要求的合成频率模拟量形式信号,低通滤波器用于衰减和滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。

对于计数容量为2N的相位累加器和具有M个相位取样的正弦波波形存储器,若频率控制字为K,则DDS系统输出信号的频率为:fo=fc×K/2N,而

频率分辨率则为:Δf=fomin=fc/2N。3 基于FPGA的DDFS结构设计

图2是利用DDFS原理设计的一个信号源发生器的结构框图。图中,FPGA用来控制输出波形的频率、相位和波形的选择。波形数据的存放有两种形式,一种是将固定波形数据存放在EEPROM里,主要有正弦波,三角波,锯齿波?包括半正弦波,半三角波,半锯齿波?数据。而对于特殊的波形,则通过上位机下载到RAM里,然后从RAM里读取数据。

该系统在工作时,首先由上位机把控制命令和数据参数通过USB接口用AT96总线传给FPGA。如果是固定波形,就从EEPROM中读取数据,否则就从RAM中读取数据。数据传送给FPGA后即可等待触发信号,触发信号由时基卡或软件给出。触发信号到来之后,就开始读取数据并输出波形。同时由FPGA给上位机一个状态位,该状态位可用于表示发送波形是正在发送,还是已经发送结束了。

信号源的输出频率范围分为如下几档:0.001Hz~1Hz? 1Hz~10Hz? 10Hz~100Hz;100Hz~200Hz,步进为1/1000。之所以分档控制,是为了保证输出波形频率具有更高的精度,在输出波形频率较低时可对数据不抽点,频率较高时应进行抽点。要达到较高的频率精度,必须利用数字频率合成器(DDFS)来实现对输出波形频率的控制?并按频率要求对相位增量进行累加,然后以累加相位值作为地址码来读取存放在存储器中的波形数据。通过改变相位增量寄存器的增量值(即步长),使相位累加器能够输出依据相位增量寄存器所给出的步长来改变波形存储器的地址,从而改变波形每周期的点数,从而达到改变输出波形频率的目的。该电路的设计关键在于用硬件构造一个多位累加器来实现相位的累加。

根据DDFS的原理,输出信号频率fo与累加器时钟fclk、累加器位数M、相位增量N的关系如下:

fo=(fclk×N)/2M

根据以上原理,结合实际情况可得到的各项参数(这里采用32.768MHz=1000×215的晶振频率)。为了保证所需的精度以及输出波形频率的步进。这里选M=27。由于D/A的最大转换速度为1MHz,波形每个周期的样点数是128k,因此当输出波形的频率大于8Hz时,一般就需要进行抽样。

图3

对于RAM和EEPROM的寻址可通过以下两种方式来实现:

(1)基于EEPROM的寻址方式

这种方式首先用累加器实现地址的寻址,然后通过改变累加器的第24位和第25位(A15和A16)的所赋初值来改变发送波形的初始相位。

由于发送波形的结束时刻可通过一个减法计数器来实现,而且波形周期寄存器里寄存的是T/4的个数。因此,可根据所需发送的波形周期的个数来给计数器赋初值,并在减到0时使累加器复位,从而停止寻址。此时时钟应接A14。

EEPROM里面可以存放4种波形,每一种波形的数据是64kB。波形的选择可通过给A17和A18赋初值来实现。

(2)对RAM的寻址方式

RAM共有1MB的容量,因此,可寻址20位的地址。对于RAM里面的波形,只需要控制样点频率和发送波形的结束时刻即可。

结束时刻的实现主要是将结束时刻值存放到寄存器中,然后把计数器的输出和寄存器的值进行比较,若两者相等就给计数器发送复位信号以停止计数,以结束发送波形。

这里的计数器是加1计数,因而可通过改变分频器的值来改变计数器的时钟,从而引起读取样点频率的改变。

图4

4 电路仿真

通过上述结构设计可得到顶层电路结构。整个电路设计可采用Verilog语言和原理图输入相结合的方法来设计。图3和图4分别给出了对RAM和EEPROM进行寻址的仿真结果。5 结论

篇3:基于fpga数字频率计

FPGA是一种可以编辑的逻辑门器件, 它是在PAL、GAL、EPLD等其他器件的基础上进一步发展为专用集成电路 (ASIC) 的设计而出现的, 既克服了原有可编程器件门电路数有限的缺点, 还可以解决了分立元件电路的严重不足的缺点。FPGA还具有可以重复编写程序的优点以及动态在系统重构的特性, 使得硬件的逻辑功能可以像软件那样通过编程的方法来修改。所以, FPGA的应用前景非常广阔。

在数字频率计中, 测周期计数器是主要的电路, 其功能是使用标准时钟以被测频率信号的一个周期为时限进行脉冲计数。传统的测周期计数器采用门控计数器来实现, 即采用一个同被测频率信号周期宽度相同的门控脉冲来控制计数器的计停。其缺点在于无法实现对被测信号的连续测周期计数。

传统数字频率计的精度随着待测频率的降低而降低, 等精度数字频率计就是在测量范围内, 其测量的精度不随待测频率的改变而改变。在科技发展的今天, 精度的要求越来越高, 它代表着科技的先进性, 所以等精度数字频率计的实现有着非常重大的意义。

1 测量原理

本论文所写的等精度频率计的频率测量方法的主要测量控制框图如图1所示。在图1中的预置门控信号GATE是由单片机产生的, GATE的占空比对测频精度影响是比较少的, 所以对单片机的产生的这个时钟信号要求不是很高, 只要FPGA中的计数器在计当频率为100 M赫兹的信号时候不溢出就可以了, 如果出现溢出, 就说明选择的频率太高, 必须要降低。根据理论计算的结果, 我们可以得到GATE的时间周期Tc可以大于42.94 s, 但是由于单片机对数据处理能力限制, 所产生的信号在实际中的时间宽度较少, 一般可在10~0.1 s的取间进行选择。这样闸门的时间宽度Tc就可以依据被测频率的大小而进行自动调整测频, 从而得到量程的自动转换, 扩大了测频量程范围;在实现等精度测量的同时, 减少了低频测量的误差。

图1的中计数器1和计数器2是2个可控的高速计数器 (频率为100 MHz) , ENA1和ENA2分别是它们的计数允许使能端, 而且是高电平有效, 低电平无法工作, 也就是说, 当这两个使能端输入ENA1和ENA2的信号为11的时候才工作, 当使能端输入ENA1和ENA2的信号为00、01、10的时候, 计数器无法记录脉冲的个数。基准频率信号是由高度稳定的频率为100 MHz晶体振荡器发出的, 信号是从计数器1的时钟输入端CLK进行输入的, 计数器1对其频率进行记数, 设其频率为Fb;待测信号经过前端的放大、限制幅度和整形的处理后, 从计数器2的时钟输入端CLK进行输入, 计数器2对其频率进行记录, 则其测量频率就为Fx。根据公式:fx=N1×Fb/N2可得N2=N1×Fb/fx, 从而求出其记数值。

测量开始的时候, 首先由单片机发出一个清零信号CLR, 高电平有效, 也就是说当CLR=1的时候, 2个的计数器和D触发器的初始状态被置为0, 此时触发器和计数器的输出都是0。然后单片机再发出允许测频命令, 高电平有效, 这时候CLR的信号由高电平变为低电平0, 而预置门控信号GATE为高电平1, 但是这时候D触发器的输出状态不发生改变, 要一直等到被测脉冲的上升沿到来时, D出发器的输出Q端才被置1, 也就是说ENA和CLR同时为1, 将启动计算器计数器1和计数器2, 系统进入计算允许的周期, 若ENA和CLR不同时为1, 则计数器保持为0。这时, 计数器计数器1和计数器2分别对被测信号和标准频率信号进行同时计数。当Tc秒过后, 预置门的控信号被单片机置为低电平0, 但是D出发器的输出状态并没改变, 此时输出还是为1, 一直要等到被测信号的下一个上升沿的到来时, D触发器的输出状态才有1变为0, 此时才将这2个计算器进行同时关闭。计数器1的BCLK的信号是由高度稳定的频率为100MHz晶体振荡器发出的, 晶体振荡器不会受到环境极其温度及其其他因数的干扰, 所以在任何时刻的绝对测量误差非常的小, 可以达到小于2×10-8。

2 VHDL语言的实现程序

仿真波形:

XCLK是周期为40ns的待测信号;GATE是一个较宽的门信号, 开始是低电平;CLR是清零信号, 开始为高电平, 后一直是低电平;BCLK是周期为10ns的标准信号。

包装元件入库:

选择File项的”open”选项, 在”open”窗中先点击文本编辑文件项Text Editor File, 选择CLK_CNT.VHD, 从新打开CLK_CNT.VHD设计文件, 然后选择File中的Greate Defauit Symbd项, 此时即将当前文件变成了一个装好的单一元件, 并放在工程路径指定的目录中以备后用。

3 结语

随着可编程逻辑器件集成度的提高, FPGA的特点也将会显示出来, 它可以代替传统的独立元件电路进行模拟, 也可以实现更加精确的仿真, 在以后的电路设计中, 可编程逻辑器件的作用将会越来越大。今后可编程器件在集成电路也会得到更多的运用, 这也是发展的趋势。

参考文献

[1]侯伯享, 顾新编著.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子利技大学出版, 2001

[2]刘明业编著.集成电路/计算机硬件描述语言VHDL高等教程[M].北京:清华大学出版社, 2003

篇4:基于fpga数字频率计

关键词 EDA技术;可编程逻辑器件;数字频率计

中图分类号:G642.0 文献标识码:B

文章编号:1671-489X(2016)16-0031-02

数字频率计是计算机、通信设备、音频视频等科研生产领域不可缺少的测量仪器,以EDA工具作为开发手段。基于FPGA所设计的数字频率计,具有高速、精确、可靠、抗干扰性强和现场可编程等优点。在设计中,所有频段均采用直接测频法对信号频率进行测量,克服了逼近式换档速度慢的缺点;在换档设计方面,突破了以往改变闸门时间的方法,采用门控信号和被测信号对计数器的使能端进行双重控制,使自动换档的实现更加简单可靠,提高了测量的精确度;在运算单元采用高速串行BCD码除法,不仅提高了运算速度,而且减小了资源消耗。

1 设计要求

设计一种基于FPGA的数字频率计,要求:数字频率计分为0~9.999 Hz、10.00~99.99 Hz、100.0~999.9 kHz

和1000~9999 kHz四档,且能够实现自动换档的功能。

2 总体设计方案

数字频率计总体框图如图1所示。数字频率计由分频器、计数器、锁存器和译码器等模块构成,系统有3个输入信号,即两个时钟信号CLK、SIG和一个清除信号CLR。系统有5个输出信号,即报警信号ALM、显示信号Q、数码管片选信号L、位控位A和位控位B。

分频器模块通过对时钟信号CLK进行分频,为计数器模块提供1 s的闸门时间test-en。当test-en为高电平时,闸门被打开,被测信号的脉冲通过闸门进入计数器进行计数;当test-en下降沿到来时,产生一个锁存信号,将计数值保存起来,由八段译码器译码并在数码管显示计数结果。锁存数据后,在下次test-en上升沿到来之前产生清零信号,将计数器清零,为下次计数做准备。

3 设计实现

采用模块化的设计思想,依据系统设计要求自上至下地细化设计。顶层设计完成后,采用硬件描述语言对各模块进行编程,在MAX+PLUSⅡ环境下进行编译、功能仿真,创建各模块的器件符号,待建立整体系统顶层文件时调用。

分频器模块 分频器模块(FEN)通过对4 MHz时钟信号进行分频得到0.5 Hz时钟,为计数器模块(CORNA)提供1 s的闸门时间。根据给定的分频值,分频器模块对4 MHz频率进行1/2n的分频,每来一个时钟,中间值cnt状态改变一次;经过n个cnt触发处理后,就可以得到1/2n的分频信号。

数码管片选信号产生模块 数码管片选信号产生模块(SEL)把时钟信号转换成片选信号提供给输出模块。片选信号低电平时,表示其对应的数码管可以进行显示操作,数据信号输出数码管显示所需的数据,即“000”“001”“010”“011”“100”“101”“110”和“111”。

计数器模块 计数器模块(CORNA)通过对待测信号在基准时间内进行计数测量待测信号的频率,完成对输入时钟信号的计数。由分频器提供的使能信号DOOR为高电平时,允许计数;DOOR为低电平时,停止计数,并保持所计的数。当中间值c6不为零时,选择4档;当中间值c5不为零时,选择3档;当中间值c4不为零时,选择2档;否则选择1档,计数选档结束后,将5个输出信号传给锁存器。

锁存器模块 锁存器模块(LOCK)在分频器模块输出信号DOOR的下降沿到来时,将计数器的数值Q3、Q2、Q1、Q0、DANG锁存。

数据输出模块 数据输出模块(CH)对应于数码管片选信号,将相应的数据送出,其中档位也通过数码管显示。数据输出模块根据锁存器和数码管片选信号的输出信号,实现数码管的实时显示。

八段译码驱动模块 八段译码驱动模块(DISP)将输入的BCD码转换为LED数码管需要的数据,八段译码驱动模块的仿真波形如图2所示。

D是八段译码驱动模块的输入信号,由数据输出模块输出信号d赋予;Q是八段译码驱动模块的输出信号,对应于数码管的8个显示段。当d为“0000”时,q为3F;当d为

“0001”时,q为06;当d为“0010”时,q为5B;当d为

“0011”时,q为4F;当d为“0100”时,q为66;当d为

“0101”时,q为6D;当d为“0110”时,q为7D;当d为

“0111”时,q为27;当d为“1000”时,q为7F;当d为

“1001”时,q为6F。

各模块连接 各模块总体连接图如图3所示。CLK输入至分频器,SIG、CLR输入至计数器,输出报警信号ALM来自计数器,Q是八段译码器连接显示器的输出,L是数码管片选信号产生模块的输出,输出A和B是位控位[1]。

系统仿真波形如图4所示。当输入信号SIG、CLR、CLK的值为“000”“010”“100”和“110”时,仿真波形相同。输出信号Q在0.0~875.0 ns时为3F(即“0111111”),之后为0(即“0000000”)。输出信号L在0.0~125.0 ns时为“000”,之后每隔250.0 ns依次为“001”“010”“011”“100”……输出信号A和B为高电平。

4 结语

EDA技术给电子系统设计带来巨大的变革,特别是硬件描述语言的出现和发展,并与大规模可编程器件相结合,极大地提高了电子系统设计的效率和可用性,成为电子系统设计人员的得力助手。

参考文献

篇5:基于fpga数字频率计

关键词:频率测量 周期测量 FPGA VHDL 状态机

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。采用VDHL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余全部在一片FPGA芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。

在设计中,所有频段均采用直接测频法对信号频率进行测量,克服了逼近式换挡速度慢的缺点;采用了门控信号和被测信号对计数器的使能端进行双重控制,提高了测量的精确度;在运算单元采用了高速串行BCD码除法,不仅提高了运算速度,而且减小了资源消耗。

(本网网收集整理)

1 系统结构及基本设计原理

以一个8位十进制、测量范围为1Hz~100MHz的数字频率计为例,采用100MHz的标准频率信号,说明设计的基本原理及实现。设计的数字频率计由测量频率模块、计算模块和译码模块组成,如图1所示。测频模块采用两个十进制计数器分别测出门控时间内的标准信号和被测信号的周期数Ns和Nx。计算模块则根据公式Fx/Nx=Fs/Ns算出Fx,通过译码即可得到被测信号频率的7段数码显示。

数字频率计的设计原理实际上是测量单位时间内的周期数。这种方法免去了实测以前的预测,同时节省了划分频段的时间,克服了原来高频段采用测频模式而低频段采用测周期模式的测量方法存在换挡速度慢的缺点。

为克服低频段测量的不准确问题,采用门控信号和被测信号对计数器的使能信号进行双重控制,大大提高了准确度,如图2所示。

篇6:基于fpga数字频率计

基于FPGA的DPSK调制解调器的全数字实现

调制解调技术是通信系统的灵魂,其性能直接影响到整个系统的通信质量.由于数字技术的`大量应用,数字调制解调技术得到了广泛的应用.随着软件无线电思想的发展,将整个系统尽可能地集成于一个芯片的设计方法已经呈现出强大的发展潜力,成为系统设计发展的主要方向.基于这种思想,介绍一种在单片FPGA上实现的全数字DPSK调制解调器的设计方法.整个设计基于ALTERA公司的QUARTUS II开发平台,并用单片CYCLONE系列FPGA芯片实现.

作 者:赵叶星 韦志棉 ZHAO Ye-xing WEI Zhi-mian 作者单位:北京航空航天大学,无人机研究所,北京,100083刊 名:无线电工程英文刊名:RADIO ENGINEERING OF CHINA年,卷(期):200737(10)分类号:N914.3关键词:DPSK FPGA 调制 解调 软件无线电

篇7:基于fpga数字频率计

摘要:介绍基于FPGA芯片实现的机载合成孔径雷达数字信号处理机接口板卡。该接口板卡负责将输入数据缓存和信息格式转换,然后打包成处理机需要的数据帧发送到信号处理机,并具有PCI接口功能和在线自检测功能。着重介绍了系统的硬件结构设计和软件实现功能,给出了选用的主要芯片的型号。该接口板已应用于某合成孔径雷达数字信号处理机中,整机使用证明该系统工作稳定,实现了设计中要求的功能。

关键词:数据接口LINK口现场可编程门阵列PCI接口

机载合成孔径雷达(SyntheticApertureRadar,简称SAR)是以“合成孔径”原理和脉冲压缩技术为理论基础,以高速数字处理和精确运动补偿为前提条件的高分辨率成像雷达。对于机载合成孔径雷达成像处理来讲,仅有目标的原始回波数据是不够的,还必须获得雷达和载机的参数。另外,为了满足信号处理机实时处理的要求,要求输入到处理机的各种数据符合处理机成像处理的数据格式。这样,处理机在获得数据帧后就可以直接进行成像处理而不必再有格式转换的开销。但是?目标的原始回波数据与雷达和载机的参数数据来自两个不同的设备?它们的数据格式和时序都是由各自的设备确定的,因此信号处理机便面临着与外围设备接口的问题。

1系统功能

在本机载合成孔径雷达系统中,进出接口板卡的数据流包括数据采集设备输入的原始回波数据、监控设备输入的雷达和载机的参数数据以及输出到处理机的成像处理数据。它们有如下特点:①输入数据流的`速度和时序不匹配。数据采集设备和监控设备是两个异步的系统,它们都有自己的定时控制电路,以自己的速度传输数据。②输入输出数据流的信息格式不匹配。数据采集设备输入的原始回波数据和监控设备输入的雷达和载机的参数数据采用FPDP协议传输,接口板卡输出到处理机的数据采用Link口传输协议进行传输。

考虑到进出接口板卡数据流的特点和雷达系统对接口板卡的控制要求,接口板卡要具有如下功能:

(1)设置数据的缓冲、存储逻辑,以适应不同设备之间的速度差异和时序差异;

(2)进行信息格式转换,将目标的原始回波数据与雷达和载机的参数数据打包,插入相应的帧信息形成处理机要求的数据帧,并控制数据流的走向;

(3)实现PCI接口,能够产生PCI中断;

(4)具有在线自检测功能。

2系统硬件结构设计

为了简化系统硬件设计,增加系统的灵活性,采用FPGA芯片实现系统要求的数据格式转换、打包、分发和逻辑控制功能。数据缓存采用硬件FIFO和软件双口RAM。PCI接口采用专用接口芯片实现。硬件FIFO和软件双口RAM的写时钟分别由各自的FPDP接口提供,其它时钟由接口板上的晶振提供。系统的硬件结构框图如图1所示。

2.1输入数据流的缓存方案

为了适应处理机与数据采集设备和监控设备之间的速度差异,解决速度不匹配问题,需要将输入的数据先进行缓存。数据采集设备送入的原始回波数据每帧的数据量比较大,接口板卡上设计了硬件FIFO作为原始回波数据的缓存器,FIFO的读写使能由FPGA编程控制,写时钟由FPDP接口提供,读时钟由接口板卡上的晶振提供。数据采集设备和监控设备是两个异步的系统,雷达参数数据流和原始回波数据流之间没有同步关系,一帧雷达参数数据对应几帧原始回波数据,因此设计中用双口RAM作为雷达参数数据的缓存器。另外,每帧雷达参数的数据量比较小,本设计在FPGA内利用参数化的模块库(LibraryofParameterizedModules,简称LPM)中的lpm_ram_dp编程实现双口RAM,简化了硬件设计。

2.2PCI接口设计?

实现PCI接口的方案一般有两种:采用可编程逻辑器件和采用专用总线接口器件。采用可编程逻辑器件实现PCI接口的最大好处是比较灵活,缺点是设计难度较高,开发周期较长。采用专用接口器件实现虽然没有采用可编程逻辑器件实现那么灵活,但能够有效地降低接口设计的难度,缩短开发时间。本系统采用专用接口器件PCI9052实现接口板卡的PCI接口。

接口板卡的硬件资源为映射到FPGA内部寄存器的I/O映射空间和一个中断源。PCI9052提供5个局部地址空间,选用Space0作为接口板的地址空间,分配16个8位地址。同时设置相应的初始化,PCI配置寄存器中的PCIBAR2设置为0XFFFFFFF0,向系统请求分配内存的数量为16。设置局部地址空间的范围为0X01000000~0X01000010。PCI9052提供两个局部中断源,选用LINTi1。FPGA提供电平触发中断信号,因此PCI9052的中断触发模式设置为电平触发。利用PCI9052的局部设备片选信号CS0#作为FPGA的片选信号。CS0#片选信号的起始地址和地址范围由CS0BaseAddress寄存器的设置值0x01000011决定,即起始地址为1000000h,地址范围为20h。PCI9052寄存器的初始值由串行EEPROM提供,在PCI9052加电后读取。EEPROM必须采用支持连读功能的芯片,本设计中采用FairChildSemiconductor公司的93CS4

6N。

2.3FPGA的配置设计?

本设计为FPGA提供了两种配置方式:主动串行配置和被动串行配置。

主动串行配置由EPC2向FPGA器件输入串行位流的配置数据。在该配置方式下,一直由FPGA控制着配置过程。在加电过程中,FPGA检测到nCONFIG由低到高的跳变时,就开始准备配置。FPGA将CONF_DONE拉低,驱动EPC2的nCS为低,而nSTATUS引脚释放并由上拉电阻拉至高电平使能EPC2。此后,EPC2就用其内部振荡器的时钟将数据串行地从EPC2?DATA?输送到FPGA?DATA0?。当配置完成后,FPGA释放CONF_DONE,将EPC2与系统隔离。

被动串行配置由编程硬件通过ByteBlaster配置。ByteBlaster产生一个由低到高的跳变送到nCONFIG引脚,然后由编程硬件将配置数据送到DATA0引脚,该数据锁存至CONF_DONE变为高电平为止。当CONF_DONE变成高电平时,用DCLK的10个周期初始化FPGA,器件的初始化由下载电缆自动执行。

为了两种配置方式共存,设计中用拨码开关将EPC2与FPGA和ByteBlaster的下载电缆插座隔离。当用被动串行方式配置时,拨码开关断开,由上位机通过ByteBlaster下载电缆加载FPGA。当用主动串行方式配置时,拨码开关接通,由EPC2加载FPGA。电路图如图2所示。

2.4在线自检测功能

板卡设计时还应考虑便于日常调试维护及故障检测定位。板卡在硬件上针对各电源信号和关键的状态信号设计了信号灯,一旦发现有误,便可给出信号触发该电路板上的信号灯告警,定位系统故障。另外在电路设计时应留出测试孔,以增加电路的可测性。

3系统的软件设计

系统上电后,PCI上电复位,FIFO清零。上位机向相应寄存器写入初始值,完成寄存器设置。当系统启动信号有效时,接口板开始接收数据,进行数据打包和分发,直到上位机向接口板卡写停止命令为止。图3给出了系统工作流程图。

3.1数据的打包和流向控制

雷达参数数据和原始回波数据的数据源是异步的,不能保证两者确切的对应关系,接口板卡利用对缓存原始回波数据FIFO和缓存雷达参数数据双口RAM的读写控制,调整雷达参数数据和原始回波数据对应关系,将两种数据源按处理机要求的输入数据格式组成正确的数据帧。雷达参数数据和原始回波数据打包后的数据帧格式如下:

在程序中,设计了雷达参数发送控制计数器Para_counter和回波数据发送控制计数器Data_counter。系统工作后,每次检测到原始回波数据流的数据有效信号data_valid的上升沿(标记收到完整的一帧回波数据)时,启动雷达参数发送控制计数器开始计数,当计数到设定的值(本设计中为25)时停止计数并启动回波数据发送控制计数器开始计数,计数到设定的值(本设计中为5000)时停止计数。当检测到原始回波数据流的数据有效信号data_valid的下降沿(标记开始接收新的一帧回波数据)时,两个计数器都清零。根据计数器的计数值产生Link口选择信号?确定数据的流向。图4给出了数据流向的示意图。图5给出了基于MAXPLUSⅡ10.0的仿真结果,仿真显示正确地实现了数据打包和流向控制。

图3系统工作流程图

3.2Link口传输协议的实现

Link口的数据传输是在同步时钟线(LxCLK)与应答线(LxACK)相互握手的情况下同步传输的。一个传输字为32bit,Link口以4bit为单位进行传输。在LxCLK上升沿,发送端会发送一个新的4bit数据,在LxCLK的下降沿,接收方锁存数据线上的数据。8个4bit数据发送完毕后,如果接收方准备好接收下一个字,则将LxACK置1。发送方在每次发送新字的第一个4bit时对LxACK采样,如果LxACK为0,表明接收方没有准备好,则发送方保持LxCLK为高电平,且数据线上保持当前的4bit数据,直到接收方将LxACK置1,发送方才将LxCLK下拉,并继续发送新的数据。当发送方缓存为空时,表明没有数据需要发送,则LxCLK保持为低电平。接口板利用VHDL语言实现了Link口传输协议。下面给出了关键的程序片断:

ChangeStateMode?process?NibleCount?empty?LxACK?PresentState?empty?

begin

casePresentStateis

whenSendACK=>

ifLxACK='1'andempty='0'then

NextState<=Send?

elseNextState<=SendACK?

endif?

whenSend=>

ifNibleCount/=3or?NibleCount=3andempty='0'andLxAck='1'?then

NextState<=Send?

elseNextState<=SendACK?

endif?

endcase?

endprocesschangestatemode?

图5数据转发仿真时序较

4应用和结论

篇8:基于fpga数字频率计

关键词:FPGA,C8051F020单片机,数字频率计,分频

科学技术的迅猛发展,尤其是微控制器、FPGA、集成IC等新兴电子技术的快速进步,降低了硬件电路的复杂度,使仪器仪表向着体积小、价格低、功能多的方向发展,进一步推动了仪器仪表的更新换代。作为一种基础测量仪器,频率计在工业领域及实验测试领域应用十分广泛,但现在常用的频率计,其检测范围及精度都存在一定的局限。

本设计采用C8051F020和FPGA结合的技术,综合运用了跟随放大、分频、整流的前端电路设计,使得频率计的测量范围更广,测试内容更加多样化,测试方式更加灵活,实现了在宽频带范围内的高精度测量,解决了高精度频率测量问题、频标比对及校准问题,从而使得本设计可以取代用途单一的专用测量仪器。

1硬件电路设计

1.1硬件总体设计

硬件总体设计如图1所示,其主要分为以下3个部分:(1)单片机部分,主要实现对整个系统的控制,包括按键电路和显示电路;(2)FPGA部分,主要实现对信号的采集、处理和分析,并通过SPI总线与单片机进行数据传输;(3)信号调理电路,主要完成对被测信号的预处理,使频率计能满足测量小信号和超高频的条件,被测信号频率在10 MHz以内不分频,经信号调理电路后直接送入FPGA进行分析。信号在10M以上的,先将信号放大,然后经过256分频,将分频后的信号送入FPGA分析。

1.2单片机及FPGA模块

本设计以C8051F020单片机为控制核心,以Altera公司的EP2C5T144C8N为运算处理器。C8051F020单片机是完全集成的混合信号系统级芯片,片内集成了数据采集和控制系统中常用的模拟部件、数字外设及其他功能部件。本设计主要应用了该单片机的控制功能。EP2C5T144C8N有4 068个逻辑单元以及13个18×18乘法器,运算处理能力强大,速度较快。本设计主要应用了该芯片的运算功能。放大的跟随电路如图2所示。

1.3 10 M以下宽带放大器设计

频率在10 M以下时,首先经AD811放大器对被测信号进行前级放大;将放大后的信号送入OPA690跟随器,对信号进行隔离,再经差分放大电路放大;后经MC10116放大器进行三级放大,将信号转换为ECL电平,最后经74LS04六输入非门将ECL电平信号转化成TTL电平送入FPGA进行分析。信号调理电路如3所示。

1.4 10 MHz到GHz分频模块电路设计

10M以上采用分频技术,首先将信号送入OPA657放大器放大。OPA657芯片带宽为1.6 GHz,完全满足高频要求,它对小信号的放大作用也特别明显。然后将放大后的信号进行256分频,然后转换为TTL电平后进入FPGA进行分析。前级放大电路如图4所示。

2程序设计

本系统由FPGA测频模块、C8051F020单片机控制模块和整形电路组成。FPGA测频模块以Altera公司的EP2C5T144C8N为核心器件,搭接外部时钟电路、电源电路和AS、JTAG为核心器件,搭接电源电路、外部晶振、复位电路和TFT液晶显示电路,共同组成C8051F020单片机控制模块,搭接分频电路、宽带通道放大电路和电源,共同组成整形电路模块。

2.1 FPGA代码设计

FPGA主要完成测量待测信号频率,对输入信号个数和标准信号个数进行计数等工作;或采用测周法测量输入信号脉宽,对输入待测信号的高电平时间进行计数,并将测量得到的数据通过SPI通信发送给C8051单片机进行处理。FPGA项目结构如图5所示。

2.2 C8051F020单片机程序设计

系统的主要流程为:端口初始化、时钟初始化、液晶显示初始化、SPI总线初始化、定时器初始化、发送1 s闸门控制指令、从FPGA读取数据,计算频率、周期、时间间隔、占空比、频比,显示计算结果。

3测试结果

本设计主要通过对函数发生器发出的正弦波信号和方波信号的测量来检测本设计的可用性,主要测试结果见下表。

4总结

本设计主要以C8051F020单片机以及FPGA为核心,并结合相应的外围电路,使整个系统测试频率范围大,测试信号幅值范围广。该系统可以对三角波、锯齿波、正弦波及方波等波形进行精确测量,同时还可以对脉冲波的占空比及相位差进行测量。本系统设计控制灵活,造价低廉,实用性很强,具有一定的推广价值。

参考文献

[1]刘竹琴,白泽生.一种基于单片机的数字频率计的实现[J].现代电子技术,2010(1).

[2]曹巧媛.单片机原理及应用[M].北京:电子工业出版社,2002.

[3]李泽清.Proteus电子电路设计及仿真[M].北京:电子工业出版社,2012.

上一篇:服务顾问工作总结范文下一篇:小学暑假散学典礼主持词