复杂功能模块设计状态机Word格式.docx
- 文档编号:20251945
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:11
- 大小:385.48KB
复杂功能模块设计状态机Word格式.docx
《复杂功能模块设计状态机Word格式.docx》由会员分享,可在线阅读,更多相关《复杂功能模块设计状态机Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
输入信号来自8位A/D转换器,要求当输入大于等于100时,产生报警信号,当输入回落到97以下时解除报警信号。
图2
分析:
关键是输入为98、99时怎么处理?
图2简单报警器的状态机
图3简单报警器的内部结构
代码:
例2:
简易交通灯问题。
主干道至少通行10分钟才能使小路方向通行1分钟。
在主干道通行时,如果有过街请求则在10分钟到时变为小路通,如无请求,则主干道继续通行5分钟后再变为小路通。
图4
图5
图6
状态机代码
例3:
售货机问题
假设商品价格7角,并假设每次只能销售一个商品,且售货机发现金额超过7角即关闭投币口。
找零时,每次只能找回一枚硬币,如需找回5角以上,优先考虑5角。
图7
例4:
JTAG中的TAP状态机
4.2状态机设计方法
一般情况下,一个数字电路系统总是可以分解为数据通道(Datapath)和状态机两个部分。
“数据通道”一词与字面意义不同,泛指较常用的数字部件,具有通用性。
状态机则是对电路特殊性部分的描述。
这里所说的“状态机”是一种描述电路功能的方法,与数字电路中的状态转换图类似,但要更抽象一些。
以下以一个“密码”定时器为例,介绍状态机分析方法。
(1)电路功能描述
●输入输出信号见图4-6,只要求设计“密码定时器”模块。
●上电复位后,定时器处于等待状态,输出控制信号“out”为0,计时显示输出为BCD码“9”。
●输入正确密码后开始倒计时,每秒计数值减1,计时回0后,输出控制信号置1。
●按键事件信号(key_in)的每个脉冲代表一次数字输入事件,输入数字以bcd码形式给出。
●密码为固定的4位数字,例如“2012”。
●密码输入间隔时间或总的输入时间不限。
输入数据的总位数也不限,只要4个连续的输入数据与密码相同即可。
图4-6密码定时器
设计思路:
可以想象电路中将包含分频电路、BCD减法计数器等常用部件,这些属于“数据通道”部分,功能比较简单。
问题的关键是如何描述密码的输入情况。
用寄存器保存输入密码的方法可行,但耗用较多硬件资源。
以下采用状态机方法描述密码输入情况。
always@(posedgeclk)
begin
if(rst_n==1'
b0)
div<
=2'
b00;
else
=div+1'
b1;
end
//--------------------------------------------------------------
cnt<
=4'
d9;
elseif((div==2'
b11)&
&
(state==PASS_4)&
(cnt>
0))
=cnt-1'
图4-8状态机
parameter[2:
0]PASS_0=3'
0]PASS_1=3'
b01;
0]PASS_2=3'
b10;
0]PASS_3=3'
b11;
0]PASS_4=3'
state<
=PASS_0;
=next_state;
always@(stateorkey_in_edgeorbcd)
if(key_in_edge==3'
b01)begin
case(state)
PASS_0:
if(bcd==3'
d2)
next_state=PASS_1;
next_state=PASS_0;
end
PASS_1:
d0)
next_state=PASS_2;
elseif(bcd==3'
PASS_2:
d1)
next_state=PASS_3;
PASS_3:
next_state=PASS_4;
default:
next_state=state;
endcase
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复杂 功能模块 设计 状态机