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
-
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
-
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 mèomướpDạ cháu thấy bác vi... nói đúng ấy ạ. Cùng 1 vận tốc, đường kính, số lượng cánh, độ dày cánh quét không khí. Thì cánh lớn sẽ múc được nhìu hơn ạ. Nếu cánh lớn đến 1 mức độ nào đó thậm chí chồng lên nhau thì nó sẽ thành 1...
-
Channel: Điện tử gia dụng
hôm nay, 20:37 -
-
bởi nguyendinhvanÔi hồi.
Đường hướng nghiên cứu như thế này, dễ trở thành nhà "khí động học" mất !...-
Channel: Điện tử gia dụng
hôm nay, 20:17 -
-
bởi vi van phamSai lầm từ cơ bản.
Nguyên tắc cánh quạt là "múc" không khí trước cánh quạt quăng lên "Bờ". Khi cánh quạt di chuyển để lại vị trí có áp suất thấp, không khí ở ngoài tràn vào. Cánh quạt thứ 2 làm việc giống thế, rồi đến cánh quạt...-
Channel: Điện tử gia dụng
hôm nay, 17:15 -
-
bởi dinhthuong80Chắc phải mua thêm cái máy đo vận tốc gió nữa rồi!!!
-
Channel: Điện tử gia dụng
hôm nay, 16:45 -
-
bởi dinhthuong80"nếu tăng nó lên đến 90 độ thì không thổi nữa, tăng tiếp trên 90 độ nó sẽ trở thành quạt hút thôi."
là sau khi tăng lên thành 90° rồi, tiếp tục tăng nữa cho nó trên 90° đó bác, như hình vẽ xấu tệ ở dưới ạ!
-Màu xanh: dạ,...-
Channel: Điện tử gia dụng
hôm nay, 16:19 -
-
bởi vi van pham- Màu đỏ: Tăng nó lên 90 độ thì ko thổi.Tăng tiếp lên 90 độ nữa thì thành quạt hút là sao ? không hiểu.
- Màu xanh: Cùng là độ dày d, cánh nhỏ, cánh lớn, ảnh hưởng đến lưu lượng gió rất nhiều . Cái cánh quạt không phải...-
Channel: Điện tử gia dụng
hôm nay, 16:04 -
-
bởi dinhthuong801. Có lẽ cháu nói "ma sát" ở đây chưa được rõ ràng.
Ma sát ở đây chỉ là ma sát trượt qua mặt cánh quạt, và lực ma sát do không khí này có phương vuông góc với trục quay.
Như thế, nếu cùng độ dày d, tức cùng độ...-
Channel: Điện tử gia dụng
hôm nay, 15:09 -
-
bởi appongthoMã lỗi H-60, H-61 Máy giặt Panasonic là gì?
https://appongtho.com/tu-xoa-loi-h-6...iat-panasonic/
Mã lỗi H-60 và H-61 trên máy giặt Panasonic là những cảnh báo về sự cố liên quan đến hệ thống phát hiện rò rỉ điện, trong đó H-60...-
Channel: Điện tử gia dụng
hôm nay, 09:56 -
Comment