定时器VHDL设计Word下载.docx

上传人:b****5 文档编号:18125546 上传时间:2022-12-13 格式:DOCX 页数:31 大小:583.70KB
下载 相关 举报
定时器VHDL设计Word下载.docx_第1页
第1页 / 共31页
定时器VHDL设计Word下载.docx_第2页
第2页 / 共31页
定时器VHDL设计Word下载.docx_第3页
第3页 / 共31页
定时器VHDL设计Word下载.docx_第4页
第4页 / 共31页
定时器VHDL设计Word下载.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

定时器VHDL设计Word下载.docx

《定时器VHDL设计Word下载.docx》由会员分享,可在线阅读,更多相关《定时器VHDL设计Word下载.docx(31页珍藏版)》请在冰豆网上搜索。

定时器VHDL设计Word下载.docx

variablecnt:

integerrange0to59;

BEGIN

IFclr='

0'

THEN--整体复位

alm<

='

;

cnt:

=0;

cnt1:

="

0000"

cnt0:

ELSIFclk'

EVENTANDclk='

1'

THEN--设计数初值

IFset='

THEN

IFcnt0<

"

1001"

=cnt0+1;

ELSE

IFcnt1<

=cnt1+1;

ENDIF;

IFcnt<

59THEN--60分频

=cnt+1;

IFcnt0>

=cnt0-1;

IFcnt1="

ANDcnt0="

THEN--判断计时是否结束

IFcnt1>

=cnt1-1;

q0<

=cnt0;

q1<

=cnt1;

ENDPROCESS;

ENDaaa_arc;

模块CH如下图示。

由于只用了两个数码管,所以片选信号直接接一个较快的时钟。

此模块的功能是对应片选信号,送出要显示的数据。

ENTITYchIS

PORT(sel:

instd_logic;

a1,a0:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(3downto0));

ENDch;

ARCHITECTUREch_arcOFchIS

PROCESS(sel,a0,a1)

IFsel='

q<

=a0;

ELSE

=a1;

ENDch_arc;

模块DISP如下图示。

该模块为七段译码器。

ENTITYdispIS

PORT(a:

outstd_logic_vector(6downto0));

ENDdisp;

ARCHITECTUREdisp_arcOFdispIS

PROCESS(a)

CASEaIS

WHEN"

=>

q<

0111111"

0001"

0000110"

0010"

1011011"

0011"

1001111"

0100"

1100110"

0101"

1101101"

0110"

1111101"

0111"

0000111"

1000"

1111111"

1101111"

WHENothers=>

0000000"

ENDCASE;

ENDdisp_arc;

3.仿真结果分析

总体仿真结果如下:

由图可见,clr=’0’可实现整体复位功能。

set=’0’,输出以秒的速度从零递增。

本图中当递增到26后,set=’1’,输出经60分频后以分的速度递减,实现定时,直到零,定时结束。

定时结束后,clm=’1’,此时可启动各种电路或发出报警,定时结束。

clr=’0’,整体复位,clm=’0’。

该设计采用动态扫描电路,经过二选一模块将结果显示出来。

从上图可见,q交替输出两位结果。

sel=’1’时输出高位,sel=’0’时输出低位。

自动售货机控制器

一、设计一个自动售货机的控制电路。

该自动售货机销售价格为25美分的糖果,利用有限状态机进行电路设计。

控制器的输入输出如图所示:

输入信号是nickel_in(投入5美分),dime_in(投入10美分),quarter_in(投入25美分)。

另外两个必要的输入是clk(时钟)和rst(复位)。

控制器相应的有3个输出:

candy_out用于控制发放糖果,nickel_out用于控制找回5美分的零钱,dime_out用于控制找回10美分的零钱。

上图给出了有限状态机的状态转移图。

圆圈里的数代表顾客投进来的总钱数(接受5美分、10美分或25美分的硬币)。

状态0是空闲状态。

从它开始,如果投入5美分硬币,将跳转到状态5;

如果投入10美分硬币,将跳转到状态10;

如果投入25美分硬币,将跳转到状态25。

随着投币数量的增加,状态不断跳转,如果投入的币值达到25美分,就可以进入状态25,然后售货机会发放糖果,并跳转回状态0。

