EDA数字频率计课程设计.docx

上传人:b****1 文档编号:2703207 上传时间:2023-05-04 格式:DOCX 页数:21 大小:179.52KB
下载 相关 举报
EDA数字频率计课程设计.docx_第1页
第1页 / 共21页
EDA数字频率计课程设计.docx_第2页
第2页 / 共21页
EDA数字频率计课程设计.docx_第3页
第3页 / 共21页
EDA数字频率计课程设计.docx_第4页
第4页 / 共21页
EDA数字频率计课程设计.docx_第5页
第5页 / 共21页
EDA数字频率计课程设计.docx_第6页
第6页 / 共21页
EDA数字频率计课程设计.docx_第7页
第7页 / 共21页
EDA数字频率计课程设计.docx_第8页
第8页 / 共21页
EDA数字频率计课程设计.docx_第9页
第9页 / 共21页
EDA数字频率计课程设计.docx_第10页
第10页 / 共21页
EDA数字频率计课程设计.docx_第11页
第11页 / 共21页
EDA数字频率计课程设计.docx_第12页
第12页 / 共21页
EDA数字频率计课程设计.docx_第13页
第13页 / 共21页
EDA数字频率计课程设计.docx_第14页
第14页 / 共21页
EDA数字频率计课程设计.docx_第15页
第15页 / 共21页
EDA数字频率计课程设计.docx_第16页
第16页 / 共21页
EDA数字频率计课程设计.docx_第17页
第17页 / 共21页
EDA数字频率计课程设计.docx_第18页
第18页 / 共21页
EDA数字频率计课程设计.docx_第19页
第19页 / 共21页
EDA数字频率计课程设计.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

EDA数字频率计课程设计.docx

《EDA数字频率计课程设计.docx》由会员分享,可在线阅读,更多相关《EDA数字频率计课程设计.docx(21页珍藏版)》请在冰点文库上搜索。

EDA数字频率计课程设计.docx

EDA数字频率计课程设计

湖南涉外经济学院

 

课程设计报告

 

课程名称:

EDA技术及应用

报告题目:

数字频率计设计

学生姓名:

所在学院:

信息科学与工程学院

专业班级:

学生学号:

指导教师:

 

2013年6月25日

EDA技术及应用课程设计任务书

报告题目

数字频率计设计

完成时间

2013.6.17至2013.6.28

学生姓名

 

专业班级

电信1001班

指导教师

 

职称

讲师

总体设计要求和技术要点

1.任务及要求

1.任务及要求

(1)设计一个能测量方波信号的频率的频率计。

(2)测量的频率范围是0999999Hz。

(3)结果用十进制数显示。

(4)按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。

2.设计提示

(1)脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为f=N/T,f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。

所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。

(2)被测频率信号取自实验箱晶体振荡器输出信号,加到主控门的输入端。

(3)再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:

1ms,10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。

(4)时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。

(5)f=N/T,改变时基信号的周期T,即可得到不同的测频范围。

(6)当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新的一次采样做好准备。

(7)改变量程时,小数点能自动移位。

 

工作内容及时间进度安排

一、预设计阶段(第17周星期一):

包括教师授课、方案论证、设计计算和完成预设计(1天)。

二、安装调试阶段(第17周星期一至第18周星期三):

包括检查程序、调试和检测,完成任务(7天)。

三、总结报告阶段(第18周星期四至第18周星期五):

包括总结设计工作,写出设计说明书和最后的考核(2天)。

课程设计成果

一、课程设计作品

检查错误、调节程序。

出现仿真的结果和仿真的图像。

二、课程设计总结报告

(1)严格遵守课程设计报告格式要求。

做到内容完整正确、格式规范。

(2)课程设计报告正文部分内容应包括:

a.设计题目;

b.主要指标和要求;

c.系统工作原理;

d.单元模块的程序设计与仿真;

e.收获、体会和改进设计的建议。

出勤与纪律

1.课程设计时间:

上午8:

00-11:

30,下午2:

00-5:

30

2.学生应严格遵守纪律,不迟到、不早退、不无故缺课。

3.学生在课程设计期间,注意自身与他人安全,爱护实验室财产,违者按相关文件追查责任。

4.课程设计报告独立完成,不得以任何形式抄袭他人资料或成果(包括但不限于同学的资料或网上资料)。

一经发现该科目计0分。

 

摘要(四号黑体)

在电子工程,资源勘探,仪器仪表等相关应用中,频率计是工程技术人员必不可少的测量工具。

频率测量也是电子测量技术中最基本最常见的测量之一。

不少物理量的测量,如转速、振动频率等的测量都涉及到或可以转化为频率的测量。

目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。

为适应实际工作的需要,本文在简述频率测量的基本原理和方法的基础上,提供一种基于FPGA的数字频率计的设计和实现过程,本方案不但切实可行,而且具有成本低廉、小巧轻便、便于携带等特点。

关键词:

VGA;FPGA:

VHDL;OuartusII

(小四、宋体、20磅行距)

关键词(小四、黑体):

脉宽;脉冲;数显;电容(小四、宋体)目录(四号、黑体)

(小四、宋体)

 

 

一、概述(四号、宋体、加粗)

数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。

随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。

将使整个系统大大简化。

提高整体的性能和可靠性。

本文用VHDL在CPLD器件上实现一种8b数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量方波。

具有体积小、可靠性高、功耗低的特点。

二、系统设计(四号、宋体、加粗)

1、数字频率计的基本设计原理

该程序通过元件例化实现,共分成五个部分程序,分别为分频程序、位选程序、时钟程序、计数程序、BCD转换程序(该模块为模式0自带)。

通过五个模块相互配合实现简易数字频率计的功能。

本次EDA课程设计题目为简易数字频率计设计,实现对于0999999Hz的方波信号进行测量。

该频率计包括4个不同的档位,记忆功能,并具有总体的复位功能。

需要利用VHDL(硬件描述语言)通过QuartusII编程软件进行程序的编写和调试、仿真。

并将程序下载到硬件上进行实际观测。

2、系统原理转换图

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

这就要求TESRCTL能产生一个1s脉宽的周期信号,并对频率计的每一个计数器CNT10的ENA使能端进行同步控制。

当TETEN高电平时允许计数,并保持其所计的数。

在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1s的计数值锁存进锁存器REG中,并由外部的8段译码器译出并稳定显示。

图1-2测频法数字频率计框图

 

三、程序设计

本系统主要分为5个单元模块,它们分别是:

十进制计数器模块、分频器模块、测频控制信号发生器模块、32位锁存器模块、7段译码器模块(自带)。

各单元模块功能及相关电路的具体说明如下。

1、计数器模块

CNT10为十进制计数器。

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

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

当ENA为高电平,有时钟脉冲时开始计数,计数十次进位。

波形仿真图如下图所示:

图3-1.1计数器仿真图

图3-1.2计数器外部端口

2、分频器模块

此模块由四个模块组成,有一个四选一模块和10分频,100分频和1000分频模块,在运行中一个四选一模块通过外部按键选择不同的频率,按键的不同组合对应不同的频率,“00”对应对应的是原频率,“01”对应的是10分频,“10”对应的是100分频,“11”对应的是1000分频。

选择不同的频率来控制频率计的量程。

仿真波形如下图所示:

图3-2.1四选一仿真波形图

图3-2.2四选一模块外部端口图

图3-2.3十分频仿真波形图

图3-2.4十分频外部端口图

图3-2.5100分频波形图

图3-2.61000分频波形图

3、测频控制信号发生器模块

TESTCTL为锁存器。

TESTCTL的计数使能信号TSTEN能产生一个1s宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制:

当TSTEN高电平时允许计数、低电平时停止计数。

仿真波形如下图所示:

图3-3锁存器的仿真波形图

