學(xué)習(xí)芯片: EP4CE6F17C8
一、使用verilog實(shí)現(xiàn)電亮fpga板上的四個(gè)燈
verilog代碼如下:
module led1(
output wire [3:0] led_on
);
assign led_on = 4'b1111 ;
endmodule
配置引腳,查看芯片的指導(dǎo)書:
燒錄運(yùn)行結(jié)果如下:
如圖我們可以看見開發(fā)板上四個(gè)led燈同時(shí)被電亮。
二、進(jìn)階——使led燈間隔一秒閃爍
代碼如下:
module led1(
input wire clk,//時(shí)鐘信號(hào),50MHz
input wire rst_n,//復(fù)位信號(hào),下降沿有效
output wire [3:0] led_on
);
parameter MAX1S = 26'd50_000_000;
reg [25:0] cnt1s;//計(jì)數(shù)寄存器器1s
reg [3:0] led_r;//led信號(hào)寄存器
always @(posedge clk or negedge rst_n) begin
if (!rst_n ) begin//復(fù)位,重新計(jì)數(shù)
cnt1s<=26'd0;
end
else if (cnt1s == MAX1S-1'b1)begin//記到最大數(shù),重新計(jì)數(shù)
cnt1s<=26'd0;
end
else begin//其他情況+1
cnt1s <= cnt1s + 1'd1;
end
end
always @(posedge clk or negedge rst_n) begin
if (!rst_n ) begin//復(fù)位
led_r = 4'b0000;
end
else if (cnt1s == MAX1S-1'b1)begin//記到最大數(shù),翻轉(zhuǎn)
led_r = ~led_r;
end
else begin
led_r = led_r;
end
end
assign led_on = led_r;
endmodule
配置引腳,查看clock和key的引腳:
運(yùn)行結(jié)果如下圖:
此時(shí)可以看見四個(gè)led燈同時(shí)閃爍。
三、進(jìn)階——流水燈及跑馬燈實(shí)現(xiàn)
流水燈代碼實(shí)現(xiàn):
module led1(
input wire clk,//時(shí)鐘信號(hào),50MHz
input wire rst_n,//復(fù)位信號(hào),下降沿有效
output wire [3:0] led_on
);
parameter MAXS = 25'd25_000_000;
reg [24:0] cnt1s;//計(jì)數(shù)寄存器器0.5s
reg [3:0] led_r;//led信號(hào)寄存器
always @(posedge clk or negedge rst_n) begin
if (!rst_n ) begin//復(fù)位,重新計(jì)數(shù)
cnt1s<=26'd0;
end
else if (cnt1s == MAXS-1'b1)begin//記到最大數(shù),重新計(jì)數(shù)
cnt1s<=26'd0;
end
else begin//其他情況+1
cnt1s <= cnt1s + 1'd1;
end
end
always @(posedge clk or negedge rst_n) begin
if (!rst_n ) begin//復(fù)位
led_r = 4'b0001;
end
else if (cnt1s == MAXS-1'b1)begin//記到最大數(shù),翻轉(zhuǎn)
led_r = {led_r[2:0],led_r[3]};
end
else begin
led_r = led_r;
end
end
assign led_on = led_r;
endmodule
實(shí)驗(yàn)效果圖如下:
此時(shí)可以看見led燈依次閃爍。
跑馬燈代碼:文章來源:http://www.zghlxwxcb.cn/news/detail-579108.html
module led1(
input wire clk,//時(shí)鐘信號(hào),50MHz
input wire rst_n,//復(fù)位信號(hào),下降沿有效
output wire [3:0] led_on
);
parameter MAXS = 25'd25_000_000;
reg [24:0] cnt1s;//計(jì)數(shù)寄存器器0.5s
reg [3:0] led_r;//led信號(hào)寄存器
always @(posedge clk or negedge rst_n) begin
if (!rst_n ) begin//復(fù)位,重新計(jì)數(shù)
cnt1s<=26'd0;
end
else if (cnt1s == MAXS-1'b1)begin//記到最大數(shù),重新計(jì)數(shù)
cnt1s<=26'd0;
end
else begin//其他情況+1
cnt1s <= cnt1s + 1'd1;
end
end
always @(posedge clk or negedge rst_n) begin
if (!rst_n ) begin//復(fù)位
led_r = 4'b0001;
end
else if (cnt1s == MAXS-1'b1)begin//記到最大數(shù),翻轉(zhuǎn)
led_r = {led_r[2:0],~led_r[3]};
end
else begin
led_r = led_r;
end
end
assign led_on = led_r;
endmodule
實(shí)驗(yàn)效果圖如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-579108.html
到了這里,關(guān)于FPGA學(xué)習(xí)——verilog實(shí)現(xiàn)流水燈的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!