Penggunaan plis di perangkat modern. Portal berita dan analitik "waktu elektronik" Contoh merancang proyek FPGA besar

Bayangkan prosesor, alih-alih menjalankan serangkaian instruksi tertentu, akan membangun kembali untuk setiap program dan mengubah algoritme langsung menjadi perangkat keras. Begitulah cara kerja FPG. Pada artikel hari ini, saya akan menjelaskan bagaimana ini mungkin dan memperkenalkan Anda pada berbagai metode desain FPGA.

Untuk memulai, Anda perlu memahami sedikit tentang logika digital tentang cara kerja ASIC, tetapi sangat sulit dan mahal untuk memulainya, dan lebih baik memulai dengan FPGA.

Apa itu FPGA?

FPGA singkatan dari field-programmable gate array (user-programmable gate arrays, FPGA). Dalam kasus yang lebih umum, mereka disebut FPGA - sirkuit terintegrasi logika yang dapat diprogram.

Dengan bantuan FPGA, Anda dapat, dalam arti sebenarnya, mendesain sirkuit mikro digital sambil duduk di rumah dengan papan debug yang terjangkau di atas meja dan perangkat lunak pengembang seharga beberapa ribu rubel hijau. Tapi, ada juga opsi gratis. Catatan: ini untuk merancang, bukan memprogram, karena pada keluarannya kita akan mendapatkan rangkaian digital fisik yang menjalankan algoritme tertentu pada tingkat perangkat keras, dan bukan prog untuk prosesor.

Ia bekerja sebagai berikut. Ada papan sirkuit cetak siap pakai dengan satu set antarmuka yang terhubung ke chip FPGA yang dipasang di papan, seperti papan pusat data yang keren atau papan debug ini untuk pelatihan.

Sampai kami mengkonfigurasi FPGA, tidak ada logika di dalam chip untuk memproses data dari antarmuka, dan oleh karena itu, tentu saja, tidak ada yang berfungsi. Tetapi sebagai hasil dari desain, firmware akan dibuat, yang setelah memuat ke FPGA, akan membuat sirkuit digital yang kita butuhkan. Dengan cara ini, Anda dapat membuat pengontrol Ethernet 100G yang akan menerima dan memproses paket jaringan.

Fitur penting dari FPGA adalah kemampuan untuk mengkonfigurasi ulang. Katakanlah sekarang kita membutuhkan pengontrol Ethernet 100G, dan dalam seminggu papan yang sama dapat digunakan untuk mengimplementasikan empat antarmuka Ethernet 25G independen.

Ada dua pemimpin dalam produsen chip FPGA di pasar: Intel dan Xilinx yang terkenal. Mereka menguasai 58 dan 42% pasar. Pendiri Xilinx menemukan chip FPGA pertama mereka pada tahun 1985. Intel memasuki pasar baru-baru ini - pada tahun 2015, menyerap Altera, yang didirikan bersamaan dengan Xilinx. Teknologi Altera dan Xilinx serupa dalam banyak hal, seperti lingkungan pengembangan. Lebih sering daripada tidak, saya telah bekerja dengan produk Xilinx, jadi jangan kaget melihatnya terus-menerus disebutkan di artikel.

FPGA banyak digunakan di berbagai bidang: elektronik konsumen, peralatan telekomunikasi, papan akselerator untuk digunakan di pusat data, robotika, pembuatan prototipe ASIC. Saya akan membahas beberapa contoh di bawah ini.

Kami juga akan melihat teknologi yang menyediakan konfigurasi ulang perangkat keras, berkenalan dengan proses desain, dan menganalisis contoh sederhana penerapan penghitung perangkat keras dalam bahasa Verilog. Jika Anda memiliki papan debug FPGA, Anda harus dapat mereplikasinya sendiri. Jika tidak ada papan, Anda masih bisa mengenal Verilog dengan mensimulasikan pengoperasian sirkuit di komputer Anda.

Bagaimana FPGA Bekerja

Chip FPGA adalah chip ASIC kustom yang sama, terdiri dari transistor yang sama yang digunakan untuk merakit flip-flop, register, multiplexer, dan elemen logika lainnya untuk sirkuit konvensional. Tentu saja, tidak mungkin mengubah urutan sambungan transistor ini. Tetapi secara arsitektural, sirkuit mikro dibangun sedemikian licik sehingga Anda dapat mengubah peralihan sinyal di antara blok yang lebih besar: mereka disebut CLB - blok logika yang dapat diprogram.

Anda juga dapat mengubah fungsi logika yang dilakukan CLB. Ini dicapai karena fakta bahwa seluruh chip diresapi dengan sel memori konfigurasi RAM statis. Setiap bit dari memori ini mengontrol semacam kunci peralihan sinyal, atau merupakan bagian dari tabel kebenaran dari fungsi logis yang diimplementasikan CLB.

Karena memori konfigurasi dibangun menggunakan teknologi RAM Statis, pertama, saat FPGA dihidupkan, sirkuit mikro harus dikonfigurasi, dan kedua, sirkuit mikro dapat dikonfigurasi ulang hampir dalam jumlah tak terbatas.

Struktur chip 2D yang sangat disederhanakan tanpa memori konfigurasi

CLB berada dalam matriks switching yang menentukan koneksi untuk input dan output CLB.

Beralih diagram matriks

Di setiap persimpangan konduktor ada enam kunci sakelar yang dikendalikan oleh sel memori konfigurasi mereka sendiri. Dengan membuka beberapa dan menutup yang lain, dimungkinkan untuk memberikan pergantian sinyal yang berbeda di antara CLB.

CLB

CLB sangat sederhana terdiri dari blok yang mendefinisikan fungsi Boolean dari beberapa argumen (disebut tabel pencarian - Tabel Pencarian, LUT) dan pemicu (flip-flop, FF). Dalam FPGA modern, LUT memiliki enam input, tetapi angka tersebut menunjukkan tiga untuk kesederhanaan. Output LUT diumpankan ke output CLB baik secara asinkron (langsung) atau sinkron (melalui flip-flop FF yang berjalan pada jam sistem).

Prinsip Pelaksanaan LUT

Sangat menarik untuk melihat prinsip penerapan LUT. Katakanlah kita memiliki beberapa fungsi Boolean y = (a & b) | ~c. Representasi skematis dan tabel kebenarannya ditunjukkan pada gambar. Fungsi ini memiliki tiga argumen, sehingga dibutuhkan 2^3 = 8 nilai. Masing-masing sesuai dengan kombinasi sinyal inputnya sendiri. Nilai-nilai ini dihitung oleh program pengembangan firmware FPGA dan ditulis ke sel memori konfigurasi khusus.

Nilai setiap sel diumpankan ke inputnya dari multiplexer output LUT, dan argumen input dari fungsi Boolean digunakan untuk memilih satu atau beberapa nilai fungsi. CLB adalah sumber daya perangkat keras FPGA yang paling penting. Jumlah CLB pada chip FPGA modern dapat bervariasi dan bergantung pada jenis dan kapasitas chip. Xilinx memiliki kristal CLB mulai dari sekitar empat ribu hingga tiga juta.

Selain CLB, ada sejumlah sumber daya perangkat keras penting di dalam FPGA. Misalnya, blok akumulasi-perkalian perangkat keras atau blok DSP. Masing-masing dapat melakukan perkalian dan penjumlahan bilangan 18 bit setiap siklusnya. Dalam kristal kelas atas, jumlah blok DSP bisa melebihi 6000.

Sumber daya lainnya adalah blok memori internal(Blokir RAM, BRAM). Setiap blok dapat menyimpan 2 KB. Total kapasitas memori tersebut, tergantung pada kristalnya, dapat mencapai dari 20 KB hingga 20 MB. Seperti CLB, blok BRAM dan DSP dihubungkan oleh matriks switching dan menembus seluruh chip. Dengan menghubungkan blok CLB, DSP, dan BRAM, skema pemrosesan data yang sangat efisien dapat diperoleh.

Keuntungan FPGA

Chip FPGA pertama yang dibuat oleh Xilinx pada tahun 1985 hanya berisi 64 CLB. Pada saat itu, integrasi transistor pada chip jauh lebih rendah daripada sekarang, dan chip "logika longgar" sering digunakan pada perangkat digital. Ada chip terpisah untuk register, counter, multiplexer, multiplier. Di bawah perangkat tertentu papan sirkuit tercetak dibuat di mana sirkuit mikro integrasi rendah ini dipasang.

