北航verilog实验报告 - 图文

实验八 利用有限状态机进行时序逻辑的设计

一.实验目的:

1.掌握利用有限状态机实现一般时序逻辑分析的方法。 2.掌握用Verilog编写可综合的有限状态机的标准模板。 3.掌握用Verilog编写状态机模块的测试文件的一般方法。 二.实验设备:

安装Modelsim-6.2b的PC机。 三.实验内容:

设计一个简单的状态机,功能是检测一个5位的二进制序列“10010”。

四.实验代码

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; always @(posedge clk) if(!rst) begin

state<=IDLE; end else

casex(state)

IDLE:if(x==1) begin

state<=A; end A:if(x==0) begin

state<=B; end

B:if(x==0) begin

state<=C; end else begin

state<=F; end C:if(x==1) begin

state<=D; end else

begin

state<=G; end D:if(x==0) begin

state<=E; end else

begin

state<=A; end E:if(x==0) begin

state<=C; end else begin

state<=A; end F:if(x==1) begin

state<=A; end else begin

state<=B; end G:if(x==1) begin

state<=F; end

default:state<=IDLE; endcase endmodule

`timescale 1ns/1ns 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[30]}; initial begin clk=0; rst=1; #2 rst=0; #30 rst=1;

data='b1100_1001_0000_1001_0100; #500 $stop; end

seqdet m(x,z,clk,rst,state); endmodule

五.综合仿真结果

实验九 楼梯灯

一.实验目的:

掌握用Verilog编写简单程序 二.实验设备:

安装Modelsim-6.2b的PC机。 三.实验内容:

? 楼下到楼上依次有3个感应灯:灯1、灯2、灯3。当行人上下楼梯时,各个灯感应到后自动点亮,若在8s内感应信号消失,则点亮8s,若感应信号存在时间超过8s,则感应信号消失4s后灯自动关闭。

? 任务1:做出如上逻辑电路设计并仿真;

? 任务2:考虑去抖情况,对于感应信号到达存在毛刺(小于0.5s),设计合适逻辑并剔出。

任务3:若为节约能源,下一个灯点亮的同时将自动关闭上一个灯,做出如上逻辑设计并仿真(仅考虑一个人的情况)

四.实验代码

module stairled(light,switch,clk10,rst); input clk10,rst; input[2:0]switch; output[2:0]light;

reg[2:0]state1,state2,state3; reg[7:0]count1,count2,count3; reg[2:0]light;

reg[2:0]counter1,counter2,counter3;

parameter

IDLE1=3'b000,IDLE2=3'b000,IDLE3=3'b000,

state1_main=3'b001,state2_main=3'b001,state3_main=3'b001, state1_pos=3'b010,state2_pos=3'b010,state3_pos=3'b010, state1_neg=3'b011,state2_neg=3'b011,state3_neg=3'b011,

联系客服:779662525#qq.com(#替换为@)