VHDL หรือ Verilog? [ปิด]


94

VHDLและVerilogเป็น HDLs ของวัน อะไรคือข้อดีของทั้งสำหรับคนที่ไม่มีประสบการณ์กับ HDL เลย?


2
พวกเขาดูเหมือนจะมีประสิทธิภาพเท่าเทียมกันเลือกสิ่งที่คุณต้องการ ฉันพบว่า VHDL เหมาะสมกับฉันที่สุด
Leon Heller

1
ฉันจะให้ผู้ลงคะแนน "ลงคะแนน" เหล่านี้ได้อย่างไร สำนวนของคนที่มีประสบการณ์มาก่อนมีค่ามากกว่าข้อมูลที่มีอยู่ในหนังสือ หนังสือไม่ได้มีแนวคิดเรื่องเวลา
dsgdfg

คำตอบ:


70

ฉันไม่สามารถบอกคุณได้ว่าต้องเรียนรู้อะไร แต่นี่คือจุดตัดกันบางส่วน (จากผู้ใช้ VHDL ที่เน้นเรื่องศูนย์กลางมาก แต่ฉันพยายามทำให้งานของคุณยุติธรรมที่สุดเท่าที่จะเป็นไปได้!) ซึ่งอาจช่วยให้คุณเลือกตามความชอบของคุณเอง ในแง่ของรูปแบบการพัฒนา:

และจำคำพูดที่โด่งดังซึ่งเรียงตามแนวของ "ฉันชอบสิ่งใดในสองอย่างที่ฉันไม่ได้ใช้อยู่ในขณะนี้" (ขออภัยฉันจำไม่ได้ว่าใครเป็นคนเขียนบทความนี้จริง ๆ หรืออาจเป็น Janick Bergeron?)

VHDL

  • ขอพิมพ์
  • verbose มากขึ้น
  • เลวร้ายมาก
  • ไวยากรณ์ที่ไม่เหมือน C (และความคิด)

ข้อผิดพลาดในการรวบรวมจำนวนมากเริ่มต้นด้วย แต่ส่วนใหญ่แล้วจะทำงานตามที่คุณคาดหวัง สิ่งนี้สามารถนำไปสู่เส้นโค้งการเรียนรู้ที่สูงชันมาก (พร้อมกับไวยากรณ์ที่ไม่คุ้นเคย)

Verilog

  • อ่อนพิมพ์
  • รัดกุมมากขึ้น
  • กำหนดขึ้นมาเฉพาะถ้าคุณทำตามกฎบางอย่างอย่างระมัดระวัง
  • ไวยากรณ์ C-like มากขึ้น (และความคิด)

ข้อผิดพลาดจะถูกค้นพบในภายหลังในการจำลอง - เส้นโค้งการเรียนรู้ที่ "รู้สึกอยากทำอะไรบางอย่าง" เป็นเรื่องที่ตื้นกว่า แต่จะยาวกว่า (ถ้าเป็นคำอุปมาที่ถูกต้อง?)

นอกจากนี้ในความโปรดปรานของ Verilog ก็คือการตรวจสอบระดับสูงนั้นเอนเอียงกับ SystemVerilog ซึ่งเป็นส่วนขยายที่ยิ่งใหญ่ของ Verilog แต่เครื่องมือระดับสูงสามารถรวมรหัสการสังเคราะห์ VHDL กับรหัสการยืนยัน SystemVerilog


สำหรับแนวทางอื่นทั้งหมด: MyHDL - คุณได้รับพลังทั้งหมดของ Python ในฐานะภาษาการยืนยันพร้อมชุดส่วนขยายการสังเคราะห์ซึ่งคุณสามารถสร้าง VHDL หรือ Verilog ได้

หรือCocotb - พลังทั้งหมดของ Python ในฐานะภาษาการตรวจสอบโดยที่รหัสการสังเคราะห์ของคุณยังคงเขียนในสิ่งที่ HDL คุณตัดสินใจที่จะเรียนรู้ (เช่น VHDL หรือ Verilog)


2
ฉันรู้จัก Verilog แต่ฉันไม่คุ้นเคยกับ VHDL: คุณหมายถึงอะไรโดย VHDL ที่กำหนดขึ้นมามากกว่า Verilog
cic

44

