8位十进制显示数字频率计带周期设计报告.docx

上传人:b****6 文档编号:6184159 上传时间:2023-01-04 格式:DOCX 页数:15 大小:456.68KB
下载 相关 举报
8位十进制显示数字频率计带周期设计报告.docx_第1页
第1页 / 共15页
8位十进制显示数字频率计带周期设计报告.docx_第2页
第2页 / 共15页
8位十进制显示数字频率计带周期设计报告.docx_第3页
第3页 / 共15页
8位十进制显示数字频率计带周期设计报告.docx_第4页
第4页 / 共15页
8位十进制显示数字频率计带周期设计报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

8位十进制显示数字频率计带周期设计报告.docx

《8位十进制显示数字频率计带周期设计报告.docx》由会员分享,可在线阅读,更多相关《8位十进制显示数字频率计带周期设计报告.docx(15页珍藏版)》请在冰豆网上搜索。

8位十进制显示数字频率计带周期设计报告.docx

8位十进制显示数字频率计带周期设计报告

 

EDA期末考试

设计报告

 

设计题目:

8位十进制显示数字频率计(带周期测量)

学校:

梧州学院

系别:

电子信息工程系

班别:

09电本2班

姓名:

陈迪

学号:

200900604215

组员:

刘芸云王缉俭

指导老师:

黄玉健

 

1、设计内容:

8位十进制显示数字频率计(带周期测量)。

二、设计目的与要求:

1、设计电路实现测量1~99999999Hz方波信号的频率以及其周期,并以十进制的方式显示。

2、要求其数值用七段LED数码管或液晶屏显示。

3、在实验系统上硬件测试,验证此设计的功能。

4、画出实体图,设计原理图,要求用Protel设计出具体的电路原理图。

三、设计原理:

8位十进制显示数字频率计(带周期测量)是由8位十进制频率计、8位十进制周期测量器和带锁存功能的64选32数据选择器构成。

频率计基准信号采用8Hz的方波信号,而周期测量采用基准信号为50MHz的方波信号。

其中,频率计和周期测量由相同的32位数据锁存器和8位十进制计数器及不同的测频控制电路构成。

为使电路设计更加简单快捷,且方便阅读与理解,本电路使采用模块化的设计思想,先由VHDL源程序对各个模块进行独立编写、测试,然后封装,再用原理图方式进行连接、整合与波形和硬件仿真。

例如将用CLOCK5、CLOCK2输入标准频率,CLOCK0输入被测频,用数码管显示频率和周期。

Protel设计原理图:

1、频率测量的基本原理:

根据频率的定义,若某一信号在T时间内重复变化N次,则可知该信号的频率为:

f=N/T对此可采用数字逻辑电路中的门电路来实现,如图:

在与门端加入被测信号,另一端加宽度为T1的控制信号(称闸门信号),输出端仅能在T1时间内有波形的出现,然后送入计数器计数,得N*T2=T1所以f=N/T1。

进一步分析可知,多周期测量可以减小误差。

因此,电路设计时我们采用基准信号的8个周期为一个T1。

如图CNT-EN信号

在T1时间结束的同时输出一个作用于计数器锁存信号load,在下一个T1来临前输出一个清零信号RST使得计数器复位,为下一次测量做好准备。

电路的基准信号为8Hz,由方程可知f=N/(8*(1/8))=N,从而计数器的数值就是被测信号的频率。

2、测量周期的基本原理:

如图所示为计数器测量信号周期的原理框图。

它是由上图的

标准信号和输入信号位置对调而构成的。

可以看出,被测信号经过放大后,形成闸门信号,周期为T2。

标准频率的周期为T1,在闸门时间内,标准频率通过闸门形计数脉冲,送至计数器计数,进过译码显示为N。

所以T2=N*T1=N/f1。

同理,多周期测量也可减小误差,但是由于被测信号为测频控制信号,当被测信号频率较低时,测量需要较长时间,因此我们的电路只采用被测信号的2倍周期进行测量。

