VHDL语言与EDA课程设计数字频率计完整版.docx

上传人:b****6 文档编号:9131773 上传时间:2023-02-03 格式:DOCX 页数:14 大小:589.02KB
下载 相关 举报
VHDL语言与EDA课程设计数字频率计完整版.docx_第1页
第1页 / 共14页
VHDL语言与EDA课程设计数字频率计完整版.docx_第2页
第2页 / 共14页
VHDL语言与EDA课程设计数字频率计完整版.docx_第3页
第3页 / 共14页
VHDL语言与EDA课程设计数字频率计完整版.docx_第4页
第4页 / 共14页
VHDL语言与EDA课程设计数字频率计完整版.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

VHDL语言与EDA课程设计数字频率计完整版.docx

《VHDL语言与EDA课程设计数字频率计完整版.docx》由会员分享,可在线阅读,更多相关《VHDL语言与EDA课程设计数字频率计完整版.docx(14页珍藏版)》请在冰豆网上搜索。

VHDL语言与EDA课程设计数字频率计完整版.docx

VHDL语言与EDA课程设计数字频率计完整版

湖南人文科技学院

课程设计报告

课程名称:

VHDL语言与EDA课程设计

 

设计题目:

数字频率计

系别:

通信与控制工程系

专业:

电子信息工程

班级:

08级电信二班

学生姓名:

学号:

起止日期:

11年6月13日~11年6月23日

指导教师:

教研室主任:

指导教师评语:

 

指导教师签名:

年月日

成绩评定

项目

权重

成绩

周杰

卢欧

1、设计过程中出勤、学习态度等方面

0.2

2、课程设计质量与辩论

0.5

3、设计报告书写及图纸标准程度

0.3

总成绩

教研室审核意见:

 

教研室主任签字:

年月日

教学系审核意见:

 

主任签字:

年月日

摘要

数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置,是计算机,通讯设备、音频设音频视频等科研生产领域不可缺少的测量仪器。

本次课程设计设计以EDA工具作为开发手段,运用VHDL语言,将使整个系统大大简化,提高整体的性能和可靠性。

EDA〔ElectronicDesignAutomation〕即电子设计自动化。

EDA技术指的是以计算机硬件和系统软件为根本工作平台,以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统设计的主要表达方式,自动完成集成电子系统设计的一门新技术。

本设计用VHDL在CPLD器件上实现一种8位十进制数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量正弦波、方波和三角波等信号的频率,具有体积小、可靠性高、功耗低的特点,设计出的频率计能够准确的测出输入信号的频率,最后通过系统仿真,下载、验证和调试运行,实现了一个性能良好的8位数字频率计初步实现了设计目标。

其根本原理是使用一个频率稳定性高的频率作为基准,比照测量其他信号的频率,即计算每秒钟内待测信号的脉冲个数。

该数字频率计可以在不更改硬件电路的根底上,对系统进行各种改良还可以进一步提高系统的性能,而且整个系统非常精简,具有高速、精确、可靠、抗干扰性强和现场可编程等优点,实用性极高。

本文详细描述了数字频率计的设计流程及正确实现。

关键词:

数字频率计;EDA;VHDL;QuartusⅡ

 

数字频率计

设计要求

1.能够显示的频率为8位10进制;

2.测量的波形的电压最大值小于5V;

3.能测量正弦波、三角波、方波或其他周期性波形的频率;

3.用数码管显示测试的结果。

1、方案论证与比照

1.1方案比照

方案一:

使用ATMEL公司的AT89C51实现一基于单片机的设计,用单片机定时器和计数器来实现对频率的测量,直接用十进制数字显示被测信号频率的一种测量装置。

它以用测量频率的方法对TTL方波频率进行自动测量,使用该单片作为控制器件使被测频率信号通过信号处理电路,闸门时间与被测信号与非处理,产生信号脉冲,经过分频电路,然后送入单片机进行运算和处理,单片机将处理的数据通过显示器显示。

其方案方案设计框图如图1所示:

图1整体方案设计图

方案二:

基于EDA技术和VHDL语言为程序设计语言在器件上实现数字频率计测频系统,其根本原理是使用一个频率稳定性高的频率作为基准,比照测量其他信号的频率,即计算每秒钟内待测信号的脉冲个数。

该数字频率计可以在不更改硬件电路的根底上,对系统进行各种改良还可以进一步提高系统的性能,然后用8位十进制数码显示被测信号的频率,设计出的频率计能够准确的测出输入信号的频率,最后通过系统仿真,下载、验证和调试运行,实现了一个性能良好的8位数字频率计设计目标。