ฉันเรียนทั้งสัปดาห์เดียวกัน VHDL นั้นเหมือน ADA / Pascal และ Verilog ก็เหมือนกับ C. VHDL นั้นจะละเอียดและเจ็บปวดมากกว่าในการรวบรวม แต่เมื่อคุณได้รับโอกาสในการรวบรวมความสำเร็จจะดีกว่า อย่างน้อยนั่นคือสิ่งที่ฉันพบ Verilog เช่น C เป็นเนื้อหาที่ทำให้คุณถ่ายภาพด้วยตัวเอง อุตสาหกรรมบางอย่างเช่นการบินและอวกาศ / โน้มตัวไปทาง VHDL, อุตสาหกรรมอื่น ๆ โน้มตัวไปทาง Verilog ปัญหาที่ฉันพบกับทั้งสองคือความสามารถของม้านั่งทดสอบและเมื่อพยายามเรียนรู้และพยายามที่จะได้รับจากการจำลองไปจนถึงซิลิกอน / FPGA การเขียนรหัสที่สามารถสังเคราะห์ได้เท่านั้นคือระดับการศึกษาอื่น

มีภาษาที่ผมชอบเรียกว่าเป็นCDL มันถูกสังเคราะห์อย่างเคร่งครัดคุณเขียนม้านั่งทดสอบของคุณในวิธีอื่นมันสร้าง Verilog ที่สังเคราะห์ได้ซึ่งคุณสามารถนำไปใช้เป็นเครื่องมืออื่นได้ น่าเสียดายที่เอกสารของCDLขาดไปฉันหวังว่าจะนำตัวอย่างบางอย่างออกมาในโลกเพื่อแสดงว่าการใช้งานง่ายกว่า Verilog หรือ VHDL เพียงใด แต่ก็ไม่ได้ทำแบบนั้น มันมาพร้อมกับสภาพแวดล้อมของซิม / การทดสอบของตัวเอง ด้วยCDLและGTKWaveคุณสามารถทำงานเป็นจำนวนมากได้

เครื่องมืออีกอย่างที่เรียกว่าVerilatorนั้นค่อนข้างเข้มงวดในการทำให้ Verilog ของคุณสะอาด มันเป็นโปรแกรมจำลอง Verilog ฟรีพร้อมวิธีง่ายๆในการแนบกับซิมหรือสร้างม้านั่งทดสอบใน C / C ++ คุณสามารถใช้ Verilog ได้เช่นกันไม่ จำกัด คุณ มีIcarus Verilogเช่นกันซึ่งใหญ่กว่าและเป็นที่รู้จักมากขึ้น แต่ฉันอยากจะแนะนำVerilatorถ้าคุณต้องการเรียนรู้ Verilog สำหรับ VHDL มีGHDLประสบการณ์ของฉันกับมันไม่ดีเท่าVerilatorแต่อย่างน้อยก็มีเครื่องมือฟรีสำหรับการพยายามทำให้เท้าของคุณเปียก หากคุณมีประสบการณ์การเขียนโปรแกรมซอฟต์แวร์คุณมีแนวโน้มที่จะรับและเพลิดเพลินกับ Verilog เร็วกว่า VHDL

ฉันเห็นด้วยกับ Leon อย่างแน่นอนลองทั้งคู่ fpga4funและหน้าเว็บอื่น ๆ มีข้อมูลที่ดีและหน้าเหล่านั้นบางส่วนจะให้ทั้ง Verilog และ VHDL ที่เทียบเท่าสำหรับหัวข้อที่พวกเขากำลังพูดถึง ฉันพบว่าหน้าเว็บเหล่านั้นมีประโยชน์มากที่สุดสำหรับการเปรียบเทียบสองภาษา หากใช้ HDL เป็นสิ่งที่คุณต้องการทำในอาชีพของคุณฉันแนะนำให้มีความสามารถอย่างน้อยกับทั้งสองอย่างอาจจะดีกับตัวหนึ่ง แต่ไม่สามารถใช้งานได้อย่างสมบูรณ์


1
เคล็ดลับดีมาก ฉันได้แก้ไขคำตอบของคุณเป็นการอ้างอิงถึงฉันและคนอื่น ๆ +1
Daniel Grillo

23

สงครามศักดิ์สิทธิ์จำนวนมากได้รับการต่อสู้มากกว่านี้ ข้อเสียอย่างหนึ่งของ Verilog ก็คือพฤติกรรมที่ไม่สามารถกำหนดได้ http://www.sigasi.com/content/verilogs-major-flaw


ใช่มันดูไม่ดี แต่ฉันไม่แน่ใจ: นี่เป็นข้อบกพร่องในภาษาหรือในซินธิไซเซอร์นี้หรือไม่?
stevenvh

4
มันเป็นปัญหาทางภาษา ซินธิไซเซอร์ต่าง ๆ เลือกพฤติกรรมของตัวเองในลักษณะที่คาดเดาไม่ได้ เรียกใช้รหัสเดียวกันบนเครื่องจำลอง Mentor หรือเครื่องจำลอง Cadence และคุณอาจได้รับผลลัพธ์ที่แตกต่างกัน
ฟิลิปป์

