资源描述
基于FPGA单片机的简易频率计设计四院三队:钟 乐 鹏陆 海 维周 亮 目录摘要:2一、方案描述3二、 电路设计32.1前级移相放大模块32.2移相模块42.3整形模块52.4幅度测量模块5三、程序设计63.1单片机控制软件流程图63.2 FPGA仿真73.2.1总体设计思路73.2.2模块组成及流程8四、测试方案与测试结果134.1测试方案与测试条件134.1.1测试方案134.1.2测试条件134.2测试结果及其准确性和有效性14摘要: 本系统是一个可完成频率测量、周期测量、相位差测量、脉宽和幅度测量的多功能装置。这些功能都可以通过矩阵键盘控制,液晶屏显示,并有效实现各功能的灵活切换。 该系统的工作方式为:首先外围硬件则负责把测量信号转换为FPGA和单片机可测的高低电平信号,信号经过FPGA处理得到前四项功能的相关数据,并在单片机的控制下,将处理得到的数据发送给单片机计算和显示;信号经过AD发给单片机完成幅度的测量。 测量0.1Hz10MHz信号的频率(信号幅度0.5V5V),测量误差为0.01%。在频率小于10KHZ段采用测周法,实际测量精度达到小数点后面5位,高频段采用等精度测量法,实际测量精度至少达到0.01%,两种方法的切换通过软件内部对输入信号频率自动识别无需按键控制,周期测量与频率测量同范围等精度。 测量脉冲波(信号幅度0.5V5V)、脉冲宽度100s)的脉冲宽度 ,测量误差1%,分辨率小数点后面5位。 测量周期脉冲信号(幅度0.5V5V、频率0.1Hz10MHz)的占空比,占空比变化范围为10%90%,测量误差1%,分辨率小数点后面5位 ; 测量正弦信号的相位差(幅度0.5V5V、频率10HZ100KHz)实现量程为0360,测量准确度为2,分辨率小数点后面5位。 测量脉冲波(信号幅度0.5V5V)、脉冲宽度100s)的幅度,测量误差1%,分辨率小数点后面5位。一、方案描述本系统主要由以下部分组成:单片机整体控制部分,键盘控制部分,液晶显示部分,幅度测量部分,FPGA模块部分(频率测量、周期测量、相位差测量、脉宽测量)。 图1-系统框图 2、 电路设计2.1前级移相放大模块原 理:基于LF353D的运算放大器设计设计思路:将输入信号通过结构对偶的两个二极管(1N4148)进行稳幅,然后运用典型的比例放大电路对信号进行放大。调试过程中可以通过调节反馈电阻的阻值实现对信号不同程度的放大。电路图:图2-1-1 放大电路2.2移相模块原 理:基于RC的移相网络的设计设计思路:考虑到本设计主要目的为检测两个有相位差的正弦信号之间的相位差,而不是以移相为目的。故用最简单的RC网络进行移相。因为RC移相的效果与输入信号的频率有关,为了使移相达到最佳的效果,移相网络分为高频部分和低频部分。两部分的结构都是高通滤波,使输出信号产生超前的相移,不同之处只在于RC网络的参数选取。高频率部分的RC应选取小参数,低频率部分的RC应选取大参数,这样才能保证移相。电路图:图2-1-2 移相电路2.3整形模块原 理:基于LF353、CD4069的整形设计设计思路:由于在同一个电路中实现整形对芯片的要求很高,代价较大。因此选择将整形模块分为高频和低频两部分。根据实际面包板搭线调试,低频部分通过高放大倍数,使输入信号近似整形为方波,再输入CD4069进行整形与TTL电平匹配;高频部分直接利用CD4069处于线性放大区的应用方式使高频波形达到监测需求电路图:图2-1-3a图2-1-3b2.4幅度测量模块原 理:基于TLC549的A/D设计设计思路:本模块以TLC549为核心,其所采集的直流信号送入单片机中与其供电所采用的+5V的电压为基准进行比较,从而得出所测电压值并在液晶屏上显示。电路图:三、程序设计3.1单片机控制软件流程图软件流程图如下图所示:3.2 FPGA仿真3.2.1总体设计思路总体思路分为两部分,分别为低频部分和高频部分,低频部分采用测周的思路进行,高频部分采用等精度的思路进行以达到精度的要求,具体实现由各模块完成。3.2.1.1测周法测周方法即被测信号(频率或周期待测)做门控信号,T为未知量,做门控信号T,然后在门控信号有效的时间段内对时基信号脉冲计数,原理图如下图所示:图 1-2 测周方法原理图计数器测周的基本原理即由被测信号控制主门开门,而用时标脉冲进行计数,所以实质上也是一种比较测量方法。3.2.1.1等精度法等精度测量法的核心思想是通过闸门信号与被测信号同步,将闸门时间控制为被测信号周期长度的整数倍。测量时,先打开预置闸门,当检测到被测信号脉冲沿到达时,标准信号时钟开始计数。预置闸门关闭时,标准信号并不立即停止计数,而是等检测到被测信号脉冲沿到达时才停止,完成被测信号整数个周期的测量。测量的实际闸门时间可能会与预置闸门时间不完全相同,但最大差值不会超过被测信号的一个周期。在等精度测量法中,相对误差与被测信号本身的频率特性无关,即对整个测量域而言,测量精度相等,因而称之为“等精度测量”。标准信号的计数值越大则测量相对误差越小,即提高门限时间和标准信号频率fc可以提高测量精度。在精度不变的情况下,提高标准信号频率可以缩短门限时间,提高测量速度。原理图如下:3.2.2模块组成及流程FPGA包括分频闸门模块,计数模块,输入分频模块,锁存模块,输入移相模块和单片机通信模块组成。其总流程如下所示:3.2.2.1分频产生闸门模块对系统时钟进行计数,当计数值达到门值(clk_gate)时输出信号翻转,检测到k_u下降沿(由单片机产生)则门+1,直到门值为10时保持不变,检测到k_d则门-1,直到门值为1则保持不变。源程序:14module div_colock(clk,rst,k_u,k_d,clk_XHZ);input clk,rst,k_u,k_d;output clk_XHZ;reg clk_xhz;reg29:0 count_div;reg3:0count_gate; wireclk_XHZ;reg29:0compare;always(count_gate)begincompare=count_gate*50000000;endassign clk_XHZ=clk_xhz;always(negedge k_u or negedge k_d or negedge rst) beginif(!rst)begincount_gate=1;endelse if(!k_u)beginif(count_gate!=10) count_gate=count_gate+1;else count_gate=10;endelsebeginif(count_gate!=1) count_gate=count_gate-1;elsecount_gate=1;endendalways(posedge clk or negedge rst)begin if(!rst)begincount_div=0;endelsebegin/产生XS的的闸门信号if(count_div=compare) begin count_div=0;clk_xhz=clk_xhz;endelse count_div=count_div+1; endendendmodule分频闸门模块RTL仿真图:3.2.2.2计数模块在闸门下高电平则对输入信号进行计数,低电平把数据传给锁存器,同时计数值清零。源程序:/*clk为时钟信号,clk_1hz为门控信号,rst为复位信号,count为计数值*/module frq(clk_test,clk_gate,rst,COUNT);input clk_test,clk_gate,rst;/输入门信号,复位信号,时钟信号output COUNT;/输出由十进制数表示的八位计数值reg28:0 count_cat;reg28:0 count;reg1:0count_plan;wire28:0 COUNT;assign COUNT=count;always(posedge clk_test or negedge rst)beginif(!rst)begin count=0;count_cat=0;endelsebeginif(!clk_gate)beginif(count_plan=0)begincount=count_cat;count_plan=1;endelse begincount_cat=0;count_plan=1;endendelsebegincount_cat=count_cat+1;count_plan=0;endendendendmodule计数模块RTL仿真图为:3.2.2.3锁存模块门信号低电平存储数据,高电平刷新数据。源程序:module store(clk_gate,rst,count,FOUT,control);input clk_gate,rst,control;input 28:0 count;wire 28:0count;output FOUT;wire28:0 FOUT;reg28:0 fout;assign FOUT=fout;always(posedge clk_gate or negedge rst)beginif(!rst)beginfout=0;endelsebeginif(!control)fout=fout;elsefout=count;endendendmodule锁存模块RTL仿真图为:3.2.2.4通信模块当s_en端检测到低电平后,关掉锁存模块的刷新数据功能,同时向单片机给出响应信号control,单片机开始从clk_com连续给出300个下降沿,FPGA在前145个下降沿由低位向高位发145位数据,在后145个下降沿由高电平向低电平发145位数据。源程序:module contact(clk_com,rst,s_en,Fout_contact,date,control);input clk_com,s_en,rst;input 144:0Fout_contact;Output date,control;reg date,control;reg144:0 Fout_r;reg7:0 i;reg state;always (negedge clk_com or negedge rst)beginif(!rst)begincontrol=1;i=0;state=0;endelse if(!s_en)begincontrol=1;case (state)1b0:begindate=Fout_ri;if(i=144)begini=144;state=1;endelse i=i+1;end1b1:begindate=Fout_ri;if(i=0)begini=0;state=0;endelse i=i-1;endendcaseendelsebeginFout_r=Fout_contact;i=0;control=0;state=0;endendendmodule通信模块RTL仿真图为:3.2.2.5移相变换闸门模块当检测到输入信号的下降沿时门信号置1,检测到移相后的信号的下降沿时门信号置0:源程序:module d(d,reset,q);input d,reset;output q;reg q;always(posedge d or negedge reset)beginif(!reset)q=0;else q(1HZ1MHZ),占空比变化范围为10%90%,测量误差1% 。十进制数字显示,测量闸门时间110秒连续可调(步长1秒),对上述三种测量功能分别用不同颜色的发光二极管指示实现附加,显示频显示测量并显示相位差,正弦信号的量程:0360,测量准确度:2,分辨率:1实现附加相位差实际的测量范围达到:0+2f10-5360-2f10-5测量并显示周期脉冲信号(幅度0.5V5V、频率1Hz1kHz)的幅度,测量误差1% 实现精度可达到1/255
展开阅读全文