Penggunaan FPGA memungkinkan untuk mengabaikan pendekatan ini. Bahkan FPGA 64 CLB menghemat ruang pada papan sirkuit tercetak, dan ketersediaan konfigurasi ulang menambahkan kemampuan untuk memperbarui fungsionalitas perangkat setelah pembuatan selama operasi, seperti yang mereka katakan "di lapangan" (oleh karena itu namanya - array gerbang yang dapat diprogram lapangan ).

Karena sirkuit digital perangkat keras apa pun dapat dibuat di dalam FPGA (yang utama adalah sumber dayanya cukup), salah satu aplikasi penting FPGA adalah pembuatan prototipe chip ASIC.

Pengembangan ASIC sangat kompleks dan mahal, biaya kesalahan sangat tinggi, dan masalah logika pengujian sangat penting. Oleh karena itu, salah satu tahap pengembangan, bahkan sebelum dimulainya pengerjaan topologi fisik rangkaian, adalah pembuatan prototipe pada satu atau lebih chip FPGA.

Untuk pengembangan ASIC, papan khusus dirilis yang berisi banyak FPGA yang saling berhubungan. Prototipe microchip beroperasi pada frekuensi yang jauh lebih rendah (mungkin puluhan megahertz), tetapi menghemat uang untuk mengidentifikasi masalah dan bug.

Namun, menurut saya, ada aplikasi FPGA yang lebih menarik. Struktur FPGA yang fleksibel memungkinkan penerapan sirkuit perangkat keras untuk pemrosesan data paralel dan berkecepatan tinggi dengan kemampuan untuk mengubah algoritme.


Perbandingan platform perangkat keras

Mari kita pikirkan tentang perbedaan mendasar antara CPU, GPU, FPGA, dan ASIC. CPU bersifat universal, Anda dapat menjalankan algoritme apa pun di dalamnya, ini adalah yang paling fleksibel, dan paling mudah digunakan karena banyaknya bahasa pemrograman dan lingkungan pengembangan.

Pada saat yang sama, karena keserbagunaan dan eksekusi berurutan dari instruksi CPU, kinerja menurun dan konsumsi daya sirkuit meningkat. Ini terjadi karena untuk setiap operasi aritmatika yang berguna, CPU melakukan banyak operasi tambahan terkait dengan membaca instruksi, memindahkan data antara register dan cache, dan gerakan lainnya.

Di sisi lain adalah ASIC. Pada platform ini, algoritme yang diperlukan diimplementasikan dalam perangkat keras karena koneksi langsung transistor, semua operasi hanya terkait dengan eksekusi algoritme dan tidak ada cara untuk mengubahnya. Karenanya kinerja maksimum dan konsumsi daya terendah dari platform. Tetapi tidak mungkin untuk memprogram ulang ASIC.

Di sebelah kanan CPU adalah GPU. Awalnya, chip ini dirancang untuk pemrosesan grafis, tetapi sekarang juga digunakan untuk penambangan komputasi. tujuan umum. Mereka terdiri dari ribuan inti komputasi kecil dan melakukan operasi paralel pada berbagai data.

Jika algoritme dapat diparalelkan, maka pada GPU dimungkinkan untuk mencapai akselerasi yang signifikan dibandingkan dengan CPU. Di sisi lain, algoritma sekuensial akan diimplementasikan lebih buruk, sehingga platformnya kurang fleksibel dibandingkan CPU. Selain itu, untuk pengembangan GPU, Anda perlu memiliki keahlian khusus, mengenal OpenCL atau CUDA.

Akhirnya, FPGA. Platform ini menggabungkan efisiensi ASIC dengan kemampuan untuk mengubah program. FPGA tidak universal, tetapi ada kelas algoritme dan tugas yang akan menunjukkan kinerja yang lebih baik daripada pada CPU dan bahkan GPU. Kompleksitas pengembangan FPGA lebih tinggi, tetapi alat pengembangan baru membuat celah ini lebih kecil.

Keuntungan yang menentukan dari FPGA adalah kemampuan untuk memproses data pada tingkat kedatangannya dengan penundaan respons yang minimal. Sebagai contoh, bayangkan router jaringan pintar dengan banyak port: ketika paket Ethernet tiba di salah satu portnya, banyak aturan harus diperiksa sebelum memilih port keluaran. Anda mungkin perlu mengubah beberapa kolom dalam paket atau menambahkan yang baru.

Menggunakan FPGA memungkinkan Anda untuk menyelesaikan masalah ini secara instan: byte paket baru saja mulai tiba di sirkuit mikro dari antarmuka jaringan, dan headernya sudah dianalisis. Penggunaan prosesor di sini dapat memperlambat kecepatan pemrosesan lalu lintas jaringan secara signifikan. Jelas bahwa Anda dapat membuat chip ASIC khusus untuk router yang akan bekerja paling efisien, tetapi bagaimana jika aturan pemrosesan paket harus diubah? Hanya FPGA yang dapat membantu Anda mencapai fleksibilitas yang diperlukan dikombinasikan dengan kinerja tinggi.

Dengan demikian, FPGA digunakan di mana kinerja pemrosesan tinggi, waktu respons tercepat, dan konsumsi daya rendah diperlukan.

FPGA di awan

Dalam komputasi awan, FPGA digunakan untuk penghitungan cepat, akselerasi lalu lintas jaringan, dan akses ke susunan data. Ini juga termasuk penggunaan FPGA untuk perdagangan frekuensi tinggi di bursa. Papan FPGA dimasukkan ke server dengan PCI Express dan antarmuka jaringan optik yang diproduksi oleh Intel (Altera) atau Xilinx.

FPGA bagus untuk algoritme kriptografi, perbandingan urutan DNA, dan tugas ilmiah seperti dinamika molekuler. Microsoft telah lama menggunakan FPGA untuk mempercepat layanan pencarian Bing, serta mengatur Jaringan yang Ditetapkan Perangkat Lunak di dalam cloud Azure.

Boom pembelajaran mesin juga tidak melewati FPGA. Xilinx dan Intel menawarkan alat berbasis FPGA untuk bekerja dengan jaringan saraf yang dalam. Mereka memungkinkan Anda mendapatkan firmware FPGA yang mengimplementasikan jaringan tertentu langsung dari kerangka kerja seperti Caffe dan TensorFlow.

Selain itu, Anda dapat mencoba semua ini tanpa meninggalkan rumah dan menggunakan layanan cloud. Misalnya, di Amazon Anda bisa menyewa mesin virtual dengan akses ke papan FPGA dan alat pengembangan apa pun, termasuk pembelajaran mesin.

FPGA di tepi

Apa lagi yang menarik dilakukan di FPGA? Mengapa mereka tidak melakukannya saja! Robotika, kendaraan tak berawak, drone, instrumen ilmiah, peralatan medis, bea cukai perangkat seluler, kamera keamanan pintar dan sebagainya.

Secara tradisional, FPGA digunakan untuk pemrosesan digital sinyal satu dimensi (dan bersaing dengan prosesor DSP) di perangkat radar, transceiver sinyal radio. Dengan meningkatnya integrasi chip dan peningkatan kinerja, platform FPGA semakin banyak digunakan untuk komputasi kinerja tinggi, misalnya, untuk memproses sinyal dua dimensi "di tepi awan" (komputasi tepi).

Konsep ini paling mudah dipahami dengan menggunakan contoh kamera analisis lalu lintas dengan pengenalan plat nomor. Anda dapat mengambil kamera dengan kemampuan untuk mengirimkan video melalui Ethernet dan memproses streaming di server jarak jauh. Dengan bertambahnya jumlah kamera, beban pada jaringan juga akan meningkat, yang dapat menyebabkan kegagalan sistem.

Sebaliknya, lebih baik mengimplementasikan pengenalan plat nomor pada kalkulator yang dipasang langsung di badan kamera video dan mentransfer plat nomor ke cloud dalam format teks. Untuk melakukan ini, Anda bahkan dapat menggunakan FPGA berdaya rendah yang relatif murah untuk bertahan dengan baterai. Pada saat yang sama, logika FPGA tetap dapat diubah, misalnya, saat mengubah standar pelat nomor.

Sedangkan untuk robotika dan drone, di area ini sangat penting untuk memenuhi dua syarat - kinerja tinggi dan konsumsi daya rendah. Platform FPGA sangat cocok dan dapat digunakan, khususnya, untuk membuat pengontrol penerbangan untuk drone. UAV sudah dibuat yang dapat membuat keputusan dengan cepat.

