高效状态机设计.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA/CPLD应用技术 温国忠 、余菲、曾启明 晏凯、刘俐 高效状态机设计 温国忠 副教授 电子邮件:buddy@szpt.edu.cn 电话 主要内容: 有限状态机设计方法 1 状态机设计优化 2 高效状态机设计方法 3 有限状态机设计方法: 组合逻辑输出编码状态机设计 寄存器输出编码状态机设计 One-hot输出编码状态机设计 状态机设计实例: 组合逻辑输出状态机设计编码 module fsm1 (clk,reset,go,ws,ds,rd); input clk,reset; input go,ws; output ds,rd; wire ds,rd; reg [1:0] c_state; //当前状态 reg [1:0] n_state; //下一个状态 parameter [1:0] idle = 2‘b00, //状态参数定义 read = 2'b01, dly = 2'b10, done = 2'b11; assign rd = (c_state == read || c_state == dly); assign ds = (c_state == done); 组合逻辑输出状态机设计编码 always @(posedge clk) begin if(reset==1) c_state <= IDLE; else c_state<=n_state; end always @(c_state or go or ws) begin n_state = IDLE; case (c_state) IDLE:begin if (go==1) n_state = READ; else n_state = IDLE; end 组合逻辑输出状态机设计编码 READ:begin n_state = DLY; end DLY:begin if(ws==1) n_state = READ; else n_state = DONE; end DONE:begin n_state = IDLE; end endcase end endmodule 第一个always块用于产生的连续的状态机寄存器 第二个always块用于产生组合的下一状态逻辑 assign赋值语句用于产生组合输出逻辑,状态机输出rd和ds均由state经组合译码得到 这种组合逻辑输出编码是否存在缺陷? 用组合逻辑直接输出的状态机设计容易产生毛刺 如果我们采用用时钟同步寄存器输出信号的状态机设计则可以消除“毛刺” 如何改进优化? 优化后的状态机设计框图 寄存器输出状态机设计编码 module fsm2 (clk,reset,go,ws,ds,rd); : always @(posedge clk) begin if(reset==1) c_state <= IDLE; else c_state<=n_state; end always @(c_state or go or ws) begin : end 寄存器输出状态机设计编码 always @(posedge clk) if(reset==1) begin ds <= 1'b0; rd <= 1'b0; end else begin case(c_state) IDLE:if(go==1) rd <= 1'b1; READ:rd <= 1'b1; DLY:if(ws==1) rd <= 1'b1; else ds <= 1'b1; endcase end endmodule 优化后的状态机综合电路图 与第一种设计方法相比,在此程序中用到了三个always块,将第一种设计方法中的assign连续赋值语句使用第三个always块来代替这个描述时序电路的always块起到了“寄存下一个输出”的作用,因而消除了输出信号的毛刺。 这种设计方法对于电路综合非常有利,它有效的遏制了由于组合逻辑的恶劣延时而给电路带来的时延问题。但是这种设计方法多用了两个寄存器,使综合电路面积增大 One-hot编码输出状态机设计 One-hot编码状态机设计框图 将输出逻辑通过One-Hot编码的方式和当前状态寄存器融合在一起。输出信号未经过额外的逻辑对现态进行译码,而是直接来自状态寄存器,因而输出信号不会产生毛刺,同时减少了直接输出的逻辑,使电路综合面积更小,是一种更高效的状态机

文档评论(0)

22255990 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档