Đá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.