pengembangan proyek FPGA

Ada berbagai tingkat desain: rendah, blok, dan tinggi. Level rendah melibatkan penggunaan bahasa seperti Verilog atau VHDL, di mana Anda mengontrol pengembangan pada level transfer register (RTL). Dalam hal ini, Anda membentuk register, seperti dalam prosesor, dan menentukan fungsi logika yang mengubah data di antaranya.

Sirkuit FPGA selalu beroperasi pada kecepatan jam tertentu (biasanya 100-300 MHz), dan pada tingkat RTL, Anda menentukan perilaku sirkuit ke dalam jam jam sistem. Pekerjaan yang melelahkan ini menghasilkan rangkaian yang paling efisien dalam hal kinerja, konsumsi sumber daya FPGA, dan konsumsi daya. Tetapi di sini diperlukan keterampilan yang serius dalam sirkuit, dan prosesnya tidak cepat dengan mereka.

Pada level blok, Anda pada dasarnya menghubungkan blok besar siap pakai yang menjalankan fungsi tertentu untuk mendapatkan fungsionalitas sistem-on-chip (sistem-on-chip) yang Anda butuhkan.

Pada desain tingkat tinggi, Anda tidak lagi mengontrol data pada setiap siklus jam, sebaliknya Anda akan berkonsentrasi pada algoritme. Ada kompiler atau penerjemah dari C dan C++ ke level RTL, seperti Vivado HLS. Ini cukup pintar dan memungkinkan Anda untuk menerjemahkan kelas algoritma yang luas ke tingkat perangkat keras.

Keuntungan utama pendekatan ini dibandingkan bahasa RTL adalah kecepatan pengembangan dan terutama pengujian algoritme: kode C++ dapat dijalankan dan diverifikasi di komputer, dan ini akan jauh lebih cepat daripada menguji perubahan algoritme di tingkat RTL. Tentu saja, Anda harus membayar untuk kenyamanan - rangkaiannya mungkin tidak terlalu cepat dan membutuhkan lebih banyak sumber daya perangkat keras.

Seringkali kita siap membayar harga ini: jika Anda menggunakan penerjemah dengan benar, efisiensinya tidak akan banyak berkurang, dan ada cukup sumber daya di FPGA modern. Di dunia kita dengan waktu kritis untuk indikator pasar, ini ternyata dibenarkan.

Seringkali ketiga gaya pengembangan perlu digabungkan dalam satu desain. Katakanlah kita perlu membuat perangkat yang dapat kita buat menjadi robot dan memberinya kemampuan untuk mengenali objek dalam aliran video - misalnya, rambu jalan. Ambil chip sensor video dan sambungkan langsung ke FPGA. Untuk debugging kita bisa menggunakan Monitor HDMI, juga terhubung ke FPGA.

Bingkai dari kamera akan ditransfer ke FPGA melalui antarmuka yang telah ditentukan sebelumnya oleh produsen sensor (USB tidak berfungsi di sini), diproses, dan ditampilkan di monitor. Untuk memproses frame, Anda memerlukan framebuffer, yang biasanya terletak di bagian luar memori DDR dipasang pada PCB di sebelah chip FPGA.


Diagram blok desain FPGA tipikal

Jika produsen sensor video tidak menyediakan IP Antarmuka untuk chip FPGA kami, maka kami harus menulisnya sendiri dalam bahasa RTL, menghitung jam, bit, dan byte sesuai dengan spesifikasi protokol transfer data. Preprocess, DDR Controller, dan blok IP HDMI, kemungkinan besar kami akan mengambil yang sudah jadi dan hanya menghubungkan antarmuka mereka. Dan blok HLS yang melakukan pencarian dan pemrosesan data yang masuk, kita dapat menulis dalam C ++ dan menyiarkan menggunakan Vivado HLS.

Kemungkinan besar, kami masih membutuhkan semacam pendeteksi rambu lalu lintas dan pustaka pengklasifikasi yang siap pakai, yang diadaptasi untuk digunakan dalam FPGA. Dalam contoh ini, tentu saja, saya memberikan diagram alur desain yang sangat disederhanakan, tetapi mencerminkan logika kerja dengan benar.

Pertimbangkan jalur desain mulai dari menulis kode RTL hingga mendapatkan file konfigurasi untuk dimuat ke FPGA.

Jalur Desain

Jadi, Anda menulis kode RTL yang mengimplementasikan skema yang Anda butuhkan. Sebelum mengujinya pada perangkat keras sebenarnya, Anda perlu memastikannya benar dan menyelesaikan masalah yang diperlukan dengan benar. Untuk ini, pemodelan RTL digunakan dalam simulator di komputer.

Anda mengambil sirkuit Anda, sejauh ini hanya diwakili dalam kode RTL, dan meletakkannya di bangku virtual, tempat Anda menerapkan urutan sinyal digital ke input sirkuit, mendaftarkan diagram output, ketergantungan waktu dari sinyal output, dan membandingkan dengan hasil yang diharapkan. . Biasanya Anda menemukan kesalahan dan kembali menulis RTL.

Selanjutnya, kode yang diverifikasi secara logis diumpankan ke input program penyintesis. Itu mengubah deskripsi teks sirkuit menjadi daftar elemen digital yang ditautkan dari perpustakaan yang tersedia untuk chip FPGA yang diberikan. Daftar ini akan menampilkan elemen seperti LUT, pemicu, dan tautan di antaranya. Pada tahap ini, elemen belum terikat pada sumber daya perangkat keras tertentu. Untuk melakukan ini, Anda perlu menerapkan batasan (Constraints) pada sirkuit - khususnya, menentukan pin I / O fisik mana dari chip FPGA yang terhubung ke input dan output logis dari sirkuit Anda.

Batasan ini juga mengharuskan Anda untuk menentukan pada kecepatan jam berapa sirkuit harus beroperasi. Keluaran dari penyintesis dan file pembatas diberikan ke prosesor Implementasi, yang antara lain menangani Tempat dan Rute.

Proses Place mengikat setiap elemen impersonal dari netlist ke elemen tertentu di dalam chip FPGA. Selanjutnya, proses Rute mulai bekerja, yang mencoba menemukan koneksi optimal dari elemen-elemen ini untuk konfigurasi matriks switching FPGA yang sesuai.

Tempat dan Rute beroperasi berdasarkan kendala yang telah kami terapkan pada sirkuit: pin I/O dan kecepatan clock. Periode jam memiliki efek yang sangat kuat pada Implementasi: tidak boleh kurang dari waktu tunda pada gerbang logika di sirkuit kritis antara dua flip-flop yang berurutan.

Seringkali persyaratan ini tidak dapat dipenuhi dengan segera, dan kemudian perlu kembali ke tahap awal dan mengubah kode RTL: misalnya, coba kurangi logika dalam rantai kritis. Setelah Implementasi berhasil diselesaikan, kita tahu elemen mana yang mana dan bagaimana mereka terhubung.

Baru setelah itu proses pembuatan file firmware FPGA biner dimulai. Tetap memuatnya ke perangkat keras nyata dan memeriksa apakah berfungsi seperti yang diharapkan. Jika terjadi masalah pada tahap ini, berarti pemodelan belum selesai dan pada tahap ini semua kesalahan dan kekurangan belum dihilangkan.

Anda dapat kembali ke tahap simulasi dan mensimulasikan situasi abnormal, dan jika ini tidak berhasil, dalam kasus ekstrim, mekanisme debug disediakan langsung di perangkat keras yang sedang berjalan. Anda dapat menentukan sinyal mana yang ingin Anda lacak dari waktu ke waktu, dan lingkungan pengembangan akan menghasilkan sirkuit penganalisa logika tambahan yang ditempatkan pada chip di sebelah sirkuit desain Anda, menghubungkan ke sinyal yang diinginkan dan menyimpan nilainya dari waktu ke waktu. Diagram pengaturan waktu yang disimpan dari sinyal yang diinginkan dapat diunduh ke komputer dan dianalisis.

PELAKSANAAN PROYEK FPGA

Setelah mengerjakan rangkaian logika menggunakan pemodelan fungsional, perlu untuk menempatkannya pada sebuah chip. Kemudian, simulasikan rangkaian dengan mempertimbangkan penundaan sebenarnya dari elemen yang diperoleh setelah menempatkan rangkaian pada sebuah chip. Jika perlu, perbaiki solusi yang dihasilkan. Setelah itu, sirkuit dimuat ke dalam FPGA dan diuji di dudukan.

