eda数字频率计的设计.docx

上传人:b****6 文档编号:8674799 上传时间:2023-02-01 格式:DOCX 页数:12 大小:99.06KB
下载 相关 举报
eda数字频率计的设计.docx_第1页
第1页 / 共12页
eda数字频率计的设计.docx_第2页
第2页 / 共12页
eda数字频率计的设计.docx_第3页
第3页 / 共12页
eda数字频率计的设计.docx_第4页
第4页 / 共12页
eda数字频率计的设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

eda数字频率计的设计.docx

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

eda数字频率计的设计.docx

eda数字频率计的设计

VHDL与数字系统设计

 

数字频率计实验报告

 

学生姓名:

班级:

学号:

 

电子信息工程

2011年12月20日

课题名称

数字频率计的设计

完成时间

12.13.

2011

指导教师

胡辉

职称

副教授

学生姓名

班级

总体设计要求和技术要点

总体设计要求:

通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。

技术要点:

设计一个能测量方波(3-5V)信号频率的数字频率计,测量结果用4位LED显示器显示。

测量频率范围(量程)可分为3档。

(1)0HZ~9999HZ

(2)10KHZ~99.99KHZ

(3)100KHZ~999.9KHZ

要求设置3个量程的的状态显示(3个发光二极管),并且具有超量程提示报警功能。

 

工作内容及时间进度安排

2011/12/6集体针对设计进行分析、讨论,确定好分工,明确设计进度,以及对设计总体上有个了解。

12/7-12/8各组员针对自己的任务,查找相关资料,完成各自相关部分。

12/9-12/10集体讨论,找出一个较佳的方案。

12/11-12/12进行可行性分析,对有错或不佳的地方加以改正。

2011/12/15最后分析整理,书写课程设计报告。

课程设计成果

1.与设计内容对应的软件程序

2.课程设计报告书

3.成果使用说明书

4.设计工作量要求

 

一、设计背景

随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,因此测频计常受到人们的青睐。

目前许多高精度的数字频率计都采用单片机加上外部的高速计数器来实现,然而单片机的时钟频率不高导致测频速度比较慢,并且在这种设计中,由于PCB版的集成度不高,导致PCB板走线长,因此难以提高计数器的工作频率。

为了克服这种缺点,大大提高测量精度和速度,我们可以设计一种可编程逻辑器件来实现数字频率计。

EDA技术是以大规模可编程逻辑器件为设计载体,以硬件语言为系统逻辑描述的主要方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件设计的电子系统到硬件系统的设计,最终形成集成电子系统或专用集成芯片的一门新技术。

其设计的灵活性使得EDA技术得以快速发展和广泛应用。

以QUARTUSII软件为设计平台,采用VHDL语言实现数字频率计的整体设计。

伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。

电子设计自动化是一种实现电子系统或电子产品自动化设计的技术,它与电子技术,微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。

EDA的一个重要特征就是使用硬件描述语言(HDL)来完成的设计文件,VHDL语言是经IEEE确认的标准硬件语言,在电子设计领域受到了广泛的接受。

二、设计原理

1、频率计设计原理

在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。

数字式频率计的测量原理有两类:

一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法即测周期法,如周期测频法。

直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器阀门的时间长短在达到不同的测量精度;间接测频法适用于低频信号的频率测量。

本设计中使用的就是直接测频法,即用计数器在计算1s内输入信号周期的个数,其测频范围为1Hz~9999Hz。

2.设计的原理框图如下所示:

三、设计思路

频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。

这就要求分频器fen的计数使能信号sig能产生一个1秒脉宽的周期信号,并对频率计的计数器corna的使能端en进行同步控制。

当sig为高电平"1"时,允许计数;为低电平"0"时停止计数,并保持其计数结果。

在停止计数期间,首先需要一个锁存信号的上跳沿将计数器在前1秒种的计数值锁存进16位锁存器中。

锁存信号之后,必须有一个清零信号clr对计数器进行清零,为下1秒的计数操作做准备。

,然后由外部数码管控制器控制的7段译码器disp译出,并稳定显示。

四、设计步骤与过程

1、分频器fen:

有一5MHz的时钟输入端clk,经过分频处理后从输出端

输出0.5hz信号。

2、数码管控制器:

控制4个数码管的显示。

3、计数器corna:

有一时钟使能输入端sig,用于锁定计数值。

当高电平"1"时计数允许计数,低电平"0"时禁止计数。

4、16位锁存器lock:

将已有16位bcd码存在于此模块的输入口din[15..0],在信号的上升沿后即被锁存到寄存器lock的内部,并由lock的输出端dout[15..0]输出,设置锁存器的好处是,数码管上显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

5、译码器disp:

输入端d_in[3..0]将接收BCD码信号,译码后输出端d_out[7..0]输出8为7段数码管信号,其中输出的第8位均为高电平"1"可以使四个数码管的小数点不显示。

经译码器的处理输出后数码管显示相应的数值。

五、心得体会

这次课程设计中,我不仅复习巩固了课堂所学的理论知识,提高了对所学知识的综合应用能力,并从根本上了解了VHDL语言的一些基本用法,应用了原来不会或者不熟练的句型,如if句,case句等,也学会了一些基本功能的实现方法,如分频,状态控制等等,从另外一个角度重新审视了上学期完全从硬件角度出发的电路设计,明白了软硬件之间的交互。

通过这个课题,对系统框图、逻辑流程图、状态转移图的设计有了一定的了解。

也懂得了系统的前期设计对于后续的编程和调试的重要性。

本课题采用了自下而上的设计方法,根据系统对硬件的要求,画出系统控制流程图;然后根据控制流程图,分化模块,利用模块实现功能;最后进行仿真和调试。

