ความแตกต่างระหว่าง RTL และพฤติกรรม verilog


10

มีคนบอกฉันว่าอะไรคือความแตกต่างระหว่าง RTL และโค้ด Verilog เชิงพฤติกรรม มีการแบ่งเขตที่ชัดเจนระหว่างการออกแบบในสองระดับนี้หรือไม่?

คำตอบ:


5

รหัสพฤติกรรมเป็นระดับที่สูงกว่าและมักจะไม่สามารถสังเคราะห์ได้ โครงสร้างเช่นลูปความล่าช้าและคำสั่ง "เริ่มต้น" เป็นพฤติกรรม

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

นำมาจาก Yahoo Answers และพบได้ทันทีกับ Google!


1
ลูปสามารถใช้ในรหัส rtl หากจำนวนการวนซ้ำมี จำกัด เครื่องมือบางตัวยังรองรับการใช้งานของบล็อก Intital เพื่อระบุเงื่อนไขการใช้พลังงาน
Peter Green

คำถาม / คำตอบนี้เป็นคำตอบแรกที่ Google ให้ฉัน
Drewster

3

รหัส "ระดับการถ่ายโอนการลงทะเบียน" คือรหัสที่อธิบายในแง่ของการลงทะเบียนและตรรกะเชิงผสมที่อยู่ระหว่างพวกเขาและตั้งใจที่จะใช้เป็นข้อมูลเข้าสู่เครื่องมือสังเคราะห์ รหัสจะยึดติดกับชุดย่อยที่สังเคราะห์ได้ [1] ของภาษา ไม่มีความล่าช้าอย่างชัดเจนเวลาทั้งหมดอยู่ในรูปของขอบนาฬิกา โครงสร้างที่เป็นตัวแทนของแลตช์ทริกเกอร์ระดับมักจะหลีกเลี่ยง โดยทั่วไปรีจิสเตอร์จะโอเวอร์คล็อกนาฬิกาจำนวนเล็กน้อยซึ่งสามารถให้รายละเอียดกับตัววิเคราะห์เวลาได้ โดยปกติแล้วจะมีการรวมตรรกะเชิงตรรกะไว้ด้วยกัน [2] เพื่อตั้งถิ่นฐานภายในวงจรนาฬิกาเดี่ยวซึ่งจำกัดความซับซ้อนของมัน มันเป็นระดับที่สูงกว่าแบบจำลองระดับเกท แต่มันก็ยังกำหนดค่าที่รีจิสเตอร์ทุกตัวมีในทุกรอบสัญญาณนาฬิกา

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

[1] อนุญาตให้ชุดย่อยที่แน่นอนแตกต่างกันระหว่างเครื่องมือสังเคราะห์
[2] ถ้ามันไม่ได้อยู่ในรอบเดียวมากกว่าการจำลองและซินซิสอาจให้ผลลัพธ์ที่แตกต่างกันและตัววิเคราะห์เวลาจะแสดงการละเมิดเว้นแต่จะมีการบอกอย่างชัดเจนว่าไม่ควรทำ


2

ความหมายทั่วไปมากขึ้น

รหัสพฤติกรรม: ตามนิยามจะกำหนดพฤติกรรมขององค์ประกอบดิจิตอล มันไม่ได้ให้ข้อมูลว่าจะนำไปใช้กับ HW จริง ๆ ได้อย่างไร (การสังเคราะห์) มันจะไม่ให้ข้อมูลว่าจะดำเนินการลงทะเบียนและประตูอย่างไรเพื่อดำเนินการที่จำเป็น มันเหมือนกับเขียนอัลกอริธึมหรือ FSM ใน C

RTL: มันเป็นรูปแบบที่แม่นยำยิ่งขึ้นขององค์ประกอบดิจิตอล มันให้ข้อมูลวิธีการใช้งานรหัสเป็น HW จริง (หลังจากการสังเคราะห์) นอกจากนี้ยังให้ข้อมูลว่าจะถ่ายโอนข้อมูลระหว่างการลงทะเบียนและประตูได้อย่างไร


1

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

รหัส verilog เกี่ยวกับพฤติกรรมโดยทั่วไปดูเหมือนโปรแกรมคอมพิวเตอร์ตามลำดับที่รันจากบนลงล่างภายในinitial beginบล็อก คุณอาจพบว่าไม่มีพอร์ตอินพุต / เอาต์พุตที่กำหนดไว้ในระดับบนสุดโมดูลพฤติกรรมเนื่องจากการส่งออกอาจจะเป็นสิ่งอำนวยความสะดวกจำลองเช่นคอนโซล$display()หรือระบบแฟ้มด้วย$openหรือรูปแบบของคลื่น Dumper ด้วยและ$dumpfile $dumpvarsนาฬิกาสำหรับความล่าช้าระหว่างงบสร้างโดยใช้การจำลองยาวรอเวลาเช่นและเรียกใช้งาน#4000 wishbone_master.checked_read(addr, value)สำหรับการสร้างในระดับที่สูงขึ้นเหล่านี้คือมันไม่ชัดเจนว่าสิ่งที่เทียบเท่าเทคโนโลยีสังเคราะห์จะ / อาจจะเป็น

Verilog สำหรับการสังเคราะห์มักจะมีพอร์ตอินพุต / เอาท์พุตเนื่องจากไม่มีพอร์ตเชื่อมต่อโมดูลจะไม่มีผลข้างเคียงและสามารถกำจัดได้ [1] ความล่าช้าอาจนำมาใช้โดยการนับรอบของนาฬิกาโดยเฉพาะ หมายเหตุบางฟังก์ชั่นระบบ Verilog เช่น$clog2(PARAMETER)อาจได้รับอนุญาตในรหัสสำหรับการสังเคราะห์ดังนั้นการปรากฏตัวของ$functionไม่ได้รับประกันทั้งสองวิธี รหัสสำหรับการสังเคราะห์มีแนวโน้มที่จะประกอบด้วย 'กระบวนการ' อิสระจำนวนมากแต่ละรายการที่มีรายการความไว เทคโนโลยีบางอย่างจะอนุญาตให้initial beginบล็อกสำหรับการเริ่มต้นหน่วยความจำอีกครั้งซึ่งไม่รับประกัน

ในที่สุดนักออกแบบรู้วัตถุประสงค์ของรหัสที่พวกเขาเขียนและจะเรียกมันอย่างเหมาะสมกับชุดเครื่องมือการสังเคราะห์หรือในการจำลอง

[1] ยกเว้นบล็อก IP บางตัวซึ่งอาจทำการเชื่อมต่อกับชิปภายในเช่น JTAG

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