em đang quen làm kit DE1,định lập trình hiển thị ra led 7 đoạn,đoạn code em thế này:
module dem_mp7doan(s1,reset,clk,led,digit);
input s1,reset,clk;
output[7:0]led;
output digit;
reg [7:0]led;
reg [3:0]bcd;
wire digit;
assign digit=1'b1;
always @(posedge clk)
begin
if(reset==1'b1) bcd<=4'b1001;
else if (s1==1'b1)bcd <= bcd-1'b1;
if (bcd==4'b0) bcd<=4'b1001;
end
always @(posedge clk) begin
case(bcd)
4'b0000:led=8'b1000000;
4'b0001:led=8'b1111001;
4'b0010:led=8'b0100100;
4'b0011:led=8'b0110000;
4'b0100:led=8'b0011001;
4'b0101:led=8'b0010010;
4'b0110:led=8'b0000010;
4'b0111:led=8'b1111000;
4'b1000:led=8'b0000000;
4'b1001:led=8'b0010000;
default:led=8'b1111111;
endcase
end
endmodule
(còn thiếu phần tạo trễ để thấy hiển thị trên led), em chưa bit thêm vào đâu, trong quartus thì trong mô phỏng trễ thì dùng #(t), còn để hiển thị thực thì sao hả các huynh, em có nghe nói dùng vòng đếm nhưng chưa bit sao....mong các huynh chỉ giáo ...em chân thành cảm ơn.
module dem_mp7doan(s1,reset,clk,led,digit);
input s1,reset,clk;
output[7:0]led;
output digit;
reg [7:0]led;
reg [3:0]bcd;
wire digit;
assign digit=1'b1;
always @(posedge clk)
begin
if(reset==1'b1) bcd<=4'b1001;
else if (s1==1'b1)bcd <= bcd-1'b1;
if (bcd==4'b0) bcd<=4'b1001;
end
always @(posedge clk) begin
case(bcd)
4'b0000:led=8'b1000000;
4'b0001:led=8'b1111001;
4'b0010:led=8'b0100100;
4'b0011:led=8'b0110000;
4'b0100:led=8'b0011001;
4'b0101:led=8'b0010010;
4'b0110:led=8'b0000010;
4'b0111:led=8'b1111000;
4'b1000:led=8'b0000000;
4'b1001:led=8'b0010000;
default:led=8'b1111111;
endcase
end
endmodule
(còn thiếu phần tạo trễ để thấy hiển thị trên led), em chưa bit thêm vào đâu, trong quartus thì trong mô phỏng trễ thì dùng #(t), còn để hiển thị thực thì sao hả các huynh, em có nghe nói dùng vòng đếm nhưng chưa bit sao....mong các huynh chỉ giáo ...em chân thành cảm ơn.
Comment