Cấu trúc chung của 1 project design vi mạch

AD ON VOCTI360

verilog logo vocti360.com
No votes yet.
Please wait...

Đây là bài viết tiếp theo trong series verilog đang được xây dựng tại vocti360.com.

Mục lục

verilog và ngôn ngữ C.
verilog có khác C không ?
Kết

Bài này sẽ bàn về cấu trúc của 1 project theo verilog như nào. Để cho dễ hiểu thì mình sẽ so sánh giữa verilog và C (cái C này thì chắc bạn sinh viên các trường công nghệ đều được học. Còn nếu bạn chưa biết C hay bất cứ 1 ngôn ngữ nào khác thì ắt hẳn bài này không dành cho bạn…^^ )

Vậy verilog có gì giống và khác C ?

Và quan trọng là nếu chỉ biết C thì có học verilog được không ?

Ok let’s go…Chúng ta sẽ trả lời từng câu hỏi một.

Verilog và ngôn ngữ C.

Nếu các bạn đã từng học C hay các ngôn ngữ khác đều biết trình biên dịch sẽ biên dịch từ 1 file to nhất và gọi đến các file bên trong nó theo nguyên tắc compile từ trên xuống dưới. Đây là nguyên tắc chung của các ngôn ngữ lập trình. Verilog cũng tuân theo qui tắc này, tức là có 1 file to nhất và trong file này người ta gọi đến các file bên dưới, người ta qui định file này và gọi là top file. Trong verilog người ta thường đặt tên file dưới dạng như top.v (hay tùy theo công ty mà họ có rule riêng). Nhưng dù tên là gì thì khi compile để simulation hay trong synthesis tool (*) ta đều phải set nó là file top. Tóm lại verilog cũng như C khi biên dịch thì sẽ đi từ 1 file lớn nhất rồi đến các file con bên trong.

Vậy verilog có khác C không ?

Tất nhiên là có. Verilog là ngôn ngữ được tạo ra cho lĩnh vực thiết kế vi mạch nên tất nhiên nó phải mang đặc thù của các thiết kế cực cổng, các module IP chuyên biệt.

Cấu trúc chung của 1 project thông thường sẽ như bên dưới:

 Cấu trúc chung của 1 project design vi mạch

Thông thường thì tùy theo từng project mà sẽ có những module khác nữa nhưng cơ bản là như hình phía trên. Xin giải thích một chút về hình phía trên:

  • Top.v: chính là file top mà mình đã nói phía trên. Các Synthesis tool (*) sẽ compile từ file này xuống
  • Core.v: đây là file chứa toàn bộ code của các member RTL trong mô hình top down design trong file này sẽ gọi đến tất cả các module code trong project (block_A.v, block_B.v…)
  • Block_A, Block_B, Block_C, Block_D: Là các module con trong project (thường thì mỗi member sẽ được assign để code cho những module này. Các bạn xem bài mô hình top down design sẽ hiểu rõ hơn nhé! mình đã viết ở bài trước).

Ngoài ra phía ngoài top chúng ta còn có những module như pll module,DDR3 interface, Serdes… đây cũng là những module không được tạo ra bởi việc coding. Bạn hình dung thế này khi nhà sản xuất 1 dòng sản phẩm FPGA họ cũng làm theo sẵng những module “template code ” support đi kèm theo để hỗ trợ cho dòng FPGA của. Bạn chỉ cần vào tool synthesis và generate nó ra một cách tự động. Để hướng dẫn sử dụng các module này các hãng sản xuất chip hỗ trợ các document kèm theo để hướng dẫn cho khách hàng biết và sử dụng gọi là data sheet (thường là free hoặc 1 số thì có phí nhé).

  • pll module: Đây là module tạo xung clk cho project. Trong 1 project có thể có 1 hoặc nhiều module pll tùy theo yêu cầu của project đó.
  • DDR3 interface: DDR3 là 1 loại RAM phổ biến trong công nghiệp. Trong lĩnh vực thiết kế vi mạch nó cũng vô cùng phổ biết. DDR3 interface là 1 giao diện được nhà sản xuất FPGA làm ra để giao tiếp được với RAM DDR3 bên trong.
  • Serdes: Đây cũng là 1 interface dùng để truyền tải data giữa board mạch (Switch với nhau). Mình sẽ nói cụ thể hơn ở phần sau. Vì nó cũng khá là dài dòng.
  • … Ngoài ra còn những interface khác nhưng mình không giới thiêu ở đây. Trong phạm vi bài này mình chỉ muốn đưa ra một mô hình của 1 project verilog  cơ bản là như thế nào. Tránh để quá lan man ahoho…

Biết C thì có học verilog được không ?

Câu trả lời là hoàn toàn được. Vì mình sau khi tốt nghiệp cũng chỉ biết mỗi C ^^ ở mức căn bản thôi. Thậm chí nếu bạn chỉ cần có học 1 ngôn ngữ lập trình bất kì thì bạn cũng có thể học verilog rất dễ dàng. Nên nếu bạn đang học verilog từ con số 0 thì cứ yên tâm đi nhé. Chỉ cần đọc những bài viết tại blog và làm theo, chịu khó thực hành thì sẽ tiến bộ. Thâm chí theo mình là học verilog còn dễ hơn C vì số lệnh, hàm trong verilog là rất ít.

Kết

Bài này kiến thức khá là trừu tượng nhưng khi bạn đã có 1 thơi gian làm việc với verilog đọc lại sẽ cảm thấy dễ hiểu hơn. Ok hôm nay tới đây thôi. Có thời gian sẽ viết tiếp. Nice day all!

 

  • Synthesis tool: mỗi hãng thì họ có 1 tool Synthesis riêng nhưuhera là Quartus, Xilinx là Vivado, ISE…bạn làm việc với FPGA của hãng nào thì phải compile và Synthesis trên tool của hãng đó. Nhưng hiện tại trong lĩnh vực thiết kế vi mạch này nhiều công ty chuyên sản xuất phần mềm họ cho ra đời những tool support simulation riêng hỗ trợ do nhiều dòng FPGA của nhiều hãng khác nhau(Như FPGA của Altera hay Xilinx) đều simualtion được. Ví dụ như modelsim hay NC verilog là những công cụ simulation đắc lực chọ dân thiết kế nhé.

 

No votes yet.
Please wait...
About Vocti360 48 Articles
Là cựu sinh viên của ĐH Bách Khoa TPHCM. Là người đam mê về công nghệ! Blog này là nơi chia sẻ những kiến thức của mình! Hi vọng nó sẽ giúp ích được cho mọi người! Thích đi kết bạn, phượt , du lịch, ... lang thang theo mây theo gió ^^ .Thích chơi guitar và thổi harmonica.

Be the first to comment

Leave a Reply

Your email address will not be published.


*