基于Verilog语言的等精度测频计设计

合集下载

根据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`引脚,可以检查计算的频率是否正确。

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

MHz等精度频率计设计基于VerilogHDL

MHz等精度频率计设计基于VerilogHDL

M H z等精度频率计设计基于V e r i l o g H D L Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#姓名:郑中权班级:电子1班 数电课设报告江苏科技大学 2017/10/12100MHz等精度频率计设计(基于Verilog HDL)一、设计要求:提供一个幅值为10mV ~ 1 V,频率为 1 ~ 100MHz的正弦信号,需测试以下指标:1.频率:测频范围 1Hz ~ 100MHz,测频精度为测频全域内相对误差恒为百万分之一。

2.占空比:测试精度 1% ~ 99%3.相位差:测试两个同频率的信号之间的相位差,测试范围 0 ~ 360二、设计分析使用FPGA数字信号处理方法,首先需要将正弦信号转换成可读取的数字方波信号,再经过FPGA设计计算得出所需测量值。

三、模电部分首先选择比较器,对于 100 MHz 信号,比较器灵敏度需要达到5ns内,TI公司的LTV3501灵敏度为,符合要求由TLV3501数据手册得知:当频率低于 50MHz 的时候,正弦波的峰峰值需大于20mV,频率高于50MHz时,峰峰值需大于 1V。

然后需要选择放大器,当正弦波幅值为 10mV时,放大倍数需大于35。

方法通过二级放大,一级用OPA847放大20倍,二级用OPA675放大8倍,得到总放大倍数160的正弦波。

经转换后的输出电压符合TTL电平要求,可以被识别出0和1。

四、数电部分开发板:Cyclone IV E: EP4CE6E22C8板载时钟为 50MHz,带4个按键和一个复位键(按键按下为0,抬起为1),四个七段数码管(共阳),FPGA的引脚可由杜邦线引出。

设计思路:测量频率:输入一个100MHz的基准频率,由计数器CNT1来计算基准频率的上升沿个数,即周期数。

输入一个被测信号,它由计数器CNT2来测量周期数。

两个信号在同一个使能信号EN(使能信号时间为1~2s)下开始计数,计数完后,存储计数结果,由(CNT1 * 10)可以算出具体的计数时间(单位ns),再由((CNT1 *10ns)/CNT2 )*10^9可算得被测信号频率,单位Hz。

基于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可以用来进行各种层次的逻辑设计,也可以进数字系统的逻辑综合,仿真验证和时序分析等。

基于VHDL的等精度频率计设计—毕业设计论文

基于VHDL的等精度频率计设计—毕业设计论文

摘要基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,本设计采用单片机AT89C51作为主要的控制单元,用来完成电路的信号测试控制、数据运算处理、键盘扫描和控制数码管显示等功能,待测信号经过LM358放大后又经过74HC14形成系统需要的矩形波,然后送入复杂可编程逻辑器件(CPLD),最后由可编程逻辑器件CPLD进行各种时序控制及计数测频功能,并用8位8段LED进行显示。

关键词单片机可编程逻辑器件频率计AbstractBased on the traditional principle of measuring the frequency of the frequency of measurement accuracy will be tested with thefrequency and reduce the decline in the more practical limitations.SCM AT89C51 use this design as the main control unit, the signals used to complete the circuit test control, data processing, keyboard scanning and digital control of the show, and other functions, under test signal LM358 Larger then after a 74 HC14 system needs Rectangular waves, and then into the complex programmable logic devices (CPLD), programmable logic devices by the end CPLD various control and timing count frequency measurement functions, and with eight 8 of the LED display.Keywords: SCMC CPLD Cymometer目录1 引言 (1)1.1课题分析 (1)1.2等精度频率计在国内外发展概况 (1)1.3M AX+P LUS II简介及VHDL语言简介 (3)1.4课题要求 (6)2 等精度频率计的方案选择及原理分析 (7)2.1等精度频率计测频原理 (7)2.2系统原理框图 (9)2.3周期测量 (9)2.4脉冲宽度测量 (10)2.5周期脉冲信号占空比的测量 (10)3 等精度频率计硬件设计 (11)3.1键盘控制模块 (11)3.2显示模块 (12)3.3主控模块 (13)3.4信号输入放大和整形模块 (16)3.5音频输出电路 (17)3.6CPLD功能模块描述 (18)4 等精度频率计软件设计方案 (19)4.1VHDL语言 (19)4.2VHDL软件设计方案 (21)4.3所需VHDL文件及波形仿真结果 (22)4.4单片机的汇编语言编程 (24)5 电路系统调试 (28)6 结论 (29)致谢 (33)附录一:元器件清单 (34)附录二:程序清单 (36)附录三:原理图 (36)1 引言1.1 课题分析在现代电子系统中,数字系统所占的比例越来越大。

基于verilog的频率计

基于verilog的频率计

基于verilog的频率计——————————————————高风顶层模块module top(seg,dig,ena,ove_led,gate,dp,khz_led,clk,clk2,key1,key2,key3,reset);input clk,clk2,key1,key2,key3,reset;output ena,ove_led,gate,dp,khz_led;output [6:0] seg;output [2:0] dig;wireclk_10hz,clk_100hz,clk_1khz,clk_10khz,fre10,load,clr_count,ove;wire [3:0] cnt0,cnt1,cnt2,cnt3,cnt4,cnt5;divclk U1(.clk(clk),.clk_10hz(clk_10hz),.clk_100hz(clk_100hz),.clk_1khz(clk_1khz),.clk_10khz(clk_10khz));chang U2(.clk_10hz(clk_10hz),.clk_100hz(clk_100hz),.clk_1khz(clk_1khz),.clk_10khz(clk_10khz),.key1(key1),.key2(key2),.key3(key3),.fre10(fre10));gatetest U3(.fre10(fre10),.gate(gate),.load(load),.clr_count(clr_count) );counter U4(.clk_1khz(clk_1khz), .reset(reset),.clk2(clk2),.gate(gate),.clr_count(clr_count), .cnt0(cnt0),.cnt1(cnt1),.cnt2(cnt2),.cnt3(cnt3),.cnt4(cnt4),.cnt5(cnt5),.ove(ove));decode U5(.dig(dig),.load(load),.ena(ena),.seg(seg),.clk_1khz(clk_1khz), .key1(key1),.key2(key2),.key3(key3),.dp(dp),.khz_led(khz_led),.ove(ove),.ove_led(ove_led),.cnt0(cnt0),.cnt1(cnt1),.cnt2(cnt2),.cnt3(cnt3),.cnt4(cnt4),.cnt5(cnt5));Endmodule分频器module divclk(clk,clk_10hz,clk_100hz,clk_1khz,clk_10khz);input clk;output reg clk_10hz,clk_100hz,clk_1khz,clk_10khz;reg[29:0] counter1,counter2,counter3,counter4;initialbegincounter1<=0;counter2<=0;counter3<=0;counter4<=0;clk_10hz<=0;clk_100hz<=0;clk_1khz<=0;clk_10khz<=0;endalways @(posedge clk)beginif(counter1==2400000) begin counter1<=0;clk_10hz<=~clk_10hz; endelse begin counter1<=counter1+1;endif(counter2==240000) begin counter2<=0;clk_100hz<=~clk_100hz;endelse begin counter2<=counter2+1;endif(counter3==24000) begin counter3<=0;clk_1khz<=~clk_1khz;endelse begin counter3<=counter3+1;endif(counter4==2400) begin counter4<=0;clk_10khz<=~clk_10khz;endelse begin counter4<=counter4+1;endendendmodule按键换挡module chang(clk_10hz,clk_100hz,clk_1khz,clk_10khz,key1,key2,key3,fre10);input clk_10hz,clk_100hz,clk_1khz,clk_10khz;input key1,key2,key3;output reg fre10;always @(posedge clk_10khz)beginif((key1==0)&&(key2==1)&&(key3==1)) beginfre10<=clk_10hz;endelse if((key1==1)&&(key2==0)&&(key3==1)) beginfre10<=clk_100hz; endelse if((key1==1)&&(key2==1)&&(key3==0)) beginfre10<=clk_1khz; endelse begin fre10<=0;endendendmodule闸门信号产生模块module gatetest(fre10,gate,load,clr_count);input fre10;output reg gate,load,clr_count;reg [3:0] lat;initialbegingate<=1;load<=1;clr_count<=0;lat<=0;endalways @(posedge fre10)beginlat <=lat+1;gate <= (lat < 10);load <= (lat == 11);clr_count <= (lat == 13);endendmodule计数器模块modulecounter(clk_1khz,reset,clk2,gate,clr_count,cnt0,cnt1,cnt2,cnt3,cnt 4,cnt5,ove);input reset,clk2,gate,clr_count,clk_1khz;output reg [3:0] cnt0,cnt1,cnt2,cnt3,cnt4,cnt5;output reg ove;reg clr,dout1,dout2,dout3;initialbegincnt0<=0;cnt1<=0;cnt2<=0;cnt3<=0;cnt4<=0;cnt5<=0;ove<=1;endalways @(posedge clk_1khz)begindout1 <= reset;dout2 <= dout1;dout3 <= dout2;endalways @(negedge clk_1khz)begin clr <=(dout1 | dout2 | dout3);endalways @(posedge clk2 or negedge clr)beginif(!clr) begin cnt0<=0;cnt1<=0;cnt2<=0;cnt3<=0;cnt4<=0;cnt5<=0;end else beginif(clr_count) begincnt0<=0;cnt1<=0;cnt2<=0;cnt3<=0;cnt4<=0;cnt5<=0; ove<=1;endelse beginif(gate==1)if((cnt5==9)&&(cnt4==9)&&(cnt3==9)&&(cnt2==9)&&(cn t1==9)&&(cnt0==9))begin cnt0<=0;cnt1<=0;cnt2<=0;cnt3<=0; cnt4<=0;cnt5<=0;ove<=0;endelse beginif((cnt4==9)&&(cnt3==9)&&(cnt2==9)&&(cnt1==9)&&(cn t0==9))begin cnt0<=0; cnt1<=0; cnt2<=0; cnt3<=0;cnt4<=0; cnt5<=1+cnt5; endelse beginif((cnt3==9)&&(cnt2==9)&&(cnt1==9)&&(cnt0==9))begin cnt0<=0; cnt1<=0; cnt2<=0; cnt3<=0;cnt4<=1+cnt4; cnt5<=cnt5;endelse beginif((cnt2==9)&&(cnt1==9)&&(cnt0==9))begin cnt0<=0; cnt1<=0; cnt2<=0; cnt3<=1+cnt3;cnt4<=cnt4; cnt5<=cnt5;endelse beginif((cnt1==9)&&(cnt0==9))begin cnt0<=0; cnt1<=0; cnt2<=1+cnt2; cnt3<=cnt3;cnt4<=cnt4; cnt5<=cnt5; endelse beginif((cnt0==9))begin cnt0<=0; cnt1<=1+cnt1; cnt2<=cnt2; cnt3<=cnt3;cnt4<=cnt4; cnt5<=cnt5; endelse begin cnt0<=4'b0001+cnt0; cnt1<=cnt1; cnt2<=cnt2; cnt3<=cnt3;cnt4<=cnt4; cnt5<=cnt5; endendendendendendendendendendendmodule锁存——译码器模块moduledecode(dig,load,ena,seg,clk_1khz,key1,key2,key3,dp,khz_led,ove, ove_led,cnt0,cnt1,cnt2,cnt3,cnt4,cnt5);input [3:0] cnt0,cnt1,cnt2,cnt3,cnt4,cnt5;input clk_1khz,load,ove;input key1,key2,key3;output reg [2:0] dig;output reg [6:0] seg;output reg ena,dp,khz_led,ove_led;reg [3:0] data1,data2,data3,data4,data5,data6;reg [3:0] data_in;initialbegindig<=0;ena=0;seg<=0;dp<=0;khz_led<=0;data1<=0;data2<=0;data3<=0;data4<=0;data5<=0;data6< =0; data_in<=0;endalways @(posedge load)begindata1<=cnt0;data2<=cnt1;data3<=cnt2;data4<=cnt3;data5<=cnt4;data6<=cnt5;endalways @(posedge clk_1khz)begin dig=dig+1;endalways @(negedge clk_1khz)begincase(dig)3'b000: data_in<=data1;3'b001: data_in<=data2;3'b010: data_in<=data3;3'b011: data_in<=data4;3'b100: data_in<=data5;3'b101: data_in<=data6;default:data_in<=4'b1111;endcaseendalways @(posedge clk_1khz)begincase(data_in)4'b0000: seg <= 7'b1000000; // 0 404'b0001: seg <= 7'b1111001; // 1 794'b0010: seg <= 7'b0100100; // 2 244'b0011: seg <= 7'b0110000; // 3 304'b0100: seg <= 7'b0011001; // 4 194'b0101: seg <= 7'b0010010; // 5 124'b0110: seg <= 7'b0000010; // 6 024'b0111: seg <= 7'b1111000; // 7 784'b1000: seg <= 7'b0000000; // 8 004'b1001: seg <= 7'b0010000; // 9 10default: seg <= 7'b1111111; //no numeberendcaseendalways @(posedge clk_1khz)beginif((key1==0)&&(key2==1)&&(key3==1)) dp<=1;else if((key1==1)&&(key2==0)&&(key3==1)&&(dig==2)) dp<=0;else if ((key1==1)&&(key2==1)&&(key3==0)&&(dig==1)) dp<=0;else dp<=1;endalways @(posedge clk_1khz)beginif((key1==0)&&(key2==1)&&(key3==1)) khz_led<=1;else if((key1==1)&&(key2==0)&&(key3==1))khz_led<=0;else if ((key1==1)&&(key2==1)&&(key3==0)) khz_led<=0;else khz_led<=1;endalways @(posedge clk_1khz) begin if(dig==6 | dig==7) ena<=1; else ena<=0;endendmodule。

MHz等精度频率计设计基于VerilogHDL

MHz等精度频率计设计基于VerilogHDL

姓名:郑中权班级:电子1班 数电课设报告江苏科技大学2017/10/12100MHz等精度频率计设计(基于Verilog HDL)一、设计要求:提供一个幅值为10mV ~ 1 V,频率为 1 ~ 100MHz的正弦信号,需测试以下指标:1.频率:测频范围 1Hz ~ 100MHz,测频精度为测频全域内相对误差恒为百万分之一。

2.占空比:测试精度 1% ~ 99%3.相位差:测试两个同频率的信号之间的相位差,测试范围 0 ~ 360二、设计分析使用FPGA数字信号处理方法,首先需要将正弦信号转换成可读取的数字方波信号,再经过FPGA设计计算得出所需测量值。

三、模电部分首先选择比较器,对于 100 MHz 信号,比较器灵敏度需要达到5ns内,TI公司的LTV3501灵敏度为4.5ns,符合要求由TLV3501数据手册得知:当频率低于 50MHz 的时候,正弦波的峰峰值需大于20mV,频率高于50MHz时,峰峰值需大于 1V。

然后需要选择放大器,当正弦波幅值为 10mV时,放大倍数需大于35。

方法通过二级放大,一级用OPA847放大20倍,二级用OPA675放大8倍,得到总放大倍数160的正弦波。

经转换后的输出电压符合TTL电平要求,可以被识别出0和1。

四、数电部分开发板:Cyclone IV E: EP4CE6E22C8板载时钟为 50MHz,带4个按键和一个复位键(按键按下为0,抬起为1),四个七段数码管(共阳),FPGA的引脚可由杜邦线引出。

设计思路:测量频率:输入一个100MHz的基准频率,由计数器CNT1来计算基准频率的上升沿个数,即周期数。

输入一个被测信号,它由计数器CNT2来测量周期数。

两个信号在同一个使能信号EN(使能信号时间为1~2s)下开始计数,计数完后,存储计数结果,由(CNT1 * 10)可以算出具体的计数时间(单位ns),再由((CNT1 * 10ns)/CNT2 )*10^9可算得被测信号频率,单位Hz。

100MHz等精度频率计设计(基于某VerilogHDL)

100MHz等精度频率计设计(基于某VerilogHDL)

某某:X中权学号:152210303127班级:电子1班数电课设报告100MHz等精度频率计设计〔基于Verilog HDL〕一、设计要求:提供一个幅值为10mV ~ 1 V,频率为 1 ~ 100MHz的正弦信号,需测试以下指标:1.频率:测频X围 1Hz ~ 100MHz,测频精度为测频全域内相对误差恒为百万分之一。

2.占空比:测试精度 1% ~ 99%3.相位差:测试两个同频率的信号之间的相位差,测试X围 0 ~ 360 某某科技大学2017/10/12二、设计分析使用FPGA数字信号处理方法,首先需要将正弦信号转换成可读取的数字方波信号,再经过FPGA 设计计算得出所需测量值。

三、模电局部首先选择比拟器,对于 100 MHz 信号,比拟器灵敏度需要达到5ns内,TI公司的LTV3501灵敏度为4.5ns,符合要求由TLV3501数据手册得知:当频率低于 50MHz 的时候,正弦波的峰峰值需大于 20mV,频率高于50MHz时,峰峰值需大于 1V。

然后需要选择放大器,当正弦波幅值为 10mV时,放大倍数需大于35。

方法通过二级放大,一级用OPA847放大20倍,二级用OPA675放大8倍,得到总放大倍数160的正弦波。

经转换后的输出电压符合TTL电平要求,可以被识别出0和1。

四、数电局部开发板:Cyclone IV E: EP4CE6E22C8板载时钟为 50MHz,带4个按键和一个复位键〔按键按下为0,抬起为1〕,四个七段数码管〔共阳〕,FPGA的引脚可由杜邦线引出。

设计思路:测量频率:输入一个100MHz的基准频率,由计数器T1来计算基准频率的上升沿个数,即周期数。

输入一个被测信号,它由计数器T2来测量周期数。

两个信号在同一个使能信号EN〔使能信号时间为1~2s〕下开始计数,计数完后,存储计数结果,由〔T1 * 10〕可以算出具体的计数时间〔单位ns〕,再由(〔T1 * 10ns〕/T2 )*10^9可算得被测信号频率,单位Hz。

基于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语言的数字频率计设计

实验五 数字频率计设计一、实验目的1、掌握简单的时序控制电路设计方法;2、进一步掌握复杂数字电路设计中的层次设计方法;3、掌握数字频率计的原理与设计方法;二、硬件、软件要求计算机、EDA 实验箱、MAX+plus II 软件,下载电缆三、实验内容及实验原理1、数字频率计原理:1)系统组成框图如图1.5.1所示:其中,8位七段数码管模块为实验箱上电路模块,电路中有3-8译码器,故位选信号为3位二进制顺序编码;动态扫描显示电路可利用实验三的设计文件;数据寄存器是由32个D 触发器构成,每四个为一组,每组保存一个BCD 码,其时钟信号由测频时序控制模块提供,在本实验中需自行设计;八位十进制计数器模块可利用实验四的设计文件;测频时序控制模块在本实验中需要自行设计;分频器是将输入的800Hz 显示扫描时钟进行分频得到所需的8Hz 时钟,并接至测频时序控制模块,本实验中需自行设计。

2)测频时序控制模块原理:该模块为频率计控制电路的核心,完成各模块的协调工作,按照时钟节拍完成测频功能。

其原理图如图1.5.2所示:8位七段数码管模块动态扫描显示电路 数据 寄存器 八位十进制计数器 测频时序控制 分频器 800Hz 时钟输入 8Hz 时钟输入 fx 被测信号输入clken clken clr clr clk lock lock clk sel2 sel1 sel0 a~g 图1.5.1 频率计组成框图图1.5.2 测频时序控制逻辑电路图其仿真波形如图1.5.3所示:图1.5.3 测频时序控制仿真波形2、设计要求:1)采用原理图或Verilog语言完成各模块的设计。

对本次实验所设计的测频时序控制模块、数据寄存器模块、时钟分频模块进行时序仿真,记录设计文件和仿真波形。

2)频率计顶层文件采用原理图设计,将各功能模块进行连接,并对整个频率计顶层设计进行仿真,最后下载至实验箱,完成实际信号的频率测量,记录顶层文件和仿真结果。

基于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或更高。

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

基于FPGA的等精度频率计的设计与实现

基于FPGA的等精度频率计的设计与实现

目录前言...............................................................1 第一章 FPGA及Verilog HDL..........................................2 1.1 FPGA简介.....................................................2 1.2 Verilog HDL 概述.............................................2 第二章数字频率计的设计原理........................................3 2.1 设计要求.....................................................3 2.2 频率测量.....................................................3 2.3.系统的硬件框架设计..............................................4 2.4系统设计与方案论证............................................5 第三章数字频率计的设计............................................8 3.1系统设计顶层电路原理图........................................8 3.2频率计的VHDL设计.............................................9 第四章软件的测试...............................................15 4.1测试的环境——MAX+plusII.....................................15 4.2调试和器件编程...............................................15 4.3频率测试.....................................................16基于FPGA的等精度频率计的设计与实现摘要:本文详细介绍了一种基于FPGA的高精度频率计。

基于VHDL语言及FPGA的等精度频率计设计

基于VHDL语言及FPGA的等精度频率计设计

第一章绪论随着基于PLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。

EDA技术使得设计者的工作仅限于利用软件的方式就可以完成对系统硬件功能的实现。

而等精度的频率计设计正是利用了EDA技术的这一优越性。

1.1 EDA 技术现代电子设计技术的核心是EDA(Electronic Design Automation)技术。

EDA技术就是依赖功能强大的计算机,在EDA 工具软件平台上,对以硬件描述语言HDL(Hardware Design Language)为系统逻辑描述手段完成的设计文件,并自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。

EDA技术使得设计者的工作仅限于软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。

EDA技术在硬件实现方面融合了大规模集成电路制造技术、IC 版图设计技术、ASIC测试和封装技术、FPGA/CPLD编程下载技术、自动测试技术等;在计算机辅助工程方面融合了计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)、计算机辅助工程(CAE)技术译介多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建设模和优化技术及长线技术理论等。

因此EDA 技术为现代电子理论和设计的表达与实现提供了可能性。

在现代化技术的所有领域种,得以飞速发展的科学技术多为计算机辅助设计,而非自动化设计。

显然,最早进入设计自动化的技术领域之一是电子技术,这就是为什么电子技术始终处于所有科学技术发展最前列的原因之一。

不难理解,EDA技术已不是某一学科的分支,或某种新的技能技术,它应该是一门综合性学科。

它融合多学科于一体,又渗透于各学科之中,打破了软件和硬件简的壁垒,使计算机的软件技术于硬件实现、设计效率和产品性能合二为一,它代表了电子设计技术合应用技术的发展方向。

基于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语言实现

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

五邑大学实验报告实验课程名称)数字频率计的Verilog HDL语言实现院系名称:信息工程学院专业名称:通信工程(物联网工程)实验项目名称:EDA实验班级: 110711学号:。

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

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

一般基准时钟的高电平的持续时间为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 实现上述要求的频率计。

四、设计源程序及注释与仿真结果设计源程序:module pinlvji(oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5,clk_50M,clk_1Hz,reset,signal_out); @input clk_50M,reset; //50MHz 时钟输入、复位output[6:0] oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5; //数码管0-5,分别显示个、十、百、千、万、十万位的数字output reg clk_1Hz;output reg signal_out; reg signal_in; reg[29:0] cnt;reg[29:0] cnt1; reg count_en; //计数允许,count_en=1时计数,下降沿到来时锁存reg load; reg[3:0] ge,shi,bai,qian,wan,shiwan; reg cout1,cout2,cout3,cout4,cout5;reg[3:0] q0,q1,q2,q3,q4,q5;wire clr; always @(posedge clk_50M) //改变Hz 的范围,自己设定的频率1Hz-999999Hzbegincnt1=cnt1+1;if(cnt1<=25_000_0) begin signal_out=0;signal_in=0;endelse if(cnt1==50_000_0) cnt1=0;【else begin signal_out=1;signal_in=0;endendalways @(posedge clk_50M) //50M分频产生1Hz时钟begincnt=cnt+1;if(cnt<=25_000_000) clk_1Hz=0;else if(cnt==50_000_000) cnt=0;else clk_1Hz=1;end/*被测信号signal_in作为个位的输入,,signal_in上升沿到来时ge位+1;进位输出是cout1,作为十位的输入*/always @(posedge signal_out or posedge reset or posedge clr)~begin if(reset) ge=0;else if(clr) ge=0;else begin if(count_en) begin if(ge==9) begin ge=0;cout1=1;endelse begin ge=ge+1;cout1=0;endendendend/*cout1作为十位的输入,cout1上升沿到来时shi位+1;进位输出是cout2,作为百位的输入*/always @(posedge cout1 or posedge reset or posedge clr)begin if(reset) shi=0;else if(clr) shi=0;¥else begin if(count_en) begin if(shi==9) begin shi=0;cout2=1;endelse begin shi=shi+1;cout2=0;endendendend/*cout2作为百位的输入,cout2上升沿到来时bai位+1;进位输出是cout3,作为千位的输入*/always @(posedge cout2 or posedge reset or posedge clr)begin if(reset) bai=0;else if(clr) bai=0;else begin if(count_en) begin if(bai==9) begin bai=0;cout3=1;endelse begin bai=bai+1;cout3=0;end…endendend/*cout3作为千位的输入,cout3上升沿到来时qian位+1;进位输出是cout4,作为万位的输入*/ always @(posedge cout3 or posedge reset or posedge clr)begin if(reset) qian=0;else if(clr) qian=0;else begin if(count_en) begin if(qian==9) begin qian=0;cout4=1;endelse begin qian=qian+1;cout4=0;endendend;endalways @(posedge cout4 or posedge reset or posedge clr)begin if(reset) wan=0;else if(clr) wan=0;else begin if(count_en) begin if(wan==9) begin wan=0;cout5=1;endelse begin wan=wan+1;cout5=0;endendendendalways @(posedge cout5 or posedge reset or posedge clr)begin if(reset) shiwan=0;<else if(clr) shiwan=0;else begin if(count_en) begin if(bai==9) begin shiwan=9;endelse begin shiwan=shiwan+1;endendendend/*****count_en=1时计数,count_en=0不允许计数********/always @(posedge clk_1Hz or posedge reset)begin if(reset) begin count_en=0;endelse begin count_en=~count_en;load=~count_en;endend//*****count_en下降沿到来时锁存数据****/ always @(negedge count_en)begin q0=ge; q1=shi;q2=bai; q3=qian;q4=wan; q5=shiwan;endassign clr=~clk_1Hz&load;/****调用数码管显示*****/led7s u0(q0,oHEX0);led7s u1(q1,oHEX1);led7s u2(q2,oHEX2);]led7s u3(q3,oHEX3);led7s u4(q4,oHEX4);led7s u5(q5,oHEX5);endmodulemodule led7s(datain,ledout);input[3:0] datain; output reg[6:0] ledout; always begin case(datain)0: ledout<=7'b1000000;1: ledout<=7'b1111001;2: ledout<=7'b0100100;3: ledout<=7'b0110000;)4: ledout<=7'b0011001;5: ledout<=7'b0010010;6: ledout<=7'b0000010;7: ledout<=7'b1111000;8: ledout<=7'b0000000;9: ledout<=7'b0010000;default:ledout<=7'b1000000;endcase endendmodule仿真波型:·五、心得体会虽然我以前上了Verilog HDL语言,但是这都实习中还是碰到了一些问题,通过向老师,向同学寻求帮助和在网上,在图书馆查找相关的资料来一点点解决遇到的问题,从中感觉自己对VHDL语言的理解又进了一步!对硬件描述语言和纯元件语言,如c语言之间的差别又有了更深一层次的理解,不过自我感觉想要对VHDL 语言要很熟练的掌握的话,还需要多多的联系才行的。

100MHz等精度频率计设计(基于某VerilogHDL]

100MHz等精度频率计设计(基于某VerilogHDL]

数电课设报告姓名:郑中权学号:152210303127班级:电子1班江苏科技大学2017/10/12100MHz等精度频率计设计(基于Verilog HDL)一、设计要求:提供一个幅值为10mV ~ 1 V,频率为 1 ~ 100MHz的正弦信号,需测试以下指标:1.频率:测频范围 1Hz ~ 100MHz,测频精度为测频全域内相对误差恒为百万分之一。

2.占空比:测试精度 1% ~ 99%3.相位差:测试两个同频率的信号之间的相位差,测试范围 0 ~ 360二、设计分析使用FPGA数字信号处理方法,首先需要将正弦信号转换成可读取的数字方波信号,再经过FPGA设计计算得出所需测量值。

三、模电部分首先选择比较器,对于 100 MHz 信号,比较器灵敏度需要达到5ns内,TI公司的LTV3501灵敏度为4.5ns,符合要求由TLV3501数据手册得知:当频率低于 50MHz 的时候,正弦波的峰峰值需大于 20mV,频率高于50MHz 时,峰峰值需大于 1V。

然后需要选择放大器,当正弦波幅值为 10mV时,放大倍数需大于35。

方法通过二级放大,一级用OPA847放大20倍,二级用OPA675放大8倍,得到总放大倍数160的正弦波。

经转换后的输出电压符合TTL电平要求,可以被识别出0和1。

四、数电部分开发板:Cyclone IV E: EP4CE6E22C8板载时钟为 50MHz,带4个按键和一个复位键(按键按下为0,抬起为1),四个七段数码管(共阳),FPGA的引脚可由杜邦线引出。

设计思路:测量频率:输入一个100MHz的基准频率,由计数器CNT1来计算基准频率的上升沿个数,即周期数。

输入一个被测信号,它由计数器CNT2来测量周期数。

两个信号在同一个使能信号EN(使能信号时间为1~2s)下开始计数,计数完后,存储计数结果,由(CNT1 * 10)可以算出具体的计数时间(单位ns),再由((CNT1 * 10ns)/CNT2 )*10^9可算得被测信号频率,单位Hz。

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

基于Ver ilog语言的等精度频率计设计赵 亮,吴振宇(大连理工大学创新院,辽宁省大连市116023)摘 要:介绍了等精度测量频率的原理,利用Veril og硬件描述语言设计实现了频率计内部功能模块,对传统的等精度测量方法进行了改进,增加了测量脉冲宽度的功能;采用AT89S51单片机进行数据运算处理,利用液晶显示器对测量的频率、周期、占空比进行实时显示,可读性好。

充分发挥FPG A(现场可编程门阵列)的高速数据采集能力和单片机的高效计算与控制能力,使两者有机地结合起来。

在QuartusⅡ6.0EDA(电子设计自动化)开发平台上进行仿真、测试,并最终下载到FPG A芯片内部。

系统测量精度高,实时性好,具有很好的应用前景。

关键词:等精度;频率计;Veril og硬件描述语言;单片机中图分类号:T M935.1收稿日期:2007201222;修回日期:2007203221。

0 引 言传统测量频率的方法主要有直接测量法、分频测量法、测周法等,这些方法往往只适用于测量一段频率,当被测信号的频率发生变化时,测量的精度就会下降。

本文提出一种基于等精度原理的测量频率的方法,在整个频率测量过程中都能达到相同的测量精度,而与被测信号的频率变化无关。

本文利用FPG A(现场可编程门阵列)的高速数据处理能力,实现对被测信号的测量计数;利用单片机的运算和控制能力,实现对频率、周期、脉冲宽度的计算及显示。

1 等精度测量原理等精度测量的一个最大特点是测量的实际门控时间不是一个固定值,而是一个与被测信号有关的值,刚好是被测信号的整数倍。

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

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

如图1所示。

图1 等精度测量原理系统中,如果采用的标准信号源的精度很高,就可以达到一个很高的测量精度,一般情况下都是采用晶体作为标准信号源,因此可以达到很高的精度,满足一般系统的要求。

2 FPGA模块设计本系统在传统的等精度测量原理基础上进行了改进和优化。

增加了测量占空比的功能,同时由FPG A内部产生清零信号,节省了资源。

改进后的FPG A核心模块如图2所示。

FPG A部分主要由门控信号产生模块、计数器控制模块、计数器模块、锁存器、中断输出、数据选择输出、顶层模块组成。

图2 等精度测量核心结构1)门控信号为了测量频率为1Hz的信号,要求系统的开门时间不小于1s;同理,为了测量0.1Hz频率的信号,要求开门时间最短为10s。

但是如果系统一直采用10s的门控信号,测量高频信号的等待时间太长,显然不合理,因为测量结果的显示必须要等到一个测量周期结束之后才能更新。

本系统采用的方法是,由单片机给FPG A提供一个门控的选择信号,如果FPG A测得的频率小于1Hz,那么单片机自动给出一个启动10s门控・41・第33卷第9期2007年9月电子工程师 E LECTRON I C E NGI N EER Vol.33No.9Sep.2007的控制信号;反之,如果发现测量的频率大于1Hz,自动切换回1s 门控,实现了一个闭环的自动控制,很好地解决了门控的时间问题。

2)计数器控制模块该模块是本文的创新点所在,主要用来同步被测信号。

由前面的分析可知,门控信号启动(上升沿)后,在被测信号的上升沿启动计数允许模块,允许计数器计数;门控信号关闭(下降沿)后,在被测信号的下一个上升沿关闭计数允许模块,停止计数,从而保证了门控信号是被测信号的整数倍,达到了等精度的目的。

该模块有G ATE 、CLK_x 这2个输入端;EN _h 、E N _x 、Load 、CLR 这4个输出端。

G ATE 为上一级给出的门控信号;CLK_x 为被测信号;E N _h,高电平期间对标准信号进行计数,得到CNT_h;E N _x 为给出的允许计数信号,在E N _x 的高电平期间,对被测信号、标准信号同时计数,得到CNT_x 、CNT_b;Load 为锁存信号;CLR 为计数器清零信号。

由CNT_x 和CNT_b 可以计算出被测信号的频率和周期;由CNT_x 和CNT_h 可以计算出被测信号的脉冲宽度。

仿真图如图3所示。

图3 Quartus 仿真 3)计数器模块在设计计数器的过程中需要注意计数器的宽度设置,系统中采用的最大门控时间为10s,标准信号源的频率为50MHz,则在计数的允许时间内计数的最大值为:10×50000000=500000000<229=536870912,为了方便数据传输,系统中采用了32位位宽的计数器。

4)锁存器模块在门控信号关闭的同时,停止计数,同时启动锁存模块,把测量的数据锁存起来,以便传输。

5)中断输出锁存数据的同时,给单片机一个低电平的中断信号,通知单片机读取数据。

6)数据选择输出模块系统中采用了3个32位的计数器,由于单片机采用的是51系列单片机,只有8位的数据总线,所以一次通信只能传输8位数据,3×32/8=12,所以设计了一个数据输出控制模块,由单片机提供4根地址线,译码后可以选择16组数据,单片机得到中断通知后,分12次读取测量的数据。

7)顶层模块实例化所有的底层模块,同时为了调试方便,加入了一些测试点。

FPG A 部分的整体结构图如图4所示。

图4 FPGA 整体结构3 单片机模块控制3.1 理论分析在计数允许E N _x 时间内,对被测信号和标准信号同时进行进行计数,得到CNT_x 和CNT_b,设被测信号的周期为T x 、频率为F x ,标准信号周期为F b 、频率为F b 。

则有:CN T_x ×T x =CN T_b ×T b(1)・51・第33卷第9期赵 亮,等:基于Veril og 语言的等精度频率计设计・测控技术・式中:T x =1F x(2)T b =1F b(3) 将式(2)、式(3)代入式(1)可以得到:CN T_x F x=CN T_bF b(4) 变换可以得到被测信号频率为:F x =F bCNT_b×CNT_x (5)系统实现的被测频率为:F_x =F_bCN T_F_b×CNT_F_x(6)被测周期为:T_x =1F_x(7)占空比r 为:H_du ty =CNT_F_h /CNT_F_b(8) 系统中采用式(6)~式(8)进行计算,得到最终的测量数据,单片机中采用浮点数进行运算,计算的精度可以满足系统的要求。

3.2 硬件电路系统硬件电路比较简单,就是单片机的最小系统加上液晶显示模块,设计时需要注意,51单片机端口电压是5V 输出,而FPG A 是3.3V 输出,所以在数据传输时要串联一个电阻,一般100Ω~300Ω即可。

电路原理图如图5所示。

图5 单片机部分电路3.3 软件设计单片机软件主要由系统初始化、数据传输、频率、周期、占空比计算、液晶显示等程序模块组成。

下面简单介绍主函数及计算子函数。

系统主函数:void main (void ){ I nit_mcu (); //初始化系统 while (1) { if (F_x <1) //判断测量的频率大小,控制门控 Sel_gate =1; if (F_x >1) Sel_gate =0; if (flag ) //进入中断 { Trans (); //传输数据 Cal (); //计算 flag =0; //清除中断标志位 } D is p lay (); //显示测量的结果 }}计算子函数:void Cal (void ){ l ong te mp3,temp2,temp1,temp0; //定义临时变量 te mp3=Cnt_F_b_data[3]; te mp2=Cnt_F_b_data[2]; te mp1=Cnt_F_b_data[1]; te mp0=Cnt_F_b_data[0]; Cnt_F_b =(te mp3<<24)+(te mp2<<16)+(temp1<<8)+(te mp0<<0);// 将测得的数据进行组合 te mp3=Cnt_F_x_data[3]; te mp2=Cnt_F_x_data[2]; te mp1=Cnt_F_x_data[1]; te mp0=Cnt_F_x_data[0]; Cnt_F_x =(te mp3<<24)+(te mp2<<16)+(temp1<<8)+(te mp0<<0); te mp3=Cnt_F_h_data[3]; te mp2=Cnt_F_h_data[2]; te mp1=Cnt_F_h_data[1]; te mp0=Cnt_F_h_data[0]; Cnt_F_h =(te mp3<<24)+(te mp2<<16)+(temp1<<8)+(te mp0<<0); F_x =F_b /Cnt_F_b 3Cnt_F_x;// 计算频率 T_x =1/F_x;// 计算周期 H_duty =Cnt_F_h /Cnt_F_b;// 计算占空比}・61・・测控技术・电子工程师2007年9月软件流程如图6所示。

图6 系统流程中断服务子程序如图7所示。

图7 中断服务子程序4 结束语本系统设计采用FPG A 和单片机结合的方式实现等精度测量频率,充分发挥了FPG A 高速的数据处理能力以及单片机的计算、控制能力。

采用Veril og 硬件描述语言对系统进行仿真测试,最终下载到FPG A 内部。

单片机采用C 语言编写程序,利用浮点数进行计算,精度高。

同时设计了门控信号自动选择的闭环控制,大大地提高了系统的性能。

等精度测量技术在生产、实验等环境中得到了广泛的应用。

参 考 文 献[1]P ALN I TK AR S .Veril og HDL 数字设计与综合[M ].二版.夏宇闻,胡燕祥,刁岚松,等译.北京:电子工业出版社,2004.[2]常晓明,李媛媛.Veril og -HDL 工程实践入门[M ].北京:北京航空航天大学出版社,2005.[3]马忠梅.单片机的C 语言应用程序设计[M ].北京:北京航空航天大学出版社,2003. 赵 亮(19832),男,硕士研究生,主要从事FPG A 方面的研究工作。

Desi gn of Equal Precisi on Frequency M eter Basedon Ver ilog H DLZHAO L i a ng,W U Zhenyu(Dalian University of Technol ogy,Dalian 116023,China )Abstract:The p rinci p le of equal p recisi on measure ment is intr oduced in this paper,it adop ts Veril og Hardware Descri p ti on Language t o i m p le ment functi on module in frequency meter,and adds pulse width meas 2ure ment on the base of traditi onal frequency measure ment .It als o adop ts AT89S51M icr o Contr oller Unit asdata p r ocessing unit,uses LCD1602equi pment t o dis p lay frequency,peri ods and pulse in real 2ti m e .FPG A ′s high 2s peed data acquisiti on and high 2perfor mance contr olling and computing of MCU are rep resented in this syste m.Data is si m ulated and tested in Quartus Ⅱ6.0E DA devel opment p latfor m ,and finally do wnl oaded t o the chi p.Keywords:equal p recisi on measure ment;frequency meter;Veril og HDL;MCU欢 迎 投 稿E 2mail:radarnet @126.co m・71・第33卷第9期赵 亮,等:基于Veril og 语言的等精度频率计设计・测控技术・。

相关文档
最新文档