Thursday, August 16, 2012

Tớ xin phép lập cái topic này để trình bày một số vấn đề cơ bản nhằm cung cấp thông tin cho các bạn mới bắt đầu làm quen với FPGA. Các thông tin này chỉ là những tham khảo của cá nhân trên các trang web khác. Mong rằng bạn nào có những kiến thức và thông tin tương tự thì trình bày tiếp cho mọi người cùng học hỏi nhé.
Tớ trình bày với mục đích tạo một cái nhìn dễ hình dung nên từ ngữ đôi khi "không chuyên môn" lắm ^^ mong bỏ quá cho nhé.
FPGA là gì?
FPGA là chip lô-gic số lập trình được. Nghĩa là bạn có thể sử dụng chúng để lập trình hầu hết các chức năng của bất cứ mạng số nào.
Các bước cơ bản khi chúng ta làm việc với FPGA là:
  • Dùng máy tính mô tả một chức năng lô-gic mong muốn. Tức là vẽ sơ đồ mạch chức năng rồi viết code mô tả chức năng đó.
  • Tổng hợp code sử dụng phần mềm được cung cấp bởi các nhà cung cấp FPGA như Quartus của Altera hoặc ISE của Xilinx.
  • Kết nối KIT nạp FPGA với máy tính, và KIT nạp FPGA với KIT FPGA và nạp file binary lên chip FPGA. Với KIT DE1, DE2, phần nạp đã được tích hợp sẵn.
Bạn cần chú ý một số điểm sau:
  • Số lần nạp FPGA: không giới hạn.
  • Dữ liệu (chương trình) nạp trong FPGA bị mất khi ngừng cấp nguồn (mất điện) giống như RAM trong máy tính vậy. Như vậy, muỗn lần ngắt nguồn và bật lại thì ta phải nạp lại FPGA. Muốn lưu giữ lại chức năng đã lập trình cho FPGA thì ta phải mắc thêm ROM ngoài. ROM này có nhiệm vụ lưu file nạp binary và tự động nạp lại cho FPGA mỗi khi bật nguồn như vậy dù có ngắt nguồn FPGA vẫn “không bị mất” dữ liệu.
Công ty nào sản xuất FPGA?
Hiện tại có hai công ty hàng đầu thế giới về các sản phẩm FPGA là XiLinx và Altera. Bên cạnh đó còn có Lattice,  Actel, SiliconBlue
FPGA và CPLD có giống nhau?
FPGA và CPLD đều là linh kiện logic lập trình được nhưng chúng rất khác nhau. Những điểm khác biệt đó là:
FPGA và CPLD đều cấu tạo từ các cell-logic là sự kết hợp của một khối lo-gic và Flip-Flop. Nhưng, FPGA là linh kiện “fine-grain”, nghĩa là mật độ các cell logic lớn(lên đến cả trăm ngàn) vì kích thước các khối lô-gic nhỏ. CPLD là linh kiện "coarse-grain", nghĩa là mật độ các cell logic rất ít (xét trên cùng diện tích với FPGA) vì kích thước các khối lô-gic lớn.
FPGA giống như RAM, phải nạp lại mỗi khi bật nguồn. CPLD giống như EEPROM chỉ cần nạp một lần và không bị mất chức năng sau khi ngắt nguồn.
FPGA có nhiều tài nguyên định tuyến đặc biệt để thực hiện các chức năng toán học như các bộ đếm, bộ cộng, bộ so sánh, v.v… còn CPLD thì không.
FPGA và Vi điều khiển thì sao?
FPGA có các phần tử lô-gic chạy theo dạng song song. Vi điều khiển dựa trên cấu trúc CPU thực thi theo mã lệnh theo dạng tuần tự.
FPGA dùng ngôn ngữ lập trình phần cứng (Verilog, VHDL) và lập trình trên FPGA gọi là lập trình phần cứng. Lập trình vi điều khiển gọi là lập trình phần mềm dựa trên phần cứng có sẵn.
Để thấy được sự khác nhau, Ta có ví dụ như sau. Ta có một chip FPGA, ta sử dụng ngôn ngữ Verilog hoặc VHDL để “viết” ra chức năng của một vi điều khiển. Biên dich và nạp phần thiết kế bằng Verilog hay VHDL này lên FPGA thì con FPGA sẽ như một con vi điều khiển và người lập trình ứng dụng có thể dùng ngôn ngữ như Assemble hay C để lập trình cho con “vi điều khiển FPGA” này như việc lập trình cho các con vi điểu khiển khác mua trên thị trường.

No comments:

Post a Comment