如果投入的币值超过了25美分,那么售货机要进入与找零钱相关的状态。

例如,当投入的币值达到40美分时,需要先退出5美分硬币(进入状态35),然后再退出10美分,发放糖果并进入状态0。

二、该设计的VHDL源码如下:

在代码中定义了枚举类型state,它包含10个状态,所以至少需要用4位对其进行编码(将产生4个寄存器)。

在默认状态下,编译器将按照它们的排列顺序对其进行编码,所以有st0=”0000”(十进制的0),st5=”0001”(十进制的1),…和st45=”1001”(十进制的9)。

在仿真中,这些数字将替代状态的名称出现在仿真波形中。

ENTITYvending_machineIS

PORT(clk,rst:

INSTD_LOGIC;

nickel_in,dime_in,quarter_in:

INBOOLEAN;

candy_out,nickel_out,dime_out:

OUTSTD_LOGIC);

ENDvending_machine;

ARCHITECTUREfsmOFvending_machineIS

TYPEstateIS(st0,st5,st10,st15,st20,st25,st30,st35,st40,st45);

SIGNALpresent_state,next_state:

STATE;

PROCESS(rst,clk)

IF(rst='

)THEN

present_state<

=st0;

ELSIF(clk'

=next_state;

PROCESS(present_state,nickel_in,dime_in,quarter_in)

CASEpresent_stateIS

WHENst0=>

candy_out<

nickel_out<

dime_out<

IF(nickel_in)THENnext_state<

=st5;

ELSIF(dime_in)THENnext_state<

=st10;

ELSIF(quarter_in)THENnext_state<

=st25;

ELSEnext_state<

WHENst5=>

=st15;

=st30;

WHENst10=>

=st20;

=st35;

WHENst15=>

=st40;

WHENst20=>

=st30;

=st45;

WHENst25=>

next_state<

WHENst30=>

WHENst35=>

WHENst40=>

WHENst45=>

ENDfsm;

三、仿真结果分析

仿真结果如下图示:

由上图可以看到:

第一个周期内,一共投入了3个5美分硬币和1个25美分硬币。

在第一个5美分硬币投进去后的第一个时钟上升沿出现时,有限状态机的状态从st0(十进制的0)转到了st5(十进制的1)。

在投入第二个5美分硬币后状态转到st10(十进制的2),投入第二个5美分硬币后状态转到st15(十进制的3),在25美分硬币投进去以后,状态变为st40(十进制的8)。

此后,售货机退还顾客一个5美分硬币(nickle_out=’1’),同时状态机进入st35(十进制的7),接着退还10美分硬币(dime_out=’1’)并发放糖果(candy_out=’1’),同时状态回到空闲状态(st0)。

其他输入组合的分析同上。

二、2.设计帧同步检测电路,输入位宽1位的二进制序列及时钟,输出高电平脉冲的检测结果。

对输入的二进制序列检测帧同步序列“01011”,即当输入的二进制序列中出现帧同步序列时,输出一个高电平脉冲。

(1).设计原理

用状态机,状态转换图如下图示:

状态转换图

各状态定义如下:

S0:

空闲状态或仅输入“1”;

S1:

输入一个“0”后的状态;

S2:

输入序列“01”后的状态;

S3:

输入序列“010”后的状态;

S4:

输入序列“0101”后的状态;

S5:

输入帧同步序列“01011”后的状态,此时输出一个高电平脉冲。

管脚图

管脚说明:

CLK—时钟信号;

X—输入二进制序列;

Y—输出变量。

(2).VHDL源程序:

USEieee.std_logic_arith.all;

ENTITYcheckIS

PORT(clk,x:

y:

outstd_logic);

ENDcheck;

ARCHITECTUREcheck_arcOFcheckIS

typestateis(s0,s1,s2,s3,s4,s5);

signalpresent_state:

state;

signalnext_state:

s:

PROCESS(clk)

IFclk'

eventandclk='

ENDPROCESSs;

c:

PROCESS(x,present_state)

casepresent_stateis

whens0=>

y<

ifx='

then

=s1;

else

=s0;

endif;

whens1=>

=s2;

whens2=>

=s3;

whens3=>

=s4;

whens4=>

=s5;

whens5=>

whenothers=>

null;

endcase;

ENDPROCESSc;

ENDcheck_arc;

(3).仿真结果及其分析

仿真结果如下图示:

仿真结果分析:

由以上截图可以看到,当输入的二进制序列x=“01011”,即检测到帧同步序列时,y输出一个高电平脉冲。

且由第三个图可见,当clk取

Hz时,输出有12.6ns/12.8ns的延时。

二、3.设计可以对两个运动员赛跑计时的秒表,要求如下:

(1)秒表的输入只有时钟(clk)和一个按键(key),假设key已经经过防抖动和脉冲宽度处理,每按一次key产生持续一个时钟周期的高电平脉冲,可以满足设计的需要,不需要对key再做任何处理。

(2)秒表输出用0-59的整数表示,不需要对十位和个位分别计数,不需要7段译码。

(3)键key的功能如下:

(A)按第一下key,开始计数,并输出计数值;

(B)第一个运动员到终点时按第二下key,秒表记住第一个运动员到终点的时间,但还在继续计数并输出计数值;

(C)第二个运动员到终点时按第三下key,停止计数,这时输出的计数值就是第二个运动员用的时间;

(D)然后按第四下key,秒表输出第一个运动员到终点的时间,即按第二下key时记住的计数值;

(E)按第五下key,秒表清0,开始新的周期。

(4)画出秒表的状态转移图,标明各个状态的转移条件和输出。

(5)用VHDL完成秒表的设计。

(1).设计原理:

该设计的状态转移图如下:

其中,S0:

空闲状态,输出为0;

S1:

第一个key按下后的状态,输出计数值;

第二个key按下后的状态,输出计数值,并记下第一个运动员到达终点的时间;

第三个key按下后的状态,输出第二个运动员所用时间;

第四个key按下后的状态,输出第一个运动员所用时间;

第五个key按下后的状态,输出清零。

(2).VHDL源程序如下:

ENTITYsecondIS

PORT(clk,key:

count:

outintegerrange0to59);

ENDsecond;

ARCHITECTUREsecond_arcOFsecondIS

h:

PROCESS(key)

IFkey='

ENDPROCESSh;

PROCESS(present_state)

WHENs0=>

WHENs1=>

WHENs2=>

WHENs3=>

WHENs4=>

WHENs5=>

WHENothers=>

null;

PROCESS(clk,present_state)

variablec1,c2:

integerrange0to59;

c1:

c2:

count<

=c1+1;

=c2+1;

=c1;

=c2;

ENDsecond_arc;

(3).仿真结果及其分析

仿真中clk时钟频率为

Hz,(实际应用中采用1Hz)。

由以上3副截图可以看出:

在第一个计数周期内,按第一下key(2us)后,clk上升沿到来时,系统开始计数,并同时输出计数值;

第一个运动员到终点(23us)时按第二下key,秒表记住第一个运动员到终点的时间(23us-2us=21us),但还在继续计数并输出计数值;

第二个运动员到终点(30us)时按第三下key,停止计数,这时输出的计数值(28)就是第二个运动员用的时间(30us-2us=28us);

然后按第四下key,秒表输出第一个运动员到终点的时间(21),即按第二下key时记住的计数值;

按第五下key,秒表清0,开始新的周期。

此外,由图可见,present_state的变化发生在key=“1”且时钟上升沿来临时。

其改变与状态转换图给出的一致。

二、自选题三层电梯控制器

(1)每层电梯入口处设有上下请求开关,电梯内设有乘客到达层次的停站请求开关。

(2)设有电梯处所处位置指示装置及电梯运行模式(上升或下降)指示装置。

(3)电梯每秒升(降)一层楼(在仿真中取1

s)。

(4)电梯到达有停站请求的楼层后,经过1s(在仿真中取1

s)电梯门打开,开门指示灯亮,开门4s(在仿真中取2

s)后,电梯门关闭(开门指示灯灭),电梯继续运行,直至执行完最后一个请求信号后停在当前层。

(5)能记忆电梯内外的所有请求信号,并按照电梯运行规则次序响应,每个请求信号保留至执

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

当前位置:首页 > 经管营销 > 销售营销

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

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