Register Transfer Level là gì

Chào mừng các bạn đã đến với series học verilog căn bản. Thật ra đây là bài viết đầu tiên bạn nên đọc trước khi bắt tay vào nghiên cứu ngôn ngữ verilog.

Đã định viết bài này từ lâu nhưng mình chưa làm được vì không muốn viết một cách hời hợt, copy paste từ đâu đó về thì nó không có ý nghĩa gì cả [vì thay vì đọc ở blog này thì đọc ở blog khác cũng được] mình không muốn như vậy. Mà viết 1 bài hẳn hòi cho các bạn chưa biết gì thì thời gian của mình không cho phép. Vậy nên:
+ Mình sẽ viết từng phần 1 vậy có thời gian khi nào thì viết khi đó.
+ Sẽ viết chi tiết cho những bạn mới học [chưa biết gì có thể hiểu].

Mục lục

Verilog là gì ?
Lợi ích của việc học verilog
Một số công ty design chip lớn tại Việt Nam
Lịch sử của ngôn ngữ verilog
Các thuật ngữ cơ bản của verilog
Không dài dòng nữa mình sẽ đi vào vấn đề luôn cho đỡ mất thời gian:

Verilog là gì ?

Verilog là ngôn ngữ để miêu tả phần cứng [Hardware Description Language] được xây dựng nhằm thiết kế các hệ thống số, mạch tích hợp. [theo wiki nhé] Nói vòng vòng như vậy nhưng thật ra hiểu 1 cách đơn giản là như thế này: + Chắc các bạn học điện,điện tử, máy tính...đều đã có background về môn kĩ thuật số nó là AND, OR, XOR,NOT, D-Filplop, mạch encode, decode, xung clock đồng bộ... + Verilog chính là cái được định nghĩa ra để biểu diễn những phần tử trên. Hết... Như vậy việc bạn lập trình bằng verilog chính là việc tổ hợp lại các phần tử trên đây theo 1 trật tự nhất định. Thông qua các tool synthesis nó sẽ đưa về lại các mạchAND, OR, XOR,NOT, D-Filplop... như trên. Như vậy việc tổ hợp này chính là "It 's up to u!!!". Nghĩa là bạn học verilog để code [hay tạo ra những tổ hợp này]. Bạn thông minh code giỏi thì mạch nó tạo ra ít logic chạy đúng, bỏ lên board đúng. Bạn code "lầy" thì tools nó buit "lầy" theo và logic nhiều, dẫn đến lên board nhiều issue. [Cái này thì còn liên quan đến cả quá trình làm ra 1 con chip nữa. mình sẽ viết 1 bài riêng chứ không lan man ở đây].

Lợi ích của việc học verilog

So với các ngôn ngữ khác như PHP, JS, để làm web hoặc C,C++ thì verilog không phổ biến và được ưa chuộng bằng. Một là nó không được giảng dạy ở các trường [mà dẫu có cũng thiên về lý thuyết. Đa số các trường dạy C là chính]. Hai các công ty vế vi mạch có chi nhánh tại việt nam không nhiều. Nên hầu hết chỉ những bạn làm luận văn , đồ án theo hướng này mới có kinh nghiệm về nó. Tuy vậy nếu các bạn thông thạo về verilog thí đó là một lợi thế không nhỏ trên con đường "code dạo làm giàu" của mình ^^ vì:
+ Verilog là ngôn ngữ chạy trên FPGA, ASIC nên nó thích hợp cho những design lớn mà vi điều khiển không đáp ứng được.
+ Số lượng công ty design chip ở Việt Nam tuy không quá lớn nhưng ở các nước như Sin, USA, Ấn độ, Taiwan thì rất nhiều. Nếu bạn biết chút tiếng anh cùng với khả năng lập trình tốt có thể xin vào các công ty này, ra nước ngoài làm. Mình đã từng thấy rất nhiều đàn anh như vậy.
+ Verilog không phức tạp và nhiều hàm, thư viện như C hay các ngôn ngữ khác nên chỉ cần có kiến thức về kĩ thuật số sẽ dễ dàng tiếp cận [tất nhiên là để trở thành chuyên gia thì phải rèn luyện nhé ^^] + Cuối cùng đây là 1 nghề mà bạn có thể gắn bó lâu dài. Nếu bạn cố gắng bạn sẽ có được những thứ bạn muốn. Tất nhiên là bạn phải thật sự đam mê nhé ^^.

Một số công ty design chip lớn tại Việt Nam

+ Renesas Design VietNam: công ty này của Janpan, hồi mình học bách khoa TPHCM nó tuyển mỗi năm rất nhiều [cả trăm người chia làm 2 3 đợt gì đó].
+ Arrive Technology: Công ty của USA. Đây là công ty thiên về verilog luôn, làm top-down design nên sẽ học được rất nhiếu nếu bạn là newbie.
+ Applied Micro Vietnam [AMCC]: Mảng Chip của công ty này chủ yếu là team verification thôi, mình nghĩ vậy. Chưa làm bao giờ nên không dám chém gió nhiều.
+ ESilicon + TMA Solution: Việt nam company nhé
+ Marvell VietNam: Nghe nói là hấp dẫn, nhiều thử thách nhưng chưa làm nên không dám chém. + Trung Tâm Nghiên Cứu Thiết Kế Và Đào Tạo Vi Mạch [ICDREC] ...