Beras. 82. Tahapan mendesain perangkat digital pada FPGA

Tahapan utama mendesain pada FPGA (dari kuliah):

    Diagram perangkat dikembangkan dan dimasukkan ke dalam XILINX.

    IMPLEMENTASI dilakukan (penerjemahan, pembentukan sirkuit dengan mengekstraksi elemen pustaka, pengoptimalan, penempatan pada sebuah chip).

    Pemrograman.

  1. memori asosiatif. Organisasi, metode pengambilan sampel, perbedaan dari memori alamat.

Akses asosiatif mengimplementasikan pencarian informasi dengan beberapa atribut, dan bukan dengan lokasinya di memori (alamat atau tempat dalam antrian). Dalam versi paling lengkap, semua kata yang disimpan dalam memori diperiksa secara bersamaan untuk kepatuhan dengan suatu fitur, misalnya, untuk mencocokkan bidang kata tertentu (tag - dari tag kata bahasa Inggris) dengan fitur yang ditentukan oleh kata input (alamat tag) . Output diberikan kata-kata yang memenuhi atribut. Kedisiplinan mengeluarkan kata, jika beberapa kata memenuhi tag, begitu pula disiplin menulis data baru, bisa berbeda. Area utama penerapan memori asosiatif di komputer modern adalah caching data.

Dalam perangkat penyimpanan asosiatif, informasi dicari oleh fitur asosiatif yang direkam di setiap sel memori.

Sebuah kata ditulis ke dalam register topeng yang memungkinkan kueri untuk semua atau hanya beberapa digit fitur asosiatif, penggunaan topeng memungkinkan Anda untuk mengurangi atau memperluas area pencarian.

Informasi dicari secara paralel untuk semua sel dengan membandingkan kueri dengan fitur asosiatif dari setiap sel.

Hasil pencarian dihasilkan oleh rangkaian kombinasional khusus yang menghasilkan sinyal yang menunjukkan tidak adanya kata yang memenuhi kondisi pencarian, hanya ada satu kata, ada beberapa kata dengan fitur asosiatif tersebut.

Setelah pembentukan dan pemrosesan sinyal peringatan, rangkaian kontrol membaca informasi yang diperlukan. Saat menulis, sel bebas dicari berdasarkan nilai bit sibuk, informasi ditulis ke sel bebas yang pertama kali ditemukan.

Pemeriksaan occupancy bit dilakukan dengan mengatur bit ke-n (busy bit) dari mask. Saat menggunakan sirkuit kombinasi tambahan dalam memori asosiatif, Anda dapat melakukan berbagai operasi logis, menentukan jumlah maksimum atau minimum, jumlah kata yang memiliki fitur asosiatif yang sama, dll. Sel-sel memori dari perangkat penyimpanan asosiatif harus menjadi elemen memori statis; dalam memori asosiatif, semua sel diakses secara bersamaan dan tidak boleh terganggu oleh siklus penyegaran. Memori asosiatif adalah yang tercepat, tetapi sangat mahal, karena memerlukan pengenalan sirkuit perbandingan tambahan yang memungkinkan Anda mencari setiap sel memori. Oleh karena itu, memori semacam itu biasanya tidak digunakan dalam bentuknya yang murni, dan perangkat memori tipe cache berkecepatan tinggi biasanya diimplementasikan sebagai asosiatif parsial.

PADAsepenuhnya asosiatif memori cache (FACM, Memori Cache Sepenuhnya Terkait), setiap sel menyimpan data, dan di bidang "tag" - alamat fisik lengkap dari informasi, yang salinannya direkam. Selama pertukaran apa pun, alamat fisik dari informasi yang diminta dibandingkan dengan bidang "tag" dari semua sel, dan jika cocok, sinyal Hit diatur di sel mana pun.

Saat membaca dan nilai sinyal Hit = 1, data dikeluarkan ke bus data, tetapi jika tidak ada kecocokan (Hit = 0), maka saat membaca dari memori utama, data beserta alamatnya adalah ditempatkan di sel cache yang bebas atau paling tidak terpakai.

Saat menulis, data, bersama dengan alamatnya, pertama-tama, sebagai aturan, ditempatkan di memori cache (ke dalam sel yang terdeteksi di Hit = 1 dan gratis di Hit = 0). Menyalin data ke memori utama dilakukan di bawah kendali pengontrol khusus saat tidak ada akses memori.

Memori tipe FACM adalah perangkat yang sangat kompleks dan hanya digunakan untuk kapasitas kecil, terutama dalam aplikasi khusus. Pada saat yang sama, jenis cache ini memberikan fleksibilitas fungsional terbesar dan bebas konflik alamat, karena unit informasi apa pun dapat dimuat ke dalam sel cache apa pun.

Dari kuliah:

Perangkat penyimpanan asosiatif

Perbedaan mendasarnya adalah bahwa sistem untuk mengekstraksi informasi darinya dilakukan bukan dengan alamat unik untuk menemukan informasi, tetapi dengan beberapa tanda, yang sebenarnya merupakan bagian dari informasi yang dicari.

Informasi

Tag adalah ciri khas, secara kebetulan dengan mana sepotong informasi diperoleh.

Skema memori asosiatif yang disederhanakan:

Area penyimpanan adalah memori yang dapat dialamatkan dengan sel bernomor yang menyimpan informasi dan tag.

Untuk mengakses memori asosiatif, sampel dari tag yang diinginkan ditempatkan pada register permintaan. Skema perbandingan membandingkan kueri. Kecocokan dibuat pada register kecocokan di mana tag memori cocok dengan polanya. Reaksi dimungkinkan (tidak ada kecocokan; setidaknya ada satu kecocokan - dalam hal ini, sel yang ditemukan ditempatkan di register data; banyak kecocokan - COP harus memutuskan sel mana yang akan diproses).

Aplikasi: basis data, basis pengetahuan, PC sebagai cache.

MENGGUNAKAN FPGA DI PERANGKAT MODERN

Tupikov Pavel Andreevich

Mahasiswa tahun ke-5, Departemen Seni OmSTU, Federasi Rusia, Omsk

Saat ini, sirkuit terintegrasi logika yang dapat diprogram (FPGA) semakin banyak digunakan di berbagai perangkat modern, hal ini disebabkan fakta bahwa FPGA memiliki keunggulan yang signifikan dibandingkan sirkuit mikro digital konvensional. Keunggulan tersebut antara lain:

· Peningkatan kinerja produk.

· Harga produk berkurang.

Mengurangi dimensi produk.

Keandalan produk meningkat (jumlah sirkuit mikro diskrit berkurang)

Fleksibilitas produk meningkat (FPGA selalu dapat diprogram ulang)

Arsitektur FPGA memiliki struktur yang kompleks (Gbr. 1)

Gambar 1. Struktur internal FPGA

Seperti dapat dilihat dari Gambar 1, bagian utama dari FPGA terdiri dari blok logika yang dapat diprogram dan koneksi internal yang dapat diprogram.

Proses pemrograman (firmware) FPGA itu sendiri terdiri dari pembentukan koneksi yang diperlukan antara input dan output perangkat.

Hingga saat ini, ada dua pemimpin dunia dalam produksi FPGA di dunia. Ini adalah perusahaan Amerika Xilinx dan Altera.

Setiap perusahaan menawarkan CAD sendiri untuk bekerja dengan FPGA. Xilinx menawarkan Xilinx Software Development Kit (SDK). Altera menawarkan Max+Plus II dan Quartus II, serta sistem simulasi ModelSim.

Untuk membuat program firmware, biasanya digunakan bahasa untuk menjelaskan pengoperasian peralatan, bahasa berikut adalah yang paling umum saat ini:

Verilog HDL.

VHDL adalah bahasa yang paling sulit dipelajari, tetapi memang demikian peluang terbesar pada tingkat abstraksi fungsional dan perilaku, tetapi memiliki kemampuan yang lebih rendah pada tingkat abstraksi struktural dibandingkan dengan Verilog HDL, perpustakaan VITAL dikembangkan untuk memperluas kemampuan bahasa VHDL (Gbr. 2).


Gambar 2. Lapisan abstraksi Verilog dan VHDL

