Điều gì xảy ra khi một FPGA được lập trình trên máy tính mạng?


13

Theo những gì tôi hiểu, quá trình lập trình một đồ họa có hai phần:

  1. Mã hóa mô tả phần cứng thành các bit mà FPGA có thể hiểu (nghĩa là viết một số HDL và biên dịch nó)
  2. Tải HDL đã biên dịch lên trên FPGA.

Câu hỏi của tôi là: "FPGA làm gì với HDL được biên dịch?". Hiện tại, tôi nghĩ rằng các GPU là "phần cứng có thể tạo ra", trong đó các dây và cổng logic có thể được đúc theo bất cứ thứ gì bạn muốn. Một trong những điều tốt đẹp là khả năng có thể là vĩnh viễn: Các GPU có thể được lập trình lại.

Làm thế nào để các GPU giải thích HDL biên dịch? Làm thế nào là mouldability vĩnh viễn đạt được?


4
Nó thực sự không phải là vĩnh viễn - dòng bit FPGA phải được tải lại từ EEPROM mỗi khi cấp nguồn. Các CPLD không gặp phải vấn đề này và một số FPGA có EEPROM tích hợp sẵn để tải dòng bit của chúng ở mỗi lần khởi động.
AngryEE

2
Tôi nghĩ rằng anh ấy có nghĩa là "khả năng tạo khuôn là vĩnh viễn" tức là bản thân chương trình không phải là vĩnh viễn.
ajs410

Câu trả lời:


23

Đánh giá bằng câu hỏi khác của bạn, bạn là một chàng trai Xilinx. Vì vậy, tôi khuyên bạn nên lấy bảng dữ liệu cho chip Xilinx của bạn và đi đến chương Mô tả chức năng. Đối với chip Spartan 3 mà tôi sử dụng, đó là 42 trang đọc vui vẻ. Nó chi tiết chính xác các thành phần bên trong một đồ họa - IOB, CLB, lát, LUT, Khối RAM, Số nhân, Trình quản lý đồng hồ kỹ thuật số, Mạng đồng hồ, Kết nối và một số thông tin cấu hình rất cơ bản. Bạn cần hiểu thông tin này nếu bạn muốn biết "HDL được biên dịch" trông như thế nào.

Khi bạn đã quen thuộc với kiến ​​trúc của FPGA, thì bạn có thể hiểu quy trình này. Đầu tiên, thiết kế HDL của bạn được chạy qua công cụ tổng hợp, biến HDL của bạn thành RTL cơ bản. Sau đó, Mapper xử lý các kết quả từ Tổng hợp, "ánh xạ" chúng lên các phần có sẵn của kiến ​​trúc FPGA. Sau đó, Bộ định tuyến thực hiện Place And Route (PAR), trong đó chỉ ra những phần đó đi đâu và làm thế nào để kết nối chúng. Cuối cùng, kết quả từ PAR được chuyển thành tệp BIT. Thông thường, tệp BIT này sau đó được chuyển đổi theo một cách nào đó để có thể được tải vào chip Flash, do đó, FPGA có thể được lập trình tự động khi bật nguồn.

Tập tin bit này mô tả toàn bộ chương trình FPGA. Ví dụ, các CLB trong Spartan 3 bao gồm các lát, bao gồm các LUT, chỉ là các SRAM 16 bit 1 địa chỉ. Vì vậy, một điều mà tệp BIT sẽ chứa chính xác là dữ liệu đi vào từng địa chỉ của SRAM. Một điều khác mà tệp BIT chứa là cách mỗi đầu vào của LUT được nối với ma trận kết nối. Tệp BIT cũng sẽ chứa các giá trị ban đầu đi vào bên trong khối RAM. Nó sẽ mô tả những gì được kết nối với các chân được thiết lập và đặt lại của mỗi lần lật trong mỗi lát. Nó sẽ mô tả làm thế nào chuỗi mang được kết nối. Nó sẽ mô tả giao diện logic cho từng IOB (LVTTL, LVCMOS, LVDS, v.v.). Nó sẽ mô tả bất kỳ điện trở kéo lên hoặc kéo xuống tích hợp. Về cơ bản, mọi thứ.

Đối với Xilinx, bộ nhớ của FPGA bị xóa khi bắt đầu cấu hình (tức là PROG_B được xác nhận). Khi bộ nhớ rõ ràng, INIT_B sẽ tăng cao để chỉ ra rằng giai đoạn đã hoàn tất. Sau đó, tệp BIT được tải, thông qua JTAG hoặc giao diện chip Flash. Khi chương trình được tải, Cài đặt / Đặt lại toàn cầu (GSR) được tạo xung, đặt lại tất cả các flip flop về trạng thái ban đầu của chúng. Pin DONE sau đó lên cao, để cho biết cấu hình đã hoàn tất. Chính xác là một chu kỳ đồng hồ sau đó, tín hiệu Ba trạng thái toàn cầu (GTS) được phát hành, cho phép các đầu ra được điều khiển. Chính xác là một chu kỳ đồng hồ sau đó, Bật ghi toàn cầu (GWE) được phát hành, cho phép các flip flop bắt đầu thay đổi trạng thái để đáp ứng với đầu vào của chúng. Lưu ý rằng ngay cả quá trình cấu hình cuối cùng này cũng có thể được sắp xếp lại một chút tùy thuộc vào các cờ được đặt trong tệp BIT.

