途牛電子商務網(wǎng)站建設想學管理方面的培訓班
fpga流水燈的設計
思路:外部時鐘頻率50mhz,若要實現(xiàn)每隔0.5s閃爍一次,則使用內部計數(shù)器計數(shù)到24999999拉高一個周期電平,當電平被拉高的時候,進行LED燈電平的設置,每次檢測到高電平,就進行一位LED燈的設置,進行循環(huán)設置,就形成了流水燈的設計。
module flow_led
#(parameter cnt_max =25'd24999999) //0.5s閃爍一下
(input wire clk,
input wire rst,
output reg [3:0] led);reg [24:0] cnt;
reg cnt_flag;always@(posedge clk or negedge rst )beginif(rst==1'b0)cnt<=25'd0;else if(cnt==cnt_max)cnt<=25'd0;elsecnt<=cnt+25'd1;endalways@(posedge clk or negedge rst)beginif(rst==1'b0)cnt_flag<=1'b0;else if(cnt == (cnt_max)-1)cnt_flag<=1'b1;elsecnt_flag<=1'b0;endalways@(posedge clk or negedge rst)beginif(rst==1'b0)led <=4'b1110;else if(cnt_flag==1'b1 && led ==4'b1110)led <=4'b1101;else if(cnt_flag==1'b1 && led ==4'b1101)led <=4'b1011;else if(cnt_flag==1'b1 && led ==4'b1011)led <=4'b0111;else if(cnt_flag==1'b1 && led ==4'b0111)led <=4'b1110; endendmodule
測試代碼
?
`timescale 1ns/1ns
`include"flow_led.v"module top();reg clk;
reg rst;
wire [3:0] led;initialbeginrst = 1'b0;clk = 1'b0;#20rst = 1'b1;endalways #10 clk=~clk;flow_led
#(.cnt_max (25'd24))
led_inst(clk,rst,led);endmodule