为使能测量更高的频率,我们采用了50MHz的信号为计数信号。

电路同样设置了锁存和清零的输出信号,同时为防止高频率时锁存和清零过快,电路在闸门时间结束后设置了较长的过渡时间。

由方式T=N/(2*50M)=N/100000000,所以数码管显示的最高位位权为0.1依次类推为0.01一直到小数点后8位。

当信号小于1Hz和大于100MHz时都超出量程。

3、8位十进制计数器的构成:

用VHDL语言设计带进位的1位十进制计数器,然后封装如图

,再用8个1位计数器和与门连接成8位的十进制计数器。

4、利用VHDL语言来实现各个结构模块:

1.带进位的1位10进制计数器COUNTER.VHD

带进位的一位十进制计数器LIBRARYIEEE;--带进位的一位十进制计数器

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;--允许用户对操作符重新定义

ENTITYCOUNTERIS

PORT

CLK,RST,EN:

INSTD_LOGIC;--clk时钟频率,rst清零,en使能端

DOUT:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);--4位输出到7段数码管

COUT:

OUTSTD_LOGIC--进位信号

);

ENDCOUNTER;

ARCHITECTUREoneOFCOUNTERIS

BEGIN

PROCESS(CLK,RST,EN)--时钟,清零,使能为敏感信号

VARIABLEQ:

STD_LOGIC_VECTOR(3DOWNTO0);--定义变量Q为4位

BEGIN

IFRST='1'THEN

Q:

=(OTHERS=>'0');--如果rst为高电平,变量Q清零

ELSIFCLK'EVENTANDCLK='1'THEN--否则,若clk为上升沿,即上升沿触发

IFEN='1'THEN

IFQ<9THENQ:

=Q+1;--使能端高电平有效,当Q小于9时,自加1

ELSEQ:

=(OTHERS=>'0');--否则清零

ENDIF;

ENDIF;

ENDIF;

IFQ="1001"THENCOUT<='1';--当Q为9时输出进位信号1

ELSECOUT<='0';ENDIF;--否则输出0

DOUT<=Q;--把变量信号输出

ENDPROCESS;

ENDone;

2.32位锁存器REG32B.VHD

LIBRARYIEEE;--32位锁存器

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYREG32BIS

PORT(LK:

INSTD_LOGIC;--锁存信号

DIN:

INSTD_LOGIC_VECTOR(31DOWNTO0);--计数信号输入

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));--计数信号输出并锁存

ENDREG32B;

ARCHITECTUREoneOFREG32BIS

BEGIN

PROCESS(LK,DIN)

BEGIN

IFLK'EVENTANDLK='1'THENDOUT<=DIN;--上沿边触发锁存

ENDIF;

ENDPROCESS;

ENDone;

3.基准频率为8HZ的测频控制电路FTCTRL.VHD

LIBRARYIEEE;--频率为8HZ的测频控制电路,用于频率计

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYFTCTRLIS

PORT(CLKK:

INSTD_LOGIC;--8Hz

CNT_EN:

OUTSTD_LOGIC;--计数器时钟使能

RST_CNT:

OUTSTD_LOGIC;--计数器清零

Load:

OUTSTD_LOGIC);--输出锁存信号

ENDFTCTRL;

ARCHITECTUREoneOFFTCTRLIS

SIGNALM:

STD_LOGIC;

SIGNALC:

STD_LOGIC_VECTOR(3DOWNTO0);--计数信号

BEGIN

K1:

PROCESS(CLKK,C)--16分频

BEGIN

IFRISING_EDGE(CLKK)THEN

IF(C="1111")THENC<="0000";ELSEC<=C+1;ENDIF;--计数为15是清零

IF(C="0001")THENM<=NOTM;ELSIF(C="1001")THENM<=NOTM;--由1开始跳变,变到9时跳变

ENDIF;ENDIF;

ENDPROCESS;

