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