VHDL ve Verilog , günün HDL'leridir. HDL'lerle hiç deneyimi olmayan biri için ikisinin de avantajları nelerdir?
VHDL ve Verilog , günün HDL'leridir. HDL'lerle hiç deneyimi olmayan biri için ikisinin de avantajları nelerdir?
Yanıtlar:
Hangisini öğreneceğinizi söyleyemem, ancak işte size zıt bazı noktalar (çok VHDL merkezli bir kullanıcıdan, ama mümkün olduğunca adil olmaya çalıştım!), Bu da kendi tercihlerinize dayanarak bir seçim yapmanıza yardımcı olabilir. gelişim tarzı açısından:
Ve şu anda "Şu anda kullanmadığım ikisinden hangisini tercih ediyorum" satırları boyunca uzanan ünlü alıntıyı aklınızda bulundurun (üzgünüm, bunu kimin yazdığını hatırlayamıyorum - muhtemelen Janick Bergeron?)
Başlamak için birçok derleme hatası var, ancak daha sonra beklediğiniz gibi çalışır. Bu, çok dik bir duygu öğrenme eğrisine neden olabilir (bilinmeyen sözdizimi ile birlikte)
Simülasyonda hatalar daha sonra bulunur - "bir şeyi yapmak gibi hissetmek" için öğrenme eğrisi daha sığdır, ancak daha uzun sürer (eğer doğru metafor bu ise?)
Ayrıca Verilog'un lehine, üst düzey doğrulamanın Verilog'a büyük bir uzantısı olan SystemVerilog'a giderek daha fazla yöneldiğidir. Ancak ileri teknoloji araçlar VHDL sentez kodunu SystemVerilog doğrulama koduyla da birleştirebilir.
Tamamen başka bir yaklaşım için: MyHDL - Python'un bütün gücünü VHDL veya Verilog üretebileceğiniz bir dizi sentez uzantısıyla doğrulama dili olarak alırsınız.
Veya Cocotb - Python'un bir doğrulama dili olarak tüm gücü, sentezlenebilir kodunuz hala öğrenmeye karar verdiğiniz HDL'de (yani VHDL veya Verilog) yazılmış.
İkisini de aynı hafta öğrendim. VHDL, ADA / Pascal ve Verilog, C gibidir. VHDL, bir derleme elde etmek için daha ayrıntılı ve daha acı vericidir, ancak bir derleme elde ettiğinizde başarı şansınız daha iyidir. En azından bulduğum şey bu. Verilog, C gibi, kendini ayağından vurmana izin vermekten oldukça memnundur. Havacılık / uzay gibi bazı endüstriler VHDL'ye, diğerleri Verilog'a doğru eğilmektedir. Her ikisinde de bulduğum sorun test tezgahı yetenekleri ve simülasyondan silikon / FPGA'ya sadece kodlanabilen sentezlenebilir kod yazmayı öğrenmeye ve almaya çalışırken başka bir eğitim seviyesi.
Gerçekten CDL denilen bir dil var . Kesinlikle sentezlenebilir, test tezgahlarınızı başka şekillerde yazıyorsunuz, başka aletlere götürebileceğiniz sentezlenebilir Verilog üretiyor. Ne yazık ki, CDL belgelerinde eksiklik var, umarım Verilog veya VHDL'den daha kolay kullanılabileceğini göstermek için dünyadan bazı örnekler alırım, ancak bunu yapmayın. Kendi sim / test ortamı ile birlikte geliyor. CDL ve GTKWave ile önemli miktarda iş yapabilirsiniz.
Verilator adlı başka bir araç , Verilog'unuzu temiz tutmada oldukça katıdır. C / C ++ 'da sim'e eklemek veya test tezgahları oluşturmak için çok kolay bir yöntemi olan ücretsiz bir Verilog simülatörüdür. Verilog'u da kullanabilirsiniz, sizi orada sınırlamaz. Orada Icarus Verilog hangi büyük ve daha iyi bilinen yanı, ama ben tavsiye ederim Verilator Eğer Verilog öğrenmek istiyorum. VHDL için GHDL var , benim deneyimim Verilator kadar iyi değildi , ama en azından ayaklarınızı ıslatmaya çalışmak için ücretsiz bir araç var. Yazılım programlama deneyiminiz varsa, VHDL'den daha hızlı bir şekilde Verilog'u yakalayıp keyfini çıkarabilirsiniz.
Leon ile kesinlikle aynı fikirdeyim, ikisini de deneyin. fpga4fun ve diğer web sayfalarında bazı bilgiler var ve bu sayfaların bazıları tartışmakta oldukları konu hakkında size hem Verilog hem de VHDL eşdeğerlerini verecek. İki dilin karşılaştırılmasında en yararlı sayfaları buluyorum. Bir HDL kullanmak kariyerinizde yapmak istediğiniz bir şeyse, her ikisinde de en azından bazı yeteneklere sahip olmanızı öneririm, belki bir tanesinde gerçekten iyi ama diğerini kullanamayacağımı bilemiyorum.
Bunun için birçok kutsal savaş yapıldı. Verilog'un özel bir dezavantajı deterministik olmayan davranışıdır. http://www.sigasi.com/content/verilogs-major-flaw
Her ikisinin de avantajları ve dezavantajları vardır. VHDL daha akademik, ayrıntılı ve karmaşıktır. Daha fazla kod yazmanız gerekir, ancak titizlik çalışması daha muhtemel demektir. Verilog, tipik dijital tasarım için daha basittir, ancak zorlu böcekler oluşturmayı kolaylaştırır. VHDL üniversitelerde daha yaygındır. Verilog büyük yarı iletken firmalarda daha yaygındır.
Genellikle bir veya diğerinin seçimi, kullandığınız araçlarla yapılır. Popüler FPGA araçlarından bazıları VHDL ile daha iyi performans gösteriyor. Bazı popüler ASIC araçları Verilog ile daha iyisini yapıyor. Yani, hangisi daha iyi, onunla ne yapmak istediğinize bağlı.
EE okullarında popüler olan Altera FPGA'ları kullanarak küçük projeler yapmak istediğinizi varsayalım. Ücretsiz araçlar her iki HDL'yi de destekler. Ancak kullanıcı topluluğunun çoğunlukla VHDL kullandığını görebilirsiniz. Bu dili tercih ederseniz daha fazla örnek kod, yeniden kullanılabilir modüller vs. olacak.
Tersine, ciddi çip tasarım işi yapan büyük bir şirkette çalışmak istiyorsanız, hemen hemen hepsi bugünlerde Verilog'u kullanıyor. Ağır hizmet sentezi, simülasyon ve doğrulama araçları Verilog için optimize edilmiştir. Ve son zamanlarda, SystemVerilog - üst düzey sistem tasarımı ve doğrulamasını desteklemek için Verilog'a yapılan uzantılar.
Burada daha fazla tartışma ve burada faydalı bağlantılar:
Yeni başlayanlar / hobiler için en iyi tavsiye, hangi fişlerle oynamak istediğinize karar vermeniz ve satıcının hangi örnekleri sağladığını görmektir. Bunu kullan. Deneyimli bir dijital tasarımcı olduğunuzda, diğer dili öğrenmek sadece birkaç gün sürecektir.
Kısa cevap : SystemVerilog kullanın, ancak VHDL'yi de öğrenin . Mümkünse Verilog-2001'den kaçının.
Çok uzun cevap : şimdilik, Verilog’dan, diğer çoğu cevapların da tahmin ettiği şey olan Verilog-2001’den bahsediyorsunuz. En iyi öneri muhtemelen ikisini de öğrenmek olacaktır, ancak ikisini de kullanmamalısınız (cevabın sonunda bu konuda daha fazla). Ana farklar aşağıdaki gibi devam ettirilebilir:
wire
vs reg
)Bununla birlikte, en önemli kavramlar, farklı isimlerle de olsa (örneğin, always
vs process
) ve her durumda bir HDL öğrenmedeki zorluğun, arkasındaki kavramlarla daha fazla ilgili olduğu (tüm süreçlerin eşzamanlılığı, HW gibi) , iki dil tarafından paylaşıldığı söyleniyor . sözleşmeler vs.) dilin kendisinden daha. Farklılıkları göz önünde bulundurarak, seçim Verilog 2001 ve VHDL arasındaysa, şahsen VHDL'ye yeni başlayan herhangi birisine hitap ederim.
Ancak dediğim gibi benim önerim, eğer seçme gücünüz varsa, aslında ne VHDL ne de Verilog-2001 kullanmak. Pek çok insanın varsaydıklarının aksine, SystemVerilog yalnızca sistem düzeyinde tasarım veya doğrulama için yararlı olan üst düzey bir dil değildir ve SystemC gibi yüksek düzeyli bir sentez aracına beslenebilecek dillerle paylaşması çok azdır.
Bunun yerine, SystemVerilog Verilog dilinin tam bir güncelleme (Verilog-2005 dayalı, bkz http://en.wikipedia.org/wiki/SystemVerilog eşleşen bir tamamen sentezlenebilir alt kümesi olmadığını) özlülüğü ile Verilog yüksek expressivity hem daha Bence Verilog-2001 ve VHDL, bence her iki dünyanın da en iyisini sunuyor.
SystemVerilog'da Verilog-2001, VHDL'de veya her ikisinde bulunmayan çok önemli yapılara / ifadelere örnekler:
always_ff
, always_latch
, always_comb
Tasarımcı mantığının farklı türde uygulayan bloklar arasında hemen ayırt yardımcı olur ve bloklar - için always_comb
ve always_latch
- (! Özellikle yeni başlayanlar için VHDL ve Verilog sonsuz böcek, kaynağı) hassasiyet listesinde gitmeli otomatik sinyalleri anlamasılogic
kafa karıştırıcı yerine türleri wire
ve reg
Verilog-2001 tiplerinilogic [N-1:0][M-1:0][P-1:0]
Verilog-2001 sadece iki boyutlu otobüsler destekler ve VHDL benzer yapılar inşa etmek, yeni türlerini tanımlamak için tasarımcı zorlar oysa),struct
(VHDL'ye benzer record
) gibi yüksek seviyeli yapılar ve interface
düzenli yapıları modellemek için çok etkili bir şekilde kullanılabilecek daha yüksek seviyeli yapılar (otobüs bağlantı noktaları gibi)Tüm bu farklılıkları “derimde” test ederken, araştırma amaçlı oldukça karmaşık bir çok çekirdekli sistem üzerinde çalışırken. Şimdi birçok araç tarafından destekleniyor ve eminim ki (neredeyse her gün bunları kullanarak), Synopsys araçları (hem ASIC hem de FPGA sentez akışları için), Xilinx Vivado (FPGA sentezi için) ve bu tür simülasyon araçlarıyla desteklendiğinden eminim. MentorGraphics Modelsim, Cadence NCsim ve Synopsys VCS olarak çalışmaktadır.
Tamamen tamamlanmak için, donanım tasarımcısının araç kutusunda iki önemli dil türü daha vardır (bu araçların kalitesi çok değişebilir):
Son 13 yıldır kariyerim% 80 ASIC ve% 20 FPGA idi.
VHDL 1. 3.5 yıl kullanıldı ve gerisi Verilog idi. Verilog’a geçişi zor bulmadım ve konum (Silikon Vadisi) ve hız nedeniyle sadece bugün Verilog’da kod yazdım.
Ayrıca, performans için birçok Async arayüzü, mandal ve geçit yarı özel tasarımları yapıyorum, bu yüzden VHDL hayatımda çok az kullanıyor. Bunun yerine SystemVerilog ve SystemC'yi büyük mühendislik projelerinde almak ve kullanmak için çok daha faydalı buldum.
Bir aşamada Verilator (ücretsiz! Ve hızlı) gibi araçlar, kritik simülasyonlar için bana çok fazla ihtiyaç duyulan fondan tasarruf sağladı. VHDL için bu seçeneğe (henüz) sahip değilsiniz. Her zaman zengin bir havuzda yüzüyorsanız veya> 1M kapı tasarımları yapmazsanız, buna asla ihtiyacınız olmayabilir.
Yine de, VHDL yeni başlayanlar için sağlam HW tasarım ilkeleri geliştirmeden önce daha iyidir. Buradaki EDA çalışanları ile olan iletişimlerim, son 10 yıldır çok az VHDL geliştirmeleri yaptıklarını ve bugün HLS'nin arkasında büyük bir sürücü olduğunu gösteriyor. Bu yüzden etrafta pek çok VHDL aracı geliştiricisi olmayacak ...
VHDL'ye gittim, çünkü çoğunlukla C'yi çok iyi tanıyordum ve verilog yazmayı denemenin, donanım tanımlamamış bir CPU'yu hedefliyormuşum gibi yazma eğiliminde olduğunu buldum.
Bir kod sayfası yazmak ve yazdıklarınızın farkına varmak çok sinir bozucu, donanım tasarımı değil, sıralı bir programdı, evet, sentezleyecekti, ancak sonuç çirkin ve yavaştı.
VHDL, mantık tasarımı ve kontrol akışı açısından düşünmeyi çok daha kolay bulduğumdan yeterince farklıydı.
Günün sonunda, dil nadiren zor olan bir şeydir, beceri sistem tasarımında yazarken değil.
Saygılar, Dan.
Geçen sene çalıştığım üniversite yeni başlayanlar için iki açık kurs düzenledi. Her ikisi de aynı içeriği içeriyordu, ancak biri VHDL ve diğeri Verilog kullanıyordu.
Tabii ki iki profesöre de VHDL ve Verilog'un farklılıklarını sordum. Her ikisi de en iyisini seçemezdi.
Bu yüzden, hangisinin benim için daha iyi olacağını görmek için iki dersi de yapmak zorunda kaldım. İlk izlenimim VHDL'nin daha çok Pascal benzeri ve Verilog'un daha çok C'ye benzemesiydi .
Bundan sonra sadece VHDL yapmaya karar verdim çünkü o sırada Delphi ile çalışıyordum.
Fakat kurstan sonra FPGA ile hiç çalışmadım. Demek sana yardım edebileceğim en iyisi bu.
VHDL'yi neredeyse tamamen kullanıyorum. Benim deneyimim, VHDL’nin Avrupa’da, ABD’deki Verilog’da daha yaygın olduğu, ancak VHDL’nin ABD’de de istikrarlı bir ilerleme kaydettiği yönünde. VHDL'nin güçlü şekilde yazılması beni rahatsız etmiyor çünkü onu PALASM veya Altera'nın AHDL'i gibi küçük programlanabilir mantıklarda kullanılan eski moda donanım tasarım dili gibi kullanıyorum.
VHDL kullanan çoğu insan için en büyük problem güçlü tiplerdir. Std_logic_vector (hedefteki bir kablo koleksiyonu olarak düşündüğüm) ve "int" ((derlemeyi tasarlayan bilgisayarda saklanan bir sayı olarak düşündüğüm) arasında görevler yapmak istiyorlar. Genelde karşılaştığım en sinir bozucu tip dönüşümü bit_vector (tasarımı derleyen bilgisayardaki tel koleksiyonunun bir açıklaması olarak düşündüğüm) ve std_logic_vector arasındadır. Aslında beni şu anda stackexchange'e sürükleyen şey, char'den (derleme bilgisayarında depolanan bir karakter değişkeni) int'ye dönüşüm aramaktı.
O gün, VHDL ve Verilog arasındaki en ünlü çatışma ASIC & EDA dergisi tarafından düzenlenen tasarım yarışmasıydı. Google "Bir Donanım Tasarım Yarışmasından Beklenmeyen Sonuçlar: Verilog Won & VHDL Kayıp mı? - Yargıç Sizsiniz", örneğin: http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual /Example/lrgeEx2/cooley.html
Yarışma oldukça karmaşık 9 bitlik bir kayıt defteri uygulamaktı. Bazı diğer şeylerin yanı sıra sayma / aşağı sayma vardı. Sonuçlar 9 Verilog tasarımcıdan 8'inde 90 dakika sonra kodun çalıştığını gösteriyordu. Beş VHDL adamından sıfırının çalışan bir şeyi vardı.
VHDL'yi başkası gibi kullanmıyorum. Kullandığım şekilde, türler çok sık karşılaşmıyor. Yukarıdaki projeyi, IEEE imzasız kütüphanesini kullanarak (gün içinde) tamamen std_logic ve std_logic_vector içinde yaptığım her şeyi yaptığım gibi uygulardım. Bunun yerine, VHDL tasarımcılarının çalışmalarını int ile yaptığını ve tür dönüştürmede kaybolduğunu hayal ediyorum.
Tip dönüşümü sırasında kaybedebileceğiniz iki yer vardır: (a) tasarımınız ve (b) sınav masanız. Benim için, test tezgahını (neredeyse) tamamen std_logic'de yazmak kolaydır, bu nedenle test tezgahının kendisi (neredeyse) sentezlenebilir. "Neredeyse" ile, saati sentezlenemeyen gecikmeli bir atama ile tanımlayacağım anlamına gelir. Fakat bunun dışında (ve yorumlar) test tezgahlarımı sentezlenmiş mantıktan ayırt edemezsiniz.
Her neyse, öğrenecek ilk dile karar vermeden önce (neredeyse herkesin tercihi var ama neredeyse herkes her ikisini de kullanır), bu yarışmaya bakmanızı ve yorumları okumanızı öneririm.
VHDL ile gözlemlediğim sorunlardan biri, çok ayrıntılı bir dil olduğu için, yorumlayıcıların yorum gerektirmediğine inanma eğilimi (tasarımcıların kafasında) olduğu görünüyor. Tabii doğru değil, yorumları koddan önce yazmalısınız.
İki kuruşa ağırlık vereceğim: Ben ağır VHDL kullanıcısıyım ama Verilog kesinlikle işi de halledebiliyor. Her zaman bir başkasını sarabilirsiniz (zamana ve yazma maliyetine rağmen).
Bulduğum şey, ham VHDL'nin pek çok kullanışlı işlevi olmadığı. (VEYA veya VE: bir bütün std_logic_vector akla geliyor). Bu nedenle, kendinize bir hata ayıklama, sentezlenebilir fonksiyonların bir araç kutusunu inşa etmek, VHDL kullanırken verimliliğinizi artırmanın uzun bir yoludur.
Belki birileri tüm bu "sahip olunması gereken" fonksiyonları sunan iyi bir açık kaynak kütüphaneye başvurabilir mi?
Önceki cevaplar, iki dil arasındaki çelişkileri hemen hemen kapsamaktadır ve bu yazı da oldukça iyi konuları kapsamaktadır: http://www.bitweenie.com/listings/verilog-vs-vhdl/
Ayrıca bahsedilmeyen birkaç nokta daha yapmak istiyorum.
Öncelikle birkaç nedenden dolayı VHDL öğrenmenizi tavsiye ederim. Güçlü yazma, bazı basit başlangıç hatalarının derleyici tarafından yakalanmasına yardımcı olur. Ayrıca, önce Verilog'u kullandıktan sonra VHDL'nin daha zor olduğunu duydum.
Dürüst olmak gerekirse, iki dilde de yanlış gidemezsiniz; ve eğer bu sektörde çok uzun süre çalışıyorsanız, nihayetinde iki dili de öğreneceksiniz.