Verilog 有限状态机设计

合集下载

第八次课-8章状态机精选全文

第八次课-8章状态机精选全文
state<=s0; endcase end endmodule
z<=0;
三、基于状态机的设计要点
1.起始状态的选择
起始状态是指电路复位后所处的状态,选择一 个合理的起始状态将使整个系统简洁高效。有的 EDA软件会自动为基于状态机的设计选择一个最佳 的起始状态。
2.状态转换的描述
一般使用case语句来描述状态之间的转换, 用case语句表述比用if-else语句更清晰明了。
有限状态机类型 有限状态机的Verilog描述 有限状态机的设计要点
一、两种有限状态机
二、有限状态机的Verilog描述
描述对象:
当前状态、下一状态、输出逻辑
描述方式: 单过程、双过程、三过程
单过程描述方式: 放在一个过程中描述,相当于采用时
钟信号同步,克服输出产生毛刺。但输出 逻辑相对于双过程,要延迟一个时钟周期。
end end
s3: begin if(x==0)
begin state<=s0; z<=0;
end else begin
state<=s4; z<=1; end end
s4: begin if(x==0)
begin state<=s0; end else begin state<=s4; z<=1; end end default:
双过程描述方式: 一个过程 由时钟信号触发的时序过程
(当时钟发生跳变时,状态机状态发生变 化。一般用case语句检查状态机的当前状态; 另一过程是组合过程,对于摩尔型,输出 只与当前状态有关,因此只需用case语句即 可,对米里型,因与当前状态和输入都有 关,因此可用case 语句和 if组合进行描述。

基于Verilog 的有限状态机设计

基于Verilog 的有限状态机设计

基于Verilog 的有限状态机设计与优化1 引言在集成电路的设计过程中, 不论是使用FPGA还是ASIC 来实现, 有限状态机经常是作为一个电路设计的关键部分而出现的. 状态机的功能是否完善( 是否强壮型) 对整个电路会产生重大的影响.有限状态机主要有两种类型: Moore 型状态机和M ealy 型状态机. Moore 型状态机是指输出只与当前状态有关, 与输入信号无直接关系. 而Mealy 型状态机的输出不只与当前状态有关, 还与输入信号有关.文中以目前常用的硬件描述语言Verilog HDL 为基础, 对不同的状态机编码类型和状态机描述风格对状态机性能的影响进行了深入的分析. 分别使用Xilinx ISE 和Design Compiler 对实例进行了综合,分析了面积、速度与功耗的信息, 给出了对于不同类型状态机的最佳编码风格.2 状态机编码状态的编码方式最常用的有二进制码、格雷码和独热码三种, 不同的状态机编码方式对状态机的影响非常大. 如表1 所示.二进制的编码从第一个状态到最后一个状态是按二进制码的顺序排列的, 是一种最普通的编码方式.表1 不同的编码比较十进制码Binary code Gray code One- hot code0 000 000 00011 001 001 00102 010 011 01003 011 010 1000用格雷码进行状态的变换时, 相邻状态转换只有一个状态位发生翻转. 这样就可以消除转换时由多条状态信号线的传输延迟所造成的毛刺, 大大地减少了由一个状态到下一个状态时逻辑的混淆可以降低功耗.one- hot 状态译码简单, 只有1 位是1 其他位为0, 易于修改, 可以减少组合逻辑, 但会使用更多的触发, 增加电路面积.Binary- code、Gray- code 编码使用最少的触发器, 较多的组合逻辑, 而One- hot 编码反之.因此, Binary 和Gray- code 适用于触发器资源较少, 组合电路资源丰富的情况( CPLD) , 对于FP GA 则更适用One- hot code, 因为这样可以充分利用FPGA 丰富的触发器资源. 另外, 小型设计通常使用Binary- code 和Gray- code, 对于大型的设计使用One- hot code 效果更佳.3 状态机的描述方法状态机的描述方法通常有三种: 一段式( one al ways) 、二段式( two always) 和三段式( three always) .3. 1 一段式一段式的状态机描述方法是指将整个状态机写到一个alw ays 模块里, 该模块描述当前状态转移, 又描述状态的输入和输出.由于一段式的描述方法是给STATE 自身赋值, 所以本身就会引入一个周期的延时, 需要在设计中通过预计算考虑进去.一段式的描述方法所有输出都是寄存器输出的, 因此不会产生毛刺, 但是这种组合逻辑和时序逻辑都写到一起的方法是不可取的, 而且在描述当前状态的时候还要考虑到下一状态的输出. 这种描述方法可读性差、难于理解和维护, 不利于时许约束、功能更改及调试, 对于Mealy 型的状态机来说, 容易出现Latches.3. 2 二段式二段式的状态机描述方法是指使用两个always模块, 其中一个always 模块采用同步时序的方式描述当前状态和下一状态的转移, 另一个alw ays 模块采用组合逻辑来描述下一状态和输出向量的赋值.二段式的描述方法比一段式的更合理, 它更易于阅读、理解和维护, 更利于综合并优化代码. 但是它的缺点是第二个alw ays 块组合逻辑的输出会出现毛刺, 影响电路性能.3. 3 三段式三段式的状态机描述方法是由二段式发展而来的, 在二段式两个alw ays 的基础上又增加了一个alw ays 块来描述每个状态的输出, 用寄存器寄存了一拍, 达到同步输出的目的.需要注意的是, 增加的一级寄存器会引入一个周期的延时, 需要在设计中通过预计算考虑进去, 避免逻辑发生错误. 这样一级寄存器的引入, 也就形成了FSMs 输入逻辑的一级流水.引入了组合逻辑寄存, 输出同步不仅会带来运行性能的提升, 还会增加系统的稳定性, 防止输出信号出现毛刺, 防止组合回路的产生.4 实例分析下面以一个简单红绿灯状态转移为例进行分析, 当RESET 信号给出以后进入IDEL 状态, 之后状态机的描述方法通常有三种: 一段式( one al 进入RED 状态, 之后进入GREEN 状态, 之后进入YELLOW 状态, 最后回到RED 状态. Default 时进入IDEL 状态.一4. 1 使用Xilinx ISE 进行分析在使用Xilinx ISE 对例子进行综合的时候, 右键点中综合软件, 选属性选型, 在HDL Options 中有一个优化选项为FSM Encoding Algorithm, 在其下拉菜单中选中AUTO( 默认项) , 工具就可以自动修改设计中的状态机的状态编码, 使其成为对FPGA 来说最优的编码风格.对于本设计来说, 由于只有4 个状态, 所以状态编码被优化成了Gray- code. 但是经过验证, 在状态较多的状态机设计中, 状态编码一般都被优化成One- hot code.通过表2, 对Xilinx ISE 的综合后报表进行分析可以看到, 由于one always 的状态机全部为时序电路,所以最大频率会比two alw ays 和three always 大.在面积方面, two always 型的状态机所占面积最小, three alw ays 稍大, 而one alw ays 型的状态机所用门数最多, 所占面积也最大.对于功耗来说, 使用Xilinx ISE 集成的Xpower进行功耗分析, 所得到的三种状态机编码风格的功耗并不存在明显差异.表2 Xilinx ISE 的综合结果使用门数最大频率one alw ays 8 313. 283MHztwo always 43 312. 891MHzthree alw ays 67 312. 891MHz4. 2 使用Design Compiler 进行分析在使用Design Complier 对所举实例进行分析话时, 分别选取了1always& binary、1always& one - hot、2always& binary、2alw ays& one - hot 、3alw ays& binary、3always& one- hot 等6 种设计, 每个设计分别设定了2 个时钟周期( . ns 和7ns) 进行分析. 综合得到的面积和延时的结果按顺序标在图2、图3 中. 表3、表4 给出了详细的数据.由图2 可见, 2alw ays 在面积上具有明显优势,其次是3alw ays. 由图3 对时序的分析可见, 2alw ays也是具有一定的优势.比较使用Design Compiler 和Xilinx ISE 的综合结果可以发现, 不论是使用FPGA 还是ASIC, tw oalw ays 所占面积总是最小的, 其次是three alw ays,而one alw ays 所占面积最大. 这主要是由于one alw ays 的状态机全部为时序电路, 所以花费的面积最大, three alw ays 由于多采用一级寄存器同步, 所以所花费的面积比two always 的要大一些.5 比较分析通过以上分别使用Xilinx ISE 和Design Compiler 对实例进行的分析, 可见two alw ays 的编码风格存在巨大的优势. 因为Moore 型的状态机输出只有状态寄存器驱动, 状态机所受影响差异不会很大,所以建议对Moore 型状态机采用two alw ays 的编码风格.而Mealy 型状态机, 输出不只与当前状态有关,还与输入信号有关, 输出是组合逻辑的输出, 这样在每个STATE 中产生的信号复杂而且有不同的timeskew , 如果信号直接输出而不引用寄存器同步的话, 在高频的电路中很可能会导致时序上的错误. 所以建议使用three alw ays 风格, 将输出同步一拍.对于one alw ays 的风格, 虽然在一些开源的IP盒中经常见到, 但是通过以上的分析, 可以发现这种状态及描述风格存在着巨大的缺陷.至于状态编码的使用, 对于FPGA 来说建议使用工具自动优化状态机的状态编码, 而对于ASIC 来说, 建议在小型设计中使用Binary- code 和Gray code, 而对于大型的设计则使用One- hot code.6 结束语文中结合了一个Verilog HDL 的实例, 对三种不同的状态机编码和状态机描述方式进行了深入的研究, 分析了其各自的优缺点. 并分别使用Xilinx ISE 和Design Compiler 对一个实例进行了综合, 对面积、速度与功耗进行了分析. 结果表明one alw ays的写法需要被摒弃, two alw ays 的编码风格适合Moore 型状态机, 而three always 的编码风格适合Mealy 型状态机. 文中同时也给出了适合不同设计的最优状态编码。

Verilog 有限状态机设计 ppt课件

Verilog 有限状态机设计 ppt课件
EDA技术与应用
第八章 有限状态机设计
Verilog 有限状态机设计
MOORE状态机 MEALY状态机 有限状态机的几种描述方式 有限状态机的状态编码
8.1 有限状态机
构成
组合逻辑 状态译码、产生输出 时序逻辑 存储状态
分类
Moore 输出是现态的函数 Mealy 输出是现态和输入的函数
always @(state) /*该过程产生输出逻辑*/
begin case(state) S3: z=1'b1; default:z=1'b0;
endcase end endmodule
“101”序列检测器(单过程描述)
module fsm4_seq101(clk,clr,x,z); input clk,clr,x; output reg z; reg[1:0] state; parameter S0=2'b00, S1=2'b01, S2=2'b11, S3=2'b10;/*状态编码,采用格雷(Gray)编码方 式*/
parameter S0=2'b00,S1=2'b01,S2=2'b11,S3=2'b10;
/*状态编码,采用格雷(Gray)编码方式*/
always @(posedge clk or posedge clr) /*该过程定义当前状态*/
begin
if(clr) state<=S0; //异步复位,s0为起始状态
(1)用三个过程描述:即现态(CS)、次态(NS)、 输出逻辑(OL)各用一个always过程描述。
(2)双过程描述(CS+NS、OL双过程描述):使用两 个always过程来描述有限状态机,一个过程描述现态和次 态时序逻辑(CS+NS);另一个过程描述输出逻辑(OL)。

fpga 有限状态机例子

fpga 有限状态机例子

fpga 有限状态机例子有限状态机(Finite State Machine,FSM)是一种常见的设计模式,用于描述和实现具有有限数量状态的对象的行为。

在硬件设计中,有限状态机常常用于描述数字逻辑电路的行为。

以下是一个使用Verilog语言编写的简单有限状态机的例子:verilog复制代码module counter(input clk, reset, output reg [3:0] count);// 定义状态机的状态parameter IDLE = 4'b0000; // 初始状态parameter COUNTER = 4'b0001; // 计数状态// 状态机的当前状态reg [3:0] current_state;// 状态转移逻辑always @(posedge clk or posedge reset) begin if (reset) begincurrent_state <= IDLE; // 如果reset信号为高,则进入IDLE状态end else begincase (current_state)IDLE: beginif (count == 4'b1000) current_state <= COUNTE R; // 如果计数达到8,则进入COUNTER状态endCOUNTER: begincurrent_state <= IDLE; // 在COUNTER状态下,计数完成后回到IDLE状态enddefault: begincurrent_state <= IDLE; // 如果状态机处于未知状态,则强制回到IDLE状态endendcaseendend// 计数逻辑always @(posedge clk) beginif (current_state == COUNTER) count <= count + 1; // 在COUNTER状态下,计数器递增endendmodule在这个例子中,我们定义了一个简单的4位计数器。

有限状态机的verilog例子

有限状态机的verilog例子

有限状态机的verilog例子有限状态机(Finite State Machine, FSM)是数字电路设计中的一种基本构件,它可以用来实现各种复杂的控制逻辑。

在Verilog中,可以用模块(module)来描述一个有限状态机,使用参数(parameters)来定义状态数量和状态转移逻辑。

以下是一个简单的有限状态机的Verilog例子,该FSM有3个状态(S0, S1, S2)和两个输入(clk, rst_n)以及一个输出(next_state, out):```verilogmodule fsm(input wire clk, // 时钟信号input wire rst_n, // 低电平复位信号input wire [1:0] in, // 输入信号,这里位宽为2,可以扩展output reg next_state, // 下一状态输出output reg out // 输出信号);// 状态参数parameter S0 = 2'b00;parameter S1 = 2'b01;parameter S2 = 2'b10;// 状态寄存器reg [1:0] state;// 状态转移逻辑always @(posedge clk or negedge rst_n) beginif (!rst_n) begin// 当处于复位状态时,状态寄存器和输出都初始化为0state <= S0;out <= 1'b0;end else begin// 根据当前状态和输入信号,更新下一状态和输出case (state)S0: beginnext_state <= S1;out <= 1'b1;endS1: beginnext_state <= S2;out <= 1'b0;endS2: beginnext_state <= S0;out <= 1'b1;enddefault: beginnext_state <= S0;out <= 1'b0;endendcaseendendendmodule```在这个例子中:- `clk` 是时钟信号。

Verilog 有限状态机设计(课堂PPT)

Verilog 有限状态机设计(课堂PPT)

begin
case( state )
state0:
out = 3'b001;
state1:
out = 3'b010;
state2:
out = 3'b100;
state3:
out = 3'b111;
default:
out = 3'b001;
endcase
end
endmodule
11
8.2 有限状态机的Verilog描述
begin if(clr) qout<=0;
//异步复位
else case(qout)
3'b000: qout<=3'b001;
3'b001: qout<=3'b010;
3'b010: qout<=3'b011;
3'b011: qout<=3'b100;
3'b100: qout<=3'b000;
default: qout<=3'b000; /*default语句*/
state2 = 2’b11, state3 = 2’b10; // 格雷码
always @( posedge clk or posedge clr ) begin
if( clr ) state <= state0; // 定义初态 state <= next_state; end
8
always @( state or start or step2 or step3 ) // 状态转换
EDA技术与应用
第八章 有限状态机设计
1

基于Verilog HDL的有限状态机的优化设计

基于Verilog HDL的有限状态机的优化设计
态和下一状态 ;
第二个进程组合逻辑 a as l y 模块的设计和二段式 的 w 设计相似 , 但是其只进行输入判断和状态转移规律描述 , 而不进行组合逻辑输出 ; 第三个进程也设计成 同步时序 a as l y 模块 ,采用同 w
步时序逻辑寄存 F M 的输出。 S
4三种状态机的逻辑、 电路 、 仿真分析
mp _t a e — ” jgi u uc O 一 / jg u— i s em r i / p / p t v. ” O” p/ t g r m n _ S m o


图 1 频 采集 图像 0视
图 8内核启动前加载摄 像头驱 动信息
不管你在何时插入 , 以上信息之一都表明 , 出现 摄像
头驱动加载成功 。驱动加载成功后 同时会在 /e dv目录下 产生一个 v eO i o 的设备节点 。 l命令可 以查看 , 图 9 d 用 s 如
所示 。

检验所设计 的 F M 的完备性 ,如果所设 计 的 F M不完 S S 备, 则会进入任意状态 , 仿真时很容易发现。
33三段式(h e — l y ) - T re awa s状态机 三段式状态机的设计 即使用三个进程对状态机进行 描述。第一个 a as l y 模块使用 同步时序描述状态之间的 w 转移 ; 第二个 a as l y 模块使用组合逻辑判 断状 态转移条 w 件, 描述状态转移规律 ; 第三个 a as l y 模块采用同步时序 w
成了远程视频数据 的采集 ,为整个 网络智能家居监控 系
统的实现打下了基础 。
摄像头被驱动后 ,需要编写一个对视频流采集 的应
用程序。 系统 中采用的是 m pg s em, 本 je—t a 这是一个视频 r 流服务器 , 里面有对整个视频采集及处理发送 的过程 。 首 先要 将其移植 到 目标板 上 , 也就 是 ¥ C 4 0平 台 , 3 24 并在 目标板上运行此视频流服务器 , 命令如下 :

Verilog学习----有限状态机的设计的一般步骤

Verilog学习----有限状态机的设计的一般步骤

Verilog学习----有限状态机的设计的⼀般步骤有限状态机的设计的⼀般步骤:(1)逻辑抽象,得出状态转换图。

就是把给出的⼀个实际逻辑关系表⽰为时序逻辑函数,可以⽤状态转换表来描述,也可以⽤状态转换图来描述。

这就需要:1)分析给定的逻辑问题,确定输⼊变量、输出变量以及电路的状态数。

通常是取原因(或条件)作为输⼊变量,取结果作为输出变量。

2)定义输⼊、输出逻辑状态的含意,并将电路状态顺序编号。

3)按照要求列出电路的状态转化表或画出状态图。

这样,就把给定的逻辑问题抽象到⼀个时序逻辑函数了。

(2)状态简化。

如果在状态转换图中出现这样两个状态,它们在相同的的输⼊下转换到同⼀状态去,并得到⼀样的输出,则称为等价状态。

显然等价状态是重复的,可以合并为⼀个。

电路的状态数越少,存储电路也就越简单。

状态化简的⽬的就在于将等价状态尽可能地合并,以得到最简状态图。

(3)状态分配。

状态分配⼜称状态编码。

通常有很多编码⽅法,编码⽅案选择得当,设计的电路可以简单,反之,选择的不好,则设计的电路就会复杂的多。

在实际设计中,须综合考虑电路的复杂度与电路性能之间的折衷。

在触发器资源丰富的FPGA设计中,采⽤独热码既可以使电路性能得到保障⼜可以充分利⽤其触发器数量多的优势,也可以采⽤输出编码的状态指定来简化电路结构,并提⾼状态机的运⾏速度。

(4)选定触发器的类型并求出状态⽅程、驱动⽅程和输出⽅程。

(5)按照⽅程得出逻辑图。

⽤Verilog来描述有限状态机,可以充分发挥硬件描述语⾔的抽象建模能⼒,使⽤always块语句和case(if)等条件语句及赋值语句即可⽅便实现。

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

“101”序列检测器的Verilog描述(三个过程)
always @(state or x) 态*/ begin case (state) S0:begin end S1:begin else end /*该过程定义次
if(x) else if(x)
next_state<=S1; next_state<=S0; next_state<=S1; next_state<=S2;
频率计控制器设计举例
设计一个自动转换量程的频率计控制器,
用Mealy状态机实现。
cntlow = 1
进入100K量程(状态A) reset = 1; std_f_sel = 00 cntlow = 1 进入100K量程(状态C) reset = 1; std_f_sel = 01 cntlow = 1
module 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 = 2’b00, state1 = 2’b01, // 状态编码 state2 = 2’b11, state3 = 2’b10; // 格雷码
always @( posedge clk or posedge clr )
begin
if( clr ) else state <= state0; // 定义初态 state <= next_state;
end
always @( state or start or step2 or step3 ) // 状态转换
状态编码的定义
状态编码的定义方式2:用'define语句定义 'define state1 2'b00 //不要加分号“;” 'define state2 2'b01 'define state3 2'b11 'define state4 2'b10 case(state) 'state1: …; //调用,不要漏掉符号“'” 'state2: …; …… 要注意两种方式定义与调用时的区别,一般情况下,更倾向于 采用方式1来定义状态编码。一般使用case、casez和casex语 句来描述状态之间的转换,用case语句表述比用if-else语句更 清晰明了。
100K量程测量(状态B) reset = 0; std_f_sel = 00 cntover = 1 100K量程测量(状态D) reset = 0; std_f_sel = 01 cntover = 1
进入100K量程(状态E) reset = 1; std_f_sel = 11
1K量程测量(状态D) reset = 0; std_f_sel = 11
米里型(Mealy)状态机
输入 / 输出
现态
次态
Moore型状态图
module fsm(clk,clr,z,qout);//模5计数器 input clk,clr; output reg z; output reg[2:0] qout; always @(posedge clk or posedge clr) //此过程定义状态转换 begin if(clr) qout<=0; //异步复位 else case(qout) 3'b000: qout<=3'b001; 3'b001: qout<=3'b010; 3'b010: qout<=3'b011; 3'b011: qout<=3'b100; 3'b100: qout<=3'b000; default: qout<=3'b000; /*default语句*/ endcase end always @(qout) /*此过程产生输出逻辑*/ begin case(qout) 3'b100: z=1'b1; default:z=1'b0; endcase end endmodule
input clk, clr, start, step2, step3; output[2:0] out; reg[2:0] out; reg[1:0] state, next_state; parameter state0 = 2’b00, state1 = 2’b01, // 状态编码 state2 = 2’b11, state3 = 2’b10; // 格雷码
“101”序列检测器的Verilog描述(三个过程)
module fsm1_seq101(clk,clr,x,z);
input clk,clr,x; output reg z; reg[1:0] state,next_state; parameter S0=2'b00,S1=2'b01,S2=2'b11,S3=2'b10; /*状态编码,采用格雷(Gray)编码方式*/ always @(posedge clk or posedge clr) /*该过程定义当前状态*/ begin if(clr) state<=S0; //异步复位,s0为起始状态 else state<=next_state; end
EDA技术与应用
第八章 有限状Байду номын сангаас机设计
教学重点


MOORE状态机
MEALY状态机


有限状态机的几种描述方式
有限状态机的状态编码
8.1 有限状态机
构成
组合逻辑 状态译码、产生输出
时序逻辑 存储状态
分类
Moore 输出是现态的函数
Mealy 输出是现态和输入的函数
摩尔型(Moore)状态机
“101”序列检测器的Verilog描述(三个过程)
S2:begin if(x) next_state<=S3; else next_state<=S0; end S3:begin if(x) next_state<=S1; else next_state<=S2; end default: next_state<=S0; /*default语句*/ endcase end
8.2 有限状态机的Verilog描述
(1)用三个过程描述:即现态(CS)、次态(NS)、 输出逻辑(OL)各用一个always过程描述。 (2)双过程描述(CS+NS、OL双过程描述):使用两 个always过程来描述有限状态机,一个过程描述现态和次 态时序逻辑(CS+NS);另一个过程描述输出逻辑(OL)。 (3)双过程描述(CS、NS+OL双过程描述):一个过 程用来描述现态(CS);另一个过程描述次态和输出逻辑 (NS+OL)。 (4)单过程描述:在单过程描述方式中,将状态机的现 态、次态和输出逻辑(CS+NS+OL)放在一个always过程 中进行描述。
next_state <= state0;
always @( state ) // 状态译码及输出 begin case( state ) state0: out = 3'b001; state1: out = 3'b010; state2: out = 3'b100; state3: out = 3'b111; default: out = 3'b001; endcase end endmodule
output reg z;
reg[1:0] state; parameter S1=2'b01, S2=2'b11, S0=2'b00,
S3=2'b10;/*状态编码,采用格雷(Gray)编码方
式*/
“101”序列检测器(单过程描述)
always @(posedge clk or posedge clr) Begin if(clr) state<=S0; //异步复位,s0为起始状态 else case(state) S0:begin if(x) begin state<=S1; z=1'b0;end else begin state<=S0; z=1'b0;end end S1:begin if(x) begin state<=S1; z=1'b0;end else begin state<=S2; z=1'b0;end end S2:begin if(x) begin state<=S3; z=1'b0;end else begin state<=S0; z=1'b0;end end S3:begin if(x) begin state<=S1; z=1'b1;end else begin state<=S2; z=1'b1;end end default:begin state<=S0; z=1'b0;end /*default语句*/ endcase end endmodule
always @(state) /*该过程产生输出逻辑*/ begin case(state) S3: z=1'b1; default:z=1'b0; endcase end endmodule
“101”序列检测器(单过程描述)
module fsm4_seq101(clk,clr,x,z); input clk,clr,x;
start = 0 clr = 1 State0 out = 001 step3 = 1 start = 1
相关文档
最新文档