EDA数字频率计课程设计资料.docx
- 文档编号:23105810
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:22
- 大小:176.87KB
EDA数字频率计课程设计资料.docx
《EDA数字频率计课程设计资料.docx》由会员分享,可在线阅读,更多相关《EDA数字频率计课程设计资料.docx(22页珍藏版)》请在冰豆网上搜索。
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磅行距)
关键词(小四、黑体):
脉宽;脉冲;数显;电容(小四、宋体)目录(四号、黑体)
(小四、宋体)
目录
一、概述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:
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:
INTEGERRANGE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字频率计 课程设计 资料