现代电路与系统实验报告数字频率计.docx
- 文档编号:12364784
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:15
- 大小:380.27KB
现代电路与系统实验报告数字频率计.docx
《现代电路与系统实验报告数字频率计.docx》由会员分享,可在线阅读,更多相关《现代电路与系统实验报告数字频率计.docx(15页珍藏版)》请在冰豆网上搜索。
现代电路与系统实验报告数字频率计
武汉理工大学
现代电路与系统实验报告
班级:
电子与通信工程143班
姓名:
王富贵
学号:
1049721403190
教师:
吕锋
日期:
2015.04.30
实验二
一、实验项目
VHDL频率计设计
二、实验目的
利用VHDL设计32位频率计。
三、实验内容与理论依据
基本原理同实验4-5。
只是在本项实验中需使用VHDL来设计,不涉及任何74系列宏模块的应用。
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1s的输入信号脉冲计数允许的信号。
1s计数结束后,计数值被锁入锁存器,计数器清零,为下一测频计数周期做好准备。
实验任务1:
测频控制信号可以由一个独立的发生器来产生(参考例5-19),即图5-15中的FTCTL。
根据测频原理,测频控制时序如图5-16所示。
设计要求FTCTL的计数使能信号CNTEN能产生一个1s脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B(如图5-15所示)的ENABL使能端进行同步控制。
当CNTEN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,需要一个锁存信号LOAD的上跳沿将计数器在前一秒钟的计数值锁存进锁存器REG32B中,并由外部的十六进制7段译码器译出,显示计数值。
锁存信号后,必须有一清零信号RSTCNT对计数器清零,为下一秒的计数操作做准备。
对例5-19仿真测试,验证其功能。
用VHDL设计另两个模块:
REG32B和COUNTER32B,并对它们单独仿真测试。
根据图5-15完成VHDL设计,程序中例化这3个模块。
最后完成频率计设计、仿真和硬件实现,并给出其测频时序波形及其分析。
对于55F+系统,需要扩展模块来辅助显示测频数据。
实验二图1频率计电路框图
实验二图2频率计测频控制器FTCTRL测控时序图
【例5-19】
LIBRARYIEEE;--测频控制电路
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFTCTRLIS
PORTCLKK:
INSTD_LOGIC;--1Hz
CNT_EN,RST_CNT:
OUTSTD_LOGIC;--计数器时钟能使和计数器清零
Load:
OUTSTD_LOGIC);--输出锁存信号
ENDFTCTRL;
ARCHITECTUREbehaveOFFTCTRLIS
SIGNALDiv2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLKK)BEGIN
IFCLKK’EVENTANDCLKK=’1’THENDiv2CLK<=NOTDiv2CLK;--1Hz时钟2分频
ENDIF;
ENDPROCESS;
PRPCESS(CLKK,Div2CLK)BEGIN
IFCLKK=’0’;ANDDiv2CLK=’0’THENRST_CNT<=’1’;--产生计数器清零信号
ELSERST_CNT<=’0’;ENDIF;
ENDPROCESS;
Load<=NOTDiv2CLK;CNT_EN<=Div2CLK;
ENDbehave;
四、实验过程,程序框图与代码
1.测频控制电路FTCTRL的设计
(1)FTCTRL的VHDL代码:
LIBRARYIEEE;--测频控制电路
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFTCTRLIS
PORT(CLKK:
INSTD_LOGIC;--1Hz
CNT_EN:
OUTSTD_LOGIC;--计数器时钟使能
RST_CNT:
OUTSTD_LOGIC;--计数器清零
Load:
OUTSTD_LOGIC);--输出锁存信号
ENDFTCTRL;
ARCHITECTUREbehavOFFTCTRLIS
SIGNALDiv2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLKK)
BEGIN
IFCLKK'EVENTANDCLKK='1'THEN--1Hz时钟2分频
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;
(2)FTCTRL的RTL视图
图1FTCTRL的RTL视图
(3)FTCTRL的测试图
图2周期1sCLKK输入波形测试
图3FTCTRL测试
2.32位计数器COUNTER32B的设计
(1)COUNTER32B的VHDL代码:
LIBRARYIEEE;--32位计数器
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;
(2)COUNTER32B的RTL视图
图4COUNTER32B的RTL视图
(3)COUNTER32B的测试
图5COUNTER32B的测试1
图6COUNTER32B的测试2
3.32位锁存器(REG32B)的设计
(1)REG32B的VHDL代码
LIBRARYIEEE;--32位锁存器
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'THENDOUT<=DIN;
ENDIF;
ENDPROCESS;
ENDbehav;
(2)REG32B的RTL视图
图7REG32B的RTL视图
(3)REG32B的测试
图8REG32B的测试
4.频率计整体设计
(1)频率计整体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;--1Hz
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;
LIBRARYIEEE;--测频控制电路
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFTCTRLIS
PORT(CLKK:
INSTD_LOGIC;--1Hz
CNT_EN:
OUTSTD_LOGIC;--计数器时钟使能
RST_CNT:
OUTSTD_LOGIC;--计数器清零
Load:
OUTSTD_LOGIC);--输出锁存信号
ENDFTCTRL;
ARCHITECTUREbehavOFFTCTRLIS
SIGNALDiv2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLKK)
BEGIN
IFCLKK'EVENTANDCLKK='1'THEN--1Hz时钟2分频
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;
LIBRARYIEEE;--32位锁存器
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'THENDOUT<=DIN;
ENDIF;
ENDPROCESS;
ENDbehav;
LIBRARYIEEE;--32位计数器
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;
(2)频率计整体RTL视图
图9频率计整体RTL视图
(3)频率计整体测试
图10频率计测试(被测方波周期100ms10HZ)
五、实验结果及分析
1.测频控制电路FTCTRL结果及分析
通过FTCTRL所得到的RTL视图符合控制电路的逻辑连接要求,同时通过对该控制电路进行波形测试,得到如图2,图3的测试电路,当输入CLKK的波形为T=1s的方波时,输出的CNT_EN,Load以及RST_CNT引脚的结果符合要求,说明该电路设计正确。
2.32位计数器COUNTER32B结果及分析
通过对COUNTER32B的VHDL仿真得到如图4所示的RTL视图,该RTL视图符合逻辑连接要求,同时通过对该电路进行波形测试,得到如图5,图6的测试电路,当输入FIN为固定频率的的方波时,输出DOUT的值取决于ENABLE和CLR引脚的波形当ENABLE=1且CLR=0时正常计数;当ENABLE=0且CLR=0时,保持上次计到的最后一个数,当下次ENABLE=1且CLR=0时,再次进入正常计数状态;当CLR=1时,无法计数,通过对策是结果的观察发现测试结果符合理论要求,说明该电路设计正确。
3.32位锁存器REG32B结果及分析
通过对REG32B的VHDL代码仿真所得到的RTL视图符合锁存器电路的逻辑连接要求,同时通过对该锁存电路进行波形测试,得到如图8所示的测试电路,当将输入DIN的设置为随机输入时,引脚LK=0时,DIN的数值无法输出(锁存)到DOUT引脚,当LK=0时,DOUT得到DIN的数值并保持,通过测试图观察得到的结果符合要求,说明该电路设计正确。
4.频率计整体结果及分析
通过对FTCTRL,COUNTER32B,REG32B三部分进行级联,得到的RTL视图如图9所示,同时通过对该频率计电路进行波形测试,得到如图10所示的测试电路,当输入FSIN引脚输入的波形为T=100ms(f=10Hz)的方波时,输出引脚DOUT通过CLK1Hz对FSIN进行计数,得到DOUT=10(也就是输入频率为10Hz),结果符合要求,说明频率计整体设计正确,实验成功。
六、实验结论
本实验首先通过对FTCTRL,COUNTER32B,REG32B三部分分别进行独立的VHDL设计,RTL视图的导出以及波形测试,测试单独模块的正确性,通过独立测试结果得出正确结论后,对三个模块进行级联整体测试,组成完整的频率计电路,通过测试得到了符合理论的正确结果,说明此次设计结果正确,实验成功。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代 电路 系统 实验 报告 数字频率计