CNT_EN<=M;--输出16分频后的波形

Load<=NOTM;--输出锁存信号

F2:

PROCESS(C,M)--产生计数器清零信号

BEGIN

IF(C="1101")ANDM='0'THENRST_CNT<='1';ELSERST_CNT<='0';ENDIF;--计数为13时为1,否则为0

ENDPROCESS;

ENDone;

4.基准频率为50MHZ的测频控制电路FTCTRL2.VHD

LIBRARYIEEE;--频率为50MHZ的测频控制电路,

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYFTCTRL2IS

PORT(CLKK2:

INSTD_LOGIC;--50MHz

CNT_EN2:

OUTSTD_LOGIC;--计数器时钟使能

RST_CNT2:

OUTSTD_LOGIC;--计数器清零

Load2:

OUTSTD_LOGIC);--输出锁存信号

ENDFTCTRL2;

ARCHITECTUREoneOFFTCTRL2IS

SIGNALM:

STD_LOGIC;

SIGNALC:

STD_LOGIC_VECTOR(3DOWNTO0);--计数信号

BEGIN

K1:

PROCESS(CLKK2,C)--分频

BEGIN

IFRISING_EDGE(CLKK2)THEN

IF(C="1111")THENC<="0000";ELSEC<=C+1;ENDIF;--清零

IF(C="0001")THENM<=NOTM;ELSIF(C="0011")THENM<=NOTM;--由1开始跳变?

ENDIF;ENDIF;

ENDPROCESS;

CNT_EN2<=M;--输出分频后的波形

Load2<=NOTM;--锁存信号

F2:

PROCESS(C,M,CLKK2)--产生计数器清零信号

BEGIN

IFC="1010"AND(M='0')ANDCLKK2='0'THENRST_CNT2<='1';ELSERST_CNT2<='0';ENDIF;--计数为0时为1,否则为0

ENDPROCESS;

ENDone;

5.带锁存的2选1数据选择器MUX2.VHD

libraryieee;

useieee.std_logic_1164.all;

entitymux2is--64位输入的2选1数据选择器

port(

L1,L2:

OUTSTD_LOGIC;--L1锁存指示灯,L2信号选通灯

S,EN:

instd_logic;--选择,锁存

AIN,BIN:

INSTD_LOGIC_VECTOR(31DOWNTO0);--输入通道A

DOUT3:

outSTD_LOGIC_VECTOR(31DOWNTO0)--数据输出

);

endentitymux2;

architectureoneofmux2is

SIGNALM:

STD_LOGIC_VECTOR(31DOWNTO0);--寄存

begin

process(AIN,BIN,S,EN)

begin

IFEN='0'THEN--非0锁存

ifS='1'thenM<=AIN;elseM<=BIN;--选通

endif;

ENDIF;

endprocess;

DOUT3<=M;

L1<=EN;

L2<=S;endarchitectureone;

 

5、利用原理图来完成各个模块的链接与功能的实现:

1.8位十进制计数器功能的实现:

先编译COUNTER.VHD生成原理图文件,如下图:

,再用元件库中的与门与其链接,然后加上输入输出端口,从而完成电路。

具体链接如下:

电路完成编译后,继续生产如下原理图文件,

为下一阶段工作做好准备。

 

2.8位频率计功能的实现:

先编译REG32B.VHD和FTCTRL.VHD,分别生成原理图文件,如下图:

再与上面的8位十进制计数器原理图文件与端口进行链接,完成计数器功能电路。

具体链接如下:

同时,电路完成编译后,继续生产如下原理图文件,为下一阶段工作做好准备

3.周期测量功能的实现:

先编译FTCTRL2.VHD生成原理图文件,如下图:

,再用已经编译生成的计数器和锁存器原理图链接,完成周期测量功能电路。

具体链接如下。

电路完成编译后,也生产如下原理图文件,为下一阶段工作做好准备

3.顶层文件用原理图表示实现测频测周功能,设计如下:

