Khai báo port

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

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

3.6 Khai báo port

3.6.1Giới thiệu

Ta phải khai báo thật tường minh về chiều (input, output hay bidirectional) của mỗi port xuất hiện trong danh sách khai báo port. Trong Verilog ñịnh nghĩa ba loại port khác nhau, ñó là input, output và inout. Loại dữ liệu của port có thể là net hoặc reg. Loai dữ liệu reg chỉ có thể xuất hiện ở port output. Hằng số và biểu thức luôn nằm phía dưới khai báo port.

input: tất cả port input của một module ñược khai báo với một phát biểu input. Loại dữ liệu mặc ñịnh của input port là wire và ñược ñiều khiển bởi cú pháp của wire. Ta có thể khai báo ñộ rộng của một input như một mảng (vector) của những tín hiệu, giống như input b trong ví dụ dưới. Những phát biểu input có thể xuất hiện ở bất cứ vị trí nào trong mô tả thiết kế nhưng chúng phải ñược khai báo trước khi chúng ñược sử dụng. Ví dụ:

input a; input [2:0] b;

output: tất cả port output của một module ñược khai báo với một phát biểu output. Nếu không có một loại dữ liệu khác như là reg, wand,

Lâm Đức Khải University of Information Technology Page 58 wor, hoặc tri ñược khai báo, thì output port sẽ có loại dữ liệu mặc ñịnh là wire và nó cũng ñược ñiều khiển bởi cú pháp của wire. Một phát biểu output có thể xuất hiện ở bất cứ vị trí nào trong mô tả thiết kế, nhưng nó phải ñược khai báo trước khi ñược sử dụng. Ta có thể khai báo ñộ rộng của một output như một mảng (vector) của những tín hiệu. Nếu ta sử dụng loại dữ liệu reg ñể khai báo cho output thì reg phải có cùng ñộ rộng với ñộ rộng của mảng (vector) của tín hiệu. Ví dụ:

output a; output [2:0] b; reg [2:0] b;

inout: ta có thể khai báo port hai chiều (bidirectional) với phát biểu inout. Một port inout có loại dữ liệu là wire và ñược ñiều khiển bởi cú pháp của wire. Ta phải khai báo port inout trước khi nó ñược sử dụng. Ví dụ:

inout a: inout [2:0] b;

3.6.2Ví dụ

Ví dụ 2.11:

module fulladder(cOut, sum, aIn, bIn, cIn); input aIn, bIn, cIn;

Lâm Đức Khải University of Information Technology Page 59 wire aIn, bIn, cIn;

reg cOut, sum; … Endmodule 3.6.3Cú pháp list_of_ports ::= ( port {,port }) port ::= [port_expression]

| . port_identifier ( [port_expression] ) port_expression

::= port_reference

| { port_reference ,port_reference } port_reference

::= port_identifier

| port_identifier[ constant_expression ]

| port_identifier [ msb_constant_expression :lsb_constant_expression ]

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

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