Thông báo

Collapse
No announcement yet.

Tâm sự về FPGA

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • jefflieu
    replied
    I) FPGA là gì?
    Báo chí, google, wikipedia và rất rất nhiều website đã nói về FPGA, mình không muốn nói lại nhiều. Chỉ xin tóm tắt một vài điểm cơ bản để các bạn nào chưa làm việc với FPGA bao giờ có thể hình dung được nó làm việc như thế nào.
    FPGA= Field Programmable Gate Array. Trước tiên phải hiểu cái tên của nó. Mất một thời gian dài mình mới hiểu được chữ FIELD nghĩa là nơi sử dụng con Chíp. Mình thấy nhiều chỗ dịch là dạng trường gì gì đó là không đúng, 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 khác 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ử nhỏ khả trình nên gọi là PROGRAMMABLE GATE ARRAY.
    Làm thế nào để có được một PROGRAMMABLE GATE (Cổng khả trình)?Trong FPGA, PROGRAMMABLE GATE được tạo thành từ MEMORY. Chẳng qua là người ta sử dụng bộ nhớ một cách khác so với thông thường. Ví dụ ban có một bộ nhớ có 2 ô nhớ, mỗi ô nhớ có1 bit. Bây giờ ô nhớ số không chứa giá trị 1, ô nhớ số 1 chứa giá trị 0. Lấy địa chỉ (address) làm input, thì khi input = 1 thì output = 0, input = 0 thi output = 1 --> Bạn tạo được cổng NOT. Đó là lý do người ta gọi các FPGA thông dụng bây giờ sử dụng công nghệ SRAM. Trong FPGA, các ô nhớ để tạo thành logic như vậy gọi là Look-up-table (LUT, bảng tra cứu). Đa số các FPGA bây giờ sử dụng các LUT có 4 inputs, một số sử dụng 5-input LUT (Virtex5), 6-input LUT (Virtex 6) ... Với một LUT có 4 inputs bạn có thể dùng nó dể tạo thành bất kì mạch logic nào có 4 inputs:
    F = X1X2+X2X3+X4.X2 ... vì chung qui lại vẫn sẽ chỉ có 16 trường hợp mà thôi.

    Một điều quan trọng khác cần phải biết là các PROGRAMMABLE GATE nói trên được kết nối với nhau thông qua một mạng lưới gọi là tài nguyên dẫn (ROUTING RESOURCE). Các đường dây dẫn này chạy theo 2 hướng Nam-bắc, Đông tây và được kết nối bằng các hộp chuyển tiếp (SWITCH BOX). Các SWITCH BOX này cũng khả trình, có nhiệm vụ rẽ tín hiệu sang hướng khác như trong hình vẽ sau: http://en.wikipedia.org/wiki/File:Switch_box.svg

    Bằng cách cấu hình cho các LUT và SWITCH BOX, chúng ta có thể tạo ra được mạch LOGIC như ý. Khi thiết kế với FPGA, các bạn đang thiết kế mạch điện chứ không phải đang lập trình cho chip nó chạy . Điểm hay là chúng ta có thể xóa, sửa thiết kế và cài đặt lại trong khoảng thời gian ngắn, không mất nhiều công sức. Đó là cũng điểm quan trọng khác của FPGA: thời gian cho ra sản phảm ngắn (Short Time-to-Market).

    (Anh em bạn nào biết rồi thì bỏ qua, mình viết với hy vọng bạn nào mới tìm hiểu có được khái niệm cơ bản)

    Leave a comment:


  • hacthiet
    replied
    cảm ơn trước khi bài viết ra lò. mong là nó không chung chung va giống giống các bài viết trên mạng khác. nên chi tiêt hơn 1 chút, tập trung vào chi tiết kĩ thuật hơn là phần giới thiệu chung chung.

    Leave a comment:


  • jefflieu
    replied
    Từ từ, để nuốt nước m**ng rùi viết típ

    Leave a comment:


  • itx
    replied
    Tính rồi sao không làm luôn đi?

    Leave a comment:


  • jefflieu
    started a topic Tâm sự về FPGA

    Tâm sự về FPGA

    Chào anh em,
    Mình tính viết một vài bài tạm gọi là "tâm sự về FPGA" tổng hợp từ nhũng hiểu biết và kinh nghiệm của mình bao gồm các topic sau:
    ---
    - FPGA là gì?
    - Vai trò của FPGA và một số cấu hình tiêu biểu trong hệ thống sử dụng FPGA
    - Thiết kế FPGA cần biết những gì?
    - Các bước thiết kế FPGA
    - Các thành phần trong FPGA chip:
    Clocks (DCM) & Clock Buffers
    CLB – LUT and FFs
    Routing Lines
    Output/Input Buffers and delay
    BRAM

    - Các kĩ thuật tối ưu hóa cơ bản:
    Register balancing
    Register duplication
    Equivalent register removal
    Keep Hierarchy
    Fanin/Fanout

    - Các thành phần cơ bản được xếp (map) lên FPGA như thế nào?
    Multiplexers
    Adders/Subtractor
    ROM/RAM
    Multipliers

    - Các câu lệnh VHDL được “dịch” và xếp lên FPGA như thế nào
    If else
    Case
    If clock edge

    - Thiết kế với Timing Constraint:
    Chu kì của clock
    Trễ từ Input tới clock
    Trễ từ clock tới output
    Đường trễ nhiều chu kì

    - Thiết kế với Placement Constraint
    - Thiết kế với IO Constraints và các chuẩn IO
    - Phương pháp tổng hợp tăng dần

    Mong anh em tham gia thảo luận và có các ý kiến phản hồi (thêm bớt các topic nào đó) để box thêm dzui dzẻ.

    Jeff

Về tác giả

Collapse

jefflieu Email minh trực tiếp nếu bạn cần download tài liệu gấp Tìm hiểu thêm về jefflieu

Bài viết mới nhất

Collapse

Đang tải...
X