Kiến trúc mạch FPGA

Bạn muốn thiết kế một đầu đọc thẻ nhớ 5 trong 1? Dễ thôi, bạn mua 1 bộ điều khiển cho MMC, 1 bộ điều khiển cho SD,... rồi gắn tất cả lên trên 1 bo mạch? Nhưng tại một thời điểm chỉ có thể có (và chỉ cần) một loại card được sử dụng trong đầu đọc. Phải chăng là 1 sự lãng phí? Lãng phí tài nguyên phần cứng, lãng phí công suất tiêu thụ? Tại sao bạn không nghĩ đến FPGA?

Với FPGA, khi bạn cho thẻ nhớ MMC vào, đầu đọc hoạt động theo chuẩn của MMC và khi bạn dùng thẻ SD, FPGA trong đầu đọc sẽ được tự cấu hình lại theo chuẩn của SD. Như vậy bạn đã tiết kiệm được tài nguyên cho hệ thống bởi chỉ với 1 platform bạn thực hiện được nhiều tác vụ và tất nhiên cả công suất tiêu tán trên nó. Trên thực tế không ai làm như vậy vì như thế là đem dao mổ trâu đi giết gà và còn phải giải quyểt vấn đề về mức điện áp logic của các chuẩn. Ý tưởng này chỉ tồn tại trong các hobby project :D

Vậy FPGA là gì?

FPGA là 1 chip silicon chứa trong nó rất nhiều “khối logic” có thể tái cấu hình CLB (Configurable Logic Blocks) được liên kết với nhau thành bằng các liên kết khả trình (Programmable Interconnect). Các khối vào ra được phân bố xung quanh chip tạo thành các liên kết với bên ngoài. Bên trong khối logic CLB có bảng LUT (Look-Up Table) và các phần tử nhớ (FlipFlop hoặc bộ chốt). Bảng LUT với nhiều đầu vào và 1 đầu ra tạo thành 1 mạch logic tổ hợp nhỏ, còn các phần tử nhớ dành cho logic synchronous và sequential.

Ảnh
LUT (Look-Up Table)

Bạn sẽ băn khoăn 1 CLB với 1 LUT với 4 hay 6 đầu vào thì làm được gì cho bạn? Nhưng 1 chip FPGA có chứa cỡ hàng nghìn, chục nghìn thậm chí lên đến hàng trăm nghìn CLB, nên nó có thể làm được rất nhiều chức năng phức tạp và bạn không phải quá quan tâm nội dung bên trong 1 CLB, bên trong 1 LUT như thế nào? Việc đó đã có bộ công cụ phần mềm chuyên dụng thực hiện cho bạn? Tất cả những gì bạn cần phải làm trước tiên là lập trình cho FPGA và để cho công cụ thực hiện các giai đoạn còn lại. Tất nhiên bạn phải tuân thủ chu trình thiết kế và thoả mãn các yêu cầu của công cụ.

Ảnh
FPGA Design Flow

Bạn yêu thích FPGA?

Hãy nhanh lên chọn và học một ngôn ngữ lập trình mô tả phần cứng HDL. Giới kỹ thuật ở Bắc Mỹ thì chuộng Verilog còn ở châu Âu lại khoái VHDL mặc dù cả 2 đều được sinh ra ở Mỹ. Đây cũng là 2 ngôn ngữ thông dụng nhất hiện nay. Ngoài ra còn có ABEL (được dùng từ lâu nhưng không phổ biến) và gần đây systemC. Bản thân tác giả 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.

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. Dòng FPGA cao cấp nhất của Xilinx là Virtex với sản phẩm mới nhất là Virtex 5 (ra mắt trung tuần tháng 5/2006) còn với Altera là người anh cả Stratix 3 (tháng 11/2006). 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,..)

Hùng Mạnh



Bình luận

  • TTCN (13)
Minh Tiến  1236

hihi