每个成功的背后都要面对无数次的失败,这次课设也不例外。

虽然遇到不少问题与困难,但通过老师以及同学的帮助,都一一得到顺利地解决。

我想这必定会为将来的实践积累宝贵的经验和教训。

总之,这次课设我们都受益匪浅。

整个过程氛围浓厚,本人也态度十分认真,积极向老师和同学求教并在此过程中收获良多,能够进一步了解和使用一门与硬件直接打交道的基本语言对我们将来的学习和工作都会十分有益。

附件:

附件1、设计图形元件原理图:

附件2、程序源代码:

1、分频器及数码管片选:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfensis

port(

clk:

instd_logic;

q1:

outstd_logic;

q2:

outstd_logic_vector(2downto0));

endfens;

architectureoneoffensis

begin

model1:

process(clk)

variablecnt:

integerrange0to4999999;

variablex:

std_logic;

begin

ifclk'eventandclk='1'then

ifcnt<4999999then

cnt:

=cnt+1;

else

cnt:

=0;

x:

=notx;

endif;

endif;

q1<=x;

endprocessmodel1;

model2:

process(clk)

variablednt:

std_logic_vector(2downto0);

begin

ifclk'eventandclk='1'then

dnt:

=dnt+1;

endif;

q2<=dnt;

endprocessmodel2;

endone;

2、计数器及量程控制

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycornais

port(clr,sig,door:

instd_logic;

alm:

outstd_logic;

q3,q2,q1,q0,dang:

outstd_logic_vector(3downto0));

endcorna;

architecturecorn_arcofcornais

begin

process(door,sig)

variablec0,c1,c2,c3,c4,c5:

std_logic_vector(3downto0);

variablex:

std_logic;

begin

ifsig'eventandsig='1'then

ifdoor='1'then

ifc0<"1001"then

c0:

=c0+1;

else

c0:

="0000";

ifc1<"1001"then

c1:

=c1+1;

else

c1:

="0000";

ifc2<"1001"then

c2:

=c2+1;

else

c2:

="0000";

ifc3<"1001"then

c3:

=c3+1;

else

c3:

="0000";

ifc4<"1001"then

c4:

=c4+1;

else

c4:

="0000";

ifc5<"1001"then

c5:

=c5+1;

else

c5:

="0000";

alm<='1';

endif;

endif;

endif;

endif;

endif;

endif;

else

ifclr='0'then

alm<='0';

endif;

c5:

="0000";

c4:

="0000";

c3:

="0000";

c2:

="0000";

c1:

="0000";

c0:

="0000";

endif;

ifc5/="0000"then

q3<=c5;

q2<=c4;

q1<=c3;

q0<=c2;

dang<="0011";

elsifc4/="0000"then

q3<=c4;

q2<=c3;

q1<=c2;

q0<=c1;

dang<="0010";

else

q3<=c3;

q2<=c2;

q1<=c1;

q0<=c0;

dang<="0001";

endif;

endif;

endprocess;

endcorn_arc;

3、锁存器

libraryieee;

useieee.std_logic_1164.all;

entitylockis

port(l:

instd_logic;

a4,a3,a2,a1,a0:

instd_logic_vector(3downto0);

q4,q3,q2,q1,q0:

outstd_logic_vector(3downto0));

endlock;

architecturelock_arcoflockis

begin

process(l)

variablet4,t3,t2,t1,t0:

std_logic_vector(3downto0);

begin

ifl'eventandl='0'then

t4:

=a4;

t3:

=a3;

t2:

=a2;

t1:

=a1;

t0:

=a0;

endif;

q4<=t4;

q3<=t3;

q2<=t2;

q1<=t1;

q0<=t0;

endprocess;

endlock_arc;

4、数码管控制器

libraryieee;

useieee.std_logic_1164.all;

entitychis

port(sel:

instd_logic_vector(2downto0);

a3,a2,a1,a0,dang:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(3downto0));

endch;

architecturech_arcofchis

begin

process(sel)

begin

caseselis

when"000"=>q<=a0;

when"001"=>q<=a1;

when"010"=>q<=a2;

when"011"=>q<=a3;

when"111"=>q<=dang;

whenothers=>q<="1111";

endcase;

endprocess;

endch_arc;

5、译码器

libraryieee;

useieee.std_logic_1164.all;

entitydispis

port(d:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(6downto0));

enddisp;

architecturedisp_arcofdispis

begin

process(d)

begin

casedis

when"0000"=>q<="0111111";

when"0001"=>q<="0000110";

when"0010"=>q<="1011011";

when"0011"=>q<="1001111";

when"0100"=>q<="1100110";

when"0101"=>q<="1101101";

when"0110"=>q<="1111101";

when"0111"=>q<="0100111";

when"1000"=>q<="1111111";

when"1001"=>q<="1101111";

whenothers=>q<="0000000";

endcase;

endprocess;

enddisp_arc;

电子工程系EDA技术与实验课程设计成绩评定表

专业:

电子信息工程班级:

学号:

姓名:

课题名称

数字频率计的设计

 

设计任务与要求

通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。

设计一个能测量方波(3-5V)信号频率的数字频率计,测量结果用4位LED显示器显示。

测量频率范围(量程)可分为3档。

(1)0HZ~9999HZ

(2)10KHZ~99.99KHZ

(3)100KHZ~999.9KHZ

要求设置3个量程的的状态显示(3个发光二极管),并且具有超量程提示功能。

 

指导教师评语

 

建议成绩:

指导教师:

 

课程小组评定

 

评定成绩:

课程负责人:

年月日

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

当前位置:首页 > 外语学习 > 法语学习

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

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