Mensimulasikan desain FPGA tanpa memiliki perangkat keras yang sebenarnya

9

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.)

Ingin
sumber
5
Saya tidak tahu apakah Anda dapat melakukannya dengan simulator Xilinx, tetapi sesuatu seperti Icarus Verilog akan membiarkan antarmuka simluasi Anda ke kode C yang dapat memperoleh data dari sumber dunia nyata; namun sepertinya menjalankan perintah dengan magnitudo lebih lambat daripada waktu nyata, jadi memproses sumber video langsung akan sulit.
Chris Stratton
1
oh itu, itulah ungkapan saya menemukan, menghubungkan ke sumber dunia nyata
WantIt
2
@vvavepacket upvote komentar / posting untuk berterima kasih kepada komentator / poster.
Chetan Bhargava
1
FPGA dalam video terlihat seperti Altera DE2. Itu antara 200 dan 600 USD tergantung pada lisensi dan chip. Ada simulator di csc.kth.se/~emille/niisim
Niklas
2
The Terasic DE0-nano berada di urutan $ 80 dan dapat antarmuka ke kamera dan LCD; sebenarnya mereka memiliki demo di situs web mereka. Tidak berafiliasi dengan mereka, tetapi DE0-nano punya FPGA kecil yang cukup bagus di papan harga yang pantas. Saya selalu benci betapa mahalnya papan dev.
akohlsmith

Jawaban:

5

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:

  • Murah
  • Langsung saja ke bagian paling dalam dan pelajari semua yang perlu Anda ketahui tentang pertimbangan perangkat keras. Memaksa Anda untuk membaca sebagian besar lembar data terlebih dahulu, dan menulis kode starter Anda sendiri, yang IMHO seringkali lebih baik daripada pendekatan plug and play dev board untuk belajar.
  • Hanya taruh di papan apa yang Anda butuhkan.
  • Dapatkan Anda lebih jauh ke arah tujuan Anda dari desain kerja nyata dengan kemungkinan upaya / penelitian yang sama seperti mencari tahu bagaimana mensimulasikan semuanya secara real-time.

Cons:

  • Masih perlu membeli seorang programmer, meskipun versi murah dari programmer Xilinx / Altera dapat ditemukan di eBay.
  • Jika desain dan masalah integritas sinyal / PCB bukanlah sesuatu yang ingin Anda fokuskan, maka Anda mungkin tidak tertarik pada banyak pengetahuan yang bisa diperoleh dengan melakukannya dengan cara ini.

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.

Oli Glaser
sumber
sangat menarik mengambil ini! dan mendorong juga
davidbak
6

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
1
Altera mendapat edisi gratis Quartus yang mencakup ModelSim. Versi gratis ModelSim membatasi kecepatan simulasi Anda, dan versi gratis Quartus membatasi jumlah inti CPU yang digunakan untuk mensintesis, tetapi sebaliknya berfungsi penuh.
akohlsmith
1
Altera ModelSim tidak mendukung co-simulasi VHDL dan Verilog dalam desain yang sama.
shuckc
3

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.

Jerry Coffin
sumber
maka cara terbaik adalah untuk mendapatkan entry level, papan FPGA biaya rendah untuk n00bs seperti saya
WantIt
Anda sebenarnya tidak harus melalui file testbench jika Anda memiliki simulator yang mendukung antarmuka untuk kode kustom seperti VPI, namun, mengingat bahwa simulator akan menjalankan pesanan dengan magnitudo lebih lambat daripada waktu nyata, mungkin lebih mudah untuk berurusan dengan data yang diambil dalam file yang dapat dibaca dengan kecepatan simulasi.
Chris Stratton
@ ChrisStratton Saya tertarik dengan ide data yang diambil dalam suatu file. Sumber daya apa saja untuk itu? Terima kasih
WantIt
Itu sepenuhnya akan tergantung pada periferal yang ingin Anda gunakan sebagai sumber data.
Chris Stratton
3

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 pingperintah 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.

Chiggs
sumber
0

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.

Martin Thompson
sumber
Tidak Benar, lihat komentar untuk pertanyaan.
Chris Stratton
OK, saya seharusnya lebih jelas - saya membatasi jawaban saya ke level "Saya baru ke FPGA" :) Jawaban diperbarui
Martin Thompson