首页 > 其他分享 >第一篇

第一篇

时间:2022-10-14 23:13:23浏览次数:38  
标签:nstate req 第一篇 S2 cmd else WR

一段式与二段式都有缺点
三段式的状态机更加好

三段式状态机:
第一段:时序逻辑,用于描述当前状态 (<=)
第二段:组合逻辑,用于描述下一个状态 (=)
第三段:时序逻辑,用于描述输出 (<=)

①现态:是指当前所处的状态。cstate

②条件:又称为“事件”,当一个条件被满足,
将会触发一个动作,或者执行一次状态的迁移。

③动作:条件满足后执行的动作。动作执行完毕后,
可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,
当条件满足后,也可以不执行任何动作,直接迁移到新状态。

④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,
“次态”一旦被激活,就转变成新的“现态”了。nstate

以下为三段式模板:
第一段:
//1st always block, sequential logic, store current state
always @(posedge clk or negedge rst_n)
if(!rst_n)
cstate <= IDLE;
else
cstate <= nstate;
第二段:
//2nd always block, combinational logic, decide next state
always @(cstate or wr_req or rd_req)
begin
nstate = 3'bx;
case(cstate)
IDLE: if(wr_req)
nstate = WR_S1;
else if(rd_req)
nstate = RD_S1;
else
nstate = IDLE;
WR_S1: nstate = WR_S2;
WR_S2: nstate = IDLE;
RD_S1: if(wr_req)
nstate = WR_S2;
else
nstate = RD_S2;
RD_S2: if(wr_req)
nstate = WR_S1;
else
nstate = IDLE;
default: nstate = 3'bx;
endcase
end
第三段:
Mealy型写法:case(表达式)中的表达式为“cstate”,即现态,default项必须设置。
//Mealy机器对输入的反应更快
always @(posedge clk or negedge rst_n)
if(!rst_n)
cmd <= 3'b000;
else
case(cstate)
IDLE: if(wr_req)
cmd <= 3'b001;
else if(rd_req)
cmd <= 3'b011;
else
cmd <= 3'b000;
WR_S1: cmd <= 3'b010;
WR_S2: cmd <= 3'b000;
RD_S1: if(wr_req)
cmd <= 3'b010;
else
cmd <= 3'b100;
RD_S2: if(wr_req)
cmd <= 3'b001;
else
cmd <= 3'b000;
default:;
endcase
Moore型写法: case(表达式)中的表达式为“nstate”,即次态,default项必须设置。
//Moore机器使用更安全
always @(posedge clk or negedge rst_n)
if(!rst_n)
cmd <= 3'b000;
else
case(nstate)
IDLE: cmd <= 3'b000;
WR_S1: cmd <= 3'b001;
WR_S2: cmd <= 3'b010;
RD_S1: cmd <= 3'b011;
RD_S2: cmd <= 3'b100;
default:;
endcase

endmodule

标签:nstate,req,第一篇,S2,cmd,else,WR
From: https://www.cnblogs.com/pinkfloyd1007/p/16793283.html

相关文章

  • 我的第一篇博客
    #我的第一篇博客##自我介绍自我介绍一下,我是某二本的一名研究生,算是交叉领域吧,本科学的是物联网工程,研究生方向初步为计算机视觉(cv)。一直想要把自己的学习路程和经验记......
  • 第一篇博客
    这是我的第一篇博客,随手写下目前对自己未来的期望。现在是2022/10/10,希望在未来的一年里,你能做到以下几点:1、通过英语四六级。2、努力学习,考入自己理想的学校。3、熟练......
  • TTD 专题 (第一篇):C# 那些短命线程都在干什么?
    一:背景1.讲故事在分析的众多dump中,经常会遇到各种奇葩的问题,仅通过dump这种快照形式还是有很多问题搞不定,而通过perfview这种粒度又太粗,很难找到问题之所在,真的很头疼,比如......
  • Whisper的第一篇笔记(dfs)
    原本小z是打算先写一篇关于字符串的笔记由于实在是太太太太长了我决定抛弃它(先丢进草稿箱然后这篇稍微正经一点的有关dfs的学习笔记就来辽(这是LDL老师才讲的内容我来......
  • 总结第一篇SCI写作到投稿的过程
    在七月初研一课程结束,就开始了第一篇SCI的投入写作,直到昨晚投出为止,这里总结一下自己写作和投稿的流程。(后期,如有拒稿、大修、小修等再进行完善补充)1、问题提出和写作套路......
  • C语言学习的第一篇博客
    今年40,一直从事医药行业的销售工作,现在越来越发现销售类的工作没有未来,反倒是觉得以前不屑一顾的公务员、事业单位和技术类的工作是不错的,因为这些工作重在积累,当然公务员及......
  • 随便瞎胡的第一篇随笔
    哈哈哈本蒟蒻终于有博客辽!!!不得不承认我捣鼓了近1h还没弄懂设置(没有理解能力我貌似在1天前才知道有博客这个东西存在(悲先来膜拜一番大佬(蒟蒻瑟瑟发抖,orz希望以后阔以在......
  • 为何最近我们日子会很难过 之 第一篇
    文/北妈阅读本文需要 4.2分钟一上周末晚十点推送的关于毛衣zhan的文字连接,后台和群很多留言。大部分是表示感谢提醒和无奈的,还有一部分说北妈真良心的,置顶你没错之类的跪舔......
  • 《代码大全》笔记第一篇
                             第一部分:打好基础这部分主要分成四部分,欢迎进入软件构建的世界,用隐喻来更充分地理解软......
  • 《程序员修炼之道:从小工到专家》读后感第一篇(九月)
    今天刚读《程序员修炼之道:从小工到专家》在这本书中,首先向我们讲述了作为一位程序员要无时无刻对自己的工作负责,做了错事都要想办法弥补,去改正自己的漏洞、过失,作为......