Menilai dengan pertanyaan Anda yang lain, Anda adalah seorang pria Xilinx. Jadi saya sangat menyarankan untuk mendapatkan lembar data untuk chip Xilinx Anda dan pergi ke bab Deskripsi Fungsional. Untuk chip Spartan 3 yang saya gunakan, membaca 42 halaman itu menyenangkan. Ini merinci komponen apa yang ada di dalam FPGA - IOB, CLBs, slice, LUTs, Block RAM, Multipliers, Digital Clock Manager, Clock Network, Interconnect, dan beberapa informasi konfigurasi yang sangat mendasar. Anda perlu memahami informasi ini jika Anda ingin tahu seperti apa "HDL yang dikompilasi".
Setelah Anda terbiasa dengan arsitektur FPGA Anda, maka Anda dapat memahami proses ini. Pertama, desain HDL Anda dijalankan melalui mesin sintesis, yang mengubah HDL Anda menjadi RTL. Kemudian Mapper memproses hasil dari Sintesis, "memetakan" mereka ke potongan-potongan arsitektur FPGA yang tersedia. Kemudian Router melakukan Place and Route (PAR), yang mencari tahu kemana potongan-potongan itu pergi dan bagaimana menghubungkannya. Akhirnya, hasil dari PAR diubah menjadi file BIT. Biasanya file BIT ini kemudian ditransformasikan dalam beberapa cara sehingga dapat dimuat ke dalam chip Flash, sehingga FPGA dapat diprogram secara otomatis saat dinyalakan.
File bit ini menjelaskan seluruh program FPGA. Sebagai contoh, CLBs dalam Spartan 3 terdiri dari irisan, yang terdiri dari LUT, yang hanya 16-address SRAM 1-bit. Jadi satu hal yang akan berisi file BIT adalah data apa yang masuk ke setiap alamat SRAM. Hal lain yang terdapat pada file BIT adalah bagaimana setiap input LUT ditransfer ke matriks koneksi. File BIT juga akan berisi nilai awal yang masuk ke dalam blok RAM. Ini akan menjelaskan apa yang terhubung ke pin set dan reset dari setiap flip flop di setiap slice. Ini akan menjelaskan bagaimana rantai pembawa terhubung. Ini akan menjelaskan antarmuka logika untuk setiap IOB (LVTTL, LVCMOS, LVDS, dll). Ini akan menjelaskan resistor pull-up atau pull-down terintegrasi. Pada dasarnya semuanya.
Untuk Xilinx, memori FPGA dihapus ketika konfigurasi dimulai (yaitu PROG_B dinyatakan). Setelah memori jelas, INIT_B menjadi tinggi untuk menunjukkan bahwa fase telah selesai. File BIT kemudian dimuat, baik melalui JTAG atau antarmuka chip Flash. Setelah program dimuat, Global Set / Reset (GSR) berdenyut, mengatur ulang semua sandal jepit ke kondisi awal. Pin DONE kemudian menjadi tinggi, untuk menunjukkan bahwa konfigurasi telah selesai. Tepat satu siklus jam kemudian, sinyal Global Three-State (GTS) dilepaskan, yang memungkinkan keluaran didorong. Tepat satu siklus jam kemudian, Global Write Enable (GWE) dilepaskan, memungkinkan sandal jepit untuk mulai mengubah keadaan sebagai respons terhadap input mereka. Perhatikan bahwa bahkan proses konfigurasi akhir ini dapat sedikit disusun ulang tergantung pada flag yang diatur dalam file BIT.
EDIT:
Saya juga harus menambahkan bahwa alasan program FPGA tidak permanen adalah karena struktur logika terdiri dari memori volatile (misalnya SRAM). Jadi ketika FPGA kehilangan daya, program itu dilupakan. Itu sebabnya mereka membutuhkan chip Flash misalnya sebagai penyimpanan non-volatile untuk program FPGA, sehingga dapat dimuat setiap kali perangkat dinyalakan.