其根本框图如图2所示:

 

图2数字频率计原理框图

1.2方案选择

单片机与EDA技术相比,EDA以计算机硬件和系统软件为根本工作平台,以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统设计的主要表达方式,自动完成集成电子系统设计的一门新技术[1]。

其根本原理是使用一个频率稳定性高的频率作为基准,比照测量其他信号的频率,即计算每秒钟内待测信号的脉冲个数。

该数字频率计可以在不更改硬件电路的根底上,对系统进行各种改良还可以进一步提高系统的性能,而且整个系统非常精简,具有高速、精确、可靠、抗干扰性强和现场可编程等优点,实用性极高。

本设计就是采用vhdl语言和EDA技术的设计流程来正确实现频率计的设计。

VHDL语言具有很强大的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。

VHDL支持各种模式的设计方法:

自顶向下与自底向上或混合方法。

用VHDL进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,所以选择方案二。

2.总体模块设计

频率计的根本原理是用一个频率稳定度高的频率源作为基准时钟,比照测量其他信号的频率,通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。

闸门时间也可以大于或小于一秒[2]。

频率信号易于传输,抗干扰性强,可以获得较好的测量精度。

因此,频率检测是电子测量领域最根本的测量之一。

本文的数字频率计是按照计算每秒内待测信号的脉冲个数的根本原理来设计,此时取闸门时间为1秒。

数字频率计的关键组成局部包括一个测频控制信号发生器、一个计数器和一个锁存器,另外包含信号整形电路、脉冲发生器、译码驱动电路和显示电路,其流程图如下面面的图3所示:

图3设计流程的框图

工作过程:

系统正常工作时,脉冲信号发生器输入1Hz的标准信号,经过测频控制信号发生器的处理,2分频后即可产生一个脉宽为1秒的时钟信号,以此作为计数闸门信号。

测量信号时,将被测信号通过信号整形电路,产生同频率的矩形波,输入计数器作为时钟。

当计数闸门信号高电平有效时,计数器开始计数,并将计数结果送入锁存器中。

设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

最后将锁存的数值由外部的七段译码器译码并在数码管上显示。

3.单元模块设计

3.1顶层模块设计

由于综合工具可以将高级别的模型转化生成为门级模型,所以整个设计过程根本是由计算机自动完成的。

认为介入的方式主要是根据仿真的结果和优化的指标,控制逻辑综合的方式和指向[3]。

图4是频率计的顶层设计的原理图。

其中模块control是测频时序控制模块,cnt10_8模块是是十位计数器模块,latch8是测频时序锁存模块,还有选定各个引脚,这些模块是由VHDL语言设计之后生成的,将这些模块连接起来,从而实现其顶层模块的功能,如图4所示。

图4顶层设计的原理图

3.2测频控制模块

1、此模块主要由时钟输入、计数器时钟使能、计数器清零、输出锁存构成。

其具体的实现是由一个1秒的输入信号脉冲计数允许的信号,1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。

2、具体程序如下。

LIBRARYIEEE;——测频控制电路

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcontrolIS

PORT(clk:

INSTD_LOGIC;——定义逻辑电路的端口

cen:

OUTSTD_LOGIC;

rst:

OUTSTD_LOGIC;

load:

OUTSTD_LOGIC);

ENDcontrol;

ARCHITECTUREbehavOFcontrolIS——语句说明

SIGNALDiv2CLK:

STD_LOGIC;

BEGIN——功能描述语句

PROCESS(clk)

BEGIN

IFclk'EVENTANDclk='1'THEN——在顺序语句IF条件下选择高电平

Div2CLK<=NOTDiv2CLK;

ENDIF;

ENDPROCESS;

PROCESS(clk,Div2CLK)

BEGIN

IFclk='0'ANDDiv2CLK='0'THENrst<='1';

ELSErst<='0';ENDIF;——确保CLK的变化是一次上升沿的跳变

ENDPROCESS;

load<=NOTDiv2CLK;cen<=Div2CLK;

ENDbehav;

3.3十进位计数模块

1、此模块先设计单个十进制计数模块,再设计八位十进制计数模块,将先设计好的单个十进制计数模块导入到八进制计数模块中,就可以完成八位十进制计数模块的设计,这样设计的好处是,减小了程序设计的复杂度,而且层次感强。

