Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
semicon_lab.jpg

Ví dụ về các cách viết bộ decoder (3-8) bằng Verilog HDL

E-mail Print PDF

Mạch decoder là mạch tổ hợp, được sử dụng rất phổ biến trong thiết kế IC. Mục đích của mạch này là xác định dữ liệu tại ngõ ra, dựa trên địa chỉ, dữ liệu tại ngõ vào và các tín hiệu điều khiển khác. Mạch decoder có thể được tìm thấy hầu hết các chuẩn bus, dùng để đọc dữ liệu từ thanh ghi.

 Ví dụ về cách viết decoder, dựa trên dữ liệu ngõ vào và địa chỉ như sau:

 Cách viết 1: Sử dụng assign statement.

 module dec_assign_ex (addr,data_out);
input [2:0] addr;
output [7:0] data_out;
wire [7:0] data_out;
assign data_out = (addr == 3’b000 ) ? 8’b0000_0001 :
(addr == 3’b001 ) ? 8’b0000_0010 :
(addr == 3’b010 ) ? 8’b0000_0100 :
(addr == 3’b011 ) ? 8’b0000_1000 :
(addr == 3’b100 ) ? 8’b0001_0000 :
(addr == 3’b101 ) ? 8’b0010_0000 :
(addr == 3’b110 ) ? 8’b0100_0000 :
(addr == 3’b111 ) ? 8’b1000_0000 : 8’h00;

endmodule

 Cách viết 2: sử dụng always statement

 module dec_always_ex (addr,data_out);
input [2:0] addr;
output [7:0] data_out;
reg [7:0] data_out;

always @ (addr)
begin
data_out = 8’h00;
case (addr)
3’b001 : data_out = 8’b0000_0001;
3’b010 : data_out = 8’b0000_0010;
3’b011 : data_out = 8’b0000_0100;
3’b100 : data_out = 8’b0000_1000;
3’b101 : data_out = 8’b0001_0000;
3’b110 : data_out = 8’b0100_0000;
3’b111 : data_out = 8’b1000_0000;
endcase
end

endmodule

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

  HotLine: 0972 800 931 Ms Duyên

 

Related Articles

Chat Zalo