You are on page 1of 2

module CHIA_CK1HZ(

input ckht,
output ck1hz) ;

integer d1hz_r;
integer d1hz_n;
parameter N = 50000000;

initial
begin
d1hz_n=0;
d1hz_r=0;
end

module random_number_generator(
input clk, // Nguồn xung
input reset, // Nút reset
input start, // Nút start
output reg [3:0] num // Số ngẫu nhiên được tạo ra
);

// Khởi tạo biến đếm ban đầu


reg [3:0] count = 4'b0000;

// Quá trình tạo số ngẫu nhiên


always @ (posedge clk) begin
// Nếu nút reset được nhấn, reset lại biến đếm
if (reset) begin
count <= 4'b0000;
num <= 4'b0000;
end
// Nếu nút start được nhấn,
else if (start) begin
// Tăng biến đếm lên 1
count <= count + 1;
// Nếu biến đếm đạt đến giá trị 16, reset lại biến đếm và tạo số ngẫu nhiên mới
if (count == 4'hF) begin
count <= 4'b0000;
num <= $random % 10; // Sử dụng hàm random để tạo số ngẫu nhiên
end
end
end

endmodule
module LED_decoder(
input [3:0] in,
output reg [6:0] out );

always @*
begin
case(in)
4'b0000: out = 7'b1000000; //0
4'b0001: out = 7'b1111001; //1
4'b0010: out = 7'b0100100; //2
4'b0011: out = 7'b0110000; //3
4'b0100: out = 7'b0011001; //4
4'b0101: out = 7'b0010010; //5
4'b0110: out = 7'b0000010; //6
4'b0111: out = 7'b1111000; //7
4'b1000: out = 7'b0000000; //8
4'b1001: out = 7'b0010000; //9
default: out = 7'b1111111;
endcase
end

endmodule

module SONGAUNHIEN(
input ckht,rs,str,
output [6:0] sseg );

wire [3:0] donvi;


wire ckl;

CHIA_CK1HZ IC1(.ckht(ckht),. ck1hz(ckl));

random_number_generator IC2(.ckl(ckl),.reset(rs),.start(str),.num(donvi));

LED_decoder IC3(.in(donvi),.out(sseg));

endmodule

You might also like