2、主要涉及的程序见下面的两个程序。

libraryieee;——单个十进制计数模块

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycnt10is

port(rst,fx,ena:

instd_logic;

cout:

outstd_logic;

outy:

outstd_logic_vector(3downto0));

endcnt10;

architecturebehvofcnt10is——语句说明

begin——功能描述语句

process(rst,ena,fx)

variablecqi:

std_logic_vector(3downto0);

begin

ifrst='1'thencqi:

=(others=>'0');

elsiffx'eventandfx='1'then

ifena='1'then

ifcqi<9thencqi:

=cqi+1;cout<='0';

elsifcqi=9then

cqi:

=(others=>'0');

cout<='1';

endif;

elsifena='0'thencqi:

=(others=>'0');

endif;

endif;

outy<=cqi;

endprocess;

endbehv;

libraryieee;——八位十进制计数模块

useieee.std_logic_1164.all;

entitycnt10_8is

port(fx,rst,ena:

instd_logic;

d:

outstd_logic_vector(31downto0));

endentity;

architectureoneofcnt10_8is

componentcnt10

port(rst,fx,ena:

instd_logic;——引脚功能模块

cout:

outstd_logic;

outy:

outstd_logic_vector(3downto0));

endcomponent;

signale:

std_logic_vector(7downto0);

begin

u1:

cnt10portmap(fx=>fx,rst=>rst,ena=>ena,cout=>e(0),outy=>d(3downto0));

u2:

cnt10portmap(fx=>e(0),rst=>rst,ena=>ena,cout=>e

(1),outy=>d(7downto4));

u3:

cnt10portmap(fx=>e

(1),rst=>rst,ena=>ena,cout=>e

(2),outy=>d(11downto8));

u4:

cnt10portmap(fx=>e

(2),rst=>rst,ena=>ena,cout=>e(3),outy=>d(15downto12));

u5:

cnt10portmap(fx=>e(3),rst=>rst,ena=>ena,cout=>e(4),outy=>d(19downto16));

u6:

cnt10portmap(fx=>e(4),rst=>rst,ena=>ena,cout=>e(5),outy=>d(23downto20));

u7:

cnt10portmap(fx=>e(5),rst=>rst,ena=>ena,cout=>e(6),outy=>d(27downto24));

u8:

cnt10portmap(fx=>e(6),rst=>rst,ena=>ena,cout=>e(7),outy=>d(31downto28));

endarchitectureone;

3.4测频锁存模块

1、在频率计的设计当中设计了一个锁存器,设置锁存的器的好处就是数据显示稳定,不会由于周期性的清零而使信号不断的闪烁,这个模块的功能就是将计数器在规定时间的计数值锁存进锁存器中[4]。

2、主要的设计程序如下。

libraryieee;——锁存器

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitylatch8is

port(d:

instd_logic_vector(31downto0);

clk:

instd_logic;

q:

outstd_logic_vector(31downto0));

endlatch8;

architectureoneoflatch8is

begin

process(clk,d)

variablecqi:

std_logic_vector(31downto0);

begin

ifclk'eventandclk='1'thenq<=d;

endif;

endprocess;

endone;

4.系统仿真

将程序下载Cyclone系列芯片中,同时在EDA试验箱上进行硬件验证。

进行系统的仿真,直到仿真正确无误后,那么可以再将设计编程下载。

测控信号发生器CORNA的设计:

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

这就要求CORNA的计数能使信号CORNA能产生一个一秒脉宽的周期信号。

当CORNA为高电平时,允许计数;为底电平时停止计数,并保持所计脉冲数。

在停止计数期间,首先需要一个锁存信号的上升沿将计数器在前一秒的计数值锁存进16位锁存器LOCK中,测频时序电路原理图、方框图和时序及功能仿真本文提出的数字频率计由于采用VHDL语言设计,用一片FPGA实现,因而体积小,功耗低,具有较好的应用前景。

但由于结构还比拟简单,有待进一步完善。

数字频率计整个系统的仿真如图5所示:

图5数字频率计整个电路系统仿真图

5.硬件下载测试

仿真波形正确后,便可进行下载,选择GW48系列EDA试验开发系统,使用Cyclone系列芯片EP1C6Q240C8,先进行引脚锁定[5],具体引脚锁定如图6所示,工作方式选择模式5,选择好硬件和模式后就可以下载到EDA实验箱。

图6数字频率计引脚锁定

