量程自动转换数字频率计的设计Word下载.docx

上传人:b****6 文档编号:8689601 上传时间:2023-05-12 格式:DOCX 页数:23 大小:141.06KB
下载 相关 举报
量程自动转换数字频率计的设计Word下载.docx_第1页
第1页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第2页
第2页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第3页
第3页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第4页
第4页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第5页
第5页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第6页
第6页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第7页
第7页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第8页
第8页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第9页
第9页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第10页
第10页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第11页
第11页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第12页
第12页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第13页
第13页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第14页
第14页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第15页
第15页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第16页
第16页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第17页
第17页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第18页
第18页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第19页
第19页 / 共23页
量程自动转换数字频率计的设计Word下载.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

量程自动转换数字频率计的设计Word下载.docx

《量程自动转换数字频率计的设计Word下载.docx》由会员分享,可在线阅读,更多相关《量程自动转换数字频率计的设计Word下载.docx(23页珍藏版)》请在冰点文库上搜索。

量程自动转换数字频率计的设计Word下载.docx

variablex:

std_logic;

ifclk'

eventandclk='

1'

then

ifcount<

1999then

count:

=count+1;

else

=0;

x:

=notx;

endif;

clk_out<

=x;

endprocess;

endarchitecturebehavior;

模块说明:

clk为4MHZ时钟脉冲输入端,clk_out为1KHZ脉冲输出端。

由于输入为高频信号,不易仿真且代码编译无误,这里没有给出时序波形图。

经软件编译后,得到模块为:

Jfenping2u

IL

elkclk_out

E

instB

n

r)

2.3位十进制计数模块:

3位十进制计数模块包含3个级联十进制计数器,用来对施加到时钟脉冲输入端的待测信号

产生的脉冲进行计数,十进制计数器具有计数使能、清零控制和进位输出功能。

用于计数的时间间隔(计数允许周期T)由闸门控制模块的控制信号发生器所产生的使能信号来控制,计数

使能信号也在闸门控制模块中产生。

自动换挡模块决定计数器读数的单位。

1位十进制计数器的VHDL源程序如下:

entitycount10is

port(CLK,RST,EN:

CQ:

outstd」ogic_vector(3downto0);

COUNT:

outstd_logic);

endcount10;

architecturebehavofcount10is

process(CLK,RST,EN)

variableCQ1:

std」ogic_vector(3downto0);

ifRST='

thenCQ1:

=(others=>

'

0'

);

elsifCLK'

eventandCLK='

then

ifEN='

ifCQ1<

9thenCQ1:

=CQ1+1;

elseCQ1:

ifCQ1=9thenCOUNT<

='

;

elseCOUNT<

CQ<

=CQ1;

endbehav;

以上源程序编译成功后,生成计数器模块如下:

:

countIO

1

k

i'

I-

CLK

CQ[3..O]

i-'

1-

RST

COUNT

i,

i-

EN

!

inst6

3位十进制计数模块为:

3•闸门控制模块:

以基准信号的周期为一秒为例,频率测量的基本原理是计算一秒内待测信号的脉冲个数,这就要求能产生一个周期为2秒,占空比为50%的周期信号TSTEN。

用这个信号作为计数器的

EN输入端,使其计数时间正好为1秒。

当TSTEN为高电平时,计数开始,低电平时,计数停

止。

在计数器停止期间,首先要产生一个锁存信号LOAD,用其上升沿控制锁存器REG12将之

前的计数结果存入锁存器中,并由显示模块将其显示出来。

设置锁存器是为了让显示稳定,不会因为周期性的清零信号使得数值不断闪烁。

锁存之后需有一清零信号CLR_CNT将计数器清

零,为下一秒的计数操作做准备。

闸门控制模块的VHDL源程序如下:

useieee.std」ogic_1164.all;

entitytestctlis

port(clk:

clr_cnt:

outstd_logic;

tsten:

load:

endtestctl;

architecturebehavoftestctlis

signala:

std_logic;

a<

=nota;

process(clk,a)

ifa='

andclk='

clr_cnt<

='

elseclr_cnt<

load<

=nota;

tsten<

=a;

时序仿真结果如下:

-1ps

320.0ns

640.0ns

i

960.0ns

1.28us

1.6us

Name

15.08ns

15,075nsJ

1^0

elk

A0

._TLrLrLrLjm_nJTWJWTW_rLrLnjn3

U1

…id

A1

1irriiIn

1I111

inin

11—11

load

-—1

111

1■丄””

1111-]——1——■11—1——

iiiiii

-1—1—:

11-1—1—:

<

^3

tsten

丨11

11111Illi

11111111Illi

1i111Illi

iiiiiiii

iiiiip<

■iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

ii

11111111

11111'

■'

I1111111

I111111I

i■iiiiii

iiiL

iii■iiii

111!

1111

编译后生成的模块为:

wr■・・■■anri■■man■・■■■■■■■atin■

testctl

i—elkclrent

祐ten

Iload

instil

其中,elk为基准信号输入端,clr_cnt为清零信号,tsten为计数使能信号,load为锁存允许信号。

3.可自动换挡模块:

本设计通过控制基准时钟信号来实现量程的自动转换。

在第一个计数器的CLK端接一周期为0.001s(1KHz)的时钟信号,其测量范围为

100-999000Hz,为2挡;

在第一个计数器的COUNT端将会得到周期为0.01s的信号,即为1

挡,其测量范围为10-99900HZ;

在第二个计数器的COUNT端将会得到0.1s的信号,即为0

挡,其测量范围为0-9990HZ。

这里还需要一个3选1选择器来选择第几个计数器的COUNT端作为基准时钟信号。

3

选1选择器可根据3位十进制计数模块的溢出情况来作为选择标准。

3选1选择器的VHDL源程序如下:

entitymux31is

port(a:

instd_logic_vector(3downto0);

y:

o:

inputO:

instd」ogic;

input1:

input2:

endmux31;

architecturebehavofmux31is

process(inputO,input1,input2,a)

caseais

when"

0000"

=>

y<

=inputO;

o<

O'

0001"

=inputl;

0'

0010"

=input2;

whenothers=>

y<

o<

endcase;

 

生成的模块为:

仿真波形为:

当输入为0000时:

当输入为0001时:

L..

0]

-i

11

1I

1■■

1■

■i

■■■

1■1

■1

■■i

_rL_r-L_rLTLT-irLTir

J-LTL

LTLTTmirvi

_n

_R

LIT.

LT

JInir

■LTL

J-LRurn

f-LTTJ

-FLTLnrLTLTLn

-L_nLTLTLTLTL

_r

ITm

■LTLTTJi_n_rLnunirunn

-FL

JU

n._RIT

-TL

-FU

UTLJ

r

■L

—n

"

L_r

u

J

-n

W

JPzISO.Dns:

320.0hg480.0n匸640.0ns800.0n匸

|Iiii

15.0T5ns

A

Nam*

15.0E

^0

Aa

*【j

|>

-1L3]

Ali

-aF2]

Ai

711

1^4

-aLo]

T

inpntO

*

in|iiutl

□□

X13

input2

±

>

S

C

ki

疔9

y

当输入为0010时:

640.Dns

8Q0.0n

3psI.6C.0ns

15ATThe

当输入为0011时:

[1]

.ru-_fLTLTTLTL

rmrLjmrLrLrTrLrLjmrLruirLrLrLTLnrLrLrL

iiiiiai

i_nmnnnrLTLTLrL

jxrnnruu

1ll■■1

iI■ai

T_nU

TLTLT

irLTirL

1_-

i_rnr

rnnrr

160.03iz

nn

320.0

ii

ILS

nnnn

480-0ns

S40.

0TL3.

nr

@00.(

inn

)ns1

花0.D

48D0ns

I

L

1h1

■■

_n_ru

-ruin

lULTLH

n_n_r

-TLTLrLn

in

rr

JTTL

IT

JTT

11

LTU

_TL

UTT

cltl—

LTLTLT

mrLTLT

i_rjunru■ltultl

_^L_n_r

111■口rLTLTLTLn

III1■1

LR

G1

i_n

r.「mr

11w

1fi1

■RrLrLn_rLrLrLrLrLn_rLrLrLrLrLn_rLrLrLrLrLrLrLrLrLrLrLrLruuLTLrL

』11

ns

Jps

15-075ns

15.UT5ns

-J-LTTTTTTTTTTTTTTTT-rLTTTTTT-rLrLrLrT-TT-rT-rL

iTTTrLTTjnrTj-LiTJTJ-LrTrLrTjnrTjTJLm-LrTrLTTrLrTrT

■LrLrLrLrLrLrLrLrLrLrLrLrLTLrLrLrLrLrLrLFUiJLrLrLrLrLrLrLrLrLrLru

可以看到,设计完全符合要求,o端可以作为量程溢出标志。

综上,量程自动转换模块为:

4.译码显示模块:

译码显示模块的设计分为显示锁存器的设计,七段数码显示译码器的设计和小数点显示模块的设计3部分。

显示锁存器是在计数结束后,利用load信号的上升沿把最新计数结

果保存起来。

其源程序如下:

entityreg12is

dinO,din1,din2:

dout0,dout1,dout2:

outstd」ogic_vector(3downto0));

endreg12;

architecturebehavofreg12is

process(load)

ifload'

eventandload='

then

dout0<

=din0;

dout1<

=din1;

dout2<

=din2;

endif;

endprocess;

endarchitecturebehav;

reg12

dcutOI3..O]

din0(3..0I

dout1(3.0)

dlnl[3..O]

dout2[30]

din2I3..O]

仿真结果为:

when"

tmp<

="

1001111"

Q

510

ne

汕$Ld

nln2

didi

sa

touututdodo

□E

矽2S回doul2

Value

15.BE

1X

丄札

an

A[1

1U.Uns

L>

X

-

......

au.uns.

1UU.Ua

I[alX

[15]X[0]X[15]X[t>

]X[15]x[OJ)

{~ns]~~

([o]「[i

in~~io^i'

jcns]~\

c

厂X⑹玄〔15]厂

Fl

f[0]

[15]

七段数码显示译码器的vhdl源程序如下:

entityseg7is

port(dat:

tmp:

outstd_logic_vector(6downto0));

endseg7;

architecturearcofseg7is

beginprocess(dat)begin

casedatis

when"

0000001"

0010010"

0011"

0000110"

0100"

1001100"

0101"

0100100"

0110"

0100000"

0111"

0001111"

1000"

0000000"

1001"

0000100"

1010"

0001000"

1011"

1100000"

1100"

0110001"

1101"

1000010"

1110"

0110000"

1111"

0111000"

endcase;

endarc;

Jseg7u

_L-

h

1dat[3.0]tmp(60]1

instIO

小数点显示模块的源程序如下:

useieee.std_logic_1164.all;

entitydotis

port(dang_in:

dang:

outstd_logic_vector(2downto0));

enddot;

architectureoneofdotis

process(dang_in)

begincasedang_iniswhen"

OOOO"

dang<

100"

when"

010"

001"

whenothers=>

111"

endone;

经编译后生成的模块为:

dang_in[30]dang[20]

instZ

四、结论

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2