简易数字频率Word格式文档下载.docx

上传人:b****6 文档编号:16236480 上传时间:2022-11-21 格式:DOCX 页数:15 大小:191.95KB
下载 相关 举报
简易数字频率Word格式文档下载.docx_第1页
第1页 / 共15页
简易数字频率Word格式文档下载.docx_第2页
第2页 / 共15页
简易数字频率Word格式文档下载.docx_第3页
第3页 / 共15页
简易数字频率Word格式文档下载.docx_第4页
第4页 / 共15页
简易数字频率Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

简易数字频率Word格式文档下载.docx

《简易数字频率Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《简易数字频率Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

简易数字频率Word格式文档下载.docx

100μs

=1%

4)?

1~10?

5)?

1MHz?

6)?

4、?

)?

需要实现一个4位十进制数字频率计,?

1?

1?

因为是4位十进制数字频率计,所以计数器CNT10需用4个,7段显示译码器也需用4个。

频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。

为此,测频控制信号发生器F_IN_CNT应设置一个控制信号时钟CLK,一个计数使能信号输出端EN、一个与EN输出信号反向的锁存输出信号LOCK和清零输出信号CLR。

若CLK的输入频率为1HZ,则输出信号端EN输出一个脉宽恰好为1秒的周期信号,可以作为闸门信号用。

由它对频率计的每一个计数器的使能端进行同步控制。

当EN高电平时允许计数,低电平时停止计数,?

LOCK?

4?

LOCK,?

7?

CLR?

1.?

EN?

2?

VHDL?

--CLK_SX_CTRL

LIBRARYIEEE?

USEIEEE.STD_LOGIC_1164.ALL?

USEIEEE.STD_LOGIC_UNSIGNED.ALL?

ENTITYCLK_SX_CTRLIS

