有限状态机课程设计报告EDASodaMachine自动售货机Word文件下载.docx
- 文档编号:7743668
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:15
- 大小:1.02MB
有限状态机课程设计报告EDASodaMachine自动售货机Word文件下载.docx
《有限状态机课程设计报告EDASodaMachine自动售货机Word文件下载.docx》由会员分享,可在线阅读,更多相关《有限状态机课程设计报告EDASodaMachine自动售货机Word文件下载.docx(15页珍藏版)》请在冰点文库上搜索。
通过分析本次实验,利用Mealy机更加容易理解,并且使用Moore会使用更多的状态,所以本次实验使用Mealy型有限状态机。
2SodaMachine机的设计
2.1SodaMachine机的状态转换图
SodaMachine机的状态转换图如图四所示。
SodaMachine
图四SodaMachine机的状态转换图
图中共有10个状态,为ST0—ST9。
在状态转换图中00代表无输入,11代表输入Q(25c),
10代表输入D(10c),01代表输入N(5c)。
在输出中000代表无输出,001代表输出DN(5C),010代表输出的DD(10C),100代表输出DC(1can)。
ST0是初始态。
当没有硬币投入时,状态机始终保持STO状态不变。
当投入5分(即
01)时,状态机跳转到ST1状态,无输出(即000);
当投入10分时(即10),跳转到S2
状态,无输出(即000);
当投入25分时(即11)跳转到S5状态,无输出(即000)。
ST1是有投入5分后的状态。
当没有硬币投入时,状态机始终保持ST1状态不变,无输出(即000);
当投入5分(即01)时,状态机跳转到ST2状态,无输出(即000);
当投入10分(即10)时,跳转到ST3状态,无输出(即000);
当投入25分(即11)时,跳转到ST0状态,输出一瓶饮料(即100)。
ST2是投入10分后的状态。
当没有硬币投入时,状态机始终保持ST2状态不变,无输
出(即000);
当投入5分(即01)时,状态机跳转到ST3状态,无输出(即000);
当投入10分(即10)时,跳转到ST4状态,无输出(即000);
当投入25分(即11)时,跳转到ST6状态,输出一瓶饮料(即100),在下一个时钟到来ST6再跳转到ST0,输出5分(即001)。
这样可保证每个时钟只输出一个(饮料或10分或5分)。
ST3是投入15分后的状态。
当没有硬币投入时,状态机始终保持ST3状态不变,无输
当投入5分(即01)时,状态机跳转到ST4状态,无输出(即000);
当投入10分(即10)时,跳转到ST5状态,无输出(即000);
当投入25分(即11)时,跳转到ST7状态,输出一瓶饮料(即100),在下一个时钟到来ST7再跳转到ST0,输出10分(即010)。
输出正确,同样可保证每个时钟只输出一个(饮料或10分或5分)。
ST4是投入20分后的状态。
当没有硬币投入时,状态机始终保持ST4状态不变,无输
当投入5分(即01)时,状态机跳转到ST5状态,无输出(即000);
当投入10分(即10)时,跳转到ST0状态,输出一瓶饮料(即100);
当投入25分(即11)时,跳转到ST8状态,输出一瓶饮料(即100),在下一个时钟到来ST8再跳转到ST6,输出10分(即010),在下一个时钟到来ST6再跳转到ST0,输出10分(即001)。
输出正确,同样可保证每个时钟只输出一个(饮料或10分或5分)。
ST5是投入25分后的状态。
当投入5分(即01)时,状态机跳转到ST0状态,输出一瓶饮料(即100);
当投入10分(即10)时,跳转到ST6状态,输出一瓶饮料(即100),在下一个时钟到来ST6再跳转到ST0,输出5分(即001);
当投入25分(即11)时,跳转到ST9状态输出一瓶饮料(即100),在下一个时钟到来ST9再跳转到ST7,输出10分(即010),在下一个时钟到来ST7再跳转到ST0,输出10分(即010)。
输出正确,同样可保证每个时钟只输出一个(饮料或10分或5分)。
2.2SodaMachine机的状态分配与编码
2.2.1状态编码方式
在状态机的设计中,对状态编码有多种,常用编码的方式有:
有限状态机中常用的编码
主要有二进制编码、格雷码和One-Hot编码。
表1二进制编码、格雷码和One-Hot编码的比较
比较
二进制编码
格雷码编码
一位热码编码
触发器数量
少
多
时序条件
一般
好
最好
非法状态
译码电路
复杂
简单
F面是对这三种编码方式的仿真。
222—位热码编码方式
由一位热码编码形成的RTL如图五所示。
图五一位热码编码形成的RTL
2.2.2二进制编码方式
二进制编码代码为:
SIGNALCURRENT_STATE,NEXT_STATE:
STD_LOGIC_VECTOR(3DOWNTO0);
CONSTANTST0:
STD_LOGIC_VECTOR(3DOWNTO0):
="
0000"
;
CONSTANTST1:
0001"
CONSTANTST2:
0010"
CONSTANTST3:
0011"
CONSTANTST4:
0100"
CONSTANTST5:
0101"
CONSTANTST6:
0110"
CONSTANTST7:
0111"
CONSTANTST8:
1000"
CONSTANTST9:
1001"
由二进制码形成的RTL如图六所示。
223格雷码编码方式
格雷码编码代码为:
1100"
1101"
由格雷码形成的RTL如图七所示:
从以上3个图可知:
采用一位热码编码,虽然这种方法的用的的触发器不是最少,但是
可以使次态逻辑变得简单,由于一般的可编程器件,触发器的比率高于组合逻辑,所以采用一位热码编码的系统占用的资源反而少于采用最少触发器的系统。
因此采用一位热码编码的
编码方式。
224对输入信号编码
两位二进制数对输入信号进行编码的RTL如图八所示,及00代表无输入,01代表输
入为5分,10代表输入10分,11代表输入25分。
图八两位二进制数对输入信号进行编码的RTL
三位二进制数对输入信号进行编码的RTL如图所示,及000代表无输入,001代表输
入为5分,010代表输入10分,100代表输入25分。
从上面的两个RTL图中可以看出,用两位二进制数对输入信号进行编码电路简单,并且完全避免的输入的非法状态,所以使用两位二进制数对输入信号进行编码。
2.3SodaMachine机状态最少化
状态最少化采用的方法一般是手动法,只有当两个状态在相同的输入条件下,有相同的次态和输出,那么这两个状态就可以合并,状态最少化是基于观察完成的。
2.3.1SodaMachine机状态转换及输出表
根据图写出状态转换及输出表,见表2。
表2SodaMachine机的状态转换及输出表
现态
相应转移条件下的次态
输出
状态名称
25美分
10美分
5美分
0美分
饮料
ST0
ST5
ST2
ST1
ST3
ST6
ST4
ST7
ST8
ST11
ST10
没有输入,次态为ST0
1
没有输入,次态为ST9
ST9
没有输入,次态为ST12
ST12
注:
ST2跳转到ST6的过程中,输出一瓶饮料;
ST3跳转到ST7的过程中,输出一瓶饮料;
ST4跳转到ST8的过程中,输出一瓶饮料;
ST5跳转到ST6的过程中,输出一瓶饮料;
ST5跳转到ST9的过程中,输出一瓶饮料。
2.3.2SodaMachine机的状态合并
根据上面的状态转换表及输出表,基于观察,发现st6、st10的次态转移和输出完全相
同,st7、st9、st12的次态转移和输出完全相同,因此可以将这几个状态进行合并,见表3。
表3合并状态st6和st10为st6,合并状态st7,st9、st12为st7
没有输入,次态为ST0
2.4SodaMachine机的VHDL语言
2.4.1实体设计
ENTITYSodaIS
PORT(CLK,RESET:
INSTD_LOGIC;
--时钟、复位信号
STATE_INPUTS:
INSTD_LOGIC_VECTOR(0TO1);
--输入信号
COMB_OUTPUTS:
OUTSTD_LOGIC_VECTOR(0TO2));
--输出信号
ENDSoda;
2.4.2结构体设计(部分代码)
TYPESTATESIS(ST0,ST1,ST2,ST3,ST4,ST5,ST6,ST7,ST8,ST9);
--定义数据
类型
STATES;
--将现态和次态定义为新的数据类型
REG:
PROCESS(CLK,RESET)
BEGIN
IFRESET='
1'
THENCURRENT_STATE<
=ST0;
ELSIFCLK'
EVENTANDCLK='
=NEXT_STATE;
ENDIF;
ENDPROCESS;
COM:
PROCESS(CURRENT_STATE,STATE_INPUTS)
VARIABLECOMB_OUTPUTS2:
STD_LOGIC_VECTOR(0TO2);
CASECURRENT_STATEIS
WHENST0=>
IFSTATE_INPUTS="
00"
THENNEXT_STATE<
COMB_OUTPUTS2:
000"
ELSIFSTATE_INPUTS="
01"
=ST1;
10"
=ST2;
ELSENEXT_STATE<
=ST5;
2.5SodaMachine机的RTL描述
图十SodaMachine的RTL描述
2.6SodaMachine在QuartusII中形成的状态转图
SodaMachine在QuartusII中形成的状态转图如图^一所示。
2.7SodaMachine的时序仿真
SodaMachine的时序仿真图如图十二所示:
)庐EO.J酩】il0咋河0as珈』nsM〔0us100.0us5E0.0皿珈0咔?
20.Cm800.0能
n.KSr.5
图十二SodaMachine的时序仿真图
时序逻辑说明:
复位信号后,状态为ST0;
连续来两个时钟,每次输入25分,第四个
时钟输出一瓶饮料,第五个时钟输出10分,第六个时钟输出10分。
符合逻辑设计要求。
SodaMachine的时序仿真图如图十三所示:
图十三SodaMachine的时序仿真图
10分,即共输入35分,第四个时钟输出一瓶饮料,第五个时钟输出5分。
每个时钟输出
个,符合逻辑设计要求。
3结束语
通过本次实验,对EDA技术和VHDL语言有了更深的了解和认识,会利用QuartusII对
设计电路进行功能仿真、时序仿真和优化,掌握了设计有限状态机的方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限状态机 课程设计 报告 EDASodaMachine 自动 售货