数字频率计实验报告.docx

上传人:b****5 文档编号:7344078 上传时间:2023-01-23 格式:DOCX 页数:19 大小:232.78KB
下载 相关 举报
数字频率计实验报告.docx_第1页
第1页 / 共19页
数字频率计实验报告.docx_第2页
第2页 / 共19页
数字频率计实验报告.docx_第3页
第3页 / 共19页
数字频率计实验报告.docx_第4页
第4页 / 共19页
数字频率计实验报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数字频率计实验报告.docx

《数字频率计实验报告.docx》由会员分享,可在线阅读,更多相关《数字频率计实验报告.docx(19页珍藏版)》请在冰豆网上搜索。

数字频率计实验报告.docx

数字频率计实验报告

 

大连理工大学城市学院

数字电路与系统课程设计

设计题目:

数字频率计

 

学院:

电子与自动化学院

专业:

自动化

学生:

揣智涵

同组人:

王晓宁周英茹

指导教师:

于海霞

完成日期:

2012年3月26日

 

第一章设计任务

1.1项目名称

1.2项目设计说明

1.2.1设计任务和要求

1.2.2进度安排

1.3项目总体功能模块图

第二章需求分析

2.1问题基本描述

(要求分析得出整个系统流程图)

2.2系统模块分解及各模块功能的基本要求

第三章设计原理

3.1设计原理

3.2MAXPLUSII介绍

第四章系统功能模块设计

4.1FEN模块

4.1.1FEN模块流程图

4.1.2输入输出引脚及其功能说明

4.1.3程序代码实现

4.2SEL模块

4.2.1SEL模块流程图

4.2.2输入输出引脚及其功能说明

4.2.3程序代码实现

4.3CORNA模块

4.3.1CORNA模块流程图

4.3.2输入输出引脚及其功能说明

4.3.3程序代码实现

4.4LOCK模块

4.4.1LOCK模块流程图

4.4.2输入输出引脚及其功能说明

4.4.3程序代码实现

4.5CH模块

4.5.1输入输出引脚及其功能说明

4.5.2程序代码实现

4.6DISP模块

4.6.1输入输出引脚及其功能说明

4.6.2程序代码实现

第五章调试并分析结果

5.1输入说明

5.2预计输出

5.3测试结果记录

5.4测试结果分析

第六章结论

心得体会

参考文献

第一章设计任务

1.1项目名称:

数字频率计

1.2项目设计说明

1.2.1设计任务和要求

此频率计共分4档:

一档:

0~9999Hz;

二档:

10~99.99kHZ;

三档:

100.0~999.9kHz;,

四档:

1.000~999MHz;

在换挡的设计方面,此程序突破了以往改变闸门时间的方法,使自动换挡的实现更加简单可靠。

1.2.2进度安排

第一节课:

画出模块及程序流程图

第二节课:

调试各模块程序使其无误

第三节课:

连接整个程序并下载到试验箱是数字频率计的功能实现

第四节课:

改进程序设计实现创新,然后完成课程设计报告

第五节课:

完成答辩

1.3项目总体功能模块图如下

图1-1

 

第二章需求分析

2.1问题基本描述

所谓频率,就是周期信号在单位时间(1秒)内变化的次数。

频率计的测量范围为1MHZ,为了测量精确量程分别为10KHZ,100KHZ,1000KHZ和1MHZ四个档。

即最大读数分别为9.999KHZ,99.99KHZ,999.9KHZ,999MHZ。

要求两成自动换挡。

其具体功能如下:

(1)当量程超过999时,自动增大一档,下一次测量时量程大一档;

(2)当超过测量范围时,显示溢出,报警器报警。

(3)小数点位置随量程变化自动移位。

(4)采用记忆显示方法,在测量过程中不显示数据,在测量完成以后显示测频结果,并将此结果保存到下次测量结束,显示时间不少于1秒。

(5)根据频率计的测频原理,可以选择合适的时基信号即阀门时间,对输入信号脉冲进行计数,实现测频的目的。

(6)根据数字频率计的设计原理,可以将数字频率计设计分为五个模块来实现其功能。

即分频模块,控制模块,计数模块,锁存模块和显示模块。

用CLDH语言进行编程。

(7)弄清什么情况下是测频率,就是选择合适的时基信号的问题。

测频率时以输入信号作为时钟信号,因为输入信号的频率大于频率计的基准频率。

