Khai báo net

Một phần của tài liệu Thiết kế mạch số với vhdl & verilog pps (Trang 42 - 49)

Chương3 Loại dữ liệu trong Verilog 3.1Khái quát

3.4 Khai báo net

3.4.1Giới thiệu

Net là một trong nhiều loại dữ liệu trong ngôn ngữ mô tả Verilog dùng ñể mô tả dây kết nối vật lí trong mạch ñiện. Net sẽ kết nối những linh kiện ở mức cổng ñược gọi ra, những module ñược gọi ra và những phép gán nối tiếp. Ngôn ngữ Verilog cho phép ñọc giá trị từ một net từ bên trong những mô tả hành vi, nhưng ta không thể gán một giá trị từ một net bên trong những mô tả hành vi. ( Một khối always là một loại ñặc biệt của khối begin…end). Một net sẽ không lưu giữ giá trị của nó. Nó phải ñược ñiều khiển bởi một trong hai cách sau.

Lâm Đức Khải University of Information Technology Page 43

• Bằng việc kết nối net ñến ngõ ra của một cổng hay một module.

• Bằng việc gán một giá trịñến net trong một phép gán nối tiếp.

Những loại net khác nhau ñược ñịnh nghĩa trong Verilog ñược mô tả bên dưới và trong những bảng ở hình 2.1 sẽ tóm tắt chức năng của chúng. Sự phân giải là một qui ñịnh ñể phân giải những giá trị với những bộ ñiều khiển sau cũng ñược giải thích trong bảng ở trang kế.

• Wire một net với giá trị 0,1,x và sự phân giải ñược dựa trên sự tương ñương.

• Wand một net với giá trị 0,1,x và sự phân giải của wired and

• Wor một net với giá trị 0,1,x và sự phân giải của wired or

• Tri một net với giá trị 0,1,x,z và sự phân giải của bus tri-state

• Tri0 một net với giá trị 0,1,x,z và sự phân giải của bus tri-state và một giá trị mặc ñịnh là 0 khi không ñược ñiều khiển

• Tri1 một net với giá trị 0,1,x,z và sự phân giải của bus tri-state và một giá trị mặc ñịnh là 1 khi không ñược ñiều khiển

• Trior một net với giá trị 0,1,x,z và sự phân giải của tri-state cho giá trị z-non-z sử dụng hàm ‘or’ của giá trị non-z

• Triand một net với giá trị 0,1,x,z và sự phân giải của tri-state cho giá trị z-non-z sử dụng hàm ‘and’ của giá trị non-z

• Trireg một net với giá trị 0,1,x,z và sự phân giải của tri-state cùng với giá trị lưu trữñiện tích (giá trị trước ñược dùng ñể phân giải giá trị mới)

• Supply0, supply1 (gnd và vdd) tri/wire 0 1 X Z 0 0 X X 0 1 X 1 X 1 X X X X X Z 0 1 X X triand/wand 0 1 X Z 0 0 0 0 0

Lâm Đức Khải University of Information Technology Page 44 1 0 1 X 1 X 0 X X X Z 0 1 X Z trior/wor 0 1 X Z 0 0 1 X 0 1 1 1 1 1 X X 1 X X Z 0 1 X Z tri1 0 1 X Z 0 0 X X 0 1 X 1 X 1 X X X X X Z 0 1 X 1 tri0 0 1 X Z 0 0 0 0 0 1 X 1 X 1 X X X X X Z 0 1 X 0 trireg 0 1 X Z 0 0 1 X 0 1 1 1 1 1 X X 1 X X Z 0 1 X P

Lâm Đức Khải University of Information Technology Page 45

3.4.2Wire

Loại dữ liệu wire ñịnh nghĩa một loại ñơn giản là ñể kết nối giữa hai linh kiện. Dữ liệu wire dùng cho những net mà ñược ñiều khiển bởi một cổng linh kiện ñơn hay trong phép gán nối tiếp (continuous assignments). Trong ví dụ 2.3, những khai báo 2-wire ñược tạo ra. Khai báo ñầu tiên mô tả wire ñơn ( scalar wire ) w. Khai báo thứ hai mô tả một mảng (vector) w2 với 3 bits. Bit trọng số cao nhất (MSB) của nó có trọng số là 2 và bit trọng số thấp nhất (ISB) có trọng số là 0.