Contoh pengoperasian bahasa Verilog HDL adalah program yang diimplementasikan pada FPGA CYCLONE III EP3C5E1444C8N dari dudukan Mini-DiLab, tampilan umumnya ditunjukkan pada Gambar. 3.


Gambar 3. Tampilan umum papan Mini - DiLab

Program ini mengimplementasikan peralihan berurutan LED led0-led7, dengan pilihan untuk menambahkan gerakan "cahaya" menggunakan tombol pba dan pbb, serta mengontrol kecepatan peralihan menggunakan sakelar sw0, sw1.

//Teks program

modul proyek( keluaran LED, memasukkan clk_25mhz, memasukkan pba, memasukkan pbb,

memasukkan sw);

// Tujuan koneksi internal proyek

kabel s1;

kabel s2;

kabel s3;

// Memanggil file lain (subrutin) yang terhubung ke proyek

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

Penghitung counter_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

Dc3_8 dc3_8_1 (.out(led), .in(s3));

modul akhir// akhir program

Subrutin tr

modul tr(keluar, atur, res); // Buat program

// penugasan I/O

keluaranreg keluar;

memasukkan mengatur;

memasukkan res;

// inisialisasi

awal

mulai

keluar<= 1"d0;

// kode program utama

selalu @(negege mengatur atau negege res)

mulai

jika(~(set))

keluar<= 1"d1;

kalau tidak

keluar<= 1"d0;

modul akhir // Akhir program

Penghitung subrutin

modul counter(con, q, clk, up); // Program dimulai

keluaranreg menipu;

keluaran q = kontra;

memasukkan naik, clk;

// kode program utama

selalu @(berpose clk)

mulai

jika(clk)

jika(ke atas)

Menipu<= con - 1"d1;

kalau tidak

Menipu<= con + 1"d1;

modul akhir// Akhir program

MX subrutin (multiplekser)

modul mx( output.reg sebuah, memasukkan di dalam, memasukkan memuat);

// kode program utama

selalu @*

mulai

kasus(memuat)

2"b00: a = dalam;

2"b01: a = masuk;

2"b10: a = dalam;

2"b11: a = dalam;

huruf akhir

modul akhir // Akhir program

Subrutin dc3_8 (multiplekser)

modul dc3_8(keluar, masuk); // Program dimulai

// penugasan I/O

output.reg keluar;

kawat masukan di dalam;

// kode program utama

selalu @*

mulai

kasus(di dalam)

3"d0: keluar = 8"b11111110;

3"d1: keluar = 8"b11111101;

3"d2: keluar = 8"b11111011;

3"d3: keluar = 8"b11110111;

3"d4: keluar = 8"b11101111;

3"d5: keluar = 8"b11011111;

3"d6: keluar = 8"b10111111;

3"d7: keluar = 8"b01111111;

huruf akhir

modul akhir // Akhir program

Program ini diimplementasikan dalam CAD Quartus II.

Setelah mengkompilasi program, kompiler tidak menghasilkan kesalahan atau komentar apa pun dalam program yang terkait dengan analisis dan sintaks program (Gbr. 4).


Gambar 4. Jendela pesan proyek

Pernyataan yang dibuat oleh kompiler menunjukkan tidak adanya lisensi untuk Quartus II (versi gratis program digunakan untuk pelatihan) dan tidak adanya file yang diperlukan untuk memodelkan proyek.

RTL Struktur proyek ini ditunjukkan pada gambar. lima.


Gambar 5. Pelaksanaan proyek ( RTL struktur)

Seperti yang ditunjukkan pada gambar. 6 dalam program ini, hanya sebagian kecil dari kemampuan FPGA ini yang digunakan.

Gambar 6. Bagian dari FPGA yang terlibat dalam proyek

Temuan: Sirkuit terpadu logika yang dapat diprogram digunakan di banyak perangkat. Untuk mempelajari cara bekerja dengan mereka, perlu untuk memperkenalkan ke dalam program pendidikan spesialisasi yang berkaitan dengan desain dan konstruksi peralatan radio-elektronik, keakraban dengan bahasa deskripsi perangkat keras (Verilog HDL dan VHDL).

Bibliografi:

1. Grushevitzky R.I. Merancang sistem berdasarkan sirkuit mikro logika program / R.I. Grushevitzky, A.X. Mursaev, E.P. Muram. Petersburg: BHV Petersburg, 2002. - 608 hal.

2.Kolomov D.A. Sistem desain berbantuan komputer dari Altra MAX+plus II dan Quartus II. Deskripsi singkat dan tutorial / D.A. Kolomov, R.A. Myalk, A.A. Zobenko, A.S. Filippov. M.: IP RadioSoft, 2002. - 126 hal.

3. Desain Maxfield K.FPGA. Jalannya petarung muda. / K. Maxfield. M.: Penerbit "Dodeka-XXI", 2007. - 408 hal. (terjemahan dari bahasa Inggris).

Mumpung ada hari libur, saya membuat proyek kecil di Verilog, yang sudah lama ingin saya coba.

Inti dari proyek ini adalah sebagai berikut: ADC cepat (relatif, tentu saja) dengan dua saluran dan antarmuka paralel (14-16 bit per saluran) terhubung ke FPGA. FPGA membaca data dari ADC dan menyimpannya dalam buffer (memori BRAM internalnya). Saat buffer penuh, pembacaan berhenti dan perangkat eksternal (mikrokontroler) dapat membaca data dari buffer melalui antarmuka SPI. Anda juga dapat mengonfigurasi beberapa parameter melalui SPI (hal ini akan dibahas pada postingan berikutnya).

Tes proyek (gambar yang dapat diklik).

Hasil sintesis untuk Cyclone IVE

Saya mensintesis hasilnya di Quartus II, untuk FPGA dari keluarga Cyclone IVE (EP4CE6E22A7). Ini adalah salah satu FPGA paling sederhana dan paling murah dalam paket QFP144 untuk 6272 elemen logika. Chip tersebut memiliki kapasitas memori 30K * 9 bit. Pin pengguna - 92.

keping EP4CE6E22A7
elemen logika - 301 (5%)
pin - 41 (45%)
memori - 65536 bit (24%)
frekuensi kasus terburuk (125 C) - 151 MHz.

Memori 8 KB, ini sebenarnya adalah buffer tempat data ditulis. Dengan dua saluran 16 bit, ternyata 32 bit per sampel, dan 2048 sampel. Saya memutuskan bahwa ini sudah cukup, meskipun buffer dapat diperluas bahkan ke seluruh volume.

Frekuensinya cukup memuaskan, saya perkirakan akan ada frekuensi clock 50 MHz, dan ADC di 25 MHz. Artinya, margin frekuensi tiga kali lipat diperoleh.

Jumlah elemen logika cukup tidak signifikan untuk FPGA seperti itu, mis. Anda dapat, jika mau, memasang banyak hal lain di sana, terutama karena tersisa sebanyak 51 pin.

Ada keluarga Cyclone 10 yang lebih baru.

Hasil sintesis untuk Siklon 10

Kami memilih chip 10CL006YE144C8G. Ini memiliki jumlah gerbang yang sama (6272) dengan versi Cyclone 4 dan jumlah memori yang sama (30K x 9). Kasingnya sama dengan QFP144, pin pengguna bahkan lebih sedikit - 89.

keping 10CL006YE144C8G
elemen logika - 289 (5%)
pin - 41 (46%)
memori - 65536 bit (24%)
frekuensi kasus terburuk (85 C) adalah 145,5 MHz.

Sangat mengherankan bahwa proyek tersebut menjadi lebih kompak dalam hal elemen logis. Artinya, dengan kapasitas logika yang sama, proyek yang lebih kompleks akan masuk ke dalam Cyclone 10. Segala sesuatu yang lain tentang tingkat yang sama.

Muncul pertanyaan yang masuk akal: apakah mungkin menghemat uang dengan memasang FPGA atau CPLD lain?

Mari kita coba FPGA MAX10.

Hasil sintesis untuk MAX 10

Di sini pembaca (jika dia termasuk dalam subjek) dapat berseru: tidak, tidak seperti itu! Keluarga MAX adalah CPLD, bukan FPGA, dan membingungkan konsep-konsep ini adalah ketidakprofesionalan yang mencolok!

Namun, berkat upaya pemasar Intel (apakah semua orang tahu bahwa kita berbicara tentang chip Intel?), Keluarga MAX10 telah berubah menjadi FPGA, meskipun memiliki memori konfigurasi non-volatile internal, seperti CPLD lainnya.