20

ทั้งสองมีข้อดีและข้อเสีย VHDL เป็นนักวิชาการละเอียดและซับซ้อนมากขึ้น คุณต้องเขียนโค้ดเพิ่มเติม แต่ความแม่นยำหมายความว่ามีแนวโน้มที่จะทำงานได้มากกว่า Verilog นั้นง่ายกว่าสำหรับการออกแบบดิจิทัลทั่วไป แต่ทำให้ง่ายต่อการสร้างบั๊กที่ยุ่งยาก VHDL เป็นเรื่องธรรมดามากที่มหาวิทยาลัย Verilog พบมากใน บริษัท เซมิคอนดักเตอร์ขนาดใหญ่

โดยปกติแล้วตัวเลือกอย่างใดอย่างหนึ่งจะได้รับการขับเคลื่อนโดยเครื่องมือที่คุณใช้ เครื่องมือ FPGA ยอดนิยมบางตัวทำได้ดีกว่าด้วย VHDL เครื่องมือ ASIC ยอดนิยมบางตัวทำได้ดีกว่ากับ Verilog ดังนั้นซึ่งดีกว่าขึ้นอยู่กับสิ่งที่คุณต้องการจะทำกับมัน

สมมติว่าคุณต้องการสร้างโครงการขนาดเล็กโดยใช้ Altera FPGA ที่เป็นที่นิยมในโรงเรียน EE เครื่องมือฟรีรองรับ HDL ทั้งสอง แต่คุณอาจพบว่าชุมชนผู้ใช้ส่วนใหญ่ใช้ VHDL จะมีโค้ดตัวอย่างเพิ่มเติมโมดูลที่ใช้ซ้ำได้ ฯลฯ หากคุณเลือกใช้ภาษานั้น

ในทางกลับกันถ้าคุณตั้งใจจะทำงานใน บริษัท ใหญ่ที่ทำงานออกแบบชิปอย่างจริงจังพวกเขาส่วนใหญ่ใช้ Verilog ทุกวันนี้ เครื่องมือการสังเคราะห์การจำลองและการตรวจสอบความถูกต้องเหมาะสำหรับ Verilog และเมื่อเร็ว ๆ นี้ SystemVerilog - ส่วนขยายไปยัง Verilog เพื่อรองรับการออกแบบและตรวจสอบระบบระดับสูง

การสนทนาเพิ่มเติมที่นี่และลิงค์ที่มีประโยชน์ที่นี่:

http://www.eetimes.com/electronics-blogs/programmable-logic-designline-blog/4032239/Verilog-versus-VHDL-which-is-best-

สำหรับผู้เริ่มต้น / มือสมัครเล่นคำแนะนำที่ดีที่สุดคือการตัดสินใจว่าคุณต้องการเล่นด้วยชิปใดและดูตัวอย่างที่ผู้ขายมอบให้ ใช้มัน เมื่อคุณเป็นนักออกแบบดิจิทัลที่มีประสบการณ์การเรียนรู้ภาษาอื่นจะใช้เวลาเพียงไม่กี่วัน


4
ขอบคุณ ประโยคสุดท้ายนั้นสำคัญ มีเครื่องมือที่แปลงอันหนึ่งเป็นอีกอัน?
stevenvh

มีบางอย่างที่พวกเรารัฐบาลจะไม่เข้ามา แต่ถ้าคุณดู modelsim เมื่อมันต้องใช้ verilog มันจะแปลงเป็น vhdl แล้วซิมส์นั้น มันไม่ได้ทำอย่างนั้นในอีกทางหนึ่งดังนั้นอย่างน้อย verilog ถึง vhdl คุณสามารถเห็นการแปลงด้วยเครื่องมือนั้น มีเครื่องมืออื่น ๆ ออกมีที่แปลงเฉพาะทางเดียวหรืออื่น ๆ และพวกเขามีรุ่นสาธิต
old_timer

3
เครื่องมือเชิงพาณิชย์ (การสังเคราะห์การวิเคราะห์เชิงสถิต) บางส่วนจะอ่านในภาษาหนึ่งและเอาท์พุทในอีกภาษาหนึ่ง ผลลัพธ์จะเหมือนกับการใช้คอมไพเลอร์เพื่อเปลี่ยน Ada เป็นภาษาแอสเซมบลีจากนั้นตัวบีบอัดเพื่อแยก C คุณจะไม่ชอบผลลัพธ์
Andy McC

