浅谈FPGA 四段式状态机_第1页
浅谈FPGA 四段式状态机_第2页
浅谈FPGA 四段式状态机_第3页
浅谈FPGA 四段式状态机_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浅谈FPGA四段式状态机在FPGA中,相信有FPGA学习经验的都能了解,现在流行的状态机设计,一般可分为一段式、两段式和三段式,如果不了解的,可以自行百度。上面的三种设计法虽然很流行,但设计时仍然要考虑很多因素,导致总是要反反复复调试才能设计成功。这不符合明德扬一次考虑一个因素、一次性设计正确的设计理念。为此,明德扬特推出四段式状态机的写法。四段式不是指三个always代码,而是四段程序。使用四段式的写法,可参照明德扬GVIM特色指令Ztj产生的状态机模板。第一段,同步时序的always模块,格式化描述次态迁移到现态寄存器。always@(posedgeclkornegedgerst_n)beginif(!rst_n)beginstate_c《=IDLE;endelsebeginstate_c《=state_n;endend第二段,组合逻辑的always模块,描述状态转移条件判断。注意转移条件用信号来表示,信号名要按明德扬规则来命名。always@(*)begincase(state_c)IDLE:beginif(idle2s1_start)beginstate_n=S1;endelsebeginstate_n=state_c;endendS1:beginif(s12s2_start)beginstate_n=S2;endelsebeginstate_n=state_c;endendS2:beginif(s22idl)beginstate_n=IDLE;endelsebeginstate_n=state_c;endenddefault:beginstate_n=IDLE;endendcaseendassignidle2s1_start=state_c==IDLE&&;assigns12s2_start=state_c==S1&&;assigns22idl_start=state_c==S2&&;第三段,用assign定义转移条件。注意条件一定要加上现态。assignidle2s1_start=state_c==IDLE&&;assigns12s2_start=state_c==S1&&;assigns22idl_start=state_c==S2&&;第四段,设计输出信号。明德扬规范要求一个always设计一个信号,因此有多少个输出信号,就有多少个always。always@(posedgeclkornegedgerst_n)beginif(!rst_n)beginout1《=1‘b0endelseif(state_c==S1)beginout1《=1’b1;endelsebeginout1《=1‘b0;endend明德扬四段式状态机符合一次只考虑一个因素的设计理念。第一段代码,照抄格式,完全不用想其他的。第二段代码,只考虑状态之间的跳转,也就是说各个状态机之间跳转关系。第三段代码,只考虑跳转条件。第三段,每个信号逐个设计。明德扬为了保证一次设计正确,还制定了一些规范。例如第二段的跳转条件,只准用信号名代替,并且制定了跳转条件的命名规范,1是解决了命名困难的问题,2是对转移条件一目了然,如idl2s1_start,就可以看出是IDLE跳到S1状态的条件。还有,明德扬规定转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论