数字电路设计@heyian910
verilog数字电路实验 交通灯
源码
module main(
input clk,
input clr,
input start,
input stopa,
input stopb,
input pause,
output [3:0] AN,
output [7:0] SEG,
output reg [2:0] LA,LB//红 黄 绿
);
reg [1:0] state1,state2;
reg newstart = 1'b1; //
reg [15:0] Data;
reg [3:0] Data_4;
wire [1:0] BIT_SEL;
reg Increment;
integer clk_num=0;
delay_5ms uu1(clk,BIT_SEL);
SMG uu2(Data_4,BIT_SEL,SEG,AN);
initial begin Data <= 16'b0; Increment = 1'b0;end
always@(posedge clk)
begin
if(clk_num<25000000) //设置数字跳转频率
begin
clk_num = clk_num+1;
Increment = 1'b0;
end
else
begin
clk_num = 0;
Increment = 1'b1;
end
end
always@(posedge clr or posedge Increment )
if(clr)
begin
Data <= 16'b1010101010101010;//输出“----”
LA <= 3'b100;
LB <= 3'b100;
state1 <= 2'b00;
state2 <= 2'b00;
newstart = 1'b1;
end
else if(stopa)
begin
Data <= 16'b1111111111111111;//熄灭
LA <= 3'b100;
LB <= 3'b001;
end
else if(stopb)
begin
Data <= 16'b1111111111111111;//熄灭
LA <= 3'b001;
LB <= 3'b100;
end
else if(start) //系统开始运行
begin
if(!pause)
begin
if(newstart==1'b1)
begin
Data <=16'b0010000000110000;//30s 40s 111111111111111111111111
LA<=3'b