4、32位锁存器模块

REG32B为锁存器。

在信号Load的上升沿时,立即对模块的输入口的数据锁存到REG32B的内部,并由REG32B的输出端输出,然后,七段译码器可以译码输出。

在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。

锁存器的外部端口图:

图3-4锁存器的外部端口图

5、7段译码器模块

该模块在试验箱上选择模式0时,会自动译码,并在数码管上显示。

 

四、总原理图

图4-1总原理图

七、结论与心得

本次EDA课程设计题目为数字频率计设计,实现对于0~999999Hz频率范围的方波频率进行测量,并在数码管上显示。

该频率计包括四个档位,具有记忆功能,拥有一个整体的复位控制。

此次课设需要用硬件描述语言(VHDL)编写程序,并在QuartusII软件平台上进行程序的编译和仿真,锁定引脚并下载到可编程逻辑器件(试验箱)中,进行硬件的测试。

此次EDA课程设计历时两周时间,两人一组合作进行数字频率计系统的设计。

程序的编写我们采用元件例化的形式,经过思考和相互间的分析讨论,将整个系统划分五个功能模块,彼此配合进行五个功能模块设计和程序的编写。

其间,我们亦遇到许多问题,最后都和队友在老师的建议下攻克下了。

经历两周时间的不懈努力和队友之间愈加默契的配合,我们终于完成预定的目的,完成整个数字频率计的设计。

虽然其中遇到很多困难,很多问题,但在我们两人相互支持和鼓励想下,都能够得以顺利的找到解决办法或者改进的方法,并在合作中相互提高,彼此进步,在困难在中体会到合作的乐趣。

EDA技术对于我们电子信息工程专业的学生来说是一本很重要的专业技术课程,EDA技术极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度,是一门实际应用很广泛的技术,所以,EDA课程的学习对于我们自身素质和能力的提高有十分重要的积极作用,应该很认真的学习。

 

七、参考文献

VGA标准释义

FPGA的VGA控制原理(薛枫、乔磊)

Verilog数字系统设计教程夏宇闻编著北京航空航天大学出版社

2003年7月

 

附录I

--cnt10.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYCNT10IS

PORT(CLK:

INSTD_LOGIC;

CLR:

INSTD_LOGIC;

ENA:

INSTD_LOGIC;

CQ:

OUTINTEGERRANGE0TO15;

CARRY_OUT:

OUTSTD_LOGIC);

ENDCNT10;

ARCHITECTUREpinOFCNT10IS

SIGNALCQI:

INTEGERRANGE0TO15;

BEGIN

PROCESS(CLK,CLR,ENA)

BEGIN

IFCLR='1'THENCQI<=0;

ELSIFCLK'EVENTANDCLK='1'THEN

IFENA='1'THEN

IFCQI<9THENCQI<=CQI+1;

ELSECQI<=0;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CQI)

BEGIN

IFCQI=9THENCARRY_OUT<='1';

ELSE

CARRY_OUT<='0';

ENDIF;

ENDPROCESS;

CQ<=CQI;

ENDpin;

--FREQTEST.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYFREQTESTIS

PORT(P1:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);

P3:

OUTSTD_LOGIC_VECTOR(6DOWNTO2);

CLK:

INSTD_LOGIC;

FSIN:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

ENDFREQTEST;

ARCHITECTUREstrucOFFREQTESTIS

COMPONENTTESTCTL

