Verilog căn bản: Bài 6: Các loại phép gán trong verilog

Lu ROm

Administrator
Staff member
25 Tháng bảy 2014
481
119
43
32
One piece
vimach.net
**Trong Verilog có hai loại phép gán cơ bản đó là: phép gán liên tục và phép gán thủ tục.Hôm nay mình sẽ giới thiệu phép gán liên tục trước bài sau mình sẽ nói về phép gán thủ tục.

1,Phép gán liên tục
-Phép gán liên tục là phép gán cơ bản nhất trong Verilog.Phép gán liên tục dùng trong cách mạch tổ hợp logic. Phép gán liên tục được dùng để gán các giá trị cho wire của module, hay là cập nhật giá trị của các port(wire). Nó được đặt bên ngoài khối always@ hoặc initial. Lưu ý rằng câu lệnh phép gán liên tục xảy ra đồng thời và liên tục được thực hiện trong suốt quá trình mô phỏng.Thứ tự các lệnh gán không quan trọng.Bất kì thay đổi nào của bên phải phép gán sẽ làm cho giá trị bên trái thay đổi ngay lập tức.

**Cú pháp
net_data_type [ delay ] [ size ]= expression(biểu thức); // khai báo kiểu dữ liệu cho biến.

assign [ #( delay ) ] net_name = expression; // explicit

-- Giải thích cú pháp:
- Net_data_type : kiểu dữ liệu của đầu vào hoặc đầu ra như: wire, reg
- Delay: khoảng thời gian trễ trong các phép gán.
- Size: độ rộng bit của các biến trong phép gán.
- Expression: biểu thức hoặc một biến nào đó.

-- Phép gán liên tục sẽ ngầm khai báo kiểu dữ liệu net cho từng câu lệnh. Một phép gán liên tục đầy đủ thường sử dụng một trong 2 cách: một là khai báo kiểu net, hai là câu lệnh gán liên tục assign.
-- Phép gán assign: phía bên trái của phép gán là một biến còn phía bên phải là một biểu thức. Kiểu dữ liệu bên trái bắt buộc phải là net và bên phải có thể là kiểu net, reg... Phía bên trái tách biệt với phía bên phải bằng kí tự “=”. Gía trị của phía bên trái thay đổi khi giá trị biểu thức bên phải thay đổi.

Example:
Mã:
wire Out;
assign Out = A & B;
assign {COut, Sum} = A + B + CIn;
wire #50 Out = A & B;