BIÊN TẬP:

Tôi cũng nên nói thêm rằng lý do chương trình FPGA không cố định là do cấu trúc logic bao gồm bộ nhớ dễ bay hơi (ví dụ SRAM). Vì vậy, khi FPGA mất nguồn, chương trình bị lãng quên. Đó là lý do tại sao họ cần các chip Flash như bộ lưu trữ không bay hơi cho chương trình FPGA, để có thể tải nó bất cứ khi nào thiết bị được bật.


6

Biên dịch kết quả HDL theo mẫu bit cho biết các kết nối nào bên trong FPGA sẽ được kích hoạt. Các FPGA không phải giải thích HDL nữa. Mẫu bit được lập trình thành bộ tải nối tiếp Flash / EEPROM và khi khởi động, mẫu này được chuyển sang FPGA, tạo các kết nối cần thiết.


1
TỔNG HỢP có nghĩa là ba cụm từ 1. Tạo Netlist 2. Tối ưu hóa mức cổng 3. Ánh xạ công nghệ.
Sandun tiêu chuẩn

4

Kết quả của quá trình biên dịch là một dòng bit (nghĩa đen là một luồng bit) được tải vào sau khi bật nguồn. Điều này chuyển qua các FPGA được lưu trữ trong một số ô nhớ (chốt). Các ô này được kết nối với các thực thể logic khác nhau, bộ ghép kênh, bảng tra cứu, khối RAM, ma trận định tuyến và tạo thành cái được gọi là "cấu hình". Sau khi dòng bit được tải, FPGA bắt đầu hoạt động - các bit trong các chốt cấu hình "nói" cho từng phần nhỏ của FPGA cách hoạt động.

EDIT ngày 24 tháng 4 năm 2012: Dép xỏ ngón mà tôi đã đề cập không dành cho các bảng tra cứu hoặc cấu hình của chúng. Như @ ajs410 đã nói rằng những thứ đó nằm trong RAM, thậm chí còn ít bóng bán dẫn hơn. Các flip-flop là để lưu trữ dữ liệu ra khỏi LUT, nếu lưu trữ đó được kích hoạt.


Bao nhiêu mạch trong một GPU thông thường là logic và định tuyến thực tế, và bao nhiêu là hỗ trợ lập trình?
supercat

Về mặt kỹ thuật, "các ô nhớ" là flip-flop, không phải chốt. Tức là họ được kích hoạt cạnh.
Brian Carlton

@BrianCarlton: Dép xỏ ngón có thực sự được sử dụng cho tất cả các ô lưu trữ chương trình không? Theo hiểu biết của tôi, dép xỏ ngón cần một thứ gì đó theo thứ tự 12-16 MOSFET mỗi bit; ngược lại, các kỹ thuật tĩnh hoàn toàn khác để chốt dữ liệu chỉ cần 5-8.
supercat

1
Một LUT thường được làm bằng SRAM. Dép xỏ ngón được gắn vào đầu ra của SRAM.
ajs410

1
@supercat: Tôi đã nghe nói rằng 90% của một FPGA đang định tuyến ... phần còn lại là logic và cấu hình - không thể tìm thấy một tài liệu tham khảo nhanh chóng :(
Martin Thompson

1

Thuật ngữ tiêu chuẩn là "cấu hình" chứ không phải "lập trình" cho một đồ họa. Các FPGA thường là một thiết bị dựa trên SRAM. Một SRAM lưu trữ các bit cho biết các kết nối nào được hình thành và phá vỡ bên trong "cấu trúc logic" của thiết bị. Khi cấu hình xảy ra, một luồng bit được gửi vào FPGA ghi vào SRAM này. Khi công nghệ dựa trên SRAM được bật, tắt dữ liệu SRAM và khi bật công cụ này, cần phải cấu hình lại.

Bây giờ biết điều này, chúng là các phương pháp khác nhau để "cấu hình" và FPGA và do đó các định dạng khác nhau của các tệp tồn tại có chứa "luồng bit" này. Vào cuối ngày, cấu trúc của các tệp này và chi tiết về cách thức cấu hình chính xác của FPGA là độc quyền cho sản xuất và thông tin này không bao giờ được chia sẻ. Nhưng nguyên tắc chung vẫn giống nhau trên các GPU.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.