Saya baru mengenal FPGA dan saat ini mengambil kelas HDL (Verilog khususnya). Saya memiliki pengetahuan yang cukup dalam desain digital seperti rangkaian kombinasional dan sekuensial.
Saya ingin membuat proyek yang mirip dengan yang ditampilkan di video YouTube ini .
Saya juga tahu bahwa Xilinx ISE dapat memproses sinyal logika dan mensimulasikan bentuk gelombang. Apakah ia memiliki kemampuan ekstra seperti mendapatkan sinyal input melalui USB, kamera, dll. Dan mengeluarkannya di komputer Anda.
Apakah mungkin menjalankan proyek ini (seperti simulasi di komputer) tanpa membeli papan FPGA yang sebenarnya? Maksud saya adalah, dapatkah saya membangun, membuat kode dan menjalankan proyek itu di komputer saya, dan cukup menghubungkan kamera saya melalui USB, kemudian membiarkan sinyal video yang masuk diproses oleh simulator HDL seperti Xilinx ISE, dll. (Apakah benar-benar membeli papan FPGA dan mensintesis proyek Anda di sana, saya saat ini tidak memiliki anggaran untuk memilikinya)
(Apa yang saya maksud sebenarnya adalah menghubungkan desain HDLl ke sumber dunia nyata, kode C, dll.)
Jawaban:
Alat Xilinx tidak dapat antarmuka secara real-time sejauh yang saya tahu, begitu juga ModelSim (yang digunakan oleh IDE Libero dari Actel)
Saya tidak tahu tentang simulator open source, ada beberapa proyek yang agak eksotis di luar sana sehingga mungkin ada sesuatu yang bisa melakukan ini.
Namun, ini mungkin Anda jawaban yang tidak Anda minta (saya akan menghapusnya jika tidak membantu), tetapi saya akan mempertimbangkan untuk membangun papan FPGA Anda sendiri untuk melakukan ini atau setidaknya memulai sepanjang jalan menuju itu. Saya mengukir papan FPGA pertama saya dan meskipun sangat sederhana (papan bukan proses ;-)), itu mengajari saya banyak sekali cukup cepat.
Pro:
Cons:
Saya mengerti etsa papan Anda sendiri mungkin tidak perlu, saya hanya melakukannya karena saya punya FPGA di sana, tidak sabar dan tidak ingin menunggu 2 minggu untuk PCB tiba. Ada banyak penawaran yang sangat murah di sini untuk papan 2-lapisan, yang akan dilakukan untuk setidaknya menjalankan desain Anda (mungkin dengan kecepatan lebih rendah dari yang diinginkan - biasanya jumlah lapisan minimum untuk desain FPGA kecepatan tinggi adalah 4, tetapi ini adalah jauh lebih mahal)
Bagaimanapun, Spirit Circuits melakukan kesepakatan PCB 2-layer "telanjang" yang sepenuhnya gratis (satu bulan, satu desain, tanpa topeng atau layar silks) yang berguna untuk desain satu kali.
Juga, untuk papan prototipe murah 2 dan 4 layer yang tepat, ITead dan Seed Studio harganya serendah $ 10 untuk 10 papan (atau mungkin 5 pada harga itu) layanan.
sumber
Standar Xilinx ISE Webpack (versi gratis yang dapat Anda unduh dari xilinx.com) termasuk simulator yang disebut iSim. Ini bukan simulator yang hebat, tetapi berfungsi penuh dan harganya tepat.
Meskipun saya belum menggunakan alat-alat Altera, akan mengejutkan saya jika simulator tidak disertakan.
Tapi ... Anda perlu tahu apa yang bisa dan tidak bisa dilakukan oleh simulator. Sebagai permulaan, itu tidak dapat mensimulasikan FPGA berjalan dengan kecepatan penuh. Bahkan, mereka cukup lambat. Bergantung pada kerumitan FPGA yang disimulasikan, tidak akan mengejutkan saya untuk melihatnya butuh 1 menit untuk mensimulasikan 1 ms dari "waktu simulasi". Jika Anda ingin mensimulasikan satu jam "waktu simulasi", itu akan membutuhkan 1000 jam waktu nyata.
Juga, FPGA yang disimulasikan tidak dapat berkomunikasi langsung dengan hal-hal seperti port USB Anda. FPGA yang disimulasikan tidak berkomunikasi dengan "testbench". Testbench adalah sepotong kode VHDL atau Verilog yang mengumpankan input dari FPGA (atau bagian dari FPGA) dan memverifikasi output FPGA Anda. Anda dapat melakukan beberapa hal yang cukup rumit dalam testbench, seperti menggunakan angka floating point, membaca dan menulis file, dan menjalankan logika yang tidak mungkin untuk disintesis.
sumber
Saya tidak tahu ada simulator yang secara langsung menghubungkan ke sinyal yang datang pada port USB (atau perangkat keras lainnya).
Paling tidak secara teori, adalah mungkin untuk menulis beberapa perangkat lunak yang akan mengambil sinyal yang tiba di pelabuhan, dan menerjemahkannya menjadi file testbench yang dapat diproses oleh simulator. Sayangnya, saya tidak tahu ada perangkat lunak yang ada untuk melakukan ini, dan menulis sendiri tidak akan sepele.
sumber
Anda harus menggunakan antarmuka co-simulasi (DPI, VPI, VHPI, FLI) yang memungkinkan Anda untuk menulis kode yang menghubungkan ke dalam simulator dan dengan demikian menjembatani antara RTL yang berjalan dalam simulasi dan perangkat keras nyata pada mesin Anda.
Masalah signifikan yang akan Anda temui (terlepas dari antarmuka yang tidak terdokumentasi) adalah sinkronisasi dan waktu terkait. RTL yang berjalan dalam simulasi jauh lebih lambat dari perangkat keras yang sebenarnya - Anda harus dapat melangkah melalui interaksi dengan antarmuka eksternal agar sesuai dengan kecepatan simulasi. Beberapa antarmuka perangkat keras tidak akan menyukai ini! Sebagai contoh jika menggunakan TCP Anda mungkin harus memalsukan timer di tumpukan kernel untuk menghindari pengiriman ulang palsu dll.
Icarus mendukung VPI dan gratis sehingga Anda dapat bereksperimen tanpa mengeluarkan uang untuk lisensi. Anda mungkin ingin melihat kerangka kerja yang ada yang melakukan beberapa tugas berat co-simulasi dan memberikan abstraksi yang lebih bersih ke simulator. Salah satu kerangka kerja tersebut adalah Cocotb , perpustakaan open-source yang menyediakan antarmuka Python ke simulator. ( Penafian: Saya salah satu pengembang cocotb.)
Contoh yang mungkin relevan: kemarin saya mengetuk beberapa RTL untuk menanggapi permintaan ping dan membuat testbench yang membuka antarmuka TUN. Anda kemudian dapat melakukan ping antarmuka dengan menggunakan
ping
perintah dan RTL yang berjalan dalam simulasi menerima ping dan merespons. Seluruh testbench kurang dari 50 baris Python! Kode sumber untuk contoh ini ada di Github dan dijalankan di Icarus di Linux.sumber
Dalam sebagian besar kasus, apa pun yang Anda lakukan dalam simulasi tetap dalam simulasi. Anda tidak dapat mengakses perangkat keras nyata darinya - Anda harus memiliki model simulasi perangkat keras yang sebenarnya.
Namun, jika Anda bersedia berusaha, sebagian besar simulator memiliki antarmuka ke kode arbitrer. Di Verilog itu antarmuka yang cukup standar seperti yang saya mengerti, jadi sisi Verilog akan port antara simulator. Di VHDL-land, ada cara standar untuk melakukannya, tetapi setidaknya salah satu vendor besar memiliki cara mereka sendiri untuk melakukannya!
Juga perlu diingat bahwa interfacing secara real-time (yaitu pada tingkat FPGA akan melakukannya) sangat tidak mungkin - dan sisa simulasi Anda (HDL) tidak akan berjalan secara real-time juga. Seperti disebutkan dalam komentar, pemrosesan video simulasi secara waktu nyata tidak layak dilakukan dengan cara ini.
Secara pribadi, saya tidak pernah perlu mencoba ini, saya menemukan saya lebih produktif menulis model perangkat keras dan menjalankan semua dalam VHDL.
Tetapi, jangan mengabaikan manfaat melakukan simulasi - ini adalah cara yang jauh lebih cepat untuk menemukan apakah semuanya berfungsi (kompilasi memerlukan waktu beberapa detik) kemudian membangun bitstream (kompilasi memerlukan waktu puluhan menit hingga berjam-jam) dan mencobanya dalam perangkat keras.
sumber