EDA简易数字频率计设计Word格式文档下载.docx
- 文档编号:19745811
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:23
- 大小:389.74KB
EDA简易数字频率计设计Word格式文档下载.docx
《EDA简易数字频率计设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA简易数字频率计设计Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
设计内容:
(1)设计四位十进制的简易数字频率计,对1HZ-10MHZ的方波信号进行测量;
(2)测量的方波频率值要在4位数码管上进行显示;
(3)根据不同的待测方波信号,频率计分为4个量程进行测量,四个量程分别为乘
1乘10,乘100,乘1000量程。
(4)此频率计要设有一个整体复位控制;
2.1.1基本原理
数字频率计的主要功能是测量周期信号的频率。
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
频率是单位时间(1秒)内方波信号发生周期变化的次数。
在给定的1秒时间内对方波信号波形计数,并将所计数值显示出来,就能读取被测信号的频率。
数字频率计首先必须获得相对稳定与准确的时间,然后通过计数器计算这一段时间间隔内的方波脉冲个数并显示出来。
这就是数字频率计的基本原理。
脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为f=N/T,其中f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。
本设计要求基准时钟的频率为1HZ,所以需要分频设计产生脉宽为1秒的脉冲。
再利用这个脉宽为1秒的脉冲计数,计数器所记录的结果,就是被测信号的频率。
因为待测方波信号的频率在1HZ-10MHZ,所以仅用四位7段数码管无法完全正确显示,所以需要选择恰当的量程来显示待测风波信号的频率,当量程选择不当或者频率超出10MHZ时,用一个LED灯点亮来警告测量有错误。
2.1.2原理框图
本设计要求用基准时钟信号(f=1HZ)的控制完成对1HZ-10MHZ的方波信号进行测量,使得所测量的方波频率值在4位7段数码管上进行显示,并根据不同的待测方波信号,将频率计分为4个量程进行测量,四个量程分别为乘1,乘10,乘100,乘1000量程,量程的选择分为手动和自动两种。
当手动选择量程时,自动量程显示为零,手动量程部分依手动所选量程而定;
当手动选择信号不工作时,频率计自动选择比较合适的量程进行显示,手动量程部分显示为零。
而且此频率计具有记忆功能,在测量过程中不刷新数据,等数据测量过程结束后才显示测量值,显示测量的频率值,并保存到下一次测量结束。
数字频率计还有一个整体的异步清零端,随时可以进行清零操作。
此外,数字频率计还有一个不能正确显示待测方波信号频率时的警告灯。
数字频率计通过测频控制发生器将基准信号转换成所需要的控制信号clk1和en,待测信号计数器在en的控制下对待测信号进行测量并通过锁存器在clk1的控制下按要求进行显示,数字频率计包括测频控制发生器ctr、待测信号计数器counter、锁存器regist三个功能模块,其原理框图如图所示。
其中a是手动选择量程输入端,sd代表手动量程的显示,rst是整体异步清零输入端,clk是频率为1HZ的基准时钟,clkin是待测的方波信号,b是显示是否超出了频率计的测量范围,zd是在手动选择量程不工作时频率计进行的自动选择合适的量程显示,q1—q4是四位数值从高位到低位的显示结果。
2.2各模块程序及仿真
此设计运用元件例化的方法进行功能的实现,所以各个模块即使相互独立又是彼此联系的,三个模块共同完成方波信号的测量。
2.2.1测频控制发生器ctr模块的设计
本设计要求为该模块ctr提供的基准信号频率为1HZ,所以要做一个2分频器控制产生一个脉宽为1秒的周期信号en和一个锁存信号clk1。
rst为高电平时进行整体异步清零。
当en处于高电平的时候对输入的待测方波信号进行计数测量,当en处于低电平的时候停止计数,并保持所计数值。
当clk1是上升沿的时候将所保持的数值输出显示。
此测频控制发生器的程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityctris
port(clk,rst:
instd_logic;
clk1,en:
bufferstd_logic);
endctr;
architecturebhvofctris
begin
process(clk,rst)
variablec:
integerrange0to2begin
ifrst='
1'
then
en<
='
0'
;
elsifclk'
eventandclk='
c:
=c+1;
ifc=1then
c:
=0;
en<
=noten;
endif;
endif;
clk1<
=not(clkoren);
endprocess;
endbhv;
此测频控制发生器的仿真结果如图所示。
此模块如果仿真12M分频器很困难,为了看到仿真效果,改成20倍分频器,得到了此仿真结果。
如果按程序下载,在硬件上能很清楚的看到由6MHZ的基准信号得到了脉宽为1秒的控制信号en和控制输出信号clk1,rst实现了整体异步清零的功能。
2.2.2待测信号计数器counter模块的设计
该模块通过ctr模块所产生的脉宽为1秒的en信号来对待测信号进行计数。
用28位二进制数d进行对待测信号的计数,同时用sel表示自动量程根据所得数值d变化,sel为“0001”时代表乘1,sel为“0010”时代表乘10,sel为“0100”时代表乘100,sel为“1000”时代表乘1000。
如果测量选择量程太小或者待测方波信号频率超出10MHZ,均无法正确显示测量结果,则将b置高电平进行警告。
此待测信号计数器的程序如下:
entitycounteris
port(en,clkin,rst:
instd_logic;
a:
instd_logic_vector(3downto0);
sel:
outstd_logic_vector(3downto0);
d:
outstd_logic_vector(27downto0);
b:
outstd_logic);
endcounter;
architecturebhvofcounteris
signaldd:
std_logic_vector(27downto0);
process(rst,en,clkin)
dd<
=(others=>
'
);
b<
elsifen='
then
ifclkin'
eventandclkin='
ifdd(27downto0)="
"
dd<
elsifdd(23downto0)="
0011001"
=dd+"
1100111"
elsifdd(19downto0)="
001"
111"
elsifdd(15downto0)="
11001"
00111"
elsifdd(11downto0)="
1"
elsifdd(7downto0)="
10011001"
01100111"
elsifdd(3downto0)="
1001"
0111"
else
=dd+'
endif;
ifdd(27downto24)>
0000"
sel<
="
1000"
elsifdd(23downto20)>
0100"
elsifdd(19downto16)>
0010"
else
0001"
else
ifdd(27downto24)>
ifa="
b<
elsifa="
b<
process(en)
ifen'
eventanden='
d<
=dd;
此待测信号计数器的仿真结果如图3所示。
该模块实现了在en为高电平时对输入的待测信号clkin进行测量,当en为低电平时停止测量并将所计数值输出,即在1秒内待测信号的脉冲数,也就是待测信号的频率值。
sel为根据所计数值自动合理选择的量程,此时sel为“0001”,代表乘1HZ的量程,即所测方波信号的频率在9999HZ之内。
2.2.3锁存器regist模块的设计
该模块用于实现记忆显示,在测量过程中不刷新新的数据,直到测量过程结束后,锁存显示测量结果,并且保存到下一次测量结束。
其功能是对四位BCD码进行锁存并且转换成为对应的4组七段码,用于驱动数码管。
其中rst为高电平时对锁存器进行异步清零。
rst为低电平时正常工作。
输入信号a对锁存器进行控制即手动选择量程,当a为“0001”时,代表选择乘1档,自动量程显示为零,手动量程显示乘1HZ,只输出计数所得值d的低四位并显示在四个十进制数码管上;
当a为“0010”时,代表选择乘10档,自动量程显示为零,手动量程显示乘10HZ,只输出计数所得值d的次低四位并显示在四个十进制数码管上;
当a为“0100”时,代表选择乘100档,自动量程部分清零,手动量程显示乘100HZ,只输出计数所得值d的次高四位并显示在四个十进制数码管上;
当a为“1000”时,代表选择乘1000档,自动量程部分清零,手动量程显示乘1000HZ,只输出计数所得值d的高四位并显示在四个十进制数码管上。
当a为“0000”时,代表不进行手动选择,则手动量程显示为零,自动量程部分根据所计数值进行合理选择。
sel为“0001”代表所测得的频率值在0—9999HZ之内,则自动量程显示乘1HZ,输出所测数值的有效部分并显示在四个十进制数码管上;
sel为“0010”代表所测得的频率值在10000—99999HZ之内,则自动量程显示乘10HZ,输出所测数值的有效部分的高四位并显示在四个十进制数码管上;
sel为“0100”代表所测得的频率值在100000—999999HZ之内,则自动量程显示乘100HZ,输出所测数值的有效部分的高四位并显示在四个十进制数码管上;
sel为“1000”代表所测得的频率值在1000000—9999999HZ之内,则自动量程显示乘1000HZ,输出所测数值的有效部分的高四位并显示在四个十进制数码管上。
此锁存与译码器的程序如下:
entityregistis
port(clk1,rst:
d:
instd_logic_vector(27downto0);
sel,a:
zd,sd:
q1,q2,q3,q4:
outstd_logic_vector(3downto0));
endregist;
architecturebhvofregistis
process(rst,clk1)
begin
ifrst='
q1<
q2<
q3<
q4<
zd<
elsif(clk1'
eventandclk1='
)then
if(a="
ifsel="
=d(27downto24);
=d(23downto20);
=d(19downto16);
=d(15downto12);
sd<
elsifsel="
=d(11downto8);
=d(7downto4);
=d(3downto0);
elsif(a="
endprocess;
此锁存与译码器的仿真结果如图所示。
该模块的仿真为了将各个功能都清晰的显示出来将sel进行了提前设置,并不是根据所测频率值进行的自动选择。
Sel是输入信号,前提我们已经知道sel和a不能同时工作,所以为了使用a,将sel人为的提前设成“0000”了,不过如此提前将sel的值进行设定并不影响整体的功能。
此仿真图中a为“0001”代表乘1量程,只显示所计数值d的低四位,即十六进制的“0”“3”“6”“8”“9”,此时手动量程sd显示为“0001”,自动量程zd显示“0000”代表不工作。
2.2.4顶层模块的设计
该模块用元件调用(元件例化语句)实现本设计要求的整体功能。
顶层文件的作用是将三个底层文件联系到一起,共同实现该简易数字频率计数器的功能。
此处定义了en0,d0,sel0,clko等四个信号进行底层文件之间以及底层与顶层之间的连接。
此模块的程序如下所示:
entitypinis
port(rst,clk,clkin:
sd,zd:
a:
b:
endpin;
architecturebhvofpinis
componentctr
port(clk,rst:
clk1,en:
endcomponent;
componentcounter
port(en,clkin,rst:
sel:
b:
componentregist
signalclk0:
std_logic;
signalen0:
signald0:
signalsel0:
std_logic_vector(3downto0);
U1:
ctrportmap(clk,rst,clk0,en0);
U2:
counterportmap(en0,clkin,rst,a,sel0,d0,b);
U3:
registportmap(clk0,rst,d0,sel0,a,zd,sd,q1,q2,q3,q4);
此模块的仿真结果如图所示:
由于顶层模块调用ctr模块,所以仿真时遇到类似的问题,我们改用12倍分频器来仿真,则在6个基准信号周期时间内对待测信号计数,所以得到的数值除以6就是待测信号与基准信号的频率倍数关系。
所以整体功能仿真结果显示,基准信号周期为200ns,即频率为5MHZ,所以此待测信号的频率为50MHZ。
当a为“0001”时,代表选择乘1HZ的量程,即显示低四位,此时,手动量程显示为“0001”表示乘1HZ量程,自动量程显示为“0000”表示不工作。
当a为“0010”时,代表选择乘10HZ的量程,即显示次低四位,此时,手动量程显示为“0010”表示乘10HZ量程,自动量程显示为“0000”表示不工作。
当rst为高电平时,输出均为0,则进行了整体异步清零。
2.2.6封装图
2.2.5引脚锁定
硬件下载前,进行引脚锁定,各引脚锁定情况如图6所示。
引脚锁定完成后,再次对设计文件进行编译。
重新编译完成后,将配置文件下载到系统的目标芯片上,下载适配后,按动键1到键4进行手动选择量程,查看各个部分是否能够完成其功能。
可以按键8进行异步清零。
最右边四个数码管从左向右是从高位到低位的显示的频率。
最左边数码管显示手动选择的量程数值,左边第二个是自动
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 简易 数字频率计 设计