16进制频率计数器.docx

上传人:b****8 文档编号:11472212 上传时间:2023-03-01 格式:DOCX 页数:9 大小:82.97KB
下载 相关 举报
16进制频率计数器.docx_第1页
第1页 / 共9页
16进制频率计数器.docx_第2页
第2页 / 共9页
16进制频率计数器.docx_第3页
第3页 / 共9页
16进制频率计数器.docx_第4页
第4页 / 共9页
16进制频率计数器.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

16进制频率计数器.docx

《16进制频率计数器.docx》由会员分享,可在线阅读,更多相关《16进制频率计数器.docx(9页珍藏版)》请在冰豆网上搜索。

16进制频率计数器.docx

16进制频率计数器

实验课程名称:

EDA技术与应用

实验项目名称

16进制频率计实验

实验成绩

实验者

专业班级

组别

同组者

实验日期

一、实验目的

1.掌握计数器的基本原理,进一步加深对频率计数器工作原理及电路组成的理解与掌握。

2.熟悉VHDL文本输入法的使用方法,掌握更复杂的EDA设计技术流程和数字系统设计方法,完成8位十六进制频率计的设计。

二、实验仪器

1.计算器及操作系统

2.QuartusII软件

3、实验原理

1.根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1s的输入信号脉冲计数允许的信号;一秒结束后,计数器被锁入锁存器,计数器清零,为下一测频计数周期做好准备。

测频控制信号可以由一个独立的发生器来产生,即图1中的FTCTRL。

2.FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B(图2)的ENABL使能进行同步控制。

当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。

在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒钟的计数值锁存进各锁存器REG32B中,并由外部的十六进制7段译码器译出,显示计数值。

设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。

锁存信号后,必须有清零信号RST_CNT对计数器进行清零,为下一秒的计数操作准备。

4、实验内容

1.测频控制电路

设计频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。

控制时钟信号clk取为1Hz,2分频后即可产生一个脉宽为1秒的时钟test-en,此作为计数闸门信号。

当test-en为高电平时,允许计数;当test-en由高电平变为低电平(下降沿到来)时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次test-en上升沿到来之前产生清零信号clear,将计数器清零,为下次计数作准备。

2.32位锁存器:

设置锁存器的作用是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

锁存器的位数应跟计数器完全一样。

3.计数器:

计数器以待测信号作为时钟,清零信号clear到来时,异步清零;test-en为高电平时开始计数。

5、实验步骤

1.建立工作库文件夹和编辑设计文件

1)新建一个文件夹。

首先利用Windows资源管理器,新建一个文件夹。

2)输入源程序。

打开QuartusⅡ,选择File→new命令,在New窗口中的DesignFile栏选择编辑文件的语言类型,这里选择VHDLFile选项。

然后在VHDL文本编译窗口中输入以下VHDL程序。

3)文件存盘。

2.创建工程

选择File→newProjectWizard命令建立工程,将设计文件加入工程中。

3.编译前设置

在对工程进行编译处理前必须给予必要的设置和约束。

4.全程编译

选择Processing→StartCompilation命令,启动全程编译。

5.时序仿真

打开波形编辑器,选择File→new命令,在New窗口中选择VectorWaveformFile选项。

设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。

①测频控制电路程序如下:

LIBRARYIEEE;--测控控制电路

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYFTCTRLIS

PORT(CLKK:

INSTD_LOGIC;--1HZ

CNT_EN:

OUTSTD_LOGIC;--计数器时钟使能

RST_CNT:

OUTSTD_LOGIC;--计数器清零

Load:

OUTSTD_LOGIC);--输出锁存信号

ENDFTCTRL;

ARCHITECTUREbehaveOFFTCTRLIS

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;

ENDbehave;

 

图1测控控制电路的RTL图

 

图2测控控制电路时序仿真图

图3测控控制器元器件图

②32位锁存器程序如下:

LIBRARYIEEE;--32位锁存器

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYREG32BIS

PORT(LK:

INSTD_LOGIC;

DIN:

INSTD_LOGIC_VECTOR(31DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

ENDREG32B;

ARCHITECTUREbehaveOFREG32BIS

BEGIN

PROCESS(LK,DIN)

BEGIN

IFLK'EVENTANDLK='1'THEN

DOUT<=DIN;

ENDIF;

ENDPROCESS;

ENDbehave;

图432位锁存器的RTL图

图532位锁存器的时序仿真图

 

图632位锁存器元器件图

③计数器程序如下:

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;

ARCHITECTUREbehaveOFCOUNTER32BIS

SIGNALCQI:

STD_LOGIC_VECTOR(31DOWNTO0);

BEGIN

PROCESS(FIN,CLR,ENABL)

BEGIN

IFCLR='1'THENCQI<=(OTHERS=>'0');--清零

ELSIFFIN'EVENTANDFIN='1'

THENIFENABL='1'THENCQI<=CQI+1;

ENDIF;

ENDIF;

ENDPROCESS;

DOUT<=CQI;

ENDbehave;

 

图732位计数器的RTL图

 

图832位计数器的时序仿真图

 

图932位计数器的元器件图

4频率计顶层文件设计

程序如下:

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:

OUTSTD_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;

 

图108位十六进制频率计电路图

六.实验结果及分析

工程编译通过后,必须对其功能和时序性质进行仿真测试。

打开波形编辑器,选择File→new命令,在New窗口中选择VectorWaveformFile选项。

设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。

8位十六进制频率计时序仿真波形如下,仿真结果说明十六进制频率计设计成功。

图118位十六进制频率计时序仿真波形

 

 

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1