在面包板上按照管脚锁定插上八个七段数码管,并于实验板上相应的管脚相连接,实验板插电后,给输入端参加被测信号和使能控制信号,就可以进行硬件测试了。

该数字秒表变化范围为1---99999999Hz。

CLK为基准频率输入端。

下载成功之后就可以进行测试和操作,把工作模式选择方式5,试验箱上面的数码管就会点亮,将基准信号选择1Hz,再选择实验箱上面的方波频率,数码管上面显示的八位十进制数字就是实际测试的信号的频率。

通过对上面一组频率的信号进行测试,结果说明该频率计能准确地测出输入信号的频率并正确表示,精确度为100%。

与课程设计预先目的一致。

6.总结与致谢

通过两周的紧张工作,最后完成了我的设计任务——基于VHDL语言的数字频率计的设计。

通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。

本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。

它不仅仅是一个学习新知识新方法的好时机,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。

希望学校以后多安排一些类似的实践环节,让同学们学以致用。

经过这的课程设计,使我学到了很多只有实际操作中的问题,虽然过程比拟累,有时也遇到不少问题,但是经过周围同学与老师的帮助指导与帮助,最终顺利的完成了此次课程设计。

在此我谨向在课程设计过程中给予我很大帮助的老师、同学们致以最诚挚的谢意。

特别感谢我们的姚毅老师和成继中老师,本课设能够顺利完成,离不开两位位老师的悉心指导和严格要求。

最后,我要向在百忙之中抽时间对本文进行审阅的老师表示感谢,同时,也要感谢本设计小组的同学,不仅使我完成了实验,还从中学到了许多珍贵的知识,增长了我计算机方面的技能。

 

参考文献

[1]潘松,黄继业.EDA技术与VHDL〔第2版〕[M].北京:

清华大学出版社,2007.

[2]康华光.电子技术根底数字局部〔第五版〕[M].高等教育出版社,2006.45-62

[3]全国大学生电子设计大赛竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编[M].北京理工大学出版社,2003.20-43

[4]全国大学生电子设计大赛竞赛组委会编.全国大学生电子设计竞赛获奖作品选编〔2003〕[M].北京:

北京理工大学出版社,2005.23-45

[5]全国大学生电子设计竞赛湖北赛区组委会编电子系统设计实践[M].湖北:

华中科技大学出版社,2005.17-36

 

附录

生成的顶层程序如下:

LIBRARYieee;

USEieee.std_logic_1164.all;

LIBRARYwork;

ENTITYtopIS

port

clk:

INSTD_LOGIC;

fx:

INSTD_LOGIC;

out1:

OUTSTD_LOGIC_VECTOR(31downto0)

);

ENDtop;

ARCHITECTUREbdf_typeOFtopIS

componentcnt10_8

PORT(fx:

INSTD_LOGIC;

rst:

INSTD_LOGIC;

ena:

INSTD_LOGIC;

d:

OUTSTD_LOGIC_VECTOR(31downto0)

);

endcomponent;

componentlatch8

PORT(clk:

INSTD_LOGIC;

d:

INSTD_LOGIC_VECTOR(31downto0);

q:

OUTSTD_LOGIC_VECTOR(31downto0)

);

endcomponent;

componentcontrol

PORT(clk:

INSTD_LOGIC;

cen:

OUTSTD_LOGIC;

rst:

OUTSTD_LOGIC;

load:

OUTSTD_LOGIC

);

endcomponent;

signalSYNTHESIZED_WIRE_0:

STD_LOGIC;

signalSYNTHESIZED_WIRE_1:

STD_LOGIC;

signalSYNTHESIZED_WIRE_2:

STD_LOGIC;

signalSYNTHESIZED_WIRE_3:

STD_LOGIC_VECTOR(31downto0);

 

BEGIN

 

b2v_inst:

cnt10_8

PORTMAP(fx=>fx,

rst=>SYNTHESIZED_WIRE_0,

ena=>SYNTHESIZED_WIRE_1,

d=>SYNTHESIZED_WIRE_3);

b2v_inst2:

latch8

PORTMAP(clk=>SYNTHESIZED_WIRE_2,

d=>SYNTHESIZED_WIRE_3,

q=>out1);

b2v_inst3:

control

PORTMAP(clk=>clk,

cen=>SYNTHESIZED_WIRE_1,

rst=>SYNTHESIZED_WIRE_0,

load=>SYNTHESIZED_WIRE_2);

END;

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

当前位置:首页 > 表格模板 > 表格类模板

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

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