EDA课设8位16进制频率计设计解读.docx
《EDA课设8位16进制频率计设计解读.docx》由会员分享,可在线阅读,更多相关《EDA课设8位16进制频率计设计解读.docx(16页珍藏版)》请在冰豆网上搜索。
EDA课设8位16进制频率计设计解读
存档资料成绩:
华东交通大学理工学院
课程设计报告书
所属课程名称实用EDA技术与VHDL教程
题目 8位16进制频率计设计
分院 电信分院
专业班级通信2012-2
学 号20120210420216
学生姓名黄建军
指导教师谭尾琴
2016年6月24日
课程设计(论文)评阅意见
序号
项目
等级
优秀
良好
中等
及格
不及格
1
课程设计态度评价
2
出勤情况评价
3
任务难度
4
工作量饱满评价
5
设计中创新性评价
6
论文书写规范化评价
7
综合应用能力评价
8
综合评定登记
评阅人谭尾琴
2015年月日
一、设计任务与要求3
二、设计系统的概述3
三、总体电路图4
四、课设使用设备4
五、功能模块4
1、测频控制电路4
2、32位锁存器REG32B6
3、32位计数器COUNTER32B8
4、频率计顶层文件9
六、硬件调试及结果分析11
1、测频控制电路11
2、32位锁存器12
3、32位计数器12
4、8位16进制频率计12
七、设计体会12
八、参考文献13
一、设计任务与要求
1、用EDA技术设计并实现8位十六进制频率计,及设计一个基于VHDL的八位十六进制频率计,学习较复杂的数字系统设计方法。
书面报告包括工作原理,工作模块图,仿真波形图和问题分析。
2、分别仿真测试模块1,、2和3,在结合模块4完成频率计的完整设计和硬件实现,并给出其测频时序波形及其分析。
3、将频率计改为8位10进制频率计,注意此设计电路的计数器必须是8个4位的10进制计数器。
此外注意在测频速度上给予优化。
二、设计系统的概述
原理:
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期做好准备。
测频控制信号可以由一个独立的发生器来产生。
在一个标准信号的周期中计数出待测信号的周期,从而得出待测信号的周期,进而得到待测信号的频率。
通过待测信号与标准信号比较,而输出的8位16进制数或8位10进制数就是待测信号的频率值。
(1)FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B的ENABL使能进行同步控制。
(2)当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒钟的计数值锁存进各锁存器REG32B中,并由外部的十六进制7段译码器译出,显示计数值。
设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。
(3)锁存信号后,必须有清零信号RST_CNT对计数器进行清零,为下一秒的计数操作作准备。
(4)、8位16进制频率计
由一个测频控制电路、一个32位锁存器和一个32位计数器组成。
三、总体电路图
四、课设使用设备
PC机一台
GW48-PK4试验系统一台
下载器
连接线若干
5、功能模块
1、测频控制电路
设计频率极的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。
VHDL程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFTCTRLIS
PORT(CLKK:
INSTD_LOGIC;
CNT_EN:
OUTSTD_LOGIC;
RST_CNT:
OUTSTD_LOGIC;
Load:
OUTSTD_LOGIC);
ENDFTCTRL;
ARCHITECTUREbehavOFFTCTRLIS
SIGNALDiv2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLKK)
BEGIN
IFCLKK'EVENTANDCLKK='1'THEN
Div2CLK<=NOTDiv2CLK;
ENDIF;
ENDPROCESS;
PROCESS(CLKK,Div2CLK)
BEGIN
IFCLKK='0'ANDDiv2CLK='0'THENRST_CNT<='1';
ELSERST_CNT<='0';
ENDIF;
ENDPROCESS;
Load<=NOTDiv2CLK;
CNT_EN<=Div2CLK;
ENDbehav;
程序运行成功:
仿真结果:
FTCTRL封装模块:
2、32位锁存器REG32B
设置锁存器是为使显示的数据稳定,不会由于周期性的清零信号而不断闪烁;锁存器的位数应跟计数器一样。
VHDL程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYREG32BIS
PORT(LK:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDREG32B;
ARCHITECTUREbehavOFREG32BIS
BEGIN
PROCESS(LK,DIN)
BEGIN
IFLK'EVENTANDLK='1'THEN
DOUT<=DIN;
ENDIF;
ENDPROCESS;
ENDbehav;
程序运行成功:
仿真结果:
REG32B封装模块:
3、32位计数器COUNTER32B
计数器以待测信号作为时钟,以十进制数显示,如需要测试较高的频率信号,则将输出的位数增加,锁存器的位数也要增加。
VHDL程序;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNTER32BIS
PORT(FIN:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
ENABL:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDCOUNTER32B;
ARCHITECTUREbehavOFCOUNTER32BIS
SIGNALCQI:
STD_LOGIC_VECTOR(31DOWNTO0);
BEGIN
PROCESS(FIN,CLR,ENABL)
BEGIN
IFCLR='1'THENCQI<=(OTHERS=>'0');
ELSIFFIN'EVENTANDFIN='1'THEN
IFENABL='1'THENCQI<=CQI+1;
ENDIF;
ENDIF;
ENDPROCESS;
DOUT<=CQI;
ENDbehav;
程序运行成功:
仿真结果:
COUNTER32B封装模块:
4、频率计顶层文件
频率计总体设计原理图:
VHDL程序;
LIBRARYIEEE;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFREQTESTIS
PORT(CLK1HZ:
INSTD_LOGIC;
FSIN:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDFREQTEST;
ARCHITECTUREstrucOFFREQTESTIS
COMPONENTFTCTRL
PORT(CLKK:
INSTD_LOGIC;
CNT_EN:
OUTSTD_LOGIC;
RST_CNT:
OUTSTD_LOGIC;
Load:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTCOUNTER32B
PORT(FIN:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
ENABL:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDCOMPONENT;
COMPONENTREG32B
PORT(LK:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
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
U1:
FTCTRLPORTMAP(CLKK=>CLK1HZ,CNT_EN=>TSTEN1,
RST_CNT=>CLR_CNT1,Load=>Load1);
U2:
REG32BPORTMAP(LK=>Load1,DIN=>DTO1,DOUT=>DOUT);
U3:
COUNTER32BPORTMAP(FIN=>FSIN,CLR=>CLR_CNT1,
ENABL=>TSTEN1,DOUT=>DTO1);
ENDstruc;
程序运行成功:
仿真结果:
六、硬件调试及结果分析
1、测频控制电路
关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。
控制时钟信号clk取为1Hz,2分频后即可查声一个脉宽为1秒的时钟test-en,一此作为计数闸门信号。
当test-en为高电平时,允许计数;当test-en由高电平变为低电平(下降沿到来)时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次test-en上升沿到哦来之前产生零信号clear,将计数器清零,为下次计数作准备。
2、32位锁存器
当test-en下降沿到来时,将计数器的计数值锁存,这样可由外部的七段译码器译码并在数码管显示。
设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存器的位数应跟计数器完全一样。
3、32位计数器
计数器以待测信号作为时钟,清零信号clear到来时,异步清零;test-en为高电平时开始计数。
计数是以十进制数显示,本文设计了一个简单的10kHz以内信号的频率机计,如果需要测试较高的频率信号,则将dout的输出位数增加,当然锁存器的位数也要增加。
4、8位16进制频率计
输入端1Hz测频控制信号clk1hz由clock2输入(用跳线选1Hz),待测频率输入fin由clock0输入,频率选择为256Hz。
输出端dout与8个8段显示管相连,且8个数码管以16进制形式显示测频输出。
结果:
在一段时间8个显示管为‘00000000’后,第一位开始计数,当到达15后,进入第二位,最后停在‘00000100’,及10进制的‘256’。
七、设计体会
本次实验是设计一个8位十六进制频率计,设计主要用到了多种芯片,程序也比较长、比较麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。
这是本学期这门课程的最后一个实验,也是最后一个综合性实验,是对这门课程的一个全面总结和检测。
通过本次实验,我更加系统和全面的了解了模块化的设计流程,尤其是硬、软件的设计方法,掌握了键盘显示电路的基本功能及编程方法,掌握了键盘电路和显示电路的一般原理,也进一步掌握了32位锁存器的使用和中断处理器程序的编程方法。
试验中,让我对源程序有了更好的认知与分析,而且对VHDL语言又增加了熟练运用程度。
在VHDL语音程序中,运用了元件实体声明、信号量的声明、进程的运用、循环语句的多种用法和元件例化语句等,不仅检验了我们对实验软件工具QuartusⅡ的熟悉与掌握应用,而且考验我们能否熟练的对程序进行编写,对输入波形的编译,对程序的仿真。
转眼间,一个学期过去了,伴随着这次实验的结束,我们也完成了这门课程的初步学习。
经过这么久的课本和实验学习,使得我开拓了思路,锻炼了实践动手能力,提高了分工协作能力和分析问题,解决问题的能力,使我获益匪浅!
我始终相信:
只要努力过了、终究会有所收获!
同时,也让自己无愧于心。
八、参考文献
[1]巴里.威尔金森编著,《数字设计基础》(双语教学版)
[2]潘松编著,《EDA技术实用教程》科学出版设
[3]徐雯娟编著《基于VHDL语音的数字电路设计实验指导》
[4]高振斌等编著《EDA实用技术及应用》