17

คำตอบสั้น ๆ : ใช้ SystemVerilog แต่ยังเรียนรู้ VHDL หลีกเลี่ยง Verilog-2001 หากคุณทำได้

คำตอบที่ยาวมาก : ในขณะนี้ฉันถือว่า Verilog คุณหมายถึง Verilog-2001 ซึ่งน่าจะเป็นสิ่งที่คำตอบอื่น ๆ คำแนะนำที่ดีที่สุดน่าจะเป็นการเรียนรู้ทั้งสองอย่าง แต่ไม่ควรใช้ทั้งคู่ (เพิ่มเติมในตอนท้ายของคำตอบ) ความแตกต่างหลักสามารถกลับมาทำงานต่อได้ใน:

  • Verilog-2001 นั้นรัดกุมในขณะที่ VHDL เป็นverbose (มาก, มาก, มาก)
  • Verilog-2001 รองรับโครงสร้างระดับต่ำมากที่ไม่รองรับโดย VHDL (แต่คุณไม่จำเป็นต้องใช้มันสำหรับการออกแบบระดับการถ่ายโอนลงทะเบียน (RTL) ทั่วไป
  • VHDL นั้นพิมพ์ได้มากขึ้นซึ่งมักจะทำให้ตรวจจับข้อผิดพลาดได้ง่ายขึ้น
  • VHDL แสดงออกได้ดีกว่า Verilog
  • Verilog-2001 มีรูปแบบC-likeมากกว่าในขณะที่ VHDL เป็นAda-like มากกว่า
  • Verilog-2001 สามารถมีแนวคิดที่สับสนสำหรับผู้เริ่มต้น (เช่นwirevs reg)

ที่กล่าวว่าแนวคิดที่สำคัญที่สุดมีการใช้งานร่วมกันโดยทั้งสองภาษาแม้ว่าจะมีชื่อต่างกัน (เช่นalwaysvs process) และในกรณีใด ๆ ความยากลำบากในการเรียนรู้ HDL นั้นเกี่ยวข้องกับแนวคิดเบื้องหลังมากขึ้น (เช่นความพร้อมกันของกระบวนการทั้งหมด HW) อนุสัญญา ฯลฯ ) กว่าภาษาเอง เมื่อพิจารณาถึงความแตกต่างถ้าตัวเลือกอยู่ระหว่าง Verilog 2001 และ VHDL ฉันจะจัดการกับ VHDL เริ่มต้นด้วยตนเอง

อย่างไรก็ตามอย่างที่ฉันพูดข้อเสนอแนะของฉันคือใช้ VHDL หรือ Verilog-2001 ทั้งๆที่คุณมีอำนาจในการเลือก ตรงกันข้ามกับสิ่งที่หลายคนคิดว่าSystemVerilogไม่ใช่ภาษาระดับสูงที่มีประโยชน์สำหรับการออกแบบหรือการตรวจสอบระดับระบบเท่านั้นและมีการแบ่งปันกับภาษาที่สามารถป้อนลงในเครื่องมือสังเคราะห์ระดับสูงเช่น SystemC

