NỘI DUNG
Công nghệ FPGA
1. FPGA là gì?
FPGA là từ viết tắt của cụm từ tiếng Anh “Field Programmable Gate Array”, được dùng để chỉ một loại mạch tích hợp (tên tiếng Anh là “Integrated Circuit” viết tắt là IC) số mà sau khi được sản xuất chế tạo có khả năng lập trình để thiết lập cấu trúc các mạch điển tử bên trong nó thành bất cứ một loại mạch điện hoặc hệ thống xử lý số mong muốn nào. Từ “Field” trong cụm từ FPGA mang nghĩa rằng, chúng ta có thể tạo ra một vi mạch cho hệ thống mạch điện tử số mà chúng ta vừa thiết kế ra ngay tại phòng thí nghiệm bằng một vi mạch FPGA mà không cần phải gửi chúng tới các nhà máy chế tạo vi mạch.
Cấu trúc điển hình của một vi mạch FPGA được mô tả trong Hình 4, gồm 3 khối chính: các khối logic, các khối I/O dùng cho việc kết nối mạch bên trong chip tới các chân nối bên ngoài vi mạch, và các dây nối và chuyển tạo thành một mạng liên kết để kết nối các khối logic và các khối I/O với nhau. Bên cạnh đó, các FPGA hiện nay đều tích hợp các khối phần cứng chuyên dụng chằng hạn các khối xử lý DSP, bộ vi xử lý 32-bit, … nhằm đáp ứng việc xây dựng các hệ thống xử lý hiệu năng cao của người dùng. Các khối logic được sắp xếp thành một mảng 2 chiều, và các dây liên kết được được tổ chức thành các kênh định tuyến giữa các hàng và các cột của các khối logic. Có 2 loại khối chuyển mạch trong cấu trúc của FPGA: các khối chuyển mạch nằm lân cận một khối logic theo phương ngang và phương dọc được dùng để kết nối cổng vào/ra của khối logic tới các kênh định tuyến; các hộp chuyển mạch nằm ở vị trí góc chéo của các khối logic dùng để kết nối các dây nối giữa kênh định tuyến nằm ngàng và kênh định tuyến nàm dọc với nhau. Khả năng tái cấu hình của FPGA để thực hiện bất kỳ một mạch số nào có được nhờ khả năng tái cấu hình lại của các khối logic và mạng liên kết. Số lượng các khối logic và tài nguyên định tuyến là biên thiên theo từng loại vi mạch và nhà xuất bán ra trên thị trường.
2. Khái niệm phần cứng và phần mềm trong FPGA
Như chúng ta biết, một hệ thống máy tính có thể vận hành được là bởi 2 thành phần không thể thiếu đó là phần cứng và phần mềm. Trong các định nghĩa truyền thống, phần cứng ám chỉ tới sự thực hiện
vật lý của máy tính. Phần cứng thường là một tập hợp các mạch điện tử và có thể cả một số các linh kiện cơ khí được lắp ráp trên một bo mạch in. Phần cứng là một đối tượng vật lý nên nó chiếm một không gian nhất định và chúng ta có thể nhìn thấy được. Một đặc trưng khác của phần cứng là tất cả các linh kiện của một hệ thống máy tính có thể đồng thời hoạt động. Phần mềm, ngược lại, là thông tin và không tự biểu lộ nó trong thế giới vật lý. Phần mềm chứa các thông tin xác định
hoạt động của máy tính đang chạy phần mềm đó. Phần mềm được được mô tả bằng một ngôn ngữ lập trình (ví dụ C, Matlab, …), sau đó được biên dịch tạo thành một chuỗi bit nhị và phải được nạp vào trong bộ nhớ của máy tính trước khi máy tính hoạt động.
vật lý của máy tính. Phần cứng thường là một tập hợp các mạch điện tử và có thể cả một số các linh kiện cơ khí được lắp ráp trên một bo mạch in. Phần cứng là một đối tượng vật lý nên nó chiếm một không gian nhất định và chúng ta có thể nhìn thấy được. Một đặc trưng khác của phần cứng là tất cả các linh kiện của một hệ thống máy tính có thể đồng thời hoạt động. Phần mềm, ngược lại, là thông tin và không tự biểu lộ nó trong thế giới vật lý. Phần mềm chứa các thông tin xác định
hoạt động của máy tính đang chạy phần mềm đó. Phần mềm được được mô tả bằng một ngôn ngữ lập trình (ví dụ C, Matlab, …), sau đó được biên dịch tạo thành một chuỗi bit nhị và phải được nạp vào trong bộ nhớ của máy tính trước khi máy tính hoạt động.
Với sự xuất hiện của công nghệ FPGA, khái niệm về phần cứng và phần mềm như ở trên không còn chính xác nữa. Phần cứng cũng được mô tả bằng một ngôn ngữ như VHDL hoặc Verilog. Bản mô tả này được tổng hợp bởi một trình biên dịch để tạo một chuỗi các bit nhị phân, sau đó được nạp vào trong chip FPGA để xác định chức năng mạch điện tử trên chip FPGA. Quá trình này là tương tự quá trình tạo ra phần mềm theo định nghĩa truyền thống. Do đó, trong ngữ cảnh sử dụng công nghệ FPGA người ta thường phân biệt phần cứng và phần mềm dựa vào mô hình thực thi của chúng như sau:
– Phần mềm là một bản mô tả chức năng được tạo ra để thực thi trên một bộ vi xử lý. Các bộ vi xử lý hoạt động theo mô hình nạp-giải mã-thực thi một cách tuần tự các lệnh được lưu trữ trong bộ nhớ chương trình của nó. Do đó, đặc trưng bởi mô hình thực thi của phần mềm là tuần tự.
– Phần cứng cũng là một bản mô tả chức năng nhưng được tạo ra để thực hiện trên các cấu phần cứng của FPGA. Các cấu trúc phần cứng trên FPGA là các thực thể vật lý cái song song tồn tại và hoạt động. Do đó mô hình thực thi của phần cứng là mô hình song song.
3. Khái niệm lõi vi xử lý cứng và lõi vi xử lý mềm
Các công ty sản xuất vi mạch FPGA thường cung cấp 2 giải pháp cho việc tích hợp một bộ vi lỷ lên trên chip FPGA, đó là: lõi vi xử lý cứng (hard core) và lõi vi xử lý mềm (soft core). Lõi vi xử lý cứng là một bộ vi xử lý đã được thực hiện như một khối chức năng chuyên dụng trên chip FPGA. Nó là một thành phần có sẵn và không thể thay đổi của chip FPGA. Các nhà sản xuất FPGA thường cung cấp các loại lõi vi xử lý cứng khác nhau trên các chip FPGA của họ. Chẳng hạn Altera xử dụng các lõi vi xử lý của ARM, Xinlinx sử dụng lõi vi xử PowerPC và gần đây là cả lõi ARM, … Ưu điểm của lõi cứng là hiệu năng xử lý cao, tuy nhiên nó cũng làm tăng giá thành của chip FPGA. Nếu ứng dụng của người sử dụng không cần đến bộ xử lý thì tài nguyên phần cứng này sẽ bị lãng phí vì không thể dùng cho mục đích khác.
Lõi vi xử lý mềm cho phép cấu hình các khối logic trên FPGA để tạo nên một bộ vi xử lý mong muốn. Như vậy lõi vi xử lý mềm không có sẵn trên chip FPGA khi người sử dụng. Lõi vi xử lý mềm là một giải pháp linh hoạt và cho phép sử dụng các tài nguyên logic trên FPGA một cách hiệu quả. Tuy nhiên, vì bộ vi xử lý được tạo ra từ việc ghép nối nhiều khối logic trên FPGA lại với nhau, các loại vi xử lý thường có tần số hoạt động tương đối thấp. Nhà sản xuất chip FPGA thường cung cấp các lõi vi xử lý mềm dưới dạng mô tả mức RTL của bộ vi xử lý đã được tổng hợp thành tệp netlist. Ví dụ Altera cung cấp lõi Nios, Xilinx cung cấp lõi Micro-Blaze. Người sử dụng có thể dễ dàng tùy biến cấu hình của các lõi vi xử lý này và thêm vào các ngoại vi như các timer, bộ điều khiển ngắt, bộ điều khiển bộ nhớ, …