Ví dụ 2.3 wire w1;

wire [2:0] w2;

3.4.3Tri net

Dữ liệu tri thì hoàn toàn giống với dữ liệu wire về cú pháp sử dụng và chức năng tuy nhiên nó khác với dữ liệu wire ở chỗ, dữ liệu tri ñược dùng cho những net ñược ñiều khiển bởi nhiều cổng linh kiện ngõ ra. Loại dữ liệu tri (tri-state) là loại dữ liệu ñặc biệt của wire trong ñó sự phân giải giá trị của net ñược ñiều khiển bởi nhiều linh kiện ñiều khiển ñược thực hiện bằng việc sử dụng những qui luật của bus tri-state. Tất cả các biến mà ñiều khiển net tri phải có giá trị Z (tổng trở cao), ngoại trừ một biến. Biến ñơn này xác ñịnh giá trị của net tri.

Trong ví dụ 2.6, ba biến ñiều khiển biến out. Chúng ñược thiết lập trong module khác ñể chỉ một linh kiện ñiều khiển tích cực trong một thời ñiểm.

Lâm Đức Khải University of Information Technology Page 46 Module tri_test (out, a, b,c);

Input [1:0] select, a, b, c; Output out;

Tri out;

Assign out = a ; tạo kết nối cho net tri Assign out = b;

Assign out = c; Endmodule

Module abc (a, b, c, select) Output a, b, c;

Input [1:0] select;

Always @(select) begin

A = 1’bz; // thiết lập tất cả các biến có giá trị Z B = 1’bz;

C = 1’bz;

Case (select) // chỉ thiết lập một biến non-Z 2’b00: a = 1’b1;

Lâm Đức Khải University of Information Technology Page 47 2’b01: b = 1’b0; 2’b10: c = 1’b1; Endcase End Endmodule

Module top_tri_test ( out, a, b, c, select); Input [1:0] select;

Input a, b, c; Output out; Tri out;

Abc (a, b, c, select); Tri_test (out, a, b, c); endmodule

3.4.4Wired net

Wired nets bao gồm những loại dữ liệu wor, wand, trior và triand. Chúng ñược dủng ñể mô hình giá trị logic của net. Những wired net trên có

Lâm Đức Khải University of Information Technology Page 48 bảng sự thật khác nhau ñể phân giải những xung ñột nếu xảy ra khi có nhiều cổng linh kiện cùng ñiều khiển một net.

3.4.4.1 Wand/triand nets

Wand/triand là loại dữ liệu ñặc biệt của wire dùng hàm and ñể tìm giá trị kết quả khi nhiều linh kiện ñiều khiển một net, hay nói cách khác nếu có bất kì ngõ ra linh kiện ñiều khiển nào có giá trị 0 thì giá trị của net ñược ñiều khiển sẽ là 0. Trong ví dụ 2.4, hai biến ñiều khiển biến c. Giá trị của out ñược xác ñịnh bằng hàm logic and giữa i1 và i2.

Ví dụ 2.4

Module wand_test (out, i1, i2); Input i1, i2;

Ouput out; Wand out; Assign out = i1; Assign out = i2; Endmodule

Ta có thể gán một giá trị trì hoãn trong khai báo wand, và ta có thể sử dụng những từ khóa ñơn (scalar) và mảng (vector) cho việc mô phỏng.

Lâm Đức Khải University of Information Technology Page 49

3.4.4.2 Wor/Trior

Loại dữ liệu wor /trior là loại dữ liệu ñặc biệt của wire dùng hàm or ñể tìm giá trị kết quả khi nhiều linh kiện ñiều khiển một net, hay nói cách khác nếu có bất kì ngõ ra linh kiện ñiều khiển nào có giá trị 1 thì giá trị của net ñược ñiều khiển sẽ là 1. Trong ví dụ 2.5, hai biến ñiều khiển biến c. Giá trị của out ñược xác ñịnh bằng hàm logic OR giữa i1 và i2.

Ví dụ 2.5

module wor_test(i1, i2); input i1, i2;

ouput out; wor out;

assign out = i1; assign out = i2; endmodule

3.4.5Unresolved nets 3.4.6Trireg net

Một phần của tài liệu Thiết kế mạch số với vhdl & verilog pps (Trang 42 - 49)