编译数据选择器MUX2.VHD生成原理图文件,如图:

然后与已经生成的测频和测周的原理图文件进行连接,生成带有锁存和选通功能,可显示频率和周期的频率计。

设计如下:

6.编译仿真、下载:

1、波形仿真:

设计好程序后便保存进行编译,查错,修改,成功后,进行仿真,观察波形。

如下图:

PCLK的基准频率为50MHz,但在综合仿真时,过高的频率需要较长的仿真时间,为了提高软件的效率,PCLK在仿真时设置基准频率为32Hz,FCLK设置为8Hz,测试频率为16Hz.同时对锁存以及选通进行测试。

在不同的选通状态下,由方程可知周期T=N/64和f=N。

波形仿真结果

T=4/64=0.0625s,f=16Hz,经检验,波形正确。

2、引脚分配:

选用实验模式5,键1(PIO0)用于锁存信号,cloke2的8Hz用于频率基准信号,cloke0用于被测频率的输入,键2(PIO1)用于选通信号,D1用于锁存指示灯,D2用于选通指示灯,8个数码管用于显示频率或周期大小。

具体引脚分配如下:

信号名引脚名

ENPIN_8DATAOUT[30]PIN_95

FCLKPIN_54DATAOUT[31]PIN_96

FINPIN_126

L1ENPIN_20

L2SPIN_21

PCLKPIN_124

SPIN_9

DATAOUT[0]PIN_30

DATAOUT[1]PIN_31

DATAOUT[2]PIN_32

DATAOUT[3]PIN_33

DATAOUT[4]PIN_36

DATAOUT[5]PIN_37

DATAOUT[6]PIN_38

DATAOUT[7]PIN_39

DATAOUT[8]PIN_41

DATAOUT[9]PIN_42

DATAOUT[10]PIN_65

DATAOUT[11]PIN_67

DATAOUT[12]PIN_68

DATAOUT[13]PIN_69

DATAOUT[14]PIN_70

DATAOUT[15]PIN_72

DATAOUT[16]PIN_73

DATAOUT[17]PIN_78

DATAOUT[18]PIN_79

DATAOUT[19]PIN_80

DATAOUT[20]PIN_81

DATAOUT[21]PIN_82

DATAOUT[22]PIN_83

DATAOUT[23]PIN_86

DATAOUT[24]PIN_87

DATAOUT[25]PIN_88

DATAOUT[26]PIN_89

DATAOUT[27]PIN_90

DATAOUT[28]PIN_91

3、硬件测试:

再次编译程序,成功后,下载到实验箱EP1K30TC144-3FPGA中,选用模式5,拨下显示开关拨码4。

键2未按下时,输入低电平,8个数码管显示为cloke0所选信号的频率。

当按下键1,输出高电平,D1亮,信号被锁存,数码管数字不发生改变。

按起键1,停止锁存,使D1灭。

按下键2,使其输入高电平,周期选通灯D2亮,8个数码管显示为cloke0所选信号的周期。

按下键1,D1亮起,信号再次被锁存,数码管数字不变。

注释:

超出量程时,显示值为0。

通过实物验证,该设计满足所要求的各个功能,达到了设计要求与目的。

七、设计结论与总结:

1、本设计利用计数器和闸门原理来测试信号的频率与周期,完成8位十进制频率计(周期)的功能。

2、本设计可以完全通过VHDL语言来描述,也可以用原理图的方法来实现。

通过用两种方法的结合,提高了工作效率,并让我们进一步对QuartusⅡ的操作以及VHDL语言有了更深的理解。

3、通过此设计实验,让我们对EDA课程有了更深的了解,它不仅功能强大,富于实用性,并且在未来的发展中还有非常广阔的应用前景。

同时,实验过程中,我们也体会到了团队合作的力量,以及团队精神的重要。

4、感谢黄玉健老师的悉心指导。

 

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

当前位置:首页 > 表格模板 > 合同协议

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

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