Mọi người cho e xin code verilog hiển thị đồng hồ đếm giờ,phút,giây trên led 7 đoạn ứng dụng trên bộ kit altera De2 với ạ.Em mới học về FPGA nên chưa biết viết thế nào?Anh nào biết chỉ em với,em xin cảm ơn rất nhiều^^.
Thông báo
Collapse
No announcement yet.
Cho e xin code hiển thị đồng hồ đếm thời gian trên led 7 đoạn của Kit Altera De2???
Collapse
X
-
Em mới viết code bộ đếm tăng từ 1 đến 9 hiển thị trên led 7 đoạn.Các anh vào xem hộ em sai ở đâu nhé mà em giả lập không đúng?
Code viết = verilog:
module bcd_tang (clock, rst, s1, led);
input clock, s1, rst;
output [6:0] led;
reg [6:0] led;
reg [3:0] bcd;
always @(posedge clock )
begin
if (rst == 1'b1) bcd <= 4'b0;
else if (s1 == 1'b1) bcd <= bcd + 1'b1;
if (bcd == 4'b1001) bcd <= 4'b0000;
end
always @(posedge clock)
begin
case(bcd)
4'b0000: led = 7'b1111110;
4'b0001: led = 7'b0110000;
4'b0010: led = 7'b1101101;
4'b0011: led = 7'b1111001;
4'b0100: led = 7'b0110011;
4'b0101: led = 7'b1011011;
4'b0110: led = 7'b1011111;
4'b0111: led = 7'b1110000;
4'b1000: led = 7'b1111111;
4'b1001: led = 7'b1110011;
default: led = 7'b1111111;
endcase
end
endmodule
-
Bạn chạy mô phỏng thế nào mà không đúng?Nguyên văn bởi tigertiger Xem bài viếtEm mới viết code bộ đếm tăng từ 1 đến 9 hiển thị trên led 7 đoạn.Các anh vào xem hộ em sai ở đâu nhé mà em giả lập không đúng?
Code viết = verilog:
module bcd_tang (clock, rst, s1, led);
input clock, s1, rst;
output [6:0] led;
reg [6:0] led;
reg [3:0] bcd;
always @(posedge clock )
begin
if (rst == 1'b1) bcd <= 4'b0;
else if (s1 == 1'b1) bcd <= bcd + 1'b1;
if (bcd == 4'b1001) bcd <= 4'b0000;
end
always @(posedge clock)
begin
case(bcd)
4'b0000: led = 7'b1111110;
4'b0001: led = 7'b0110000;
4'b0010: led = 7'b1101101;
4'b0011: led = 7'b1111001;
4'b0100: led = 7'b0110011;
4'b0101: led = 7'b1011011;
4'b0110: led = 7'b1011111;
4'b0111: led = 7'b1110000;
4'b1000: led = 7'b1111111;
4'b1001: led = 7'b1110011;
default: led = 7'b1111111;
endcase
end
endmodule
mình nghĩ bạn mới học nên viết code theo các bước như thế này cho dễ:
Viết yêu cầu:
- Mạch của bạn cần bộ đếm với cổng :
- reset: bất chấp tất cả các cổng khác, trả bộ đếm về 0
- Run: khi run=1, đếm từ 0 tới 9, khi đến 9 thì trả về 0, khi run = 0 không làm gì.
Để viết thanh ghi có reset đồng bộ:
always@(posedge clk)
if(rst)
counter <= 0;
else begin
end
Để viết thanh ghi có reset đồng bộ và chân bật (run), và luôn đếm
always@(posedge clk)
if(rst)
counter <= 0;
else if(run) begin
counter <= counter + 1;
end
Để viết thanh ghi có reset đồng bộ, chân run và đếm tới khi == 9 thì quay lại:
Để viết thanh ghi có reset đồng bộ và chân bật (run), và luôn đếm
always@(posedge clk)
if(rst)
counter <= 0;
else if(run) begin
if(overflow) counter <= 0; else
counter <= counter + 1;
end
assign overflow = (counter==9)?1:0;
Ý mình muốn nói là khi mô tả, bạn nên theo bản mẫu (template). Nếu bạn muốn counter của bạn chạy phức tạp hơn thì bạn mô tả giữa phần begin và end của run.
Code của bạn không sai (nếu bạn biết bạn đang làm gì), dễ sai nếu bạn không hình dung được mạch của bạn sẽ được tổng hợp ra như thế nào.
Để tiện bạn nên viết một phần decode, ở phần testbench, bạn kết nối phần này vào các chân LED, phần code này sẽ in ra 1 2 3 4 ... Mình copy đoạn code cho bạn:
case(rv7Lo)
7'b0110000:rv4LoDigit = 4'h1;
7'b1101101:rv4LoDigit = 4'h2;
7'b1111001:rv4LoDigit = 4'h3;
7'b0110011:rv4LoDigit = 4'h4;
7'b1011011:rv4LoDigit = 4'h5;
7'b1011111:rv4LoDigit = 4'h6;
7'b1110000:rv4LoDigit = 4'h7;
7'b1111111:rv4LoDigit = 4'h8;
7'b1111011:rv4LoDigit = 4'h9;
7'b1110111:rv4LoDigit = 4'hA;
7'b0011111:rv4LoDigit = 4'hB;
7'b1001110:rv4LoDigit = 4'hC;
7'b0111101:rv4LoDigit = 4'hD;
7'b1001111:rv4LoDigit = 4'hE;
7'b1000111:rv4LoDigit = 4'hF;
7'b1111110:rv4LoDigit = 4'h0;
default: begin
rv4LoDigit = 4'hz;
$display("Error Decode Values = 0b%b",rv7Lo);
end
endcase
$display("Values = 0x%h%h",rv4HiDigit,rv4LoDigit);
Comment
-
$display là lệnh in ra .... dùng trong mô phỏng. Tất cả các ctrinh mô phỏng nào hỗ trợ Verilog đều hỗ trợ lệnh này.Nguyên văn bởi boyzzun Xem bài viếtbác Jefflieu cho em hỏi cái $display kia thì chỉ cho mô phỏng hay là dùng cho cả mạch thật nữa, em chỉ học theo giáo trình của thày giáo nhưng cũng chưa thấy qua lệnh này
$display không phải là "synthesizable code" nên ... các ctrinh synthesize sẽ bỏ qua lệnh này, không làm gì hết. Cũng dễ hiểu thôi, cứ tự hỏi board mạch thật sẽ "xuất" ra cái gì, bằng cách nào thì thấy là nó không làm được
Comment
Bài viết mới nhất
Collapse
-
bởi Nexus 6Pe dùng KiCad 9.0 và đã xuất được file PDF mạch in gòi bác...
-
Channel: Điện tử công suất
Hôm qua, 16:25 -
-
bởi bqvietBấm chuột vào các tệp sẽ bật ra chương trình tương ứng. Nên dùng bản KiCAD sau
https://kicad-downloads.s3.cern.ch/a...ll_version.exe-
Channel: Điện tử công suất
Hôm qua, 14:57 -
-
bởi Nexus 6Pe cài KiCAD 2012 khi mở ra nó chỉ hiện ntn...
-
Channel: Điện tử công suất
Hôm qua, 11:20 -
-
bởi bqvietThực tế bạn nào không tải được tệp nén thiết kế thì căn cứ theo ảnh sơ đồ mạch có thể vẽ lại sơ đồ bằng chương trình EDA nào đó rồi làm mạch được mà. Càng thêm quen thuộc với sơ đồ. Sau đó tùy ý chuyển sang TinySwitch-III hoặc TinySwitch-4.
-
Channel: Điện tử công suất
02-02-2026, 21:13 -
-
bởi Nexus 6PCó ai có bản in của mạch in không, cho em xin file để đi in với ạ
-
Channel: Điện tử công suất
02-02-2026, 14:37 -
-
bởi Nexus 6PLink hư rồi ạ, xin lại link của bản thiết kế cũ ạ...
-
Channel: Điện tử công suất
02-02-2026, 10:48 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Dạ, cảm ơn bác đã nghe qua và có lời khích lệ cháu ạ.
Thật lòng cháu không dám nhận hai danh hiệu Kỹ sư và Nhạc sĩ đâu ạ, vì phải thật hiểu sâu nắm vững cơ, chứ thực lực cháu đây chỉ là biết chút ít thôi à. Về phần...-
Channel: Tâm tình dân kỹ thuật
29-01-2026, 11:58 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi bqvietĐơn giản thì có trải nghiệm này
http://www.dientuvietnam.net/forums/...ch%C3%AA%CC%81
Chỉ phần cứng,...-
Channel: Điện tử công suất
27-01-2026, 21:32 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi Nexus 6Pphức tạp quá, nếu mà có mạch làm sẵn thì ngon, e dùng 2 tấm pv loại 18v 55w thôi bác
-
Channel: Điện tử công suất
26-01-2026, 08:52 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi Nexus 6Pcảm ơn bác nhiều nha, để e nghiên cứu
-
Channel: Điện tử công suất
26-01-2026, 07:38 -

Comment