数字频率计的设计.docx
- 文档编号:12286627
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:12
- 大小:79.95KB
数字频率计的设计.docx
《数字频率计的设计.docx》由会员分享,可在线阅读,更多相关《数字频率计的设计.docx(12页珍藏版)》请在冰豆网上搜索。
数字频率计的设计
E
D
A
技
术
及
应
用
实
验
报
告
姓名:
XXX
班级:
XXX
学号:
XXXX
实验/上机报告
课程名称:
EDA技术及应用
专业:
电气工程及其自动化
成绩:
指导教师:
XXX
姓名:
XXX
日期:
2013/10/23
项目序号:
实验三
学号:
XXX
时间:
星期三
项目名称:
数字频率计的设计
组号:
地点:
XXXX
一、实验目的
设计一个能测量方波信号的频率的频率计。
二、实验环境
QuartusII开发系统。
三、实验内容
1.设计一个能测量方波信号的频率的频率计。
2.测量的频率范围是0~999999Hz。
3.结果用十进制数显示。
四、实验进程
设计思想:
用于频率测量的方式有很多,频率测量的准确度主要取决于所测量的频率范围和被测对象的特点。
而测量所能达到的精度,不单单取决于作为标准利用的频率源的精度,也取决于所利用的测量设备和测量方式。
所谓频率,就是周期性信号在单位时刻(1s)内转变的次数。
若在一按时刻距离T内测得那个周期性信号的重复转变次数为N,则其频率可表示为f=N/T。
数字频率计的主要功能是测量周期信号的频率。
频率是单位时刻(1S)内信号发生周期转变的次数。
若是咱们能在给定的1S时刻内对信号波形计数,并将计数结果显示出来,就可以读取被测信号的频率。
数字频率计第一必需取得相对稳固与准确的时刻,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时刻距离内的脉冲个数,将其换算后显示出来。
实验步骤:
1.测频控制信号发生器的功能模块及仿真
源程序如下:
LIBRARYIEEE;
USE
USETESTCTLIS
PORT(CLK:
INSTD_LOGIC;--1Hz测频控制时钟
TSTEN:
OUTSTD_LOGIC;--计数器时钟使能
CLR_CNT:
OUTSTD_LOGIC;--计数器清零
LOAD:
OUTSTD_LOGIC);--输出锁存信号
ENDENTITYTESTCTL;
ARCHITECTUREARTOFTESTCTLIS
SIGNALDIV2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLK)IS
BEGIN
IFCLK'EVENTANDCLK='1'THEN--1HZ时钟二分频
DIV2CLK<=NOTDIV2CLK;
ENDIF;
ENDPROCESS;
PROCESS(CLK,DIV2CLK)IS
BEGIN
IFCLK='0'ANDDIV2CLK='0'THEN--产生计数器清零信号
CLR_CNT<='1';
ELSECLR_CNT<='0';ENDIF;
ENDPROCESS;
LOAD<=NOTDIV2CLK;TSTEN<=DIV2CLK;
ENDARCHITECTUREART;
位锁存器的功能模块及仿真
源程序如下:
LIBRARYIEEE;
USEREG32BIS
PORT(LOAD:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDENTITYREG32B;
ARCHITECTUREARTOFREG32BIS
BEGIN
PROCESS(LOAD,DIN)IS
BEGIN
IFLOAD'EVENTANDLOAD='1'THENDOUT<=DIN;--锁存输入数据
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
3.十进制计数器的功能模块及仿真
源程序如下:
LIBRARYIEEE;
USE
ENTITYCNT10IS
PORT(CLK:
INSTD_LOGIC;--计数时钟信号
CLR:
INSTD_LOGIC;--清零信号
ENA:
INSTD_LOGIC;--计数使能信号
CQ:
OUTINTEGERRANGE0TO15;--4位计数结果输出
CARRY_OUT:
OUTSTD_LOGIC);--计数进位
ENDENTITYCNT10;
ARCHITECTUREARTOFCNT10IS
SIGNALCQI:
INTEGERRANGE0TO15;
BEGIN
PROCESS(CLK,CLR,ENA)IS
BEGIN
IFCLR='1'THENCQI<=0;--计数器异步清零
ELSIFCLK'EVENTANDCLK='1'THEN
IFENA='1'THEN
IFCQI<9THENCQI<=CQI+1;
ELSECQI<=0;
ENDIF;--等于9,则计数器清零
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CQI)IS
BEGIN
IFCQI=9THENCARRY_OUT<='1';--进位输出
ELSECARRY_OUT<='0';ENDIF;
ENDPROCESS;
CQ<=CQI;
ENDARCHITECTUREART;
位十进制数字频率计的功能仿真
LIBRARYIEEE;
USE
ENTITYCNT10IS
PORT(CLK:
INSTD_LOGIC;--计数时钟信号
CLR:
INSTD_LOGIC;--清零信号
ENA:
INSTD_LOGIC;--计数使能信号
CQ:
OUTINTEGERRANGE0TO15;--4位计数结果输出
CARRY_OUT:
OUTSTD_LOGIC);--计数进位
ENDENTITYCNT10;
ARCHITECTUREARTOFCNT10IS
SIGNALCQI:
INTEGERRANGE0TO15;
BEGIN
PROCESS(CLK,CLR,ENA)IS
BEGIN
IFCLR='1'THENCQI<=0;--计数器异步清零
ELSIFCLK'EVENTANDCLK='1'THEN
IFENA='1'THEN
IFCQI<9THENCQI<=CQI+1;
ELSECQI<=0;
ENDIF;--等于9,则计数器清零
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CQI)IS
BEGIN
IFCQI=9THENCARRY_OUT<='1';--进位输出
ELSECARRY_OUT<='0';ENDIF;
ENDPROCESS;
CQ<=CQI;
ENDARCHITECTUREART;
LIBRARYIEEE;
USEREG32BIS
PORT(LOAD:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDENTITYREG32B;
ARCHITECTUREARTOFREG32BIS
BEGIN
PROCESS(LOAD,DIN)IS
BEGIN
IFLOAD'EVENTANDLOAD='1'THENDOUT<=DIN;--锁存输入数据
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
LIBRARYIEEE;
USE
USETESTCTLIS
PORT(CLK:
INSTD_LOGIC;--1Hz测频控制时钟
TSTEN:
OUTSTD_LOGIC;--计数器时钟使能
CLR_CNT:
OUTSTD_LOGIC;--计数器清零
LOAD:
OUTSTD_LOGIC);--输出锁存信号
ENDENTITYTESTCTL;
ARCHITECTUREARTOFTESTCTLIS
SIGNALDIV2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLK)IS
BEGIN
IFCLK'EVENTANDCLK='1'THEN
--1HZ时钟二分频
DIV2CLK<=NOTDIV2CLK;
ENDIF;
ENDPROCESS;
PROCESS(CLK,DIV2CLK)IS
BEGIN
IFCLK='0'ANDDIV2CLK='0'THEN
--产生计数器清零信号
CLR_CNT<='1';
ELSECLR_CNT<='0';ENDIF;
ENDPROCESS;
LOAD<=NOTDIV2CLK;TSTEN<=DIV2CLK;
ENDARCHITECTUREART;
LIBRARYIEEE;
USEFREQ8IS
PORT(FSIN:
INSTD_LOGIC;
CLK:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDENTITYFREQ8;
ARCHITECTUREARTOFFREQ8IS
COMPONENTCNT10IS--待调用的有时钟使能的十进制计数器端口定义
PORT(CLK,CLR,ENA:
INSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CARRY_OUT:
OUTSTD_LOGIC);
ENDCOMPONENTCNT10;
COMPONENTREG32BIS--待调用的32位锁存器端口定义
PORT(LOAD:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDCOMPONENTREG32B;
COMPONENTTESTCTLIS--待调用的测频控制信号发生器端口定义
PORT(CLK:
INSTD_LOGIC;
TSTEN:
OUTSTD_LOGIC;
CLR_CNT:
OUTSTD_LOGIC;
LOAD:
OUTSTD_LOGIC);
endcomponentTESTCTL;
SIGNALSE,SC,SL:
STD_LOGIC;
SIGNALS1,S2,S3,S4,S5,S6,S7,S8:
STD_LOGIC;
SIGNALSD:
STD_LOGIC_VECTOR(31DOWNTO0);
BEGIN
U0:
TESTCTLPORTMAP(CLK=>CLK,TSTEN=>SE,CLR_CNT=>SC,LOAD=>SL);
U1:
CNT10PORTMAP(CLK=>FSIN,CLR=>SC,ENA=>SE,
CQ=>SD(3DOWNTO0),CARRY_OUT=>S1);--名字关联
U2:
CNT10PORTMAP(CLK=>S1,CLR=>SC,ENA=>SE,
CQ=>SD(7DOWNTO4),CARRY_OUT=>S2);
U3:
CNT10PORTMAP(S2,SC,SE,SD(11DOWNTO8),S3);--位置关联
U4:
CNT10PORTMAP(S3,SC,SE,SD(15DOWNTO12),S4);
U5:
CNT10PORTMAP(S4,SC,SE,SD(19DOWNTO16),S5);
U6:
CNT10PORTMAP(S5,SC,SE,SD(23DOWNTO20),S6);
U7:
CNT10PORTMAP(S6,SC,SE,SD(27DOWNTO24),S7);
U8:
CNT10PORTMAP(S7,SC,SE,SD(31DOWNTO28),S8);
U9:
REG32BPORTMAP(LOAD=>SL,DIN=>SD(31DOWNTO0),DOUT=>DOUT);
ENDARCHITECTUREART;
仿真图
五、实验总结
这次课程设计中,我不仅温习巩固了课堂所学的理论知识,提高了对所学知识的综合应用能力,并从根本上了解了VHDL语言的一些大体用法,应用了原来不会或不熟练的句型如if句,case句等,也学会了一些大体功能的实现方式,如分频,状态控制等等,从另外一个角度从头审视了上学期完全从硬件角度动身的电路设计,明白了软硬件之间的交互。
通过那个课题,对系统框图、逻辑流程图、状态转移图的设计有了必然的了解。
也知道了系统的前期设计对于后续的编程和调试的重要性。
本课题采用了自下而上的设计方式,按照系统对硬件的要求,画出系统控制流程图;然后按照控制流程图,分化模块,利用模块实现功能;后进行仿真和调试。
每一个成功的背后都要面对无数次的失败,这次课设也不例外。
虽然碰到很多问题与困难,但通过老师和同窗的帮忙,都一一取得顺利地解决。
我想这一定会为未来的实践积累宝贵的经验和教训。
总之,这次课设咱们都收获颇丰。
整个进程气氛浓厚,本人也态度十分认真,踊跃向老师和同窗求教并在此进程中收获良多,能够进一步了解和利用一门与硬件直接打交道的大体语言对咱们未来的学习和工作都会十分有利。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字频率计 设计