VHDL dan Verilog adalah HDL hari ini. Apa keuntungannya bagi seseorang yang tidak memiliki pengalaman dengan HDL sama sekali?
VHDL dan Verilog adalah HDL hari ini. Apa keuntungannya bagi seseorang yang tidak memiliki pengalaman dengan HDL sama sekali?
Jawaban:
Saya tidak dapat memberi tahu Anda mana yang harus dipelajari, tetapi inilah beberapa poin yang kontras (dari pengguna yang sangat VHDL-sentris, tetapi saya telah mencoba bersikap seadil mungkin!), Yang dapat membantu Anda membuat pilihan berdasarkan preferensi Anda sendiri. dalam hal gaya pengembangan:
Dan perlu diingat kutipan terkenal yang berbunyi "Saya lebih suka yang mana dari dua yang saat ini saya tidak gunakan" (maaf, saya tidak ingat siapa yang sebenarnya menulis ini - mungkin Janick Bergeron?)
Banyak kesalahan kompilasi untuk memulai, tetapi kemudian sebagian besar berfungsi seperti yang Anda harapkan. Hal ini dapat menyebabkan kurva belajar perasaan yang sangat curam (bersama dengan sintaksis yang tidak dikenal)
Kesalahan ditemukan kemudian dalam simulasi - kurva belajar untuk "merasa seperti menyelesaikan sesuatu" lebih dangkal, tetapi berlangsung lebih lama (jika itu adalah metafora yang tepat?)
Juga mendukung Verilog adalah bahwa verifikasi kelas atas semakin condong ke SystemVerilog yang merupakan ekstensi besar untuk Verilog. Tetapi alat-alat kelas atas juga dapat menggabungkan kode sintesis VHDL dengan kode verifikasi SystemVerilog.
Untuk pendekatan lain sepenuhnya: MyHDL - Anda mendapatkan semua kekuatan Python sebagai bahasa verifikasi dengan satu set ekstensi sintesis yang darinya Anda dapat menghasilkan VHDL atau Verilog.
Atau Cocotb - semua kekuatan Python sebagai bahasa verifikasi, dengan kode sintesis Anda masih ditulis di HDL mana pun yang Anda putuskan untuk pelajari (yaitu VHDL atau Verilog).
Saya belajar keduanya pada minggu yang sama. VHDL seperti ADA / Pascal dan Verilog seperti C. VHDL lebih bertele-tele dan lebih menyakitkan untuk mendapatkan kompilasi, tetapi begitu Anda mendapatkan kompilasi peluang Anda untuk sukses lebih baik. Setidaknya itulah yang saya temukan. Verilog, seperti C, cukup puas untuk membiarkan Anda menembak diri sendiri. Beberapa industri seperti dirgantara / pemerintah condong ke VHDL, yang lain condong ke Verilog. Masalah yang saya temukan dengan keduanya adalah kemampuan bangku tes, dan ketika mencoba untuk belajar dan mencoba untuk mendapatkan dari simulasi ke silikon / FPGA menulis kode hanya disintesis adalah tingkat pendidikan yang lain.
Ada bahasa yang saya sangat suka disebut CDL . Ini benar-benar dapat disintesis, Anda menulis bangku tes dengan cara lain, menghasilkan Verilog yang dapat disintesis yang dapat Anda bawa ke alat lain. Sayangnya dokumen CDL kurang, saya berharap untuk mendapatkan beberapa sampel di dunia untuk menunjukkan betapa jauh lebih mudah untuk digunakan daripada Verilog atau VHDL, tetapi tidak perlu dilakukan. Itu datang dengan lingkungan sim / test sendiri. Dengan CDL dan GTKWave Anda dapat melakukan banyak pekerjaan.
Alat lain yang disebut Verilator , cukup kaku dalam menjaga Verilog Anda tetap bersih. Ini adalah simulator Verilog gratis dengan cara yang sangat mudah untuk melampirkan ke sim atau membuat bangku tes di C / C ++. Anda dapat menggunakan Verilog juga, tidak membatasi Anda di sana. Ada Icarus Verilog juga, yang lebih besar dan lebih terkenal, tetapi saya akan merekomendasikan Verilator jika Anda ingin belajar Verilog. Untuk VHDL ada GHDL , pengalaman saya dengannya tidak sebagus Verilator , tapi setidaknya ada alat gratis untuk mencoba membuat kaki Anda basah. Jika Anda memiliki pengalaman pemrograman perangkat lunak, Anda cenderung untuk mengambil dan menikmati Verilog lebih cepat daripada VHDL.
Saya pasti setuju dengan Leon, cobalah keduanya. fpga4fun dan halaman web lainnya memiliki beberapa info bagus dan beberapa halaman tersebut akan memberi Anda baik yang setara dengan Verilog dan VHDL untuk topik yang mereka diskusikan. Saya menemukan halaman seperti itu yang paling berguna untuk membandingkan kedua bahasa. Jika menggunakan HDL adalah sesuatu yang ingin Anda lakukan dalam karir Anda, saya sarankan memiliki setidaknya beberapa kemampuan dengan keduanya, mungkin sangat bagus dengan satu tetapi tidak sepenuhnya tidak dapat menggunakan yang lain.
Banyak perang suci telah diperebutkan ini. Salah satu kelemahan Verilog adalah perilaku non-deterministiknya. http://www.sigasi.com/content/verilogs-major-flaw
Keduanya memiliki kelebihan dan kekurangan. VHDL lebih bersifat akademis, verbal, dan kompleks. Anda harus menulis lebih banyak kode, tetapi kerasnya berarti lebih mungkin untuk bekerja. Verilog lebih sederhana untuk desain digital biasa, tetapi membuatnya lebih mudah untuk membuat bug yang rumit. VHDL lebih umum di universitas. Verilog lebih umum di perusahaan semikonduktor besar.
Biasanya pilihan satu atau yang lain didorong oleh alat yang Anda gunakan. Beberapa alat FPGA populer bekerja lebih baik dengan VHDL. Beberapa alat ASIC populer bekerja lebih baik dengan Verilog. Jadi, mana yang lebih baik tergantung pada apa yang ingin Anda lakukan dengannya.
Katakanlah Anda ingin membangun proyek kecil menggunakan FPGA Altera yang populer di sekolah-sekolah EE. Alat gratis ini mendukung kedua HDL. Tetapi Anda mungkin menemukan komunitas pengguna sebagian besar menggunakan VHDL. Akan ada lebih banyak contoh kode, modul yang dapat digunakan kembali, dll. Jika Anda memilih bahasa itu.
Sebaliknya, jika Anda berniat bekerja di perusahaan besar yang melakukan pekerjaan desain chip serius, hampir semua dari mereka menggunakan Verilog hari ini. Alat sintesis, simulasi, dan verifikasi tugas berat dioptimalkan untuk Verilog. Dan belakangan, SystemVerilog - ekstensi ke Verilog untuk mendukung desain dan verifikasi sistem tingkat tinggi.
Diskusi lebih lanjut di sini dan tautan bermanfaat di sini:
Untuk pemula / penggemar, saran terbaik adalah memutuskan chip apa yang ingin Anda mainkan, dan lihat contoh apa yang disediakan vendor. Gunakan itu. Setelah Anda seorang perancang digital yang berpengalaman, mempelajari bahasa lain hanya akan memakan waktu beberapa hari.
Jawaban singkat : gunakan SystemVerilog, tetapi pelajari juga VHDL . Hindari Verilog-2001 jika Anda bisa.
Jawaban yang sangat panjang : untuk saat ini, saya anggap oleh Verilog maksud Anda Verilog-2001 yang mungkin juga merupakan jawaban kebanyakan orang. Saran terbaik mungkin adalah mempelajari keduanya, tetapi jangan gunakan keduanya (lebih lanjut tentang ini di akhir jawaban). Perbedaan utama dapat dilanjutkan sebagai berikut:
wire
vs reg
)Yang mengatakan, konsep yang paling penting dibagikan oleh dua bahasa, meskipun dengan nama yang berbeda (misalnya always
vsprocess
) dan dalam hal apapun kesulitan dalam mempelajari HDL lebih terkait dengan konsep di belakang (seperti konkurensi dari semua proses, HW konvensi, dll.) daripada ke bahasa itu sendiri. Mempertimbangkan perbedaan, jika pilihannya adalah antara Verilog 2001 dan VHDL saya pribadi akan membahas pemula untuk VHDL.
Namun, seperti yang saya katakan, saran saya sebenarnya adalah tidak menggunakan VHDL atau Verilog-2001 jika Anda tidak memiliki kekuatan untuk memilih. Bertentangan dengan apa yang diasumsikan banyak orang, SystemVerilog bukan bahasa tingkat tinggi yang hanya berguna untuk desain atau verifikasi tingkat sistem dan memiliki sedikit untuk dibagikan dengan bahasa yang dapat dimasukkan ke dalam alat sintesis tingkat tinggi seperti SystemC.
Sebaliknya, SystemVerilog adalah pembaruan penuh bahasa Verilog (berdasarkan Verilog-2005, lihat http://en.wikipedia.org/wiki/SystemVerilog ) yang memiliki subset yang sepenuhnya dapat disintesis yang sesuai dengan keringkasan Verilog dengan ekspresivitas yang lebih tinggi daripada keduanya. Verilog-2001 dan VHDL, memberikan pendapat saya yang terbaik dari kedua dunia.
Contoh konstruksi / ekspresi yang sangat signifikan tersedia di SystemVerilog yang tidak tersedia di Verilog-2001, VHDL atau keduanya meliputi:
always_ff
, always_latch
, always_comb
Blok yang membantu desainer membedakan segera antara blok menerapkan berbagai jenis logika, dan - untuk always_comb
dan always_latch
- (! Sumber bug tak terbatas dalam VHDL dan Verilog, terutama bagi pemula) menyimpulkan secara otomatis sinyal yang harus pergi pada daftar sensitivitaslogic
jenis yang menggantikan yang membingungkan wire
danreg
jenis Verilog-2001logic [N-1:0][M-1:0][P-1:0]
), sedangkan Verilog-2001 hanya mendukung bus dua dimensi dan VHDL memaksa perancang untuk mendefinisikan tipe baru untuk membangun struktur yang samastruct
(mirip dengan VHDL record
) dan bahkan tingkat interface
yang lebih tinggi yang dapat digunakan dengan sangat efektif untuk memodelkan struktur reguler (seperti pelabuhan bus)Saya menguji semua perbedaan ini "pada kulit saya" ketika bekerja pada sistem multicore yang cukup kompleks untuk keperluan penelitian. Sekarang didukung oleh banyak alat, dan saya tahu pasti (dari menggunakannya hampir setiap hari) bahwa itu didukung oleh alat Synopsys (baik untuk aliran sintesis ASIC dan FPGA), Xilinx Vivado (untuk sintesis FPGA), dan alat simulasi seperti sebagai MentorGraphics Modelsim, Cadence NCsim dan Synopsys VCS.
Agar benar-benar lengkap, ada dua jenis bahasa signifikan lainnya di kotak peralatan perancang perangkat keras (meskipun kualitas alat-alat ini sangat bervariasi):
Karier saya selama 13 tahun terakhir adalah 80% ASIC dan 20% FPGA.
VHDL digunakan untuk 3,5 tahun pertama dan sisanya adalah Verilog. Saya tidak merasa sulit untuk beralih ke Verilog, dan untuk alasan lokasi (Lembah Silikon) & kecepatan, saya hanya kode di Verilog hari ini.
Juga, saya melakukan banyak antarmuka Async, kait, dan desain semi custom tingkat gerbang untuk kinerja, jadi VHDL hanya memiliki sedikit penggunaan dalam hidup saya sekarang. Sebaliknya saya menemukan SystemVerilog dan SystemC jauh lebih berguna untuk diambil dan digunakan untuk proyek-proyek teknik besar.
Pada satu tahap, alat-alat seperti Verilator (gratis! & Cepat) menyelamatkan saya banyak dana yang sangat dibutuhkan untuk simulasi kritis. Anda belum memiliki opsi ini (belum) untuk VHDL. Dan Anda mungkin tidak pernah membutuhkannya jika Anda selalu berenang di kolam yang kaya raya atau Anda tidak melakukan desain gerbang> 1M.
Namun demikian, VHDL lebih baik untuk pemula sebelum mereka mengembangkan prinsip-prinsip desain HW yang solid. Komunikasi saya dengan orang-orang EDA di sini menyarankan mereka telah melakukan sedikit pengembangan VHDL selama 10 tahun terakhir, dan ada dorongan besar di belakang HLS hari ini. Jadi tidak akan ada banyak pengembang alat VHDL di ...
Saya menggunakan VHDL, terutama karena saya tahu C sangat baik dan menemukan bahwa mencoba menulis Verilog cenderung membuat saya menulis seolah-olah saya menargetkan CPU yang tidak menggambarkan perangkat keras.
Sangat menjengkelkan untuk menulis halaman kode dan menyadari apa yang Anda tulis adalah program sekuensial bukan desain perangkat keras, ya itu akan synth, tetapi hasilnya jelek dan lambat.
VHDL cukup berbeda sehingga saya merasa jauh lebih mudah untuk berpikir dalam hal desain logika dan tidak mengontrol aliran.
Pada akhirnya, bahasa jarang sulit, keterampilan dalam desain sistem bukan pengetikan.
Salam, Dan.
Tahun lalu universitas yang saya pelajari mempromosikan dua kursus terbuka untuk pemula. Keduanya membahas konten yang sama tetapi satu menggunakan VHDL dan Verilog lainnya.
Tentu saja saya sudah bertanya kepada kedua profesor tentang perbedaan VHDL dan Verilog. Keduanya tidak bisa memilih yang terbaik.
Jadi saya harus melakukan kedua kursus untuk melihat mana yang lebih baik bagi saya. Kesan pertama saya adalah VHDL lebih seperti Pascal dan Verilog lebih seperti C .
Setelah ini saya memutuskan untuk hanya melakukan VHDL karena, pada saat itu, saya bekerja dengan Delphi.
Tapi saya tidak pernah bekerja dengan FPGA setelah kursus. Jadi ini yang terbaik yang bisa saya bantu.
Saya menggunakan VHDL hampir seluruhnya. Pengalaman saya adalah bahwa VHDL lebih umum di Eropa, Verilog di AS, tetapi VHDL telah membuat kemajuan yang stabil di AS juga. Mengetik VHDL yang kuat tidak mengganggu saya karena saya menggunakannya seperti bahasa desain perangkat keras kuno seperti yang digunakan dalam logika kecil yang dapat diprogram, seperti PALASM atau AHDL Altera.
Masalah besar bagi kebanyakan orang yang menggunakan VHDL adalah tipe yang kuat. Mereka ingin membuat penugasan antara std_logic_vector (yang saya anggap sebagai kumpulan kabel di target) dan "int", (yang saya anggap sebagai nomor yang disimpan di komputer yang menyusun desain). Konversi tipe yang paling menjengkelkan yang biasanya saya temui adalah antara bit_vector (yang saya anggap sebagai deskripsi kumpulan kabel di komputer yang menyusun desain) dan std_logic_vector. Sebenarnya apa yang menyeret saya ke stackexchange sekarang sedang mencari konversi dari char (variabel karakter yang disimpan di komputer kompilasi) ke int.
Kembali pada hari itu, konflik paling terkenal antara VHDL dan Verilog adalah kontes desain yang diselenggarakan oleh majalah ASIC & EDA. Google "Hasil Tidak Terduga Dari Kontes Desain Perangkat Keras: Verilog Won & VHDL Lost? - You Be the Judge!", Misalnya: http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual /Example/lrgeEx2/cooley.html
Kontes ini untuk mengimplementasikan register 9-bit yang cukup rumit. Itu menghitung naik / turun serta beberapa hal lainnya. Hasilnya adalah bahwa 8 dari 9 desainer Verilog memiliki kode yang berjalan setelah 90 menit. Nol dari 5 orang VHDL punya sesuatu yang berfungsi.
Saya tidak menggunakan VHDL seperti orang lain. Cara saya menggunakannya, tipe-tipe itu tidak sering menghalangi saya. Saya telah mengimplementasikan proyek di atas dengan cara yang sama saya melakukan segala sesuatu yang lain, seluruhnya di std_logic dan std_logic_vector, menggunakan (kembali pada hari itu) perpustakaan unsigned IEEE. Sebaliknya, saya membayangkan bahwa desainer VHDL melakukan pekerjaan mereka dengan int dan tersesat dalam konversi tipe.
Ada dua tempat Anda bisa tersesat dalam konversi jenis: (a) desain Anda, dan (b) bangku tes Anda. Bagi saya, lebih mudah untuk menulis bangku tes (hampir) seluruhnya dalam std_logic sehingga bangku tes itu sendiri (hampir) dapat disintesis. Maksud saya "hampir" adalah bahwa saya akan mendefinisikan jam dengan tugas yang tertunda yang tidak dapat disintesis. Tapi selain itu (dan komentar), Anda tidak dapat membedakan bangku tes dari logika yang disintesis.
Ngomong-ngomong, sebelum Anda memutuskan bahasa pertama untuk dipelajari (hampir semua orang memiliki preferensi tetapi hampir semua orang menggunakan keduanya), saya akan menyarankan mencari kontes itu dan membaca komentar di atasnya.
Salah satu masalah yang saya amati dengan VHDL adalah karena itu adalah bahasa yang sangat verbose, tampaknya ada kecenderungan (dalam pikiran para desainer) untuk percaya bahwa itu tidak memerlukan komentar. Tentu saja tidak benar, Anda harus menulis komentar sebelum kode.
Saya akan menimbang dua sen saya: Saya sendiri adalah pengguna VHDL yang berat, tetapi Verilog pasti bisa menyelesaikan pekerjaan dengan baik. Anda selalu dapat membungkus satu dengan yang lain (meskipun dengan waktu dan biaya pengetikan).
Apa yang saya temukan adalah VHDL mentah tidak memiliki banyak fungsi praktis. (ATAU atau DAN: ing seluruh std_logic_vector datang ke pikiran). Dengan demikian, membangun sendiri kotak peralatan yang memiliki fungsi yang dapat disintesis dan disintesis sangat membantu meningkatkan produktivitas Anda saat menggunakan VHDL.
Mungkin seseorang bisa mereferensikan perpustakaan open-source yang bagus yang menawarkan semua fungsi "baik-untuk-memiliki" ini?
Jawaban sebelumnya cukup banyak mencakup perbedaan antara kedua bahasa, dan artikel ini juga membahas poin-poinnya dengan baik: http://www.bitweenie.com/listings/verilog-vs-vhdl/
Saya juga ingin membuat beberapa poin lagi yang belum disebutkan.
Saya akan merekomendasikan belajar VHDL terlebih dahulu karena beberapa alasan. Pengetikan yang kuat membantu beberapa kesalahan pemula yang mudah ditangkap oleh kompiler. Saya juga mendengar VHDL lebih sulit untuk diambil setelah menggunakan Verilog terlebih dahulu.
Jujur, Anda tidak bisa salah dengan kedua bahasa; dan jika Anda bekerja di industri ini sangat lama, Anda akhirnya akan belajar kedua bahasa itu.