Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
wafer.jpg

Giới thiệu về FPGA và Ngôn ngữ mô tả phần cứng

E-mail Print PDF
[​IMG]Field Programmable Gate Array (FPGA)

Field Programmable Gate Array là một Chip logic số có thể lập trình được, tức là bạn có thể sử dụng chúng để lập trình cho hầu hết các chức năng của bất kỳ một thiết kế số nào. Đã có nhiều tài liệu trên các website nói về FPGA nhưng ở đây mình muốn các bạn chú ý đến cái tên của nó. Mình thấy trên các website người ta dich chữ "FIELD" là dạng trường. Nhưng ở đây không phải như vậy. FIELD nghĩa là nơi sử dụng con Chip. Field Programmable nghĩa là có thể lập trình được tại nơi của người sử dụng khác với một số Chip là phải lập trình tại nơi sản xuất. FPGA được tạo thành từ một mảng (matrix hay array) các phần tử khả trình nên được gọi là Programmable Gate Array.

Bộ nhớ tĩnh đầu tiên dựa trên FPGA (thường được gọi là SRAM trên nền FPGA) được đề xuất bởi Wahlstrom vào năm 1967. Sau đó bản thương mại của FPGA được Xilinx giới thiệu vào năm 1984. Lúc này nó gồm có một mảng của các khối logic có thể tái cấu hình - Configurable Logic Blocks (CLBs) và các đầu vào ra - I/O (input/output). Chip FPGA đầu tiên chứa 64 CLBs và 58 I/Os. Ngày nay, FPGA có thể chứa khoảng 330,000 CLBs và 1100 I/Os. Phần lớn các sản phẩm FPGA trên thị trường hiện nay đều dựa trên công nghệ SRAM với 2 hãng sản xuất lớn nhất là Xilinx và Altera. Ngoài ra còn có các hãng khác sản xuất FPGA nhưng với mục đích chuyên dụng (Atmel, Actel, Lattice, SiliconBlue,..).

Kiến trúc cơ bản của FPGA bao gồm 3 thành phần chính: khối logic có thể tái cấu hình, Configurable Logic Blocks (CLBs) thực hiện các chức năng logic; các tài nguyên kết nối, Porgrammable Interconnect có thể lập trình để kết nối các đầu vào và đầu ra của các CLB và các khối I/O bên trong; các khối I/O cung cấp giao tiếp giữa các ngoại vi và các đường tín hiêu bên trong.

Dưới đây là một chip FPGA điển hình và từng khối của nó.​

[​IMG]

Cấu trúc cơ bản của FPGA
1. Khối logic có thể tái cấu hình.

Mục đích của việc lập trình khối logic trong FPGA là để cung cấp các tính toán và các phần tử nhớ cơ bản được sử dụng trong hệ thống số. Một phần tử logic cơ bản gồm một mạch tổ hợp có thể lập trình, một Flip-Flop hoặc một chốt (latch). Ngoài khối logic cơ bản đó, nhiều Chip FPGA hiện nay gồm một hỗn hợp các khối khác nhau, một số trong đó chỉ được dùng cho các chức năng cụ thể, chẳng hạn như các khối bộ nhớ chuyên dụng, các bộ nhân (multipliers) hoặc các bộ ghép kênh (multiplexers). Tất nhiên, cấu hình bộ nhớ được sử dụng trên tất cả các khối logic để điều khiển các chức năng cụ thể của mỗi phần tử bên trong khối đó.

2. Tài nguyên kết nối.

Các liên kết trong một FPGA dùng để liên kết các khối logic và I/O lại với nhau để tạo thành một thiết kế. Bao gồm các bộ ghép kênh, các transistor và bộ đệm ba trạng thái. Nhìn chung, các transistor và bộ ghép kênh được dùng trong một cụm logic để kết nối các phần tử logic lại với nhau, trong khi đó cả ba đều được dùng cho các cấu trúc định tuyến bên trong FPGA. Một số FPGA cung cấp nhiều kết nối đơn giản giữa các khối logic, một số khác cung cấp ít kết nối hơn nên định tuyến phức tạp hơn.

3. Khối I/O khả trình.

I/O cung cấp giao tiếp giữa các khối logic và kiến trúc định tuyến đến các thành phần bên ngoài. Một trong những vấn đề quan trọng nhất trong thiết kế kiến trúc I/O là việc lựa chọn các tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽ được hỗ trợ.
[​IMG]
Theo thời gian, các kiến trúc FPGA cơ bản đã được phát triển hơn nữa thông qua việc bổ sung các khối chức năng đặc biệt có thể lập trình, như bộ nhớ trong (Block RAMs), logic số học (ALU), bộ nhân, DSP-48 và thậm chí là bộ vi xử lý nhúng được thêm vào do nhu cầu của các nguồn tài nguyên cho một ứng dụng. Kết quả là nhiều FPGA ngày nay có nhiều nguồn tài nguyên hơn so với các FPGA trước đó.

Mình cũng giới thiệu qua về ngôn ngữ mô tả phần cứng (Hardware Description Language).
Ngôn ngữ mô tả phần cứng bao gồm VHDL, Verilog, SystemC và Handle-C thường được sử dụng để lập trình FPGA. VHDL và Verilog phát triển như là một chuẩn công nghiệp và là hai ngôn ngữ phổ biến nhất hiện nay. Bản thân mình không thể khuyên bạn nên dùng ngôn ngữ nào nhưng có một điều chắc chắn là Xilinx ISE và Altera Quartus đều hỗ trợ VHDL và Verilog.

Nếu bạn mới học lập trình C hay bất kỳ ngôn ngữ nào đó, chương trình kinh điển đó là in dòng chữ "HELLO WORLD" ra màn hình. Dưới đây là chương trình để thực hiện công việc này được viết bằng C và Verilog để các bạn có cái nhìn tổng quan về Verilog.

C code:
Mã:
#include <stdio.h> void main(void) {     printf("HELLO WORLD");     getch(); }
Verilog code:
Mã:
module firstpro(clk, input, output);     initial begin     $display("HELLO WORLD");     #10 $finish;     end endmodule

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

  HotLine: 0972 800 931 Ms Duyên

 
 

Related Articles

Chat Zalo