แต่ SystemVerilog เป็นการอัปเดตแบบเต็มของภาษา Verilog (อิง Verilog-2005 ดูhttp://en.wikipedia.org/wiki/SystemVerilog ) ที่มีชุดย่อยที่สังเคราะห์ได้อย่างเต็มที่ซึ่งตรงกับความรัดกุมของ Verilog ด้วยการแสดงออกที่สูงกว่าทั้งสอง Verilog-2001 และ VHDL ที่ให้สิ่งที่ดีที่สุดในโลกทั้งสองในความคิดของฉัน

ตัวอย่างของการสร้าง / นิพจน์ที่สำคัญมากที่มีอยู่ใน SystemVerilog ที่ไม่มีใน Verilog-2001, VHDL หรือทั้งสองอย่างรวมถึง:

  • always_ff, always_latch, always_combบล็อกที่ช่วยให้นักออกแบบแยกแยะความแตกต่างทันทีระหว่างบล็อกการดำเนินการที่แตกต่างกันของตรรกะและ - สำหรับalways_combและalways_latch- (! แหล่งที่มาของข้อบกพร่องที่ไม่มีที่สิ้นสุดใน VHDL และ Verilog โดยเฉพาะอย่างยิ่งสำหรับผู้เริ่มต้น) สรุปโดยอัตโนมัติสัญญาณที่ควรจะไปในรายการความไว
  • logicประเภทที่แทนที่ความสับสนwireและregประเภทของ Verilog-2001
  • ประเภทบรรจุที่อนุญาตให้สร้างบัสหลายมิติได้ง่าย (เช่นlogic [N-1:0][M-1:0][P-1:0]) ในขณะที่ Verilog-2001 รองรับเพียงสองมิติบัสและ VHDL บังคับให้นักออกแบบกำหนดประเภทใหม่เพื่อสร้างโครงสร้างที่คล้ายกัน
  • โครงสร้างระดับสูงเช่นstruct(คล้ายกับ VHDL record) และแม้แต่ระดับที่สูงขึ้นinterfaceซึ่งสามารถใช้อย่างมีประสิทธิภาพมากในการสร้างแบบจำลองโครงสร้างปกติ (เช่นพอร์ตของบัส)

ฉันทดสอบความแตกต่างทั้งหมดนี้ "บนผิวหนังของฉัน" ในขณะที่ทำงานบนระบบมัลติคอร์ที่ค่อนข้างซับซ้อนเพื่อวัตถุประสงค์ในการวิจัย ตอนนี้ได้รับการสนับสนุนโดยเครื่องมือมากมายและฉันรู้แน่นอน (จากการใช้งานเกือบทุกวัน) ว่าเครื่องมือสนับสนุนโดย Synopsys (ทั้งสำหรับการไหลแบบ ASIC และ FPGA), Xilinx Vivado (สำหรับการสังเคราะห์ FPGA) และเครื่องมือจำลองเช่น ในฐานะ MentorGraphics Modelsim, Cadence NCsim และ Synopsys VCS

จะเสร็จสมบูรณ์โดยสิ้นเชิงมีสองภาษาที่สำคัญอื่น ๆ ในกล่องเครื่องมือของนักออกแบบฮาร์ดแวร์ (แม้ว่าคุณภาพของเครื่องมือเหล่านี้อาจแตกต่างกันมาก):

  • ภาษาในยุค HDLเช่น MyHDL (Python-based) และ Rocket (Scala-based) แนวคิดที่นี่คือ: คุณอธิบายการออกแบบของคุณในภาษาระดับที่สูงขึ้น แต่ยังคงใช้แนวคิด HDL-ish มาก (เช่นบล็อกที่เกิดขึ้นพร้อมกัน, เวลาที่ชัดเจน) จากนั้นคุณสร้าง HDL ทั่วไป (ปกติคือ Verilog-2001) จริง ๆ แล้วฉันไม่พบว่ามีประโยชน์มากเพราะขั้นตอนที่เป็นนามธรรมจาก HDLs มีขนาดเล็กและ SystemVerilog ให้แนวความคิดระดับสูงจำนวนมากอยู่แล้วด้วยข้อดีที่มันถูกป้อนเข้าสู่โฟลว์การสังเคราะห์โดยตรงโดยไม่มีขั้นตอนกลาง
  • เครื่องมือการสังเคราะห์ระดับสูงเช่น Vivado HLS, LegUp, Calypto Catapult และอื่น ๆ อีกมากมาย สิ่งเหล่านี้ใช้คำอธิบายระดับสูงมากมักจะอยู่ใน C, C ++ หรือ SystemC และมักจะไม่ถูกดัดแปลงและสร้างการใช้งานที่ดีที่สุดใน Verilog (โดยทั่วไปจะไม่สามารถอ่านได้) พวกมันค่อนข้างดีในการสร้างวัตถุบางอย่าง (เช่นตัวเร่งความเร็ว HW สำหรับฟังก์ชั่นเช่น convolution, FFT เป็นต้น) แต่โดยทั่วไปจะไม่ได้มีวัตถุประสงค์ทั่วไป ตัวอย่างเช่นเป็นไปไม่ได้ที่จะออกแบบคอร์โปรเซสเซอร์ในเครื่องมือ HLS ส่วนใหญ่ - สิ่งเดียวที่ฉันรู้คือ BlueSpec ซึ่งเป็นลูกผสมระหว่าง HLS และ HDL

นี่เป็นวิธีที่ฉันเรียนรู้มามาก เรียนรู้ VHDL ก่อนและเขียนเป็นเวลา 3 ปี ใช้เวลา 3 เดือนในการเข้ารหัส verilog หลังจากนั้นและ (เร็วมาก) ตัดสินใจว่า SystemVerilog คือหนทางที่จะไป ตอนนี้ฉันเขียนโค้ดเฉพาะ SV แต่พึ่งพาเทคนิคการทำความเข้าใจและการเข้ารหัสที่ฉันเรียนรู้เมื่อใช้ VHDL
stanri

12

อาชีพของฉันในช่วง 13 ปีที่ผ่านมาคือ 80% ASIC และ 20% FPGA

VHDL ใช้สำหรับ 3.5 ปีแรกและส่วนที่เหลือเป็น Verilog ฉันไม่พบว่าการสลับไปใช้ Verilog เป็นเรื่องยากและด้วยเหตุผลเรื่องสถานที่ (Silicon Valley) และความเร็วฉันจึงใช้รหัสเฉพาะใน Verilog วันนี้เท่านั้น

นอกจากนี้ฉันยังมีอินเตอร์เฟส Async จำนวนมากสลักและการออกแบบที่กำหนดเองกึ่งประตูระดับเพื่อประสิทธิภาพดังนั้น VHDL จึงมีการใช้งานน้อยมากในชีวิตของฉันตอนนี้ แต่ฉันพบว่า SystemVerilog และ SystemC มีประโยชน์มากขึ้นในการรับและใช้สำหรับโครงการวิศวกรรมขนาดใหญ่

ในขั้นตอนเดียวเครื่องมืออย่าง Verilator (ฟรี! & เร็ว) ช่วยให้ฉันประหยัดเงินทุนจำนวนมากที่จำเป็นสำหรับการจำลองสถานการณ์ที่สำคัญ คุณไม่มีตัวเลือกนี้ (ยัง) สำหรับ VHDL และคุณอาจไม่ต้องการมันหากคุณมักจะว่ายน้ำในสระน้ำที่ร่ำรวยหรือคุณไม่ได้ออกแบบ> 1M gate

VHDL นั้นดีกว่าสำหรับผู้เริ่มต้นก่อนที่พวกเขาจะพัฒนาหลักการออกแบบ HW ที่แข็งแกร่ง การสื่อสารกับกลุ่มคน EDA ของฉันที่นี่แนะนำว่าพวกเขาได้พัฒนา VHDL เล็กน้อยในช่วง 10 ปีที่ผ่านมาและมี HLS จำนวนมากที่อยู่เบื้องหลังการพัฒนาในปัจจุบัน ดังนั้นจะไม่มีนักพัฒนาเครื่องมือ VHDL จำนวนมากอยู่รอบ ๆ ...


FreeHDL สำหรับการจำลอง VHDL? Qucs เป็นส่วนหน้า
Martin

8

ฉันไป VHDL ส่วนใหญ่เป็นเพราะฉันรู้ว่า C ดีจริง ๆ และพบว่าการพยายามเขียน verilog มีแนวโน้มที่จะให้ฉันเขียนราวกับว่าฉันกำลังกำหนดเป้าหมาย CPU ที่ไม่อธิบายฮาร์ดแวร์

รำคาญมากที่จะเขียนหน้าของรหัสและตระหนักถึงสิ่งที่คุณเขียนได้อย่างมีประสิทธิภาพโปรแกรมต่อเนื่องไม่ใช่การออกแบบฮาร์ดแวร์ใช่มันจะสังเคราะห์ แต่ผลที่ได้น่าเกลียดและช้า

VHDL นั้นแตกต่างกันมากพอที่ฉันคิดว่ามันง่ายกว่าที่คิดในแง่ของการออกแบบเชิงตรรกะและไม่ควบคุมการไหล

ในตอนท้ายของวันภาษาไม่ค่อยยากทักษะอยู่ในการออกแบบระบบไม่ใช่การพิมพ์

ขอแสดงความนับถือแดน


5

ปีที่แล้วมหาวิทยาลัยที่ฉันเรียนอยู่ได้เลื่อนขั้นเปิดหลักสูตรสองหลักสูตรสำหรับผู้เริ่มต้น ทั้งสองครอบคลุมเนื้อหาเดียวกัน แต่ใช้ VHDL และ Verilog อื่น

แน่นอนฉันถามอาจารย์ทั้งสองถึงความแตกต่างของ VHDL และ Verilog ทั้งคู่เลือกสิ่งที่ดีที่สุดไม่ได้

ดังนั้นฉันจึงต้องทำทั้งสองหลักสูตรเพื่อดูว่าหลักสูตรใดที่ดีกว่าสำหรับฉัน ความประทับใจแรกของฉันคือVHDL เป็น Pascal เหมือนมากขึ้นและVerilog เป็นเหมือน C-

หลังจากนี้ฉันตัดสินใจทำ VHDL เพียงอย่างเดียวเพราะในเวลานั้นฉันทำงานกับ Delphi

แต่ฉันไม่เคยทำงานกับ FPGA หลังจากจบหลักสูตร นี่คือสิ่งที่ดีที่สุดที่ฉันสามารถช่วยคุณได้


5

ฉันใช้ VHDL เกือบทั้งหมด ประสบการณ์ของฉันคือ VHDL พบได้ทั่วไปในยุโรป Verilog ในสหรัฐอเมริกา แต่ VHDL ก็มีความก้าวหน้าอย่างต่อเนื่องในสหรัฐอเมริกาเช่นกัน การพิมพ์ VHDL ที่แข็งแกร่งไม่ได้รบกวนฉันเพราะฉันใช้มันเหมือนภาษาการออกแบบฮาร์ดแวร์ที่ล้าสมัยเหมือนที่ใช้ในตรรกะที่ตั้งโปรแกรมได้ขนาดเล็กเช่น PALASM หรือ AHDL ของ Altera

ปัญหาใหญ่สำหรับคนส่วนใหญ่ที่ใช้ VHDL เป็นประเภทที่แข็งแกร่ง พวกเขาต้องการมอบหมายระหว่าง std_logic_vector (ซึ่งฉันคิดว่าเป็นชุดของสายไฟในเป้าหมาย) และ "int", (ซึ่งฉันคิดว่าเป็นตัวเลขที่เก็บไว้ในคอมพิวเตอร์ที่รวบรวมการออกแบบ) การแปลงประเภทที่น่ารำคาญที่สุดที่ฉันพบโดยทั่วไปคือระหว่าง bit_vector (ซึ่งฉันคิดว่าเป็นคำอธิบายของชุดสายไฟในคอมพิวเตอร์ที่รวบรวมการออกแบบ) และ std_logic_vector อันที่จริงสิ่งที่ฉันลากไปที่ stackexchange ตอนนี้กำลังมองหาการแปลงจากถ่าน (ตัวแปรตัวละครที่เก็บไว้ในคอมไพล์คอมพิวเตอร์) เป็น int

ย้อนกลับไปในวันนี้ความขัดแย้งที่มีชื่อเสียงที่สุดระหว่าง VHDL และ Verilog คือการประกวดออกแบบที่จัดโดยนิตยสาร ASIC & EDA Google "ผลลัพธ์ที่ไม่คาดคิดจากการประกวดออกแบบฮาร์ดแวร์: Verilog Won & VHDL แพ้หรือไม่ - คุณเป็นผู้พิพากษา!" ตัวอย่างเช่น: http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual /Example/lrgeEx2/cooley.html

การประกวดคือการลงทะเบียน 9 บิตที่ค่อนข้างซับซ้อน มันมีการนับขึ้น / ลงเช่นเดียวกับสิ่งอื่น ๆ ผลการวิจัยพบว่านักออกแบบ Verilog 8 จาก 9 คนมีโค้ดที่รันหลังจาก 90 นาที ศูนย์ของ VHDL ทั้งห้าคนมีอะไรที่ทำงาน

ฉันไม่ได้ใช้ VHDL เหมือนคนอื่น วิธีที่ฉันใช้มันประเภทไม่เข้ากับฉันบ่อยนัก ฉันได้ดำเนินโครงการดังกล่าวในลักษณะเดียวกับที่ฉันทำทุกอย่างอื่นทั้งหมดใน std_logic และ std_logic_vector โดยใช้ (ย้อนกลับไปในวันนี้) ไลบรารี IEEE ที่ไม่ได้ลงชื่อ แต่ฉันคิดว่านักออกแบบ VHDL ทำงานด้วยความตั้งใจและหลงทางในการแปลงแบบ

มีสองสถานที่ที่คุณสามารถหลงทางในการแปลงรูปแบบ: (a) การออกแบบของคุณและ (b) ม้านั่งทดสอบของคุณ สำหรับฉันมันง่ายกว่าที่จะเขียน bench test (เกือบ) ทั้งหมดใน std_logic ดังนั้น bench test เอง (เกือบ) สังเคราะห์ได้ โดย "เกือบ" ฉันหมายถึงฉันจะกำหนดนาฬิกาด้วยการมอบหมายล่าช้าที่ไม่สามารถสังเคราะห์ได้ แต่นอกเหนือจากนั้น (และความคิดเห็น) คุณไม่สามารถแยกความแตกต่างของม้านั่งทดสอบของฉันจากตรรกะสังเคราะห์

อย่างไรก็ตามก่อนที่คุณจะตัดสินใจใช้ภาษาแรกเพื่อเรียนรู้ (เกือบทุกคนมีความชอบ แต่เกือบทุกคนใช้ทั้งคู่) ฉันขอแนะนำให้ค้นหาการแข่งขันนั้นและอ่านความเห็นเกี่ยวกับภาษานั้น

หนึ่งในปัญหาที่ฉันพบกับ VHDL คือเนื่องจากเป็นภาษาที่ละเอียดมากดูเหมือนว่าจะมีแนวโน้ม (ในความคิดของนักออกแบบ) ที่จะเชื่อว่ามันไม่ต้องการความคิดเห็น ไม่เป็นความจริงแน่นอนคุณควรเขียนความคิดเห็นก่อนรหัส


1
ฉันคิดว่ามันเป็นข้อเรียกร้องที่น่าสนใจว่าการพิมพ์ VHDL ที่แข็งแกร่งเป็นปัญหาที่ใหญ่ที่สุด สำหรับฉันการพิมพ์ที่รัดกุมเป็นคุณลักษณะสำคัญที่ทำให้ฉันสามารถยกระดับความเป็นนามธรรมได้ ในการออกแบบฮาร์ดแวร์คุณมีตัวเลือกระหว่างการอธิบายโครงสร้างที่ใช้ลักษณะการทำงานหรืออธิบายลักษณะการทำงานที่ใช้โครงสร้าง ประวัติศาสตร์ได้แสดงให้เห็นว่าสิ่งที่เป็นนามธรรมเป็นกุญแจสำคัญในการออกแบบระบบขนาดใหญ่ที่ประสบความสำเร็จและระบบดิจิตอลก็ไม่มีข้อยกเว้น ฉันคิดว่าคุณพลาดมากโดย จำกัด คุณสมบัติทางภาษาบางส่วนที่แคบ
trondd

2
จริง แต่ฉันไม่เชี่ยวชาญใน "การออกแบบระบบขนาดใหญ่" ฉันมีความเชี่ยวชาญในสิ่งเล็ก ๆ ที่ต้องมีประสิทธิภาพอย่างยิ่ง มีสาเหตุหลายประการที่ทำให้ประสิทธิภาพในการออกแบบอุปกรณ์อิเล็กทรอนิกส์มีความสำคัญอย่างยิ่ง บางครั้งระบบขนาดใหญ่ที่ทำจากจำนวนมากของระบบขนาดเล็กเหล่านี้และการเรียงลำดับของการออกแบบนี้จะช่วยให้ห่างไกลมีประสิทธิภาพมากขึ้น
Carl Brannen

5

ฉันจะชั่งน้ำหนักสองเซ็นต์ของฉัน: ฉันเป็นผู้ใช้ VHDL ที่หนักหน่วง แต่ Verilog ก็สามารถทำงานให้สำเร็จได้เช่นกัน คุณสามารถห่อสิ่งใดสิ่งหนึ่งได้เสมอ (แม้ว่าจะมีเวลาและต้นทุนการพิมพ์)

สิ่งที่ฉันได้พบคือ VHDL แบบ raw นั้นไม่มีฟังก์ชั่นที่ใช้งานสะดวกมากมาย (หรือหรือและ: ทั้ง std_logic_vector มาถึงใจ) ดังนั้นการสร้างกล่องเครื่องมือของฟังก์ชั่นที่ดีบั๊กและสามารถสังเคราะห์ได้จะช่วยเพิ่มผลผลิตของคุณเมื่อใช้ VHDL

อาจมีใครบางคนสามารถอ้างอิงไลบรารีโอเพนซอร์ซที่ดีซึ่งนำเสนอฟังก์ชั่น "ดี"


2
ฉันค่อนข้างมั่นใจว่าการลดและ / หรือรวมอยู่ใน VHDL 2008 พร้อมกับการอัปเดตที่มีประโยชน์อื่น ๆ
ks0ze

4

คำตอบก่อนหน้านี้ค่อนข้างครอบคลุมความแตกต่างระหว่างสองภาษาและบทความนี้ครอบคลุมประเด็นที่ค่อนข้างดีเช่นกัน: http://www.bitweenie.com/listings/verilog-vs-vhdl/

ฉันต้องการเพิ่มคะแนนอีกสองสามข้อที่ไม่ได้กล่าวถึง

ฉันขอแนะนำให้เรียน VHDL ก่อนด้วยเหตุผลสองสามข้อ การพิมพ์ที่แข็งแกร่งจะช่วยให้ผู้แปลเข้าใจข้อผิดพลาดของผู้เริ่มต้นได้ง่าย ฉันเคยได้ยินด้วยว่า VHDL นั้นยากต่อการรับหลังจากใช้ Verilog ก่อน

สุจริตคุณไม่สามารถไปผิดกับภาษาทั้งสอง; และถ้าคุณทำงานในอุตสาหกรรมนี้นานมากคุณจะได้เรียนรู้ทั้งสองภาษาต่อไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.