数字频率计的系统流程图如下

图2-1

 

2.2系统模块分解及各模块功能的基本要求

计数器在各个档是被反复应用的,如果在各个档分别设计计数器就造成资源的浪费,而且在测周期和频率的时候,计数器的时基信号和输入信号要进行调换,但计数功能是一样的,所以将计数器设为单独的模块。

七段译码器也是被重复使用的,也设成单独的模块,这样的话就不用在重复使用的时候重复书写译码电路了。

总体来说数字频率计分为五个模块来设计,即分频模块计数

模块,锁存模块,预测控制信号发生器,显示模块。

分频模块为计数模块提供1秒的阀门时间。

计数模块是整个程序的核心,它完成在1秒的时间里对被测信号计数的功能,并通过选择输出数据实现自动换挡的功能。

锁存模块在信号L的下降沿到来时将信号A4,A3,A2,A1锁存。

显示模块对应于数码管片选信号,将相应的数据送出,其中档位也通过数码管显示。

第三章设计原理

3.1设计原理

众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。

因此,频率检测是电子测量领域最基本的测量之一。

频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。

通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1s。

闸门时间可以根据需要取值,大于或小于1s都可以。

闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。

闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。

一般取1s作为闸门时间。

数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图3-1所示。

图3-1数字频率计原理图

 

3.2MAXPLUSII介绍

MAX+PLUSⅡ(MultipleArrayandProgrammingLogicUserSystem)开发工具是Altera公司推出的一种EDA工具,具有灵活高效、使用便捷和易学易用等特点。

Altera公司在推出各种CPLD的同时,也在不断地升级相应的开发工具软件,已从早起的第一代A+PLUS、第二代MAX+PLUS发展到第三代MAX+PLUSⅡ和第四代Quartus。

使用MAX+PLUSⅡ软件,设计者无需精通器件内部的复杂结构,只需用业已熟悉的设计输入工具,如硬件描述语言、原理图等进行输入即可,MAX+PLUSⅡ就会自动将设计转换成目标文件下载到器件中去。

MAX+PLUSⅡ开发系统具有以下特点。

(1)多平台。

MAX+PLUSⅡ软件可以在基于PC机的操作系统如Windows95、Windows98、Windows2000、WindowsNT下运行,也可以在SunSPACstation等工作站上运行。

(2)开放的界面。

MAX+PLUSⅡ提供了与其他设计输入、综合和校验工具的接口,借口符合EDIF200/300、LPM、VHDL、Verilog-HDL等标准。

目前MAX+PLUSⅡ所支持的主流第三方EDA工具主要有Synopsys、Viewlogic、Mentor、Graphics、Cadence、OrCAD、Xilinx等公司提供的工具。

(3)模块组合式工具软件。

MAX+PLUSⅡ具有一个完整的可编程逻辑设计环境,包括设计输入、设计处理、设计校验和下载编程4个模块,设计者可以按设计流程选择工作模块。

(4)与结构无关。

MAX+PLUSⅡ开发系统的核心——Compiler(编译器)能够自动完成逻辑综合和优化,它支持Altera的Classic、MAX7000、FLEX8000和FLEX10K等可编程器件系列,提供一个与结构无关的PLD开发环境。

(5)支持硬件描述语言。

MAX+PLUSⅡ支持各种HDL设计输入语言,包括VHDL、Verilog-HDL和Altera的硬件描述语言AHDL。

(6)丰富的设计库。

MAX+PLUSⅡ提供丰富的库单元供设计者调用,其中包括一些基本的逻辑单元,74系列的器件和多种特定功能的宏功能模块以及参数化的兆功能模块。

调用库单元进行设计,可以大大减轻设计人员的工作量,缩短设计周期

 

第四章系统功能模块

4.1FEN模块

4.1.1FEN模块流程图

图4-1

4.1.2输入输出引脚及其功能说明

模块FEN如图9-87所示。

通过对4MHz时钟的分频得到0.5Hz时钟,为模块CORNA提供1s的闸门时间。

CLK:

输入时钟信号;Q:

输出分频后的基准信号。

程序代码的实现如下

libraryieee;

useieee.std_logic_1164.all;

entityfenis

port(clk:

instd_logic;

q:

outstd_logic);图4-2

endfen;

architecturefen_arcoffenis

begin

process(clk)

