嵌入式设计技术的工程方法嵌入式之verilog电路设计2_第1页
嵌入式设计技术的工程方法嵌入式之verilog电路设计2_第2页
嵌入式设计技术的工程方法嵌入式之verilog电路设计2_第3页
嵌入式设计技术的工程方法嵌入式之verilog电路设计2_第4页
嵌入式设计技术的工程方法嵌入式之verilog电路设计2_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、 第三节第三节 基于状态机的基于状态机的verilog hdl设计方法设计方法一一. mealy型有限状态机设计型有限状态机设计mealy型有限状态机模型型有限状态机模型组合逻辑组合逻辑当前状态当前状态触发器触发器 clk resetxz有限状态机从本质上讲有限状态机从本质上讲是由寄存器与组合逻辑是由寄存器与组合逻辑构成的时序电路。构成的时序电路。实用的状态机一般都设实用的状态机一般都设计成同步时序电路。计成同步时序电路。根据设计要求画出状态根据设计要求画出状态转移图。转移图。用一个用一个always过程块过程块(case或或if-else)描述)描述组合逻辑(输出、下一组合逻辑(输出、下一个

2、状态需要的激励)。个状态需要的激励)。用另一个用另一个alwaysalways过程块过程块描述寄存器逻辑(状态转描述寄存器逻辑(状态转换)。换)。例例1:用:用verilog hdl对对“1101”序列检测器的有限状态机进序列检测器的有限状态机进行行 描述。要求写出设计说明、格式规范、书写清晰,必要描述。要求写出设计说明、格式规范、书写清晰,必要 时进行注释。时进行注释。设计说明:设计说明:1. x为串行输入,为串行输入,z为是否检测到有效序列标志。为是否检测到有效序列标志。 2. 对状态对状态a、b、c、d采用一位热编码,依次为采用一位热编码,依次为 1000、0100、0010、0001。

3、 3. 状态状态a为系统初态。高电平有效的复位信号为系统初态。高电平有效的复位信号reset 使系统进入初态。使系统进入初态。 4. 系统时钟系统时钟clk上升沿有效。上升沿有效。abcd输入输入/输出输出x/z0/01/01/00/01/00/00/0 1/1reset/mealy型型“1101”序列检测器描述序列检测器描述/端口说明,参数定义,数据类型定义端口说明,参数定义,数据类型定义 module sta_machine (x, clk, reset, z) ; parameter a=4b1000,b=4b0100,c=4b0010,d=4b0001; input x, clk, r

4、eset; output z; reg z; reg 4:1 current_state; reg 4:1 next_state; /组合逻辑部分描述组合逻辑部分描述 always (x or current_state) begin case (current_state) a: if (x=1)begin z=0; next_state=b; end else begin z=0; next_state=a; end b: if (x=1) begin z=0; next_state=c; end else begin z=0; next_state=a; end c: if (x=0)

5、begin z=0; next_state=d; end else begin z=0; next_state=c; end d: if (x=1) begin z=1; next_state=a; end else begin z=0; next_state=a; end default: begin z=0;next_state=a; end endcase end/寄存器部分描述寄存器部分描述 always (posedge clk or posedge reset) begin if (reset) current_state=a; else current_state=next_st

6、ate; end endmodule 设计完毕设计完毕二二. moore型有限状态机设计型有限状态机设计moore状态机的输出只状态机的输出只和现态有关。和现态有关。根据设计要求画出状态根据设计要求画出状态转移图。转移图。用一个用一个always过程块过程块(case或或if-else)描述激)描述激励组合逻辑(下一个状态励组合逻辑(下一个状态需要的激励)。需要的激励)。用一个用一个always过程块过程块(case或或if-else)描述输)描述输出的组合逻辑。出的组合逻辑。用另一个用另一个alwaysalways过程块过程块描述寄存器逻辑(复位和描述寄存器逻辑(复位和状态转换)。状态转换)

7、。moore型有限状态机模型型有限状态机模型组合逻辑组合逻辑当前状态当前状态触发器触发器 clk resetxz组合逻辑组合逻辑例例2:用:用verilog hdl描述下列描述下列moore型有限状态机。型有限状态机。state0out=001state1out=010state2out=100state3out=111start=0start=1step2=0step2=1step3=0step3=1clr=1设计说明:设计说明:1.三个输入信号三个输入信号start、step2、step3 2.状态状态state03采用格雷码进行编码采用格雷码进行编码 3.高有效的高有效的clr使系统进入

8、初态使系统进入初态state0 4.时钟时钟clk的上升沿进行状态转换的上升沿进行状态转换/例例2 moore状态机描述状态机描述/端口说明,参数定义,信号类型说明端口说明,参数定义,信号类型说明module moore_fsm ( clk, clr, out, start, step2, step3 ) ; input clk, clr, start, step2, step3 ; output 2:0 out ; reg 2:0 out ; reg 1:0 state, next_state; parameter state0=2b00, state1=2b01, state2=2b11,

9、 state3=2b10; /状态编码状态编码格雷码格雷码/下面的下面的always进程描述复位及状态转换进程描述复位及状态转换always (posedge clk or posedge clr) begin if (clr) state=state0; else state=next_state; end/下面的下面的always进程描述各状态下的输出组合逻辑进程描述各状态下的输出组合逻辑always ( state ) begin case ( state ) state0: out=3b001; state1: out=3b010; state2: out=3b100; state3:

10、 out=3b111; default: out=3b001; /避免锁存器的产生避免锁存器的产生 endcase end/下面的下面的always进程根据现态、输入描述应进入的次态进程根据现态、输入描述应进入的次态always (state or start or step2 or step3) begin case(state) state0: begin if (start) next_state=state1; else next_state=state0; end state1: begin next_state=state2; end state2: begin if (step2

11、) next_state=state3; else next_state=state0; end state3: begin if (step3) next_state=state0; else next_state=state3; end default: next_state=state0; endcase endendmodule三三.基于状态机设计中需要注意的几个问题基于状态机设计中需要注意的几个问题1.起始状态的选择起始状态的选择 选择一个合理的电路复位时的起始状态,将使整个系选择一个合理的电路复位时的起始状态,将使整个系统简洁、高效。有些统简洁、高效。有些eda软件能自动为基于状态

12、机的设计软件能自动为基于状态机的设计选择一个最佳的起始状态。选择一个最佳的起始状态。2.状态编码状态编码自然二进制编码自然二进制编码简单易行,但从一个状态转移到另一简单易行,但从一个状态转移到另一个状态时,有可能出现多位发生变化(例如个状态时,有可能出现多位发生变化(例如1001),容),容易产生易产生“毛刺毛刺”,引起逻辑错误。,引起逻辑错误。格雷编码格雷编码相邻状态只有一位发生变化,减少产生相邻状态只有一位发生变化,减少产生“毛毛刺刺”和一些暂态的可能性,提高可靠性。和一些暂态的可能性,提高可靠性。一位热码编码一位热码编码采用采用n位(位(n个触发器)来编码具有个触发器)来编码具有n个个状

13、态的状态机。虽然多用了触发器,但可以有效节省和简状态的状态机。虽然多用了触发器,但可以有效节省和简化组合电路。对于寄存器数量多、门逻辑相对较少的化组合电路。对于寄存器数量多、门逻辑相对较少的fpga器件,常采用一位热编码方法。器件,常采用一位热编码方法。状态状态二进制编码二进制编码格雷编码格雷编码一位热码编码一位热码编码state000000000000001state100100100000010state201001100000100state301101000001000state410011000010000state510111100100000state61101010100000

14、0state711110010000000三种编码方法的比较三种编码方法的比较 值得注意的是:有些值得注意的是:有些eda软件(例如软件(例如mux+plus ii)具有一位热码编码选项供用户选用。当采用一位热码编码后,具有一位热码编码选项供用户选用。当采用一位热码编码后,会有多余状态(无效状态),应进行相应处理。例如,采用会有多余状态(无效状态),应进行相应处理。例如,采用case语句时,应增加语句时,应增加default分支项,以便在多余状态下能分支项,以便在多余状态下能自动回到相应状态(多为起始状态)。自动回到相应状态(多为起始状态)。3.verilog hdl中状态编码的定义中状态编码

15、的定义常用常用parameter语句进行定义。语句进行定义。4.状态转换的描述状态转换的描述一般采用一般采用case语句,清晰明了。也可用语句,清晰明了。也可用if-else语句。语句。 一个实用的状态机应设计为在统一的时钟信号边沿触一个实用的状态机应设计为在统一的时钟信号边沿触发,同步运行。发,同步运行。四四.关于设计中的资源共享关于设计中的资源共享 例如:电路实现的功能:当例如:电路实现的功能:当sel=0时,时,sum=a+b;当当sel=1时,时,sum=c+d;a、b、c、d的宽度可变,参的宽度可变,参数化设计时定义为数化设计时定义为4位。位。1.实现方式一,先加后选实现方式一,先加

16、后选加加法法器器加加法法器器多多路路选选择择器器abcdselsum/方式一:两个加法器,一个选择器方式一:两个加法器,一个选择器module mode1 (sum, a, b, c, d, sel) ; parameter size=4 ; output size:0 sum ; input sel; input size-1:0 a , b , c , d ; reg size:0 sum ; always (a or b or c or d or sel) begin if (sel) sum = c + d ; else sum = a + b ; endendmodule 将其综合到

17、将其综合到epf10k10器件中,查看报告文件,耗用器件中,查看报告文件,耗用18个逻辑单元(个逻辑单元(lc)2.实现方式二,先选后加。实现方式二,先选后加。多路多路选择选择器器多路多路选择选择器器加加法法器器abcdselsum/方式二:两个选择器,一个加法器方式二:两个选择器,一个加法器module mode2 (sum, a, b, c, d, sel) ; parameter size=4 ; output size:0 sum ; input sel; input size-1:0 a , b , c , d ; reg size-1:0 atemp, btemp ; reg si

18、ze:0 sum ; always (a or b or c or d or sel) begin if (sel) begin atemp=c; btemp=d; end else begin atemp=a; btemp=b; end sum = atemp + btemp ; endendmodule 将其综合到将其综合到epf10k10器件中,器件中,查看报告文件,耗用查看报告文件,耗用15个逻辑单元个逻辑单元(lc) 比较两种方式,方式二比方式一少用了比较两种方式,方式二比方式一少用了3个逻辑单元,即个逻辑单元,即加法器耗用的资源比加法器耗用的资源比mux多。若调整多。若调整size参数,修改设计规参数,修改设计规模,资源耗用对比如下:模,资源耗用对比如下:设计规模(设计规模(size)方式一方式一方式二方式二4位位18个个lc15个个lc8位位38个个l

温馨提示

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

评论

0/150

提交评论