Jadi, kami memilih chip, misalnya 10M02SCE144A7G (2304 LE, 101 GPIO, 12Kx9 BRAM), paket QFP144.

keping 10M02SCE144A7G.
elemen logika - 298 (13%)
pin - 41 (41%)
memori - 65536 bit (59%)
frekuensi kasus terburuk (125 C) - 153 MHz.

Kami melihat bahwa indikator absolut secara praktis tetap sama, hanya tingkat pengisian kristal yang meningkat, yang dapat dimengerti - 2304LE versus 6272 LE.

Apakah MAX II bisa digunakan?

Sekarang pertanyaannya adalah: apakah mungkin menggunakan CPLD yang sangat murah, seperti MAX II? Semuanya lebih rumit di sini. Mereka tidak memiliki memori BRAM, mis. Anda juga memerlukan SRAM cepat eksternal.

Untuk menghubungkan SRAM, tentu saja diperlukan logika tambahan. Jika kita menggunakan memori 4K x 16, maka kita membutuhkan tambahan 16 pin untuk data, 12 untuk alamat dan 3 untuk kontrol (/cs, /we, /oe), dengan total 31 pin tambahan.

Logikanya juga akan bertambah besar. Sulit untuk mengatakan dengan tepat berapa banyak, tetapi awalnya tidak cocok dengan CPLD pada 240 LE, tapi mungkin akan cocok dengan 570 LE.

Kami memilih CPLD EPM570 dalam paket QFP100. Kami hanya membutuhkan 72 pin, kasing memiliki 76 pin untuk GPIO, mis. harus cukup untuk semuanya, tetapi hanya ada sedikit ruang untuk ekspansi.

Pro dari solusi ini: kemungkinan harga lebih rendah (bahkan dengan chip SRAM tambahan), kontra: kompleksitas sirkuit dan area papan yang lebih besar.

Masalah harga

Inilah yang saya temukan menggunakan efind. Sirkuit mikro sedikit berbeda, tetapi angka dan huruf di bagian akhir adalah indeks kinerja dan kisaran suhu (komersial). Karena kami memiliki margin frekuensi tiga kali lipat, angka-angka ini sama sekali tidak penting bagi kami.