variablecnt:

integerrange0to999999;

variablex:

std_logic;

begin

ifclk'eventandclk='1'then

ifcnt<999999then

cnt:

=cnt+1;

else

cnt:

=0;

x:

=notx;

endif;

endif;

q<=x;

endprocess;

endfen_arc;

 

4.2SEL模块

4.2.1SEL模块流程图

图4-3

4.2.2SEL模块输入输出引脚及其功能说明

CLK:

基准时钟信号;Q[2..0]:

产生数码管的片选信号。

4.2.3程序代码实现

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityselis

port(clk:

instd_logic;图4-4

q:

outstd_logic_vector(2downto0));

endsel;

architecturesel_arcofselis

begin

process(clk)

variablecnt:

std_logic_vector(2downto0);

begin

ifclk'eventandclk='1'then

cnt:

=cnt+1;

endif;

q<=cnt;

endprocess;

endsel_arc;

4.3模块CORNA

4.3.1CORNA模块流程图

 

图4-5

4.3.2输入输出引脚及其功能说明

该模块是整个程序的核心,它完成在1s的时间里对被测信号计数的功能,并通过选择输出数据实现自动换挡的功能输入输出引脚及其功能说明CLR:

复位按钮;SIG:

待测频率信号;DOOR:

基准时钟频率;ALM:

蜂鸣器;DANG[3..0]:

档位值;Q0~4[3..0]:

计算后的频率值。

4.3.3程序代码实现

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycornais

port(clr,sig,door:

instd_logic;

alm:

outstd_logic;

q3,q2,q1,q0,dang:

outstd_logic_vector(3downto0));

endcorna;

architecturecorn_arcofcornais

begin

process(door,sig)

variablec0,c1,c2,c3,c4,c5,c6:

std_logic_vector(3downto0);

variablex:

std_logic;

begin

ifsig'eventandsig='1'then

ifdoor='1'then

ifc0<"1001"then

c0:

=c0+1;

else

c0:

="0000";

ifc1<"1001"then

c1:

=c1+1;

else

c1:

="0000";图4-6

ifc2<"1001"then

c2:

=c2+1;

else

c2:

="0000";

ifc3<"1001"then

c3:

=c3+1;

else

c3:

="0000";

ifc4<"1001"then

c4:

=c4+1;

else

c4:

="0000";

ifc5<"1001"then

c5:

=c5+1;

else

c5:

="0000";

ifc6<"1001"then

c6:

=c6+1;

else

c6:

="0000";

alm<='1';

endif;

endif;

endif;

endif;

endif;

endif;

endif;

else

ifclr='0'then

alm<='0';

endif;

c6:

="0000";

c5:

="0000";

c4:

="0000";

c3:

="0000";

c2:

="0000";

c1:

="0000";

c0:

="0000";

endif;

ifc6/="0000"then

q3<=c6;

q2<=c5;

q1<=c4;

q0<=c3;

dang<="0100";

elsifc5/="0000"then

q3<=c5;

q2<=c4;

q1<=c3;

q0<=c2;

dang<="0011";

elsifc4/="0000"then

q3<=c4;

q2<=c3;

q1<=c2;

q0<=c1;

dang<="0010";

else

q3<=c3;

q2<=c2;

q1<=c1;

q0<=c0;

dang<="0001";

endif;

endif;

endprocess;

endcorn_arc;

4.4模块LOCK

4.4.1LOCK模块流程图

 

图4-7

4.4.2输入输出引脚及其功能说明

该模块实现锁存器的功能,在信号L的下降沿到来时信号A4、A3、A2、A1锁存。

输入输出引脚及其功能说明L:

基准时钟信号;A0~4[3..0]:

接受计数器CORNA传过来的值并锁存;Q0~4[3..0]:

向数据选择器传值。

4.4.3程序代码实现

libraryieee;

useieee.std_logic_1164.all;

entitylockis

port(l:

instd_logic;

a4,a3,a2,a1,a0:

instd_logic_vector(3downto0);

q4,q3,q2,q1,q0:

outstd_logic_vector(3downto0));

endlock;

architecturelock_arcoflockis

begin

process(l)

variablet4,t3,t2,t1,t0:

std_logic_vector(3downto0);

begin

ifl'eventandl='0'then

t4:

=a4;

t3:

=a3;

t2:

=a2;

t1:

