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à D-FlipFlop…Thiết kế số FPGA bằng ngôn ngữ verilog cũng giống như bạn viết chương trình cho vi điều khiển bằng ngôn ngữ ChoặcAssembly. Học Verilog không khó nếu bạn đẫ có nền tản về một ngôn ngữ nào đó, nó cũng giống tương tự C nên sẽ không khó khăn khi bắt đầu học Verilog. Ngoài Verilog còn có một ngôn ngữ mô tả phần cứng khá phổ biến khác là VHDL ( thông dụng ở châu Âu mình sẽ giới thiệu trong một bài hướng dẫn khác về VHDL). Verilog và VHDL là 2 ngôn ngữ mô tả phần cứng thông dụng nhất hiện nay, bạn có thể chọn một trong 2 ngôn ngữ để có thể học được FPGA hoặc cao hơn là ASIC. Đối với mình thì mình chọn Verilog vì ngôn ngữ này tiếp cận khá dễ và đặc biệt cú pháp rất giống C, một khi học được Verilog bạn có thể học VHDL dễ dàng.

Đang xem: Verilog là gì, verilog khả tổng hợp là gì

*

— 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
— Ở trên là một D-FF viết theo ngôn ngữ Verilog ở mức hành vi (Behavior). Trong Verilog có nhiều mức khác nhau để thiết kế mạch tích hợp như: Register Transfer Level (RTL), mức GATE và một số mức khác. Ở đây mình sẽ giới thiệu và hướng dẫn các bạn theo mức hành vi (Behavior). Còn các mức khác các bạn có thể tham khảo trên mạng để hiểu rõ hơn.- 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 .minion_dancing– Các phần mềm để học verilog:- ISE Design Suite các bạn có thể tải tại đây- 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ình sẽ giải thích từng dòng cho các bạn dễ hiểu:- module congnot (A, B);
=> 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.

Xem thêm: Socket Là Gì ? Socket Thường Được Sử Dụng Ở Đâu? Socket Là Gì

=> 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.

Xem thêm: Trắng, Nâu, Thô, Mật Ong: Loại Đường Thô Là Gì, Đường Mía Thô Dạng Thanh 500G

— Tóm lại cấu trúc dòng đầu tiên là thế này
++ input wire A
: cổng A được khai báo đầu vào kiểu wire. WIRE giống như một đoạn dây điện trong điện tử, trong kỹ thuật số wire là dây dẫn kết nối các module hoặc các cổng lại với nhau. Nếu câu lệnh chỉ có input A thì mặc định máy sẽ hiểu A là kiểu wire. Còn nhiều kiểu dữ liệu khác mình sẽ giới thiệu ở phần sau.hi++ 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 (

*

. =DVậy là xong, trên đây là một vài giới thiệu về ngôn ngữ Verilog và một ví dụ nhỏ cho bài hướng dẫn sau. Mình biết có vài chổ các bạn còn thắc mắc mình sẽ giải đáp các thắc mắc các bạn trong phần tiếp theo hoặc các bạn comt để mình trả lời luôn.minion_happy

Leave a Reply

Your email address will not be published. Required fields are marked *