PORT(CLK:

INSTD_LOGIC;

TSTEN:

OUTSTD_LOGIC;

CLR_CNT:

OUTSTD_LOGIC;

LOAD:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTCNT10

PORT(CLK:

INSTD_LOGIC;

CLR:

INSTD_LOGIC;

ENA:

INSTD_LOGIC;

CQ:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CARRY_OUT:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTREG32B

PORT(LOAD:

INSTD_LOGIC;

DIN:

INSTD_LOGIC_VECTOR(3DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

ENDCOMPONENT;

SIGNALTSTEN1:

STD_LOGIC;

SIGNALCLR_CNT1:

STD_LOGIC;

SIGNALLOAD1:

STD_LOGIC;

SIGNALDTO1:

STD_LOGIC_VECTOR(31DOWNTO0);

SIGNALCARRY_OUT1:

STD_LOGIC_VECTOR(6DOWNTO0);

BEGIN

P1<="11100110";

P3<="11111";

U1:

TESTCTLPORTMAP(CLK=>CLK,TSTEN=>TSTEN1,

CLR_CNT=>CLR_CNT1,LOAD=>LOAD1);

U2:

REG32BPORTMAP(load=>load1,DIN=>DTO1,DOUT=>DOUT);

U3:

CNT10PORTMAP(CLK=>FSIN,CLR=>CLR_CNT1,ENA=>TSTEN1,

CQ=>DTO1(3DOWNTO0),CARRY_OUT=>CARRY_OUT1(0));

U4:

CNT10PORTMAP(CLK=>CARRY_OUT1(0),CLR=>CLR_CNT1,

ENA=>TSTEN1,CQ=>DTO1(7DOWNTO4),

CARRY_OUT=>CARRY_OUT1

(1));

U5:

CNT10PORTMAP(CLK=>CARRY_OUT1

(1),CLR=>CLR_CNT1,

ENA=>TSTEN1,CQ=>DTO1(11DOWNTO8),

CARRY_OUT=>CARRY_OUT1

(2));

U6:

CNT10PORTMAP(CLK=>CARRY_OUT1

(2),CLR=>CLR_CNT1,

ENA=>TSTEN1,CQ=>DTO1(15DOWNTO12),

CARRY_OUT=>CARRY_OUT1(3));

U7:

CNT10PORTMAP(CLK=>CARRY_OUT1(3),CLR=>CLR_CNT1,

ENA=>TSTEN1,CQ=>DTO1(19DOWNTO16),

CARRY_OUT=>CARRY_OUT1(4));

U8:

CNT10PORTMAP(CLK=>CARRY_OUT1(4),CLR=>CLR_CNT1,

ENA=>TSTEN1,CQ=>DTO1(23DOWNTO20),

CARRY_OUT=>CARRY_OUT1(5));

U9:

CNT10PORTMAP(CLK=>CARRY_OUT1(5),CLR=>CLR_CNT1,

ENA=>TSTEN1,CQ=>DTO1(27DOWNTO24),

CARRY_OUT=>CARRY_OUT1(6));

U10:

CNT10PORTMAP(CLK=>CARRY_OUT1(6),CLR=>CLR_CNT1,

ENA=>TSTEN1,CQ=>DTO1(31DOWNTO28));

ENDstruc;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmax4_1IS

PORT(a,b,c,d,s1,s2:

INSTD_LOGIC;

y0:

OUTSTD_LOGIC;

y1:

OUTSTD_LOGIC;

y2:

OUTSTD_LOGIC;

y3:

OUTSTD_LOGIC);

ENDENTITYmax4_1;

ARCHITECTUREhf1OFmax4_1IS

SIGNALss:

STD_LOGIC_VECTOR(0TO1);

BEGIN

ss<=s2&s1;

PROCESS(ss)

BEGIN

CASEssIS

WHEN"00"=>y0<=a;y1<='Z';y2<='Z';y3<='Z';

WHEN"01"=>y1<=b;y0<='Z';y2<='Z';y3<='Z';

WHEN"10"=>y2<=c;y1<='Z';y0<='Z';y3<='Z';

WHEN"11"=>y3<=d;y1<='Z';y2<='Z';y0<='Z';

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREhf1;

--REG32B.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.all;

ENTITYREG32BIS

PORT(load:

INSTD_LOGIC;

DIN:

INSTD_LOGIC_VECTOR(31DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

ENDREG32B;

ARCHITECTUREpinOFREG32BIS

BEGIN

process(load,DIN)

BEGIN

IFload'EVENTANDload='1'THEN

DOUT<=DIN;

ENDIF;

ENDPROCESS;

ENDpin;

--TESTCTL.vhd

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYTESTCTLIS

PORT(CLK:

INSTD_LOGIC;

TSTEN:

OUTSTD_LOGIC;

CLR_CNT:

OUTSTD_LOGIC;

LOAD:

OUTSTD_LOGIC);

ENDTESTCTL;

ARCHITECTUREpinOFTESTCTLIS

SIGNALDiv2CLK:

STD_LOGIC;

BEGIN

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

Div2CLK<=NOTDiv2CLK;

ENDIF;

ENDPROCESS;

PROCESS(CLK,Div2CLK)

BEGIN

IFCLK='0'ANDDiv2CLK='0'THEN

CLR_CNT<='1';

ELSE

CLR_CNT<='0';

ENDIF;

ENDPROCESS;

load<=NOTDiv2CLK;TSTEN<=Div2CLK;

ENDpin;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYTYFPIS

PORT(CLK_IN:

INSTD_LOGIC;

CLK_OUT:

OUTSTD_LOGIC);

ENDENTITYTYFP;

ARCHITECTUREARTOFTYFPIS

SIGNALDATA:

INTEGERRANGE0TO1000;

SIGNALQ:

STD_LOGIC;

BEGIN

PROCESS(CLK_IN)IS

BEGIN

IFRISING_EDGE(CLK_IN)THEN

IF(DATA=0)THEN

DATA<=0;

Q<=NOTQ;

ELSE

DATA<=DATA;

ENDIF;

ENDIF;

CLK_OUT<=Q;

ENDPROCESS;

ENDARCHITECTUREART;

--TYFP10.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYTYFP10IS

PORT(CLK_IN:

INSTD_LOGIC;

CLK_OUT:

OUTSTD_LOGIC);

ENDENTITYTYFP10;

ARCHITECTUREARTOFTYFP10IS

SIGNALDATA:

INTEGERRANGE0TO1000;

SIGNALQ:

STD_LOGIC;

BEGIN

PROCESS(CLK_IN)IS

BEGIN

IFRISING_EDGE(CLK_IN)THEN

IF(DATA=4)THEN

DATA<=0;

Q<=NOTQ;

ELSE

DATA<=DATA+1;

ENDIF;

ENDIF;

CLK_OUT<=Q;

ENDPROCESS;

ENDARCHITECTUREART;

--TYFP100.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYTYFP100IS

PORT(CLK_IN:

INSTD_LOGIC;

CLK_OUT:

OUTSTD_LOGIC);

ENDENTITYTYFP100;

ARCHITECTUREARTOFTYFP100IS

SIGNALDATA:

INTEGERRANGE0TO1000;

SIGNALQ:

STD_LOGIC;

BEGIN

PROCESS(CLK_IN)IS

BEGIN

IFRISING_EDGE(CLK_IN)THEN

IF(DATA=49)THEN

DATA<=0;

Q<=NOTQ;

ELSE

DATA<=DATA+1;

ENDIF;

ENDIF;

CLK_OUT<=Q;

ENDPROCESS;

ENDARCHITECTUREART;

--TYFP1000.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYTYFP1000IS

PORT(CLK_IN:

INSTD_LOGIC;

CLK_OUT:

OUTSTD_LOGIC);

ENDENTITYTYFP1000;

ARCHITECTUREARTOFTYFP1000IS

SIGNALDATA:

INTEGERRANGE0TO1000;

SIGNALQ:

STD_LOGIC;

BEGIN

PROCESS(CLK_IN)IS

BEGIN

IFRISING_EDGE(CLK_IN)THEN

IF(DATA=499)THEN

DATA<=0;

Q<=NOTQ;

ELSE

DATA<=DATA+1;

ENDIF;

ENDIF;

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2