EDA数字频率计设计报告.docx
《EDA数字频率计设计报告.docx》由会员分享,可在线阅读,更多相关《EDA数字频率计设计报告.docx(15页珍藏版)》请在冰豆网上搜索。
EDA数字频率计设计报告
考试序号:
11
数字频率计设计说明书
学生姓名:
刘慧
学号:
14122502243
专业班级:
电子12-1BF
报告提交日期:
2014.11.26
湖南理工学院物电学院
一、前言····························································2
2、设计内容·······················································2
3、设计方案·······················································3
1、输入模块························································3
2、控制信号发生器模块··············································6
3、分频计的设计··················································7
4、译码模块·······················································10
5、动态扫描电路···················································11
6、七段数码管驱动电路的VHDL设计································11
7、译码电路的设计················································13
4、频率计测量频率的顶层设计和仿真································14五、下载与测试····················································15
六、结束语························································16
一、前言
(1)背景介绍
频率计是电子技术中常用到的一种电子测量仪器,我们以往用的频率计大都是采用单元电路或单片机技术设计的,采用传统的手工设计发展而来的自底向上的设计方法。
本设计采用自顶向下的设计方法.整个设计是从系统顶层开始的,结合模拟手段,可以从一’开始就掌握所实现系统的性能状况,结合应用领域的具体要求,在此时就调整设计方案,进行性能优化或折衷取舍。
随着设计层次向下进行,系统性能参数将得到进一步的细化与确认,随时可以根据需要加以调整,,从而保证了设计结果的正确性,缩短了设计周期,设计规模越大,这种设计方法的优势越明采用VDHL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余全部在一片FPGA芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。
在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。
该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。
数字频率计分类
国际上数字频率计的分类很多。
按功能分类,因计数式频率计的测量功能很多,用途很广。
所以根据仪器具有的功能,电子计数器有通用和专用之分。
(1)通用型计数器:
是一种具有多种测量功能、多种用途的万能计数器。
它可测量频率、周期、多周期平均值、时间间隔、累加计数、计时等;若配上相应插件,就可测相位、电压、电流、功率、电阻等电量;配上适当的传感器,还可进行长度、重量、压力、温度、速度等非电量的测量。
(2)专用计数器:
指专门用来测量某种单一功能的计数器。
如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为基础的计数器,其测时分辨力和准确度很高,可达ns数量级;特种计数器,它具有特种功能,如可逆计数器、予置计数器、差值计数器、倒数计数器等,用于工业和白控技术等方面。
数字频率计按频段分类
(1)低速计数器:
最高计数频率<10MHz;
(2)中速计数器:
最高计数频率10—100MHz; (3)高速计数器:
最高计数频率>100MHz; (4)微波频率计数器:
测频范围1—80GHz或更高。
二、设计内容
(1)设计题目
采用测频法设计一个4位十进制数字显示的数字频率计。
设计要求
系统包含输入模块,FPGA模块,显示模块。
1.输入模块包括基准时钟,复位信号和被测信号。
2.FPGA模块是系统的核心部分,其包括分频、7位十进制计数器、数据处理和动态译码。
分频部分的作用是对基准时钟进行分频,得到一个闸门信号,作为7位十进制计数器的使能信号。
数据处理部分作用:
取7位十进制计数器的有效高4位数据,送入动态显示译码部分进行显示译码。
测频法的测量原理在确定的闸门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为:
fx=Nx/Tw。
这种方法的计数值会产生±1个字误差,测试精度与计数器中记录的数值Nx有关。
频率计测量频率的原理图如下:
三、设计方案
1、输入模块
(1)4位十进制计数器模块
4位十进制计数器模块包含4个级联十进制计数器,用来对施加到时钟脉冲输入端的待测信号产生的脉冲进行计数,十进制计数器具有集束使能、清零控制和进位扩展输出的功能。
使能信号和清零信号由闸门控制模块的控制信号发生器所产生来对4个级联十进制计数器周期性的计数进行控制。
十进制计数器的程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjishu10is
port(clk,rst,en:
instd_logic;
cq:
outstd_logic_vector(3downto0);
cout:
outstd_logic);
endjishu10;
architecturebehavofjishu10is
begin
process(clk,rst,en)
variablecqi:
std_logic_vector(3downto0);
begin
ifrst='1'thencqi:
=(others=>'0');
elsifclk'eventandclk='1'then
ifen='1'then
ifcqi<9thencqi:
=cqi+1;
elsecqi:
=(others=>'0');
endif;
endif;
endif;
ifcqi=9thencout<='1';
elsecout<='0';
endif;
cq<=cqi;
endprocess;
endbehav;
在源程序中COUT是计数器进位输出;CQ[3..0]是计数器的状态输出;CLK是始终输入端;RST是复位控制输入端,当RST=1时,CQ[3..0]=0;EN是使能控制输入端,当EN=1时,计数器计数,当EN=0时,计数器保持状态不变。
编译成功后进行仿真,其仿真波形如下:
(2)4位十进制计数器的顶层设计
新建一个原理图编辑窗,从当前的工程目录中凋出4个十进制计数器元件jishu10.sym,并按如图所示的4位十进制计数器的顶层原理图完成电路连接。
频率计电路工作时先要产生一个计数允许信号(即闸门信号),闸门信号的宽度为单位时间,如1S。
在闸门信号有效时间内,对被测信号计数,即为信号的频率。
该频率计电路的精度取决于闸门信号T。
本设计中选取的基准信号频率为750khz,为了得到1s高电平的周期性闸门信号,本设计采用对频率为750khz基准信号先进行75分频,再进行3个10分频,最后进行11分频,再用非门对分频出的信号进行取非变换,这样得到的门闸信号高电平为1秒钟。
将生成的75进制计数器、11进制计数器、10进制计数器和非门按下图连接来得到1S高电平门闸信号。
编译成功后进行仿真,其仿真波形如下:
2、控制信号发生器模块
该模块主要根据输入高电平的1S闸门信号,产生计数允许信号EN,该信号的高电平的持续时间即计数允许时间,与输入的门闸控制时钟脉冲周期相同;产生清零信号RST,在计数使能前对计数器先清零;产生存储信号LOAD,在计数结束后,利用上升沿把最新的频率测量值保存在显示寄存器中。
为了产生清零信号RST,使能信EN和存储信号LOAD。
不失一般性,控制信号发生器用74161构成4分频计数器,用一个与非门,一个或非门和一个异或门实现3种译码状态,与闸门模块按下图连接。
编译成功后进行仿真,其仿真波形如下:
3、分频模块的设计
(1)四选一数据选择器的程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitysi_xuan_1is
port(a,b,c1,c2,c3,c4:
instd_logic;
y:
outstd_logic);
endsi_xuan_1;
architecturebehavofsi_xuan_1is
signalx:
std_logic_vector(1downto0);
begin
process(a,b)
begin
x<=b&a;
casexis
when"00"=>y<=c1;
when"01"=>y<=c2;
when"10"=>y<=c3;
when"11"=>y<=c4;
whenothers=>null;
endcase;
endprocess;
endbehav;
编译成功后进行仿真,其仿真波形如下图:
(2)分频电路的设计
将生成的四选一数据选择、74139译码器、D触发器和3个十进制计数器按下图连接。
编译成功后进行仿真,起仿真波形如下图:
4、译码模块
1).寄存器设计
libraryieee;
useieee.std_logic_1164.all;
entityreg_4is
port(load:
instd_logic;
din:
instd_logic_vector(3downto0);
dout:
outstd_logic_vector(3downto0));
endreg_4;
architecturebehavofreg_4is
begin
proceegin
ifload’eventandload='1'then
dout<=din;
endif;
endprocess;
endbehav;
ss(din)
编译仿真后生成元件图如下图,以便顶层模块的调用。
5、动态扫描电路
本设计采用扫描方式来实现LED数码管动态显示,控制好数码管之间的延迟时间相当重要。
根据人眼视觉暂留原理,LED数码管每秒导通16次以上,人眼就无法LED数码管短暂的不亮,认为是一直点亮的(其实LED数码管是以一定频率在闪动的)。
但是,延时(导通频率)也不是越小越好,因为LED数码管达到一定亮度需要一定时间。
如果延时控制的不好则会出现闪动,或者亮度不够,根据经验,延时0.005S可以达到满意的效果。
另外,显示的字符有变化时,可在延时到达后送一个地电平(共阴极数码管)LED数码管先短暂熄灭,再显示一个字符,可使在视觉上字符的变化更清楚。
6、七段数码管驱动电路的VHDL设计
libraryieee;
useieee.std_logic_1164.all;
entitydecl7sis
port(a:
instd_logic_vector(3downto0);
led7s:
outstd_logic_vector(6downto0));
enddecl7s;
architectureoneofdecl7sis
begin
process(a)
begin
caseais
when"0000"=>led7s<="0111111";
when"0001"=>led7s<="0000110";
when"0010"=>led7s<="1011011";
when"0011"=>led7s<="1001111";
when"0100"=>led7s<="1100110";
when"0101"=>led7s<="1101101";
when"0110"=>led7s<="1111101";
when"0111"=>led7s<="0000111";
when"1000"=>led7s<="1111111";
when"1001"=>led7s<="1101111";
whenothers=>null;
endcase;
endprocess;
endone;
程序中,A[3..0]是0~9的BCD码输入;LED7S为动态扫描后的驱动显示管电生成元件涂如下:
7、译码电路的设计
将寄存器、动态扫描电路和驱动电路按下图连接。
编译通过后,对该电路进行仿真,其波形如下图:
如图所示,其电路实现了动态驱动显示功能,其波形正确无误,将其电路生成如下可调用元件图:
四、频率计测量频率的顶层设计和仿真
频率计主体电路顶层原理图设计
在成功完成底层单元电路模块设计仿真后,可根据第3章的测频原理图,把上面的各个模块按照下图连接起来。
对上面的测频总电路图进行仿真,其波形图如下图。
5、下载与测试
1、编译
程序设计好后进行编译保存。
2、管脚配置
编译好后对其输入输出信号进行管脚配置。
3、编程下载和测试
3.1编程下载
在EDA实验箱上按照管脚配置进行连线,然后下载到EDA实验箱上。
3.2测试
3.2.1频率测试
把下载到EDA实验箱上的频率计对EDA实验箱上的基准频率进行测试,对照测得的频率和实际频率,看设计的程序是否正确。
3.2.2周期测试
把下载到EDA实验箱上的频率计对EDA实验箱上的基准频率进行周期测试,计算出其理论周期,对照测得的周期时发现与计算出的周期一致。
六、结束语
在做课程设计的过程中,同学和老师给予我很多的指导并提出了许多的宝贵意见,对我的一些看法以及错误的观点予以及时纠正。
使我在完成设计的同时,对学习的专业基础知识做了一次系统的复习总结,并且对相关的学科有了一定的了解和认识,获益非浅。
我从老师那里学到的不仅仅是知识,更重要的是对事业忘我的追求、高度的使命感、责任感及和蔼热情的品质,这些将使我受益一生,并将激励我不断向前奋进。