=a1;

t0:

=a0;

endif;

q4<=t4;

q3<=t3;

q2<=t2;

q1<=t1;

q0<=t0;

endprocess;图4-8

endlock_arc;4.5模块CH

4.5.1输入输出引脚及其功能说明

该模块对应于数码管片选信号,将相应的数据送出,其中档位也通过数码管显示。

输入输出引脚及其功能说明SEL[2..0]:

接受SEL模块传来的数码管片选信号;A[3..0]:

接受锁存器传来的数码管片选信号;DANG[3..0]:

接受锁存器传来的档位信号;Q[3..0]:

传出数码管位选信号。

4.5.2程序代码实现

libraryieee;

useieee.std_logic_1164.all;

entitychis

port(sel:

instd_logic_vector(2downto0);

a3,a2,a1,a0,dang:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(3downto0));

endch;

architecturech_arcofchis

begin

process(sel)

begin

caseselis

when"110"=>q<=a0;

when"010"=>q<=a1;

when"100"=>q<=a2;图4-9

when"000"=>q<=a3;

when"101"=>q<=dang;

whenothers=>q<="1111";

endcase;

endprocess;

endch_arc;

4.6DISP模块

4.6.1输入输出引脚及其功能说明

D[3..0]:

接受CH传出的数码管位选信号;Q[6..0]:

译码出数码管位选信号;

4.6.2程序代码实现

useieee.std_logic_1164.all;

entitydispis

port(d:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(6downto0));图4-10

enddisp;

architecturedisp_arcofdispis

begin

process(d)

begin

casedis

when"0000"=>q<="0111111";

when"0001"=>q<="0000110";

when"0010"=>q<="1011011";

when"0011"=>q<="1001111";

when"0100"=>q<="1100110";

when"0101"=>q<="1101101";

when"0110"=>q<="1111101";

when"0111"=>q<="0100111";

when"1000"=>q<="1111111";

when"1001"=>q<="1101111";

whenothers=>q<="0000000";

endcase;

endprocess;

enddisp_arc;

 

第五章调试并分析结果

5.1输入说明

SIG:

接1KHz频率;CLR:

接开关;CLK:

接4MHz频率。

5.2预计输出

低两位数码管显示‘1’;高四位数码管显示‘1000’。

5.3测试结果记录

低两位数码管显示‘1’;高四位数码管显示‘1000’。

5.4测试结果分析

本频率计满足试验要求,使用周期和直接测量法进行测量,这样会减小误差。

实验中也遇到了很多问题,在器件在线编程过程中,program各项操作无法进行,如果是首次编程,则需要设置下载端口,如果还比能进行操作,可能是芯片或者试验箱出现问题,所以应该换芯片或试验箱。

在连接引脚是要特别注意,否则显示管无法显示。

此外此试验还有需要改进的地方,比如测量频率的精度和灵敏度。

待测信号给的是1KHz,数码管档位显示为一档(0~9999Hz);频率显示为‘1000’;与预计输出完全一样。

因为基准信号和待测信号是同一个信号源,故如此准确。

也论证了上述设计的正确性。

图5-1

如上图,待测信号sig10KHz,clk接1MHz显示如图,第一行和第二行为脉冲频率,第三行为档位,10KHz的待测信号档位为二档。

 

第六章结论

心得体会

经过这次的实验课程设计,我学到了如何将多个程序绑在一起使用并构成一个完整的系统。

在老师的指导下、在我们实验设计小组的共同努力下、在其他同学的热情帮助下,我们完整滴完成了《数字频率计》的设计、组装,并做了些创新。

虽然实验成功,我们同样在实验过程中遇到了一些问题:

1.刚开始时候的设计是每组组员做一部分,但是问题就是有些系数不能同一。

因此造成了一开始实验进展缓慢。

2.在实验过程中,器材的问题也被我们遇到了。

因此也得到了些经验:

要对自己的实验成果由信心,不要一出问题就从程序中找问题。

可能对你最大的阻碍就是你没有考虑到的器材问题。

3.在最后仿真时候,导线的顺序也是常出问题的地方。

由于没有及时发现问题的所在,我们小组花费了整整一节课的时间在改程序,浪费了许多宝贵时间。

参考文献

【1】VHDL数字电路设计与应用与实践教程

【2】第2版王振红主编机械工业出版社

 

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

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

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

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