1,Giới thiệu
-- Verilog là ngôn ngữ mô tả phần cứng (Hardware Description Language)được sử dụng trong việc thiết kế các các hệ thống số, các mạch tích hợp: như bộ nhớ RAM, bộ vi xử lý hoặc đơn giản là

-- Một điều khác giữa Verilog và C/C++ là không những Verilog thực hiền tuần tự mà còn thực hiện song song. Điều này cs thể khó hiểu, nên mình nói ngắn gọn thế này nó cũng giống như một con sông có nhiều nhánh nhỏ khi có một dòng nước chảy vào dòng sông chính thì cùng một lúc các nhánh sông nhỏ cũng sẽ có nước chảy hoặc các nhánh nhỏ ảnh hưởng qua lại với nhau như một vòng tròn. Trong Verilog người ta xem con sông chính và các nhánh là module ( khối) và các nhánh là module con.
MÃ:
module d_ff( D, clk, Q, W ); input D; input clk; output reg Q; output W; always @ (posedge clk) begin Q <= D; end assign W = ~Q; endmodule
- Mức Behavioral: Mức hành vi mô tả một hệ thống số bằng những thuật toán (một số lệnh giống ngôn ngữ C như: if, case, for,while…) .Mỗi thực tuấn riêng sẽ là một mạch tuần tự và các lệnh được biểu diễn dưới dạng các biểu thức : out = (a^b)|c .

-- Các phần mềm để học verilog:
- ISE Design Suite các bạn có thể tải Please login or register to view links
- Notepad++
2, Ví dụ thiết kế số bằng Verilog
-- Sau đây mình sẽ giới thiệu sơ qua về cấu trúc lập trình bằng ngôn ngữ Verilog. Ở đây mình thiết kế cổng NOT bằng ngôn ngữ Verilog như sau:
Bảng sự thật:

Cổng NOT được xem là một module có một cổng vào và một cổng ra có thuật toán như sau: B = ! A .
MÃ:
module congnot (A, B); input wire A; output wire B; assign B = !A; endmodule
- module congnot (A,

=> module… endmodule : là từ khóa nó giống như một cái khối chứa đựng tất cả các chương trình của mình.
=> congnot : là tên module bạn có thể đặt tùy ý nhưng không được viết chữ số ỏ đầu và một số ký tự đặt biệt.
=> A: Cổng vào bạn liệt kê tất cả các cổng vào của bài thiết kế của bạn.
=> B: Cổng ra tương tự như cổng vào.
-- Tóm lại cấu trúc dòng đầu tiên là thế này
MÃ:
Module tenmodule (cổng vào, cổng ra);
++ output wire B: cổng B được khai báo đầu ra kiểu wire.
++ assign B = ! A; :gán B bằng đảo của A. ở đây assign là một từ khóa chỉ sự gán cổng này với cổng khác trong mạch tổ hợp có cấu trúc là : assign … = ….;
Chú ý cũng giống như C, Verilog cũng phân biệt chữ hoa và chữ thường, các từ khóa các bạn nên viết chữ thường.Và sau mỗi câu lệnh phải có dấu chấm phẩy (;) .

Bạn có đam mê ngành thiết kế vi mạch
Liên hệ đăng ký tham gia Hội Thảo & Khóa Học Thiết Kế Vi Mạch
HotLine: 0972 800 931 Ms Duyên