PORT(CLK:

INSTD_LOGIC?

LOCK:

OUTSTD_LOGIC?

EN:

CLR:

OUTSTD_LOGIC>

END?

ARCHITECTUREARTOFCLK_SX_CTRLIS

SIGNALQ:

STD_LOGIC_VECTOR(3DOWNTO0>

BEGIN

PROCESS(CLK>

IF(CLK'

EVENTANDCLK='

1'

>

THEN

IFQ="

1111"

Q<

="

0000"

ELSE

Q<

=Q+'

ENDIF?

ENDIF?

EN<

=NOTQ(3>

LOCK<

=Q(3>

ANDNOT(Q(2>

ANDQ(1>

CLR<

ANDQ(2>

ANDNOT(Q(1>

ENDPROCESS?

ENDART?

为实现系统功能,控制电路模块需输出三个信号:

一是控制计数器允许对被测信号计数的信号EN;

二是将前一秒计数器的计数值存入锁存的锁存信号LOCK;

三是为下一个周期计数做准备的计数器清零信号CLR。

上述三个信号产生的顺序是:

先提供计数信号,这种信号使计数器在1s提供锁存信号,这种信号对计数值进行锁存;

最后是发出清零信号,这种信号可对计数器清零。

计数器清零结束后又可重新计数,计数进入第二个周期。

不难看出,控制电路模块实际上就是一个控制器,它需要一个周期为1s的信号作为产生并控制控制器输出的时基信号CLK0。

控制电路模块中控制器及端口如图3所示:

3?

--F_IN_CNT.VHD

ENTITYF_IN_CNTIS

INSTD_LOGIC?

QA,QB,QC,QD:

BUFFERSTD_LOGIC_VECTOR(3DOWNTO0>

ENDF_IN_CNT?

ARCHITECTUREARTOFF_IN_CNTIS

COMPONENTCNT10

PORT(CLK,EN,CLR:

COUNT10:

BUFFERSTD_LOGIC_VECTOR(3DOWNTO0>

ENDCOMPONENT?

SIGNALS2:

STD_LOGIC?

SIGNALS3:

SIGNALS4:

S2<

=NOTQA(3>

S3<

=NOTQB(3>

S4<

=NOTQC(3>

U1:

CNT10PORTMAP(CLK,EN,CLR,QA>

U2:

CNT10PORTMAP(S2,EN,CLR,QB>

U3:

CNT10PORTMAP(S3,EN,CLR,QC>

U4:

CNT10PORTMAP(S4,EN,CLR,QD>

2.?

CLR?

1s,?

100ms,?

10?

该模块将对输入信号进行十进制计数。

它虽然由多个十进制计数器组成,但采用CPLD后,设计时只要先制作一个单个的十进制计数器,然后再将多个结构相同的单个十进制计数器在CPLD内部进行连接就可组合成为一个完整的计数电路模块。

为实现系统功能,十进制计数器需要设置三个输入端:

即被测信号输入端CLK、计数器状态清零端CLR和计数器工作使能端EN。

需要设置四个输出端,即COUNT0、COUNT1、COUNT2和COUNT3,并由这四个输出端输出?

BCD码来表示十进制数。

需要说明,上述十进制计数器都是满10进1,且进位时计数器清零并重新计数。

计数电路模块中的单个计数器符号及端口功能如图4所示:

4?

--CNT10.VHD

ENTITYCNT10IS

COUNT10:

ENDCNT10?

ARCHITECTUREONEOFCNT10IS

PROCESS(CLK,CLR,EN>

IFCLR='

THEN

COUNT10<

ELSIF(CLK'

IF(EN='

IFCOUNT10="

1001"

=COUNT10+'

ENDONE?

3.?

BCD?

锁存电路模块

该模块可使系统显示电路的工作稳定而可靠,避免计数电路模块清零时引起显示闪烁的现象。

锁存电路模块是由多个锁存器组成。

每个锁存器都是用来锁存与其单独相连的计数器的输出数据。

因为每个锁存器锁存的都是4位2进代码表示的十进制数,其功能完全相同,因此只需要设计制作一个锁存器就可连接组合成一个锁存电路模块。

为实现系统功能,锁存器需设置四个数据输入端:

即QA、QB、QC和QD,并由它们输入计数器的计数值。

需设置一个使锁存器工作的使能端L0CK。

还需设置四个锁存数据的输出端:

即LEDA、LEDB、LEDC和LEDD。

锁存电路模块中单个锁存器的符号及端口功能如图5所示。

54?

--LOCK.VHD

ENTITYLOCKIS

PORT(LOCK:

QA,QB,QC,QD:

INSTD_LOGIC_VECTOR(3DOWNTO0>

LEDA,LEDB,LEDC,LEDD:

OUTSTD_LOGIC_VECTOR(6DOWNTO0>

ARCHITECTUREARTOFLOCKIS

SIGNALL0,L1,L2,L3:

STD_LOGIC_VECTOR(3DOWNTO0>

COMPONENTSEG7

PORT(BCD:

DOUT:

PROCESS(LOCK>

BEGIN

IF(LOCK'

EVENTANDLOCK='

L0<

=QA?

L1<

=QB?

L2<

=QC?

L3<

=QD?

U0:

SEG7PORTMAP(L0,LEDA>

SEG7PORTMAP(L1,LEDB>

SEG7PORTMAP(L2,LEDC>

SEG7PORTMAP(L3,LEDD>

译码电路模块:

该模块可对表示转换后的十进制数的4位2进制代码进行编码,此模块可直接连接数码管驱动器,从而驱动数码管显示出相应阿拉伯数字等字符。

与上述电路模块设计一样,它也只需要先设计一个单个的译码器,然后通过连接组合就可构成系统的译码电路模块,从而实现系统的译码功能。

为实现系统的功能,单个译码器需要设置4个数据输入端:

即BCD0、BCD1、BCD2和BCD3,并由这些端口输入锁存电路模块输出的4位2进制数据。

需要设置7个输出端:

即DOUT、DOUT1、DOUT2、DOUT3、DOUT4、DOUT5和DOUT6,它们分别连接7段数码管的7个显示输入端。

译码电路模块中单个译码器符号及端口功能如图6所示:

67?

--SEG7

ENTITYSEG7IS

PORT(bcd:

INSTD_LOGIC_VECTOR(3DOWNTO0>

dout:

ENDSEG7?

ARCHITECTUREaOFSEG7IS

PROCESS(bcd>

CASEbcdIS

WHENx"

0"

=>

dout<

0111111"

1"

0000110"

2"

1001011"

3"

1000111"

4"

0110110"

5"

1101101"

6"

1111101"

7"

0000111"

8"

1111111"

9"

1101111"

WHENOTHERS=>

0000000"

ENDCASE?

ENDa?

4.?

EDA?

k0~k3?

CLK?

SG?

g?

f?

e?

d?

c?

b?

a?

BT?

CNT4?

P2?

P3?

7?

---SCAN.VHD

ENTITYSCANIS

LEDA:

INSTD_LOGIC_VECTOR(6DOWNTO0>

LEDB:

LEDC:

LEDD:

SG:

BT:

OUTSTD_LOGIC_VECTOR(3DOWNTO0>

ENDSCAN?

ARCHITECTUREONEOFSCANIS

SIGNALCNT4:

STD_LOGIC_VECTOR(1DOWNTO0>

SIGNALa:

INTEGERRANGE0TO3?

P1:

PROCESS(CNT4>

CASECNT4IS

WHEN"

00"

BT<

0001"

a<

=0?

01"

0010"

=1?

10"

0100"

=2?

11"

1000"

=3?

WHENOTHERS=>

null?

ENDPROCESSP1?

P2:

PROCESS(CLK>

IFCLK'

THENCNT4<

=CNT4+1?

ENDPROCESSP2?

P3:

PROCESS(a>

CASEaIS

WHEN0=>

SG<

=LEDD?

WHEN1=>

=LEDC?

WHEN2=>

=LEDB?

WHEN3=>

=LEDA?

NULL?

ENDPROCESSP3?

1.?

8?

2.?

9?

10?

11?

5.?

12?

6.?

13?

7.?

14?

.?

15?

5、实验心得

通过这次设计,我受益匪浅。

掌握了C语言的编写程序,学会了使用PROTUTES和KEIL的仿真来实现,?

6、参考文献

),?

3.岩石?

电子技术基础数字部分<

第五版),高等教育出版社

4.张毅刚?

2?

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

当前位置:首页 > 小学教育 > 语文

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

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