




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于FPGA的数字频率计设计学院: 专业: 班级: 姓名: 学号: 审阅老师: 评分: 目录一、课程设计目的3二、设计任务3三、功能要求与技术指标3四、数字频率计工作原理概述4五数字频率计实现方法4六结论与误差分析11七VHDL程序:12一、课程设计目的熟悉EDA工具,掌握用VHDL语言进行数字系统设计的基本方法和流程,提高工程实践能力。二、设计任务设计一数字频率计,用VHDL语言描述,用QuartusII工具编译和综合,并在实验板上实现。三、功能要求与技术指标1. 基本功能要求(1) 能够测量出方波的频率,其范围50Hz50KHz。(2) 要求测量的频率绝对误差5Hz。(3) 将测量出的频率以十进制格式在实验板上的4个数码管上显示。(4) 测量响应时间小于等于10秒。以上(1)(4)基本功能要求均需实现。2. 发挥部分(1) 提高测量频率范围,如10Hz100KHz或更高、更低频率,提高频率的测量绝对值误差,如达到1Hz。(2) 可以设置量程分档显示,如X1档(显示范围1Hz9999Hz),X10档(显示范围0.001KHz9.999KHz),X100档(显示范围0.100KHz999.9KHz).可以自定义各档位的范围。量程选择可以通过按键选择,也可以通过程序自动选择量程。(3) 若是方波能够测量方波的占空比,并通过数码管显示。以上(1)(3)发挥功能可选择实现其中的若干项。四、数字频率计工作原理概述1. 数字频率计简介在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。而数字频率计是采用数字电路制成的实现对周期性变化信号的频率的测量。2. 常用频率测量方法:方案一采用周期法。通过测量待测信号的周期并求其倒数,需要有标准倍的频率,在待测信号的一个周期内,记录标准频率的周期数,这种方法的计数值会产生最大为1个脉冲误差,并且测试精度与计数器中记录的数值有关,为了保证测试精度,测周期法仅适用于低频信号的测量。方案二采用直接测频法。直接测频法就是在确定的闸门时间内,记录被测信号的脉冲个数。由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为1个脉冲误差。进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量相对误差为Tx/T=Tx=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。五数字频率计实现方法本文采用方案二直接测频法进行设计,具体实施方法如下:1. 直接测频法:采用一个标准的基准时钟,在单位闸门时间(1s)里对被测信号的脉冲数进行计数,即为信号的频率。由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为1个脉冲误差。进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量相对误差为Tx/T=Tx=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。2. 具体设计流程:1). 基本功能部分:(1). 原理概述:利用FPGA实验板的基准时钟50M分频产生一个1Hz的脉冲方波作为闸门信号;当待测信号的上升沿到来时,利用四个个十进制计数器(即最高能记到9999次数)对其上升沿进行计数;计数的同时不断把数锁存,并送到数码管显示部分显示;当1Hz闸门信号的上升沿到来时,对锁存送到显示部分的数据用十进制显示到四位数码管,一旦显示后就把四个计数器的值清零,计数器重新对待测信号上升沿计数并锁存,直到1Hz闸门信号的下个上升沿到来时在把这次闸门时间内记到的数据送去数码管显示。 如此循环,实现对不是固定频率的待测信号的频率每秒更新 一次的功能。(2)设计原理时序图: 1Hz闸门信号然后计数器清零clr=1,重新计数锁存计数值,并送数码管显示1秒时间宽度待测信号清零信号clr 2). 扩展功能部分:(1). 原理概述:一、分档显示部分在基本功能的计数部分增加至八个计数器(即最高能记到99.999999M次数)对待测信号上升沿进行计数;对记到的数据按优先级由最高位往低位判断,若第七位有进位,则表示第八个计数器有计数,故要锁存最高四位计数器 内容并送数码管显示,若为第六位数码管有进位,则显示次高四位计数器内容,以此类推;判断相应的档位的同时给每个档位一个变量赋值,用于判断小数点的位置 。以KHZ为单位,则四位数码管最高能显示9999Khz。若显示最高四位计数器内容(即是X10000档(1099.99MHZ)),由于已超出四位数码管显示范围,则可以用按键显示最低四位计数器内容,同时让DS1(千位)数码管小数点亮。如图所示显示的频率为25MHZ(25000.000HZ): 未按键时显示最高四位数字; 按住按键S5显示低四位数字若未超出四位数码管显示范围,则按照如下显示小数点:X1000档(19999khz)只显示个位小数,X100档(0.1999.9khz)只显示十位小数点,X10档(0.0199.99khz)只显示百位小数点,X10档(0.0199.99khz)只显示百位小数点,X1档(0.0019.999khz)只显示千位小数点。显示效果如下图所示:显示频率1953.13KHZ 也可按住按键S5显示其余低位 显示频率6.103HZ(误差1HZ) 显示频率6HZ二、占空比部分利用基准时钟产生一个10MHZ的频率用于标准计数信号;在1HZ闸门信号上升沿到来时,10MHZ计数信号开始计数,同时在待测信号为高电平时,用七个计数器对10MHZ信号的上升沿次数计数,低电平时不计数;当1HZ闸门信号的下个上升沿到来时,10MHZ计数信号刚好计数10M次(1s时间),此时取待测信号高电平期间七个计数器的最高四位的数据锁存并送数码管显示,显示时数码管DS2(百位)小数点亮,所得结果即为待测信号的占空比(单位为%),如下图所示: 按下按键 S6显示占空比(50.00%) (2). 测量占空比设计原理时序图1Hz闸门信号计数器清零clr=1,重新计数高电平时才计数,并送数码管显示1秒时间宽度待测信号标准计数信号10MHZ计上升沿次数10M次(1s时间)六 结论与误差分析1. 频率测量部分:(1). 结论:能测到待测信号的频率范围理论上为1HZ99.999999MHZ,实际测试时最高只用过25MHZ的频率进行测试,结果相差1Hz,达到设计要求。(2). 误差分析:由于采用直接测频法,1S闸门时间通常不是待测信号的整数倍,因此计数值也产生最大为1个脉冲误差。设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量相对误差为Tx/T=Tx=1/Fx。所以,直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。2. 占空比测量部分:(1). 结论:高频时对占空比在5%95%的待测信号测试误差为0.5%,最高能测试到25MHZ的占空比;在低频时测量的占空比有较大误差。(2). 误差分析:由于1S闸门时间内用10MHZ的基准信号在待测信号的高电平是计数,故误差产生的原因有一下两点:待测信号进入闸门的状态随机(可能是高电平,也可能是低电平),所以对高频信号,测量到的占空比误差比较小;对低频信号误差较为明显,若进出闸门的状态同为高电平,则在1S闸门时间内对高电平的状态就有多计数,结果偏高;若进出闸门的状态同为低电平,则在1S闸门时间内对高电平的状态就少计数,结果偏低。待测信号进入闸门的状态随机,且1S闸门时间通常不是待测信号的整数倍,以10MHZ信号作为基准信号计数10M次上升沿作为待测信号在1S时间内整数个周期的时间,本身只是个近似值,所以对高频时误差较小,低频时有较大误差。 七VHDL程序:-*library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity frequency_meter isport(clk ,d0,d1 :in std_logic;clkx :in std_logic;wei :out std_logic_vector(3 downto 0); led :out std_logic_vector(7 downto 0) );end entity frequency_meter;-*Architecture abc of frequency_meter issignal led1, led2, led3, led4 :std_logic_vector(7 downto 0):=11000000; signal ge ,shi, bai, qian :integer range 0 to 10:=0; signal clk_1 :std_logic :=1 signal clk_0, clk_1hz, clk_10m, freq12k : std_logic; signal temp : std_logic_vector(22 downto 0);begin-*p0*产生10mHZ频率* p0 : process(clk) isvariable counter0 :integer :=0; beginif (clkevent and clk=1 ) then counter0:=counter0+1; if (counter0=25) then clk_0=not clk_0;counter0:=0; end if; end if; clk_10m=clk_0; end process p0;-*p1*产生1HZ频率* p1 : process(clk) isvariable counter1 :integer :=0; beginif (clkevent and clk=1 ) then counter1:=counter1+1; if (counter1=25000000) then clk_1=not clk_1;counter1:=0; end if; end if; clk_1hz=clk_1; end process p1;-*p2*分频出12k频率用于数码管位选扫频* p2 : process(clk) isbeginif (clkevent and clk=1 ) then temp=temp+1; end if; freq12k=temp(11); -12207Hz end process p2;-*p3*主程序(显示,分档,占空比测量)* p3 : process(clk,clk_1hz,clkx) isvariable counter2,counter3 :integer :=0;variable aa,bb,cc,dd,ee,ff,gg,hh,za,zb,zc,zd,ze,zf,c,d,e,f:integer range 0 to 10:=0;variable temp2,temp3,temp4,temp5:integer range 0 to 10:=0;variable dip0,dip1,dip2,dip3,dip4,dip5,dip6,dip7 :integer :=0;variable clr :integer:=0;begin-*p3_1-计数显示*-if(clkxevent and clkx=1)thenaa:=aa+1; if(aa=10)thenaa:=0;bb:=bb+1;if(bb=10)thenbb:=0;cc:=cc+1;if(cc=10)thencc:=0;dd:=dd+1;if(dd=10)thendd:=0;temp2:=1;-temp2ee:=ee+1;if(ee=10)thenee:=0;temp3:=1;-temp3ff:=ff+1;if(ff=10)thenff:=0;temp4:=1;-temp4gg:=gg+1;if(gg=10)thengg:=0;temp5:=1;-temp5hh:=hh+1;if(hh=10)thenhh:=0;end if;end if; end if;end if;end if;end if;end if;end if; -*p3_2-分档显示*-if(d0=0)then-按键按下显示占空比,否则显示频率-ge=c;shi=d;bai=e;qian=f;dip2:=1;-只显示百位小数点-elsif(d0=1)thenif(temp5=1)then-X10000档(99.999999mhz)- -超出四个数码管显示范围,可以按键显示-ge=ee;-最低四位,同时只显示千位小数点-shi=ff;bai=gg;qian=hh;dip5:=1;elsif(temp4=1)then-X1000档(19999khz)只显示个位小数点ge=dd;shi=ee;bai=ff;qian=gg;dip4:=1;elsif(temp3=1)then-X100档(0.1999.9khz)只显示十位小数点ge=cc;shi=dd;bai=ee;qian=ff;dip3:=1;elsif(temp2=1)then-X10档(0.0199.99khz)只显示百位小数点ge=bb;shi=cc;bai=dd;qian=ee;dip2:=1;else-X1档(0.0019.999khz)只显示千位小数点ge=aa;shi=bb;bai=cc;qian=dd;dip1:=1;end if;end if;-*p3_3-显示低位*-if(d1=0)thendip6:=1;-小于X10000档的低四位不显示小数点-if(dip5=1)thenge=aa;shi=bb;bai=cc;qian=dd;dip6:=0;-X10000档的高位不显示小数点-dip7:=1;-X10000档的低位千位显示小数点-elsif(dip4=1)thenge=0;shi=aa;bai=bb;qian=cc;elsif(dip3=1)thenge=0;shi=0;bai=aa;qian=bb;elsif(dip2=1)thenge=0;shi=0;bai=0;qian=aa;elsege=0;shi=0;bai=0;qian=0;end if;elsif(d1=1)thendip6:=0;dip7:=0;end if;end if; -*p3_4-占空比*-if(clk_10mevent and clk_10m=1)thencounter2:=counter2+1;if(counter2=1000000)then-10mhz频率,计数到1000000为1s-c:=zc;-停止检测高电平并锁存高四位计数器值-d:=zd;e:=ze;f:=zf;end if;end if;if(clkx=1)then-测待测方波高电平-if(clk_10mevent and clk_10m=1)thencounter3:=counter3+1;za:=za+1;if(za=10)thenza:=0;zb:=zb+1;if(zb=10)thenzb:=0;zc:=zc+1;if(zc=10)thenzc:=0;zd:=zd+1;if(zd=10)thenzd:=0;ze:=ze+1;if(ze=10)thenze:=0;zf:=zf+1;if(zf=10)thenzf:=0;end if;end if;end if;end if;end if;end if;end if;end if;-*p3_4-数码管显示部分*-if(clk_1hzevent and clk_1hz=1)then-1s显示一次频率-*小数点显示*-if(dip7=1)thenled4(7)=1;led3(7)=1;led2(7)=1;led1(7)=0;elsif(dip5=1 or dip6=1)thenled4(7)=1;led3(7)=1;led2(7)=1;led1(7)=1;elsif(dip4=1)thenled4(7)=0;led3(7)=1;led2(7)=1;led1(7)=1;elsif(dip3=1)thenled4(7)=1;led3(7)=0;led2(7)=1;led1(7)=1;elsif(dip2=1)thenled4(7)=1;led3(7)=1;led2(7)=0;led1(7)=1;elsif(dip1=1 )thenled4(7)=1;led3(7)=1;led2(7)=1;led1(7)led1(6 downto 0)led1(6 downto 0)led1(6 downto 0)led1(6 downto 0)l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地下车库土地租赁及车位销售合同
- 2025公务员妆容面试题及答案
- 电子商务平台与高校人才输送合作协议范本
- 企业可持续发展合理化建议合作合同
- 军官专业面试题目及答案
- 专业心态测试题及答案
- 测序成本下降策略-洞察及研究
- 2025至2030医药级甘氨酸行业发展趋势分析与未来投资战略咨询研究报告
- 消防安全核查培训内容课件
- 消防安全月培训简讯课件
- GB/T 9115-2010对焊钢制管法兰
- GB/T 6208-1995钎料型号表示方法
- 45G互操作及信令流程
- 酿酒系统安全培训课件
- 2018年全国成人高考专升本政治试题答案
- 灭火器每月定期检查及记录表
- 卡西欧PRO-TREK-PRW-6000使用手册-基础操作
- 小学英语外研版5A Unit2 They sell many different things Module 2部优课件
- 档案职称考试培训练习题汇总(带答案)
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- 热学教学课件全套电子教案汇总整本书课件最全教学教程完整版教案(最新)
评论
0/150
提交评论