Lịch sử của ngôn ngữ verilog

Cái này không quan trọng lắm nhưng cũng đọc cho biết đường mà chém gió" nhé!

Ban đầu Verilog HDL [sau này gọi là Verilog cho tiện] được phát minh bởi Getway Design Automation và được giới thiệu lần đầu tiên vào năm 1984. Năm 1989 được mua lại bởi Cadence, sau đó Verilog được phát hành miễn phí. Tổ chức Open Verilog International [OVI] đã được thành lập nhằm kiểm soát các đặc tả ngôn ngữ. Năm 1995, OVI Verilog đã được thông qua bởi IEEE như là một chuẩn mới của hiệp hội. Năm 2001, IEEE đã giới thiệu phiên bản mới của Verilog và hiện tại đang là phiên bản được sử dụng rộng rãi nhất - Verilog HDL 2001. Năm 2005, SystemVerilog được giới thiệu như là một sự mở rộng của Verilog với các kỹ thuật kiểm tra hướng đối tượng. Năm 2009, IEEE kết hợp chuẩn Verilog với SystemVerilog thành một chuẩn duy nhất: IEEE 1800-2009. Và hiện tại, chuẩn mới nhất là: 1800-2012 - IEEE Standard for SystemVerilog--Unified Hardware Design, Specification, and Verification Language. [trích thegioivimach.com]. Theo wiki thì chuẩn 2012 vẫn là mới nhất và chưa có bản mới hơn nhé!

Các thuật ngữ cơ bản của verilog

Đây là những thuật ngữ cơ bản mà bạn cần phải nhớ:
+ Implement: Là quá trình bạn coding và thực hiện chỉnh sửa code thông qua simulation.
+ Simualation: Là quá trình kiểm tra 1 design rtl có thỏa theo yêu cầu ban đầu hay không. Việc bày được thực hiện bằng cách bạn dùng code [có thể là verilog or systemverilog... tùy nơi] tạo ra cá trường hợp giả lập để xem thử design của bạn có match với yêu cầu ban đầu hay không.
+ Synchthesis: Là quá trình chuyển đổi từ code của bạn sang ngôn ngữ phần cứng. Việc này thực hiện thông qua các tool kèm theo của nhà sản xuất dòng FPGA đó.
+ RTL: là viết tắt của Register Transfer Level có nghĩa là chuyển đổi thanh ghi ở mức cực cổng. Khi bạn code xong và đem synthesis code của bạn sẽ được biên dịch thành các tổ hợpAND, OR, XOR,NOT, D-Filplop...đ1o chính là chuyển đổi mức cổng.
+ FPGA:Field-programmable gate array [FPGA] là một loại mạch tích hợp cỡ lớn dùng cấu trúc mảng phần tử logic mà người dùng có thể lập trình được. [Chữ field ở đây muốn chỉ đến khả năng tái lập trình "bên ngoài" của người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máy bán dẫn]. Vi mạch FPGA được cấu thành từ các bộ phận: Các khối logic cơ bản lập trình được [logic block] Hệ thống mạch liên kết lập trình được. Khối vào/ra [IO Pads]. Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý... [Theo wiki]
+ ASIC: Viết tắt của application-specific integrated circuit trong tiếng Anh, là một thuật ngữ chỉ các vi mạch tích hợp chuyên dụng trong điện tử học.ASIC là một vi mạch IC được thiết kế dành cho một ứng dụng cụ thể. ASIC ngày nay được ứng dụng hầu như khắp mọi nơi, ví dụ như vi xử lý của điện thoại di động, vi xử lý trong các máy móc tự động, các phương tiện truyền thông, xe cộ, tàu vũ trụ, các hệ thống xử lý, các dây chuyền công nghiệp, v.v.. [Theo wiki] Viết thì dài dòng vậy bạn hiểu nôm na FPGA/ASIC là các con chip làm ra để có thể load được code của bạn lên và chạy. Tùy theo project, nhu cầu, công ty mà họ sẽ xài FPGA hay ASIC. Mỗi cái có ưu nhược điểm riêng. Khi có thời gian mình sẽ chia sẻ thêm nề cái này [Hoặc ban serach google cũng có nhiều bài so sánh về 2 cái này ^^].
+ Image : Là file có được sau quá trình synthesis, mã hóa từ code của bạn.
+ Onboard : Sau khi syhthesis các bạn sẽ load image trên lên 1 board mạch [là 1 embedded system chứa FPGA/AISC, power, SFP...] và check thử trên board để xem kết quả có như mình mong muốn hay không. ...

Còn nhiều mình sẽ bổ sung khi cần thiết. Hiện tại nhiêu đó đủ rồi ^^ không nhiều nó rối. Tạm thời hôm nay tới đây mình sẽ dành thời gian và viết tiếp.

Hãy comment ý kiến của mình bên dưới bài viết nhé!Rất vui được thảo luận cùng mọi người.
[To Be Continued ^^].

Video liên quan

Chủ Đề