EP4CE6E22C8N - 456,55 R (Promelektronik, EKB, ritel)
10CL006YE144C - 754.71 (Elemen kelima, St. Petersburg, grosir)
10M02SCE144C8G - 456 R (Elitan, Ekb, grosir)
EPM570F100C5N - 368 R (Hitech, St. Petersburg) + memori (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92,51 R (Elektronik industri, EKB, ritel)

Tentu saja, Anda dapat menemukan yang lebih murah, ini hanya harga eceran di toko, tetapi rasionya hampir sama.

Dapat dilihat bahwa opsi CPLD sama sekali tidak menang dalam hal harga, sementara memiliki banyak kelemahan. Opsi lainnya kira-kira setara, kecuali bahwa Cyclone 10 masih sedikit lebih mahal dan hanya sedikit orang yang memiliki stoknya. Namun, ini adalah keluarga yang sama sekali baru, sejauh ini semua distributor belum membawanya.

Secara pribadi, saya paling suka opsi MAX 10. Ini memiliki satu keuntungan: tidak perlu memuat konfigurasi FPGA saat startup. Pada varian Cyclone 4, Anda perlu memuat konfigurasi FPGA, yang dapat dilakukan dengan menggunakan chip memori konfigurasi tambahan atau menggunakan mikrokontroler. Ada opsi ketiga: flash melalui JTAG dan jangan pernah melepas daya dari chip. Saya mendengar bahwa seseorang melakukan ini, saya tidak tahu apakah itu lelucon atau bukan, tetapi saya pasti tidak akan melakukannya.

Namun, varian dengan firmware Cyclone 4 melalui mikrokontroler memiliki keunggulan: kemampuan untuk memperbarui firmware FPGA melalui antarmuka pengguna: USB, Ethernet, dll.

Opsi non-sepele lainnya dimungkinkan: jangan menginstal mikrokontroler sama sekali, tetapi flash beberapa prosesor tertanam ke dalam FPGA. Tapi ini bukan pilihan yang bagus, mungkin karena. ini pasti membutuhkan ROM dan RAM eksternal, serta setidaknya jembatan USB. Tidak perlu dengan sengaja menolak opsi ini, tentu saja, tetapi menurut saya penerapannya lebih sulit daripada dengan mikrokontroler.

Tentang fungsi apa yang dilakukan firmware ini, saya akan menulis di posting berikutnya.

Artikel ini mencoba untuk menentukan komposisi dokumentasi terlampir untuk modul digital yang dikembangkan untuk rangkaian terpadu logika yang dapat diprogram (FPGA). Dokumentasi yang menyertai ini harus disediakan oleh pengembang kepada konsumen/pelanggan untuk keberhasilan penggunaan lebih lanjut dari modul digital yang dikembangkan dalam proyek mereka pada tahap perancangan perangkat digital pada FPGA.

pengantar

Jadi, dokumentasi desain seperti apa yang harus ditanyakan dari pengembang jika perusahaan atau perusahaan pelanggan atau pengembang lain akan menggunakan perangkat yang dikembangkan "asing" di masa mendatang dalam proyek mereka? Artikel ini dapat berfungsi sebagai "lembar contekan" untuk pertama-tama menerbitkan kerangka acuan untuk pengembangan perangkat digital untuk FPGA dengan benar, dan kemudian meminta pengembang untuk dokumentasi desain untuk perangkat digital yang sudah dikembangkan. Berdasarkan pengalaman sebelumnya dengan dokumentasi desain, perusahaan biasanya menggunakan standar dan peraturan berikut:

  • GOST 2.102-68 ESKD. Jenis dan kelengkapan dokumen desain.
  • GOST 15.101-98. Sistem untuk pengembangan dan produksi produk. Prosedur untuk melakukan pekerjaan penelitian.
  • GOST R 15.201-20-00. Sistem untuk pengembangan dan produksi produk. Produk untuk keperluan industri dan teknis. Prosedur untuk pengembangan dan produksi produk.

Biasanya, ini adalah file firmware dan program (deskripsi perangkat digital di VHDL / Verilog atau rangkaian sirkuit digital yang dikembangkan di editor sirkuit menggunakan elemen pustaka logika digital, seperti flip-flop, register, counter, decoder, dll.) pada CD atau DVD dan petunjuk pemrograman. Dan itu saja.

Penulis, misalnya, menghadapi masalah berikut. Salah satu karyawan mengembangkan perangkat digital multi-modul yang kompleks. Saya menjelaskan semua modul dalam VHDL, dan melihat cyclogram dari pengoperasian modul-modul ini dan perangkat digital secara keseluruhan pada osiloskop yang bagus dan mahal. Dia tidak tahu tentang file Bangku Tes dan tentang kemungkinan melakukan simulasi atau tidak tahu cara menulisnya, ngomong-ngomong, juga tidak ada komentar tentang proyek dan deskripsi modul. Situasinya bisa menjadi lebih buruk jika modul diwakili oleh sirkuit digital yang dirancang dalam editor skema menggunakan elemen pustaka. Di sinilah letak salah satu kelemahan utama: selain dari pengembangnya sendiri, kecil kemungkinan orang lain akan memahami perangkat digital ini, terutama jika proyeknya multi-modul, dan deskripsi setiap modul lebih dari 100 baris atau lebih dari satu layar monitor. Jadi, jika pengembang lain ingin memperkenalkan perangkat digital yang sudah dikembangkan untuk FPGA ke dalam pengembangan atau proyek baru, dia perlu meluangkan waktu lagi untuk mengembangkan perangkat digital ini.

Sejarah masalah desain untuk FPGA

Saat ini, pasar FPGA adalah salah satu yang paling berkembang secara dinamis. FPGA digunakan di banyak cabang teknologi. Saat ini, tidak ada metodologi yang pasti yang memuaskan semua pengembang perangkat keras untuk mendapatkan konfigurasi FPGA dari model fungsional perangkat di tingkat sistem. Pendekatan paling populer untuk memecahkan masalah ini adalah penggunaan teknologi IP-core (Intellectual Property Cores). Inti IP adalah komponen siap pakai yang memungkinkan Anda memasukkannya dengan mudah ke dalam proyek Anda sendiri untuk membuat sistem yang lebih kompleks. Pendekatan ini memiliki satu kelemahan signifikan - keterikatan IP-nuclei ke dasar unsur. Setiap inti IP dioptimalkan untuk rangkaian chip tertentu dari pabrikan tertentu, yang secara signifikan mengganggu kemungkinan transfer perangkat yang sudah dibuat dari satu basis elemen ke elemen lainnya. Sifat tertutup dari arsitektur CAD komersial tidak memungkinkan untuk menambahkan model perangkat fungsional Anda sendiri di tingkat sistem untuk mendapatkan model perangkat di tingkat transfer register (RTL) berdasarkan basisnya. Pengembangan modul digital dilakukan dalam bentuk sirkuit digital yang digambar dalam editor sirkuit menggunakan pustaka CAD bawaan pabrikan untuk elemen sirkuit dasar, seperti flip-flop, dekoder, penghitung, penambah, dll.

Pendekatan populer lainnya yang memungkinkan transisi dari model fungsional di tingkat sistem ke model perangkat di tingkat transfer register adalah penggunaan bahasa desain tingkat sistem (SLDL). Bahasa tersebut termasuk SystemC, Handel-C, VHDL, Verilog, System Verilog. Keuntungan utama adalah independensi dari basis perangkat keras tempat perangkat akan diimplementasikan.

Jadi, di satu sisi, saat menggunakan teknologi IP-core, pengembang perangkat keras menerima solusi berkualitas tinggi, tetapi terkait erat dengan basis perangkat keras tempat perangkat diimplementasikan. Di sisi lain, saat menggunakan bahasa deskripsi perangkat keras pada tingkat sistem, implementasi perangkat tidak bergantung pada perangkat keras. Dari uraian di atas, dapat disimpulkan bahwa saat ini, penting untuk menggunakan penggunaan bersama modul digital dalam bahasa deskripsi perangkat keras dan inti IP pabrikan (Xilinx, Altera, Actel, dll.) dan pengembang pihak ketiga untuk mempercepat proses perancangan modul digital. Saat menggunakan modul digital dari pabrikan pihak ketiga, terkadang terdapat kekurangan informasi dalam dokumentasi yang menyertainya.

Memberikan informasi tentang modul digital yang dikembangkan untuk FPGA

Bergantung pada metodologi untuk mendapatkan konfigurasi FPGA sesuai dengan model fungsional perangkat di tingkat sistem, pengembang dapat membedakan jenis modul digital berikut untuk FPGA:

  • Perangkat lunak - modul digital yang dikembangkan, ditransmisikan ke konsumen dalam bentuk deskripsi dalam bahasa deskripsi perangkat keras (VHDL, Verilog) atau / dan dikembangkan di Editor Skema untuk digunakan lebih lanjut dalam program sintesis otomatis sirkuit logika dan dioptimalkan dalam hal parameter fungsional.
  • Firmware - modul digital yang dikembangkan oleh perusahaan pengembang pihak ketiga, yang disebut inti IP, ditransmisikan ke konsumen dalam bentuk rangkaian logika (netlist) berdasarkan pustaka elemen logika pabrikan FPGA dan dioptimalkan dalam hal fungsional dan parameter listrik.

Pada tahap pengembangan dokumentasi, berdasarkan pengalaman pribadi, selain dokumentasi dan spesifikasi desain biasa, perlu diterbitkan, dilakukan sesuai dengan GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, dokumentasi untuk semua jenis model (sistem, logika, sirkuit) dibuat pada tahap perancangan perangkat digital pada FPGA.

Dengan kata lain, kumpulan dokumentasi desain perangkat digital untuk FPGA, selain file firmware, instruksi pemrograman, dan proyek yang direkam dalam CD / DVD, juga harus menyertakan dokumentasi yang menyertai.

Meja. Daftar Bagian Dokumentasi Pendukung

Nama bagian Melihat
Perangkat lunak Firmware
Informasi Umum
Tujuan dan ruang lingkup HAI R
Spesifikasi HAI HAI
Deskripsi sinyal reset HAI HAI
Deskripsi sinyal sinkronisasi HAI HAI
Deskripsi antarmuka HAI R
Diagram waktu R HAI
Deskripsi register kontrol HAI HAI
Diagram struktural (fungsional). R R
Panduan Pemrograman HAI HAI
model atau keluarga FPGA,
perusahaan manufaktur
R HAI
Presentasi modul digital
untuk desain logika pada FPGA
model RTL HAI Bukan
Model logika Bukan HAI
Batas Desain HAI HAI

Berikut adalah daftar bagian (tabel) yang harus disertakan dalam dokumentasi terlampir dari proyek modul digital untuk FPGA. Untuk setiap bagian, tanda-tanda kebutuhan untuk memasukkan bagian dalam kumpulan dokumen ditunjukkan:

  • "O" - bagian yang disediakan wajib;
  • "R" - bagian yang direkomendasikan untuk pengiriman.

Format file yang disarankan untuk mengirimkan dokumentasi pendukung adalah MS Word, PDF (format terbaik), HTML. File deskripsi dalam bahasa deskripsi perangkat keras (VHDL, Verilog) dan/atau yang dikembangkan di Editor Skema disediakan sesuai kebutuhan oleh perangkat lunak desain CAD. Pengecualian dapat berupa ketentuan tambahan dalam format grafik (JPEG, BMP) dari file sirkuit digital yang dikembangkan di Editor Skema.

Informasi Umum

Bagian ini menjelaskan informasi umum tentang modul digital yang dikembangkan dalam bentuk deskripsi:

  • diagram fungsional dan blok/bagian penyusunnya;
  • ulang sinyal, sinkronisasi;
  • antarmuka terapan;
  • register kontrol;
  • diagram waktu;
  • pemrograman.

Tujuan dan ruang lingkup

Tujuan modul digital, ruang lingkup penerapannya ditentukan.

Spesifikasi

Deskripsi karakteristik teknis utamanya diberikan, seperti kinerja, konsumsi daya untuk chip FPGA tertentu, jumlah gerbang yang ditempati, jenis chip FPGA yang digunakan. Selain itu, pabrikan FPGA yang digunakan dalam pengembangan modul CAD digital dan perangkat lunak yang digunakan untuk pemodelan dan verifikasi ditunjukkan. Untuk semua program yang digunakan, versi dan pembaruan yang diinstal ditunjukkan. Representasi grafis dari modul digital dalam bentuk "kotak hitam" dengan penunjukan input / output eksternal diberikan dan deskripsi singkat tentang tujuannya diberikan.

Deskripsi sinyal reset

Informasi terperinci tentang sinyal reset diberikan:

  • Daftar sinyal reset eksternal dan internal.
  • Parameter waktu dan diagram waktu sinyal reset.
  • Sirkuit untuk menghasilkan sinyal reset internal, jika ada disertakan dalam modul digital.
  • Hubungan dengan sinyal lain (terutama sinyal sinkronisasi).

Deskripsi sinyal sinkronisasi

Informasi terperinci tentang sinyal sinkronisasi diberikan:

  • deskripsi sinyal sinkronisasi eksternal;
  • parameter waktu sinyal sinkronisasi;
  • deskripsi sinyal sinkronisasi internal dan skema pembentukannya;
  • hubungan waktu antara sinyal sinkronisasi dari sumber yang berbeda;

Deskripsi antarmuka

Fitur penggunaan semua antarmuka yang merupakan bagian dari modul digital yang dikembangkan, sebaiknya disatukan untuk mengatur interaksi dengan node lain dari sistem pada sebuah chip, diberikan. Selain itu, tautan Internet ke deskripsi lengkap antarmuka standar disediakan, atau deskripsi antarmuka itu sendiri disediakan. Saat ini, antarmuka ke bus AMBA, PLB, Wishbone diterima sebagai antarmuka terpadu untuk modul digital.

Diagram waktu

Informasi yang diperlukan disediakan untuk mengatur pertukaran data melalui antarmuka dan input/output lain dari modul digital: representasi grafis dari diagram waktu, deskripsi protokol transfer data, persyaratan untuk sinyal eksternal yang diterapkan pada modul digital (durasi, frekuensi, dll.) , dan informasi lainnya .

Deskripsi register kontrol

Deskripsi semua register kontrol modul digital diberikan. Deskripsi khas register kontrol berisi nama register, alamat register di ruang alamat internal, nilai awal setelah sinyal reset dihapus, jenis akses (baca / tulis), deskripsi internal bidang.

Diagram struktural (fungsional).

Gambar struktur internal koneksi node / blok internal utama modul digital, serta deskripsi tekstual singkatnya diberikan. Selain itu, deskripsi blok internal utama modul digital diberikan. Tujuan dari dokumen ini adalah untuk memberi konsumen informasi yang diperlukan untuk memahami prinsip pengoperasian modul digital.

Jumlah blok yang dijelaskan dan ruang lingkup deskripsi ditentukan oleh pengembang modul digital. Lebih disukai, jumlah minimum modul yang dijelaskan sesuai dengan jumlah elemen diagram struktural (fungsional) modul digital.

Gambaran khas unit dalam ruangan berisi:

  • tugas blok;
  • diagram blok struktural (fungsional) (jika perlu);
  • mode operasi dan algoritma;
  • grafik waktu kerja;
  • organisasi manajemen unit;
  • organisasi komunikasi dengan unit lain;
  • informasi lainnya.

Panduan Pemrograman

Menyediakan semua informasi yang diperlukan tentang proses pemrograman menggunakan CAD dari pabrikan modul digital di FPGA, alat yang diperlukan untuk mengembangkan dan men-debug perangkat lunak, dan pustaka perangkat lunak.

Model atau keluarga FPGA, pabrikan

Untuk Firmware modul digital, pabrikan FPGA, model atau keluarga FPGA, dan karakteristik kecepatannya ditunjukkan. Untuk modul digital Perangkat Lunak, informasi diberikan tentang jumlah sumber daya yang digunakan, persyaratan untuk FPGA yang diterapkan.

Representasi modul digital untuk desain logika

Artikel tersebut membahas kesulitan dalam menggunakan proyek "asing" di VHDL - kurangnya pedoman yang sesuai untuk penamaan dan penulisan program. Petunjuk umum juga diberikan tentang nama, tata krama penulisan program, dan pedoman sintesis. Masalah ini harus didiskusikan sedetail mungkin dengan pengembang jika di masa mendatang Anda berencana untuk terus mengembangkan atau memutakhirkan sendiri sebelum dia mulai mengembangkan model RTL modul digital pada FPGA. Ini terutama berlaku untuk jenis modul digital Perangkat Lunak pada FPGA. Bagian yang sama dari artikel menjelaskan persyaratan umum untuk keseluruhan proyek modul digital yang dikembangkan pada FPGA. Berikut adalah hal-hal yang harus Anda perhatikan saat menyusun kerangka acuan untuk pengembangan modul digital pada FPGA, dan ini terutama menyangkut transfer hasil kerja.

model RTL

Sebuah modul digital dijelaskan dalam subset disintesis dari bahasa Verilog atau VHDL atau/dan dikembangkan di Editor Skema dimaksudkan untuk digunakan pada tahap sintesis logika FPGA. Disediakan untuk Perangkat Lunak dalam bentuk proyek rakitan modul digital dalam sistem CAD dari pabrikan FPGA. Untuk modul digital Firmware, model RTL disediakan berdasarkan perjanjian terpisah.

Selain file model RTL, berikut ini ditransfer:

  • Petunjuk penggunaan model.
  • Deskripsi blok memori yang termasuk dalam model, termasuk jenis memori, ukuran, jumlah blok memori, nama hierarki blok memori.
  • Menjelaskan cara membuat kernel siap pakai saat menggunakan program untuk membuatnya (misalnya, CoreGenerator untuk Xilinx ISE). Jika tidak ada deskripsi, mungkin ada batasan pada desain ulang dan aplikasi karena ketergantungan teknologi dan pabrikan.
  • Dalam hal menggunakan mikroprosesor dari pabrikan (misalnya, dari prosesor Altera - Nios; dari Xilinx - Microblaze, mikroprosesor PowerPC), diperlukan deskripsi proses konfigurasi inti prosesor dan periferalnya.
  • Serangkaian tes (file Bangku Tes) untuk memverifikasi dan mensimulasikan modul digital yang ditulis dalam Verilog atau/dan VHDL atau/dan Sistem Verilog.
  • Informasi tambahan lainnya.

Model logika

Modelnya adalah netlist yang dideskripsikan menggunakan bahasa Verilog atau VHDL berdasarkan perpustakaan pabrikan FPGA dan disediakan untuk Firmware Modul Digital.

Selain file model logis, berikut ini ditransfer:

  • Petunjuk untuk menggunakan model ini.
  • Serangkaian pengujian (file Bangku Uji) untuk memverifikasi dan mensimulasikan modul digital yang ditulis dalam Verilog atau/dan VHDL atau/dan Sistem Verilog.
  • Panduan untuk bekerja dengan serangkaian pengujian untuk memodelkan dan memverifikasi modul digital.
  • Informasi tambahan lainnya.

Batas Desain

Kendala desain disediakan sebagai file yang menjelaskan serangkaian kendala yang dikenakan pada modul digital ketika disertakan dalam model logika sistem-on-chip. Set ini mencakup batasan untuk sinyal sinkronisasi (batasan jam), batasan waktu (batasan waktu), batasan interaksi modul digital dengan modul lain, dan kondisi pengoperasian modul digital. Sinopsis Design Constraints (SDC) atau format CAD pabrikan FPGA lebih disukai.

Contoh daftar batasan untuk sinyal sinkronisasi:

  • diagram waktu (Bentuk gelombang jam);
  • ketidakstabilan frekuensi jam (Jitter);
  • perubahan fase jam;
  • durasi waktu peralihan (Waktu transisi);
  • diagram pengaturan waktu dari sinyal jam turunan (Bentuk gelombang jam yang dihasilkan);
  • informasi tambahan lainnya.

Seperangkat batasan untuk sinyal sinkronisasi wajib untuk Perangkat Lunak dan Firmware modul digital.

Contoh daftar batas waktu:

  • waktu kemunculan sinyal di input (Waktu kedatangan di input);
  • waktu kemunculan sinyal pada keluaran (Waktu yang diperlukan pada keluaran);
  • jalur multi-siklus;
  • jalur palsu (False paths);
  • durasi waktu transisi sinyal data;
  • informasi tambahan lainnya.

Kesimpulan

Komposisi dokumentasi terlampir untuk modul digital yang dikembangkan untuk FPGA disediakan berdasarkan kesepakatan antara konsumen dan pengembang. Paling sering, pengembang hanya menyediakan modul digital, dijelaskan dalam VHDL, Verilog, Verilog Sistem dan / atau dikembangkan dalam editor skematik. Mengenai dokumentasi tambahan, jawaban pengembang paling sering adalah sebagai berikut: “Modul digital berfungsi, jadi ambil dan gunakan. Tidak ada yang sulit dalam mendeskripsikan sirkuit dalam bahasa perangkat keras: Anda akan mengetahuinya sendiri.”

Menurut pendapat penulis, Anda dapat memahami apa saja, itu semua tergantung pada keinginan dan waktu yang dihabiskan, dan waktu yang dihabiskan untuk memahami proyek "asing" pada modul digital yang sudah dikembangkan berbanding lurus dengan pengalaman mendeskripsikan peralatan di VHDL, Verilog dan sirkuit pengetahuan digital dan mikroprosesor. Hal ini dapat dihindari jika pada awalnya Anda setuju dengan pengembang tentang komposisi dokumentasi yang menyertainya, maka penggunaan modul digital dalam proyek Anda menjadi lebih mudah, dan implementasinya akan lebih cepat.

Kesimpulannya, penulis ingin mencatat bahwa saat merumuskan tugas untuk pengembangan perangkat digital pada FPGA, seseorang harus mematuhi rekomendasi yang diberikan dalam artikel, maka tidak akan ada masalah saat menggunakan kembali atau memutakhirkan perangkat digital yang dikembangkan sebelumnya. perangkat.

literatur

  1. Denisov A. Beberapa tip untuk mendesain perangkat digital pada VHDL untuk FPGA // Komponen dan teknologi. 2009. No.12.
  2. GOST 2.102-68 ESKD. Jenis dan kelengkapan dokumen desain.
  3. GOST 2.114-95 ESKD. Spesifikasi.
  4. GOST 15.101-98. Sistem untuk pengembangan dan produksi produk. Prosedur untuk melakukan pekerjaan penelitian ilmiah.
  5. GOST R 15.201-20-00. Sistem untuk pengembangan dan produksi produk. Produk untuk keperluan industri dan teknis. Prosedur untuk pengembangan dan produksi produk.