EDA数字频率计课程设计Word格式.docx
《EDA数字频率计课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《EDA数字频率计课程设计Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
一、预设计阶段(第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磅行距)
关键词(小四、黑体):
脉宽;
脉冲;
数显;
电容(小四、宋体)目录(四号、黑体)
(小四、宋体)
目录
一、概述7
二、系统设计7
1、系统的工作原理7
2、VGA显示原理7
3、按键模块控制VGA显示模式8
三、程序设计9
1.程序流程图9
2、源程序及其说明10
3.试验现象12
四、仿真结果13
五、芯片图、总原理图及引脚图(四13
六、结论与心得15
七、参考文献16
一、概述(四号、宋体、加粗)
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着复杂可编程逻辑器件(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:
ENA:
CQ:
OUTINTEGERRANGE0TO15;
CARRY_OUT:
OUTSTD_LOGIC);
ENDCNT10;
ARCHITECTUREpinOFCNT10IS
SIGNALCQI:
INTEGERRANGE0TO15;
BEGIN
PROCESS(CLK,CLR,ENA)
BEGIN
IFCLR='
1'
THENCQI<
=0;
ELSIFCLK'
EVENTANDCLK='
THEN
IFENA='
IFCQI<
9THENCQI<
=CQI+1;
ELSECQI<
=0;
ENDIF;
ENDPROCESS;
PROCESS(CQI)
BEGIN
IFCQI=9THENCARRY_OUT<
='
;
ELSE
CARRY_OUT<
0'
ENDPROCESS;
CQ<
=CQI;
ENDpin;
--FREQTEST.VHD
ENTITYFREQTESTIS
PORT(P1:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
P3:
OUTSTD_LOGIC_VECTOR(6DOWNTO2);
CLK:
FSIN:
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDFREQTEST;
ARCHITECTUREstrucOFFREQTESTIS
COMPONENTTESTCTL
PORT(CLK:
TSTEN:
OUTSTD_LOGIC;
CLR_CNT:
LOAD:
ENDCOMPONENT;
COMPONENTCNT10
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
COMPONENTREG32B
PORT(LOAD:
DIN:
INSTD_LOGIC_VECTOR(3DOWNTO0);
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
SIGNALTSTEN1:
STD_LOGIC;
SIGNALCLR_CNT1:
SIGNALLOAD1:
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=>
CQ=>
DTO1(3DOWNTO0),CARRY_OUT=>
CARRY_OUT1(0));
U4:
CARRY_OUT1(0),CLR=>
CLR_CNT1,
ENA=>
TSTEN1,CQ=>
DTO1(7DOWNTO4),
CARRY_OUT=>
CARRY_OUT1
(1));
U5:
CARRY_OUT1
(1),CLR=>
DTO1(11DOWNTO8),
CARRY_OUT1
(2));
U6:
CARRY_OUT1
(2),CLR=>
DTO1(15DOWNTO12),
CARRY_OUT1(3));
U7:
CARRY_OUT1(3),CLR=>
DTO1(19DOWNTO16),
CARRY_OUT1(4));
U8:
CARRY_OUT1(4),CLR=>
CLR_CNT1,
DTO1(23DOWNTO20),
CARRY_OUT1(5));
U9:
CARRY_OUT1(5),CLR=>
DTO1(27DOWNTO24),
CARRY_OUT1(6));
U10:
CARRY_OUT1(6),CLR=>
DTO1(31DOWNTO28));
ENDstruc;
ENTITYmax4_1IS
PORT(a,b,c,d,s1,s2:
INSTD_LOGIC;
y0:
OUTSTD_LOGIC;
y1:
y2:
y3:
OUTSTD_LOGIC);
ENDENTITYmax4_1;
ARCHITECTUREhf1OFmax4_1IS
SIGNALss:
STD_LOGIC_VECTOR(0TO1);
ss<
=s2&
s1;
PROCESS(ss)
CASEssIS
WHEN"
00"
=>
y0<
=a;
y1<
Z'
y2<
y3<
01"
y1<
=b;
y0<
10"
y2<
=c;
11"
y3<
=d;
WHENOTHERS=>
NULL;
ENDCASE;
ENDARCHITECTUREhf1;
--REG32B.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.all;
ENTITYREG32BIS
PORT(load:
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDREG32B;
ARCHITECTUREpinOFREG32BIS
process(load,DIN)
IFload'
EVENTANDload='
DOUT<
=DIN;
ENDpin;
--TESTCTL.vhd
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYTESTCTLIS
PORT(CLK:
INSTD_LOGIC;
OUTSTD_LOGIC;
LOAD:
OUTSTD_LOGIC);
ENDTESTCTL;
ARCHITECTUREpinOFTESTCTLIS
SIGNALDiv2CLK:
PROCESS(CLK)
IFCLK'
Div2CLK<
=NOTDiv2CLK;
ENDPROCESS;
PROCESS(CLK,Div2CLK)
IFCLK='
ANDDiv2CLK='
THEN
CLR_CNT<
;
load<
TSTEN<
=Div2CLK;
ENDpin;
ENTITYTYFPIS
PORT(CLK_IN:
CLK_OUT:
ENDENTITYTYFP;
ARCHITECTUREARTOFTYFPIS
SIGNALDATA:
INTEGERRANGE0TO1000;
SIGNALQ:
PROCESS(CLK_IN)IS
IFRISING_EDGE(CLK_IN)THEN
IF(DATA=0)THEN
DATA<
Q<
=NOTQ;
ELSE
=DATA;
ENDIF;
CLK_OUT<
=Q;
ENDARCHITECTUREART;
--TYFP10.VHD
ENTITYTYFP10IS
ENDENTITYTYFP10;
ARCHITECTUREARTOFTYFP10IS
IF(DATA=4)THEN
=DATA+1;
--TYFP100.VHD
ENTITYTYFP100IS
ENDENTITYTYFP100;
ARCHITECTUREARTOFTYFP100IS
IF(DATA=49)THEN
--TYFP1000.VHD
ENTITYTYFP1000IS
ENDENTITYTYFP1000;
ARCHITECTUREARTOFTYFP1000IS
INTEGERRANGE0