基于vivado以实现led flash为案例
led_flash.v
module led_flash(
Clk,
Reset_n,
Led
);
input Clk;
input Reset_n;
output reg Led;
reg [24:0] counter;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
counter <= 0;
else if(counter == 24999999)
counter <= 0;
else
counter <= counter +1'd1;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
Led <= 0;
else if(counter == 24999999)
Led <= !Led;
endmodule
led_flash_tb.v
`timescale 1ns/1ns
module led_flash_tb;
reg Clk;
reg Reset_n;
wire Led;
led_flash led_flash(
.Clk(Clk),
.Reset_n(Reset_n),
.Led(Led)
);
initial Clk = 1;
always #10 Clk = !Clk;
initial begin
Reset_n = 0;
#201;
Reset_n = 1;
#2000000000;
$stop;
end
endmodule
学习收获
<= 非阻塞赋值 在判断always@(posedge Clk or negedge Reset_n)时,使用并行,与c++不同
学习时间
1h verilog
今日推歌
那丝也有春天 大鹏
今日总结
今天是学习Verilog的第三天,比起前两天对vivado的使用更加熟练。目前所运用的数电知识比较简单,但是数电的学习还是该继续,希望明天能记得学习。