Có bạn nào đang nghiên cứu về FPGA không nhỉ??Chia sẻ kinh nghiệm cho mình với...cũng đang nghiên cứu về FPGA mà còn "gà mờ" quá...Hiện tại, ĐHBK TPHCM có khá nhiều bo FPGA cho SV nghiên cứu...--> FPGA chắc có tương lai lắm nhỉ.... ;D ;D

Hùng Mạnh  312

Mình biết là BKHCM có 1 số kit Altera (DE2). Mình cũng có thời gian làm về Nios II, nhưng giờ chỉ chơi Xilinx thôi. Nếu bạn có hứng thú thì chúng ta trao đổi.

Nemo Nguyen  21665

Nói nôm na là kỹ sư CNTT thì lập trình cho máy tính, còn kỹ sư điện tử, vễn thông... thì sẽ lập trình cho FPGA để cho ra đời các con chip.

Ngô Trung  631

Chắc không phải là "lấn sân" nếu bây giờ KS.CNTT cũng chuyển sang làm FPGA nhỉ? Vấn đề là chuyện nắm bắt công nghệ mà thôi.

Nemo Nguyen  21665

Lập trình cho thiết bị thì vấn đề ngôn ngữ, tư duy về cấu trúc dữ liệu, tư duy hướng đối tượng..... ko phài là vấn đề lớn...mà kiến thức điện tử trong lĩnh vực cụ thể và kiến thức về FPGA mới là vấn đề. Nếu Ks CNTT mà giỏi cả 2 lĩnh vực này thì thành ks điện tử tích hợp rồi.

Minh Tiến  1236

hihi

Big Grin Big Grin Pác Mạnh cho biết địa chỉ email hay nick yahoo để các anh em hứng thú nghiên cứu FPGA trao đổi....Thanks pác Mạnh trước nhé !!!! ;D ;D ;D

Minh Tiến  1236

Thanks anh Mạnh nhiều nhé !!!

Ngô Trung  631

FPGA question!

Chào anh Hùng Mạnh.
Em đang làm đề tài về con FPGA này, nhưng có một số vấn đề. Nếu anh có tài liệu nào liên quan đến FPGA, đặc biệt là phần flexible và reconfigure của FPGA thì có thể send cho em được không?
Trên trang của Altera và Xilinx em cũng đã lùng sục nhiều lắm rồi mà cũng chẳng có gì hay ho cả.
Cảm ơn anh nhiều.
Phải gửi ở đây vì cái địa chỉ mail anh cho ở trên không send được, em cũng không biết lý do gì. Tongue

Ngô Trung  631

email của em: [email protected]

Hùng Mạnh  312

Anh không hiểu ý flexible của em ở đây là gì? Còn nếu reconfig nói chung là đặc tính của FPGA. Họ Virtex của Xilinx thì có 1 đặc tính là "Dynamic Partial Reconfiguration" (Altera không có). Nghĩa là reconfig 1 phần của FPGA trong khi các phần khác vẫn chạy. ;D. Anh chủ yếu làm của Xilinx, nếu cần hỗ trợ gì anh sẽ giúp đỡ.
PS: Anh tên là Mạnh, Hùng Mạnh 8)

Ngô Trung  631

Flexible:- tức là tính "linh hoạt" của FPGA, anh cho em email để tiện trao đổi, chứ trên này không tiện, e rằng phiền mọi người ;D Cái email ở trên em không send dc.

Pham Quang Thieu  2

Vỉtex 4

Em chao anh Hùng Mạnh!
Em đọc trên diễn dàn thấy anh chắc có nhiều kiến thức về FPGA.
Em hỏi anh có nhiều tài liệu tiếng việt hướng dẫn bước đầu về Virtex4 ko chia sẻ cho e ít. bắt đầu làm quen mà toàn tài liệu tiếng anh nên rất khó khăn.
Mong được sự giúp đỡ của anh
Em cảm ơn!

Pham Quang Thieu  2

Vỉtex 4

ah quên tiện thể em cho luôn mail. co gì hay anh chia sẻ qua mail cho em với nha!
Cảm ơn anh nhiu!!!
[email protected]