用Verilog代码实现FSM(1)

一、实验目的:用Verilog代码实现FSM。

二、实验内容:课本216页的例6.16。

三、实验代码:

module sequence(Clock,Resetn,w,z);
  input Clock,Resetn,w;
  output z;
  reg [3:1]y,Y;
  parameter [3:1]A=3'b000,B=3'b001,C=3'b010,D=3'b011,E=3'b100;
  //Define the next state combinational circuit
  always @(w,y)
    case(y)
        A:if(w)      Y=D;
           else       Y=B;
         B:if(w)      Y=D;
           else       Y=C;
         C:if(w)      Y=D;
           else       Y=C;
         D:if(w)      Y=E;
           else       Y=B;
         E:if(w)      Y=E;
           else       Y=B;
        default:     Y=3'bxxx;
     endcase 
      //Define the sequential block
    always @(negedge Resetn,posedge Clock)
       if (Resetn==0)  y<=A;
        else y<=Y;
         //Define output
    assign z=(y==C)|(y==E);
    endmodule 

四、实验步骤:

1、建立工程:打开Quartus软件,在菜单栏中点击【File】→【New Project Wizard】,会弹出工程设置对话框,工程名和新建顶层模块名正常应该是空白的,这里填sequence,此名称要与设计模块中的module名称一致。填写好名称后,依次点击【Next】 即可,选择【Empty project】。进入下一步,选择添加文件。在Simulation 一栏中选择ModelSim工具。最后会有一个简单的报告,结束后就可以完成新工程的建立。

2、设计编译:在【File】菜单中选择【New】,选择Verilog HDL文件,建立一个新的设计文件,设计文件复制到软件中。将该文件保存后,在快捷工具栏中找到快捷按钮【Start Compilation】,点击分析。

3、联合仿真:在菜单栏找到按钮【RTL Simulation】,单击,进入Modelsim,单击【Wave—Default】栏的每一栏,出现【Define Clock】菜单栏,将Period栏的数字改一下,全部栏改完后,改动菜单栏的【Run Length】中的数据,单击【Run Length】栏旁边的【Run】按钮。

五、实验部分截屏:

六、实验链接:https://www.bilibili.com/video/BV12B4y1K7p6/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值