第五讲状态机设计实例_684604324

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

练习: 采用手工编码设计状态机,实现如图所示转台控制功能:
下课!
三、未定义状态处理
1、成本? 可靠性? 考虑容错性,需要定义非法状态的转移: when others => next_state<= State0; 某些应用,成本因素比容错更重要,可进行忽略处理: 将信号 current_state和next_state定义为: STD_LOGIC_VECTOR( 3 downto 0)
设计非容错系统:
when others => next_state <= " ----" ; 使用常量状态编码的状态机,必须指明未定义状态的处理!
2、One-hot 编码的容错技术 One-hot 编码的优点? One-hot 编码的容错:对全部非法状态定义转移路径? 对状态向量各位进行监测:有效位是否不等于1 例:4状态的One-hot 编码状态机, 设状态信号的各位为:s0,s1,s2,s3 Detect <= ( s0 and (s1 or s2 or s3)) or ( s1 and (s0 or s2 or s3)) or ( s2 and (s0 or s1 or s3)) or ( s3 and (s0 or s1 or s2)) 监测到冲突信号,系统复位。
第五节 状态机代码设计实例
1. 2. 3. 4. 常用描述方式 状态编码处理 未定义状态处理 交互式状态机设计
一、常用描述方式 例: 设计如下图所示的状态机:
希望综合得到的电路图:
方式1:
ห้องสมุดไป่ตู้
现态进程
次态进程
输出逻辑采用并行语句
方式2:
标准双进程状态机
方式3:
单进程状态机
二、状态编码处理 1、 枚举型状态编码:代码编写简单易于维护 例: 设计三个状态的状态机 状态 定义 状态 转移 容错 处理 type STATE_TYPE is (START, MIDDLE, STOP) ; signal STATE : STATE_TYPE ; · · · case STATE is when START => · · · when MIDDLE => · · · when STOP => · · · when others => · · · end case ;
但是,可能要枚举大量的无效状态, One-Hot 编码呢?
3、推荐: 手工状态编码 常量编码: architecture…… signal STATE : std_logic_vector (2 downto 0) ; constant START : std_logic_vector (2 downto 0) := "001"; constant MIDDLE : std_logic_vector (2 downto 0) := "010"; constant STOP : std_logic_vector (2 downto 0) := "100"; begin · · · case STATE is when START => · · · when MIDDLE => · · · when STOP => · · · when others => · · · end case ; · · · 最好的编码方式,与综合工具完全无关.
四、交互式状态机的设计
输入信号 输出信号 数据单元 时钟信号 状 态 复位信号 控制单元 控 制
状态机
数字系统的结构
交互式状态机的结构(一)
单向交互式状态机
交互式状态机的结构(二)
双向交互式状态机
例: 设计电路,完成如下数据处理功能:
输入是4位的数据序列,输出是9位数据流,要求对连续 的3个或4个输入序列为一组进行处理,得到相应分别为2 个或3个一组的9位输出序列,并满足下式: 当一组输入为4个数据(即ThreeOnly=0 时) Y1=A.B+A.C Y2=A.D+B.C Y3=B.D+C.D 当一组输入为3个数据(即ThreeOnly=1 时) Y1=A.B+A.C Y4=B.C
采用枚举定义,无效状态不可仿真!
2、定义包含无效状态的枚举变量:
type STATE_TYPE is (START, MIDDLE, STOP, DUMMY) ; signal STATE : STATE_TYPE ; · · · case STATE is when START => · · · when MIDDLE => · · · when STOP => · · · when DUMMY => · · · -- or when others end case ; 现在,无效状态可以仿真了。
数据路径原理图
数据通道代码
主从式状态机
主状态机
从状态机
主从式状态机的状态转移图
主 从 式 状 态 机 代 码
主 从 式 状 态 机 代 码
串行式状态机
串行式状态机的状态转移图
ST1;
串 行 式 状 态 机 代 码
ST_Sum1;
串 行 式 状 态 机 代 码
单状态机
单状态机的状态转移图
相关文档
最新文档