北航电子电路设计数字部分实验报告(6)

2020-06-07 15:38

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; #30 rst=1;

data='b1001_1111_0111_1110; #500 $stop; end

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

实验九 楼梯灯

实验目的

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

任务1:做出如上逻辑电路设计并仿真; 任务2:考虑去抖情况,对于感应信号到达存在毛刺(小于0.5s),设计合适逻辑并剔出。 任务3:若为节约能源,下一个灯点亮的同时将自动关闭上一个灯,做出如上逻辑设计并仿真(仅考虑一个人的情况)

实验仿真结果

实验代码

主程序

module light_All(clk10,rst,switch,light);

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]count_1,count_2,count_3; reg[2:0]light;

parameter

state1_start=3'b000,state2_start=3'b000,state3_start=3'b000, state1_work=3'b001,state2_work=3'b001,state3_work=3'b001, state1_up=3'b010,state2_up=3'b010,state3_up=3'b010,

state1_down=3'b011,state2_down=3'b011,state3_down=3'b011, state1_other=3'b100,state2_other=3'b100,state3_other=3'b100;

always@(posedge clk10) if(!rst) begin

state1<=state1_start;

count1<=8'b0; count_1<=3'b0; end else

if(switch[0]=='b1&&count_1<4) count_1<=count_1+1; else

case(state1)

state1_start:

if(switch[0]=='b1) begin

state1<=state1_up; count1<=78; end else begin

state1<=state1_start; light[0]<='b0; end

state1_work: if(count1>0) begin

count1<=count1-1;

if(switch[0]=='b0&&(state2==3'b010||state3==3'b010)) begin

light[0]<='b0;

state1<=state1_down; end end else

if(switch[0]=='b0) begin

state1<=state1_down; end else begin

state1<=state1_other; count1<=39; end

state1_other:

if(switch[0]=='b1)

state1<=state1_other; else

if(count1>0) begin

count1<=count1-1;

if(switch[0]=='b0&&(state2==3'b010||state3==3'b010)) begin

light[0]<='b0;

state1<=state1_down; end end else

state1<=state1_down;

state1_down: begin

light[0]<='b0; count_1<=3'b0; state1<=state1_start; end

state1_up: begin

light[0]<='b1;

state1<=state1_work; end

default:

state1<=state1_start; endcase

always@(posedge clk10) if(!rst) begin

state2<=state2_start; count2<=8'b0; count_2<=3'b0; end else

if(switch[1]=='b1&&count_2<4) count_2<=count_2+1; else

case(state2)

state2_start:

if(switch[1]=='b1) begin

state2<=state2_up; count2<=78; end else begin

state2<=state2_start; light[1]<='b0; end

state2_work: if(count2>0) begin

count2<=count2-1;

if(switch[1]=='b0&&(state1==3'b010||state3==3'b010)) begin

light[1]<='b0;

state2<=state2_down; end end else

if(switch[1]=='b0) begin

state2<=state2_down; end else begin

state2<=state2_other; count2<=39; end

state2_other:

if(switch[1]=='b1)

state2<=state2_other; else

if(count2>0) begin

count2<=count2-1;

if(switch[1]=='b0&&(state1==3'b010||state3==3'b010)) begin


北航电子电路设计数字部分实验报告(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:宁要小城镇一间房不要大城市一张床 一辩稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: