FPGA-VIVADO学习四:使用移位和38译码器实现流水灯
verilog代码以及仿真实现,XC7Z020CLG400
·
本次主要通过3种方法实现流水灯。
方法一:
verilog代码:
`timescale 1ns / 1ps
module led_run(
Clk,
Reset_n,
Led
);
input Clk;
input Reset_n;
output reg [7:0]Led;
reg [24:0]counter;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
counter<=0;
else if(counter==25000-1)
counter<=0;
else
counter<=counter+1'd1;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
Led<=8'b0000_0001;
else if(counter==25000-1)begin
if(Led==8'b1000_0000|8'b0000_0000)
Led<=8'b0000_0001;
else
Led<=Led<<1;
end
endmodule
仿真代码:
`timescale 1ns / 1ns
module led_run_tb( );
reg Clk;
reg Reset_n;
wire [7:0]Led;
led_run led_run_inst0(
.Clk(Clk),
.Reset_n(Reset_n),
.Led(Led)
);
initial Clk=1;
always #10 Clk=~Clk;
initial begin
Reset_n=0;
#201;
Reset_n=1;
#40_000_000;
$stop;
end
endmodule
注意,上面代码是为了方便仿真把counter==25000000-1改成了counter==25000-1,实际板子验证为了方便肉眼观察流水灯应该该回去。
仿真输出结果

板子验证依旧和之前一样的步骤
方法二:
else if(counter==25000-1)begin
if(Led==8'b1000_0000|8'b0000_0000)
Led<=8'b0000_0001;
else
Led<=Led<<1;
end
改为:
else if(counter==25000-1)begin
Led<={Led[6:0],Led[7]};
end
方法三:借助38译码器

在新建代码之前,把之前38译码器的代码加入到项目中并且在接下来的代码里面会实例化
代码:
`timescale 1ns / 1ps
module led_run2(
Clk,
Reset_n,
Led
);
input Clk;
input Reset_n;
output wire [7:0]Led;
reg [24:0]counter;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
counter<=0;
else if(counter==25000-1)
counter<=0;
else
counter<=counter+1'd1;
reg [2:0] counter2;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
counter2<=0;
else if(counter==25000-1)
counter2<=counter2+1'd1;
decoder_3_8 decoder_3_8_inst0(
.A0(counter2[0]),
.A1(counter2[1]),
.A2(counter2[2]),
.Y0(Led[0]),
.Y1(Led[1]),
.Y2(Led[2]),
.Y3(Led[3]),
.Y4(Led[4]),
.Y5(Led[5]),
.Y6(Led[6]),
.Y7(Led[7])
);
endmodule
仿真代码:
`timescale 1ns / 1ns
module led_run2_tb( );
reg Clk;
reg Reset_n;
wire [7:0]Led;
led_run2 led_run2_inst0(
.Clk(Clk),
.Reset_n(Reset_n),
.Led(Led)
);
initial Clk=1;
always #10 Clk=~Clk;
initial begin
Reset_n=0;
#201;
Reset_n=1;
#40_000_000;
$stop;
end
endmodule
仿真结果和之前一样:

最后在板子上实验和之前一样即可。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)