T
teja321
Guest
Input til bestyrelsen er 16 Mhz.Derfor bruger SRL Jeg har opdelt det ur til en frekvens på 1 Hz og jeg bruger dette ur til at køre bil LED's i en sekvens.
Code:modul led_counter (CLK, led_out, RST);input CLK, RST;
output reg [3:0] led_out;wire clk_buf;tildele en = 1'b1;
tildele nul = 1'b0;wire [6:0] clk_en;//////////// BUFG INSTANTIATION /////////////////////BUFG BUFG_1 (
. O (clk_buf), / / Clock buffer output
. I (CLK) / / Clock buffer input
);
//////////////////////////////////////////////////
/ / Input ur på 16 Mhz
/ / Divider med 16SRLC16E # (. INIT (16'h0001)) / / Initial Værdi af Shift Register
SRLC16E_1 (
. Q (), / / SRL dataudlaesning
. K15 (clk_en [0]) / / Carry output (forbindelse til næste SRL)
. A0 (en), / / Vælg [0] input
. A1 (en), / / Vælg [1] input
. A2 (en), / / Vælg [2] input
. A3 (en), / / Vælg [3] input
. CE (en) / / Ur give input
. CLK (clk_buf), / / Clock input
. D (clk_en [0]) / / SRL databidrag
);genvar i;generere
for (i = 0; i <6; I = I 1)
begynder: gen_10_srl
/ / Divide by 16 x 10 ^ 6 = 16 Mhz/16_000_000 = 1 Hz
SRLC16E # (. INIT (16'h0001)) / / Initial Værdi af Shift Register
SRLC16E_2 (
. Q (clk_en [i 1]) / / SRL dataudlaesning
. K15 (), / / Carry output (forbindelse til næste SRL)
. A0 (en), / / Vælg [0] input
. A1 (nul), / / Vælg [1] input
. A2 (nul), / / Vælg [2] input
. A3 (en), / / Vælg [3] input
. CE (en) / / Ur give input
. CLK (clk_en ) / / Clock input
. D (clk_en [i 1]) / / SRL databidrag
);
ende
endgeneratereg clk_1s_d;altid @ (posedge clk_buf)
clk_1s_d <= clk_en [6];tildele clk_1s = clk_en [6] & (~ clk_1s_d);altid @ (posedge clk_buf eller posedge RST) begynder
if (RST == 1'b1)
led_out <= 4'b1110;
ellers hvis (clk_1s == 1'b1) begynder
sagen (led_out)
4'b0111: led_out <= 4'b1110;
4'b1110: led_out <= 4'b1101;
4'b1101: led_out <= 4'b1011;
4'b1011: led_out <= 4'b0111;
endcase
ende
endeendmodule
Code:modul led_counter (CLK, led_out, RST);input CLK, RST;
output reg [3:0] led_out;wire clk_buf;tildele en = 1'b1;
tildele nul = 1'b0;wire [6:0] clk_en;//////////// BUFG INSTANTIATION /////////////////////BUFG BUFG_1 (
. O (clk_buf), / / Clock buffer output
. I (CLK) / / Clock buffer input
);
//////////////////////////////////////////////////
/ / Input ur på 16 Mhz
/ / Divider med 16SRLC16E # (. INIT (16'h0001)) / / Initial Værdi af Shift Register
SRLC16E_1 (
. Q (), / / SRL dataudlaesning
. K15 (clk_en [0]) / / Carry output (forbindelse til næste SRL)
. A0 (en), / / Vælg [0] input
. A1 (en), / / Vælg [1] input
. A2 (en), / / Vælg [2] input
. A3 (en), / / Vælg [3] input
. CE (en) / / Ur give input
. CLK (clk_buf), / / Clock input
. D (clk_en [0]) / / SRL databidrag
);genvar i;generere
for (i = 0; i <6; I = I 1)
begynder: gen_10_srl
/ / Divide by 16 x 10 ^ 6 = 16 Mhz/16_000_000 = 1 Hz
SRLC16E # (. INIT (16'h0001)) / / Initial Værdi af Shift Register
SRLC16E_2 (
. Q (clk_en [i 1]) / / SRL dataudlaesning
. K15 (), / / Carry output (forbindelse til næste SRL)
. A0 (en), / / Vælg [0] input
. A1 (nul), / / Vælg [1] input
. A2 (nul), / / Vælg [2] input
. A3 (en), / / Vælg [3] input
. CE (en) / / Ur give input
. CLK (clk_en ) / / Clock input
. D (clk_en [i 1]) / / SRL databidrag
);
ende
endgeneratereg clk_1s_d;altid @ (posedge clk_buf)
clk_1s_d <= clk_en [6];tildele clk_1s = clk_en [6] & (~ clk_1s_d);altid @ (posedge clk_buf eller posedge RST) begynder
if (RST == 1'b1)
led_out <= 4'b1110;
ellers hvis (clk_1s == 1'b1) begynder
sagen (led_out)
4'b0111: led_out <= 4'b1110;
4'b1110: led_out <= 4'b1101;
4'b1101: led_out <= 4'b1011;
4'b1011: led_out <= 4'b0111;
endcase
ende
endeendmodule