教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

Verilog HDL语言设计实验指导书(2004)(7)

来源:网络收集 时间:2026-05-01
导读: 20 会出现一些多余的状态,即一些无效的状态,需要增加default分支项,以便这些状态下能自动回到起始状态。 ? 状态编码的定义可以用parameter或者`define语句。建议采用前者。尽量采用同步电路设计; `define state

20

会出现一些多余的状态,即一些无效的状态,需要增加default分支项,以便这些状态下能自动回到起始状态。

? 状态编码的定义可以用parameter或者`define语句。建议采用前者。尽量采用同步电路设计;

`define state0 2’b00 //不要加分号 `define state1 2’b01 …. case (state)

`state0: …; //不能少“`” ….

? 状态转换一般使用case/casex/casez描述。Case语句比if-else语句更清晰明了。此外,case

语句的最后不要忘了default分支语句以避免锁存器的产生。

2、状态机设计实例

功能是检测一个5位二进制序列“10010”。考虑到序列重叠的可能,有限状态机共提供8个状态(包括初始状态IDLE)。

模块源代码: //seqdet.v

module seqdet(x,z,clk,rst,state);

input x,clk,rst; output z; output[2:0] state; reg[2:0] state; wire z;

parameter IDLE='d0, A='d1, B='d2,C='d3, D='d4,E='d5, F='d6,G='d7;

assign z = ( state==E && x==0 )? 1 : 0; //当x=0时,状态已变为E, //状态为D时,x仍为1。因此

//输出为1的条件为( state==E && x==0 )。

always @(posedge clk)

if(!rst)

begin end

state <= IDLE;

else

casex(state)

IDLE : if(x==1)

begin

21

end

state <= A;

A: if(x==0)

begin end

state <= B;

B: if(x==0)

begin end

state <= C;

else

begin end

state <= F;

C: if(x==1)

begin end

state <= D;

else

begin end

state <= G;

D: if(x==0)

begin end

state <= E;

else

begin end

state <= A;

E: if(x==0)

begin end

state <= C;

else

begin

22

end

state <= A;

F: if(x==1)

begin end

state <= A;

else

begin end

state <= B;

G: if(x==1)

begin end

state <= F;

default:state=IDLE; //缺省状态为初始状态。

endcase

endmodule

测试模块源代码:

//------------------ seqdet.v ------------------- `timescale 1ns/1ns `include \module seqdet_Top;

reg clk,rst; reg[23:0] data; wire[2:0] state; wire z,x;

assign x=data[23]; always #10 clk = ~clk; always @(posedge clk)

data={data[22:0],data[23]};

initial

begin

clk=0; rst=1; #2 rst=0;

23

Verilog HDL语言设计实验指导书(2004)(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/565706.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)