EDA简易数字频率计设计.docx

上传人:b****2 文档编号:1798928 上传时间:2022-10-24 格式:DOCX 页数:19 大小:50.18KB
下载 相关 举报
EDA简易数字频率计设计.docx_第1页
第1页 / 共19页
EDA简易数字频率计设计.docx_第2页
第2页 / 共19页
EDA简易数字频率计设计.docx_第3页
第3页 / 共19页
EDA简易数字频率计设计.docx_第4页
第4页 / 共19页
EDA简易数字频率计设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

EDA简易数字频率计设计.docx

《EDA简易数字频率计设计.docx》由会员分享,可在线阅读,更多相关《EDA简易数字频率计设计.docx(19页珍藏版)》请在冰豆网上搜索。

EDA简易数字频率计设计.docx

EDA简易数字频率计设计

唐山学院

EDA课程设计

题目简易数字频率计设计

系(部)信息工程系

班级12自动化

姓名陈帅

学号

指导教师郭耀华

2014年12月21日至12月26日共1周

2014年12月26日

1引言1

2实验2

2.1实验原理2

2.1.1基本原理3

2.1.2原理框图3

2.2各模块程序的设计3

2.2.1分频定时模块的设计3

2.2.2待测信号计数模块的设计4

模块的设计8

2.2.4顶层模块的设计12

.2.2.5封装图15

2.2.6.引脚锁定15

4结论17

参考文献18

附录19

1引言

数字频率计是通讯设备、计算机、电子产品等生产领域不可缺少的测量仪器。

由于硬件设计的器件增加,使设计更加复杂,可靠性变差,延迟增加,测量误差变大。

通过使用EDA技术对系统功能进行描述,运用VHDL语言,使系统简化,提高整体的性能和可靠性。

采用VHDL编程设计的数字频率计,除了被测信号的整形部分,键输入和数码显示以外,其他都在一片FPGA上实现,从而让整个系统非常精简,让其具有灵活的现场更改性,在不改变硬件电路的基础上,进一步改进提高系统的性能,使数字频率计具有高速,精确度高,可靠性强,抗干扰等优点,为数字系统进一步的集成创造了条件。

传统的硬件设计采用自下至上(bottom_up)的设计方法。

这种设计方法在系统设计的后期进行仿真和调试,一旦考虑不周,系统设计存在较大缺陷,就有可能要重新设计系统,使设计周期大大增加。

现代硬件设计利用电子设计自动化(EDA)技术,采用并行工程和自上至下(top_down)的设计方法,从系统设计入手,在顶层进行功能方框图的划分和结构设计,在方框图一级进行仿真和纠错,并用vhdl等硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,其对应的物理实现是专用集成电路(ASIC)。

Vhdl即超高速集成电路硬件描述语言,主要用于描述数字系统的结构、行为、功能和接口。

vhdl对设计的描述具有相对独立性,因此设计者可以不懂硬件结构,降低了硬件电路设计难度。

以4位十进制数字频率计的设计来说明vhdl语言在现代硬件设计中的应用。

信号频率计的测量有测频法和周期测量法。

本文采用测频法,即直接计算每秒钟内信号脉冲的个数。

2实验

2.1简易数字频率计设计原理

设计内容:

(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='1'then

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置高电平进行警告。

此待测信号计数器的程序如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

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);

begin

process(rst,en,clkin)

begin

ifrst='1'then

dd<=(others=>'0');

b<='0';

elsifen='1'then

ifclkin'eventandclkin='1'then

dd<=(others=>'0');b<='1';

dd<=dd+"01100111";

elsifdd(3downto0)="1001"then

dd<=dd+"0111";

else

dd<=dd+'1';

endif;

endif;

ifdd(27downto24)>"0000"then

sel<="1000";

elsifdd(23downto20)>"0000"then

sel<="0100";

elsifdd(19downto16)>"0000"then

sel<="0010";

else

sel<="0001";

endif;

else

dd<=(others=>'0');

endif;

ifdd(27downto24)>"0000"then

ifa="1000"then

b<='0';

elsifa="0000"then

b<='0';

else

b<='1';

endif;

elsifdd(23downto20)>"0000"then

ifa="1000"then

b<='0';

elsifa="0100"then

b<='0';

elsifa="0000"then

b<='0';

else

b<='1';

endif;

elsifdd(19downto16)>"0000"then

ifa="1000"then

b<='0';

elsifa="0100"then

b<='0';

elsifa="0010"then

b<='0';

elsifa="0000"then

b<='0';

else

b<='1';

endif;

else

b<='0';

endif;

endprocess;

process(en)

begin

ifen'eventanden='0'then

d<=dd;

endif;

endprocess;

en

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1