VHDL: การตั้งชื่อสถาปัตยกรรมและการตีความ


14

หมายเหตุ: ฉันกำลังใช้ ISE ของ Xilinx และมีบอร์ด FPGA เพื่อทำงานร่วมกับ (พร้อมสวิตช์และไฟและอื่น ๆ ) และฉันได้แฮ็คโปรเจ็คต์ง่ายๆมารวมกัน ในขณะเดียวกันฉันกำลังอ่านบทช่วยสอนหลายอย่างเพื่อสร้างพื้นฐานสำหรับสิ่งที่ฉันทำ

ฉันเคยเห็นเอนทิตีต่าง ๆ และสถาปัตยกรรมของพวกเขาที่กล่าวถึงในเอกสารอ้างอิงที่ฉันทำมา แต่การตั้งชื่อมักทำให้สับสน บ่อยครั้งแทนที่จะเป็น "สถาปัตยกรรมrtl of .. " หรือ "โครงสร้างโครงสร้างของ ... " ฉันจะเห็น "สถาปัตยกรรมฟูของ ... " หรือแม้แต่ "สถาปัตยกรรมโค้งของ ... "

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

  • เมื่อมองไปที่เอนทิตีเราจะกำหนดรูปแบบสถาปัตยกรรมจริงที่ใช้โดยไม่มีคำแนะนำจากชื่อสถาปัตยกรรมได้อย่างไร RTL, พฤติกรรม, โครงสร้าง ... ดูเหมือนว่าจะค่อนข้างคล้ายกับตาของผู้เรียน (สมมติว่าตัวอย่างที่ฉันเห็นถูกตั้งชื่ออย่างถูกต้อง) ตัวอย่างที่เรียบง่าย แต่ชัดเจนจะมีประโยชน์ที่นี่ (หรือตัวชี้ไปที่หนึ่ง)

  • หากระบุสถาปัตยกรรมหลายอย่างสำหรับเอนทิตีเดียว (ซึ่งฉันเข้าใจว่าเป็นไปได้) คุณเพียง แต่ให้ชื่อสถาปัตยกรรมที่แตกต่างกันในไฟล์เดียวกันหรือ ... ?

  • ชื่อสถาปัตยกรรมถูก จำกัด ให้กับเอนทิตีที่กำหนด (กล่าวคือมีปัญหากับ "เนมสเปซ" หรือไม่โดยใช้ชื่อสถาปัตยกรรมเดียวกันกับหลายเอนทิตี)

แก้ไข: และอีกหนึ่ง:

  • ดูเหมือนว่าจะมีความแตกต่างระหว่าง RTL และพฤติกรรม แต่อย่างที่กล่าวไว้ข้างต้นฉันไม่ได้เห็นมันในตัวอย่างที่ฉันเห็น (บ่อยครั้งที่ฉันเห็นเพียงสถาปัตยกรรมเดียวที่ถูกกำหนด) สถาปัตยกรรมหนึ่งมีความธรรมดามากกว่าสถาปัตยกรรมอื่นหรือไม่?

สิ่งที่ฉันกำลังมองหาคือโครงการหลายองค์ประกอบที่ครอบคลุม แต่เรียบง่าย (องค์ประกอบเล็ก ๆ ) เขียนโดยใช้แนวปฏิบัติที่ดีที่สุด (การตั้งชื่อที่เหมาะสมไม่ใช่ทั้งหมดที่อัดแน่นอยู่ในไฟล์เดียว ฯลฯ ) แต่ฉันยังหาไม่เจอ ฉันพบว่าโครงการตัวอย่างที่สร้างขึ้นอย่างเหมาะสมมีประโยชน์มากสำหรับการให้ความกระจ่างในหลักการพื้นฐานและแนวปฏิบัติที่ดี หากคุณรู้จักโครงการตัวอย่างเช่นนี้ฉันจะขอบคุณตัวชี้ไปยังสิ่งนั้นด้วย (ถ้าไม่มีอะไรเลยบางทีเมื่อฉันเข้าใจสิ่งนี้ฉันสามารถแบ่งปันหนึ่งในตัวฉันเอง ... )

คำตอบ:


6

เมื่อมองไปที่เอนทิตีเราจะกำหนดรูปแบบสถาปัตยกรรมจริงที่ใช้โดยไม่มีคำแนะนำจากชื่อสถาปัตยกรรมได้อย่างไร

คุณไม่สามารถ - เมื่อมีการสร้างอินสแตนซ์หรือกำหนดค่าสถาปัตยกรรมสามารถระบุได้ (หากมีให้เลือกมากกว่าหนึ่ง) หรือค่าเริ่มต้นจะถูกเลือกสำหรับคุณ

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

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

ชื่อสถาปัตยกรรมถูก จำกัด ให้กับเอนทิตีที่กำหนด (กล่าวคือมีปัญหากับ "เนมสเปซ" หรือไม่โดยใช้ชื่อสถาปัตยกรรมเดียวกันกับหลายเอนทิตี)

พวกเขาจะ "แนบ" กับนิติบุคคลดังนั้นสามารถนำมาใช้ใหม่

ฉันมักจะใช้a1เป็นสถาปัตยกรรมของฉันสำหรับทุกสิ่งที่สังเคราะห์ได้

  • rtl หมายถึงระดับที่ต่ำกว่า (สำหรับผู้อ่านหลายคน) กว่าที่ฉันเขียน
  • behavioural มักจะหมายถึงการสังเคราะห์ไม่ได้ (ให้ผู้อ่านบางคน)
  • synth ถูกใช้โดยซินธิไซเซอร์สำหรับรุ่นของมัน (มิฉะนั้นฉันจะใช้มัน)

a1 ไม่เคยขัดแย้งกันมาก่อนและไม่ก่อให้เกิดความสับสน)

ถ้าฉันมีมากกว่าหนึ่งสถาปัตยกรรมจริง ๆ ฉันมักจะตั้งชื่อพวกมันให้ละเอียด (ตัวอย่างเช่นhard_multipliersและlut_multipliersตัวกรองที่สร้างอินสแตนซ์ - หรือไม่ - บล็อก MUL18)

บ่อยครั้งที่คุณมีเพียงสถาปัตยกรรมเดียวดังนั้นจึงไม่สำคัญ ชื่อเอนทิตีที่ดีนั้นสำคัญกว่ามาก

ดูเหมือนว่าจะมีความแตกต่างระหว่าง RTL และพฤติกรรม แต่อย่างที่กล่าวไว้ข้างต้นฉันไม่ได้เห็นมันในตัวอย่างที่ฉันเห็น (มักจะเห็นเพียงสถาปัตยกรรมเดียวที่ถูกกำหนด) สถาปัตยกรรมหนึ่งมีความธรรมดามากกว่าสถาปัตยกรรมอื่นหรือไม่?

มันเป็นประวัติศาสตร์ - คุณไม่เคยสามารถสังเคราะห์รหัส "พฤติกรรม" (ซึ่ง ณ จุดหนึ่งรวมถึงสิ่งต่าง ๆ เช่นการเพิ่ม!) - ดังนั้นคุณจึงสร้างเวอร์ชัน RTL ซึ่งผู้สร้างอินสแตนซ์และสิ่งที่คล้ายคลึง (นั่นคือตามที่ฉันเข้าใจ - ฉันได้เขียนโค้ดเกี่ยวกับพฤติกรรม (และยังสามารถสังเคราะห์ได้) ตั้งแต่ฉันเริ่ม VHDLing ในปี 1999!


ฉันขอขอบคุณคำตอบแบบจุดต่อจุด!
MartyMacGyver

ฉันทำแบบเดียวกัน - ฉันตั้งชื่อสถาปัตยกรรมทั้งหมดของฉันarchและมุ่งเน้นไปที่การให้ชื่อที่สมเหตุสมผลแก่เอนทิตี สำหรับกรณีที่ไม่ค่อยมีสถาปัตยกรรมมากกว่าหนึ่งสำหรับเอนทิตีฉันแค่ให้พวกเขาชื่ออื่น อย่างไรก็ตามสำหรับฉันbehaviouralแล้วมันไม่ได้หมายความถึงรหัสที่เป็นไปไม่ได้หรือไม่ได้ตั้งใจที่จะสังเคราะห์ นอกจากนี้ฉันมักจะมีความคิดที่rtlเป็นชื่อที่เหมาะสมสำหรับ HDL ทั้งหมดที่มีไว้สำหรับการสังเคราะห์โดยไม่คำนึงถึงระดับนามธรรม (ฉันอาจจะเคยผิดในประเด็นเหล่านี้แม้ว่า แต่นั่นคือความเข้าใจของฉันในการใช้คำเหล่านั้น.)
Carl

8

นี่คือประเภทสถาปัตยกรรม:

พฤติกรรม:

บันทึกทั่วไป:

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

หมายเหตุเฉพาะ Xilinx

  • โดยทั่วไปตัวสร้างคอร์โมเดลคือไฟล์. vhd ที่สังเคราะห์ไว้ล่วงหน้า

โครงสร้าง:

คำจำกัดความทั่วไป

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

Xilinx xpecific notes

  • ตัวสร้างแกนหลักไม่คำนึงถึงเวลา
  • โดยทั่วไปตัวสร้างคอร์โมเดลยกตัวอย่าง netlists หลังการสังเคราะห์

ด้านบนนั้นเป็นสัตว์สองตัวที่เป็นสถาปัตยกรรมแบบดั้งเดิม โดยทั่วไปมักใช้คำจำกัดความ "แบบผสม" ซึ่งมีคุณสมบัติของทั้งคู่

RTL:

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

ไปยังสถาปัตยกรรมหลาย ๆ

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

หนังสือเล่มนี้มีประโยชน์มากและรายละเอียดของสิ่งนี้ค่อนข้างดี

ไม่มีกฎที่ยากและรวดเร็วว่าจะทำอย่างไรในแง่ของการมีโมเดลพฤติกรรมและโครงสร้างที่แตกต่างกันหรือเพียงแค่ผสม โดยปกติแล้วในการออกแบบเฟิร์มแวร์ขนาดใหญ่ (หรือในองค์กรขนาดใหญ่ที่มีการแชร์รหัสและนำกลับมาใช้ใหม่) มันมีประโยชน์ที่จะแยกแยะความแตกต่างระหว่างสองสิ่งเพื่อทำให้เรื่องต่าง ๆ ง่ายขึ้นอย่างไรก็ตามในตอนท้ายของวัน


ขอบคุณสำหรับคำตอบและเคล็ดลับในหนังสือ (แม้ว่าจะเป็นรายการที่หายาก)
MartyMacGyver

@MartyMacGyver: ใช่ฉันมักจะอ่านรุ่น Google เอกสาร: P
stanri

ฉันต้องการ แต่มันเป็นหน้าที่ขาดหายไปโดยเจตนา ...
MartyMacGyver

1

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

ที่สำคัญคุณต้องเข้าใจสิ่งที่สามารถสังเคราะห์ได้ในเทคโนโลยี asic / fpga ปัจจุบันและสิ่งที่ไม่ได้เป็นสิ่งนี้และไม่คำนึงถึงรูปแบบสถาปัตยกรรม

เอนทิตีสามารถนำไปใช้ได้หลายวิธีแม้จะอนุญาตให้มีพฤติกรรมที่แตกต่างกันเล็กน้อยดังนั้นคุณอาจมีสถาปัตยกรรมจำนวนมากสำหรับเอนทิตีเดียวกัน นอกจากนี้คุณอาจมีสถาปัตยกรรมสำหรับการจำลองเท่านั้น (โดยทั่วไปจะไม่สามารถสังเคราะห์ได้) ซึ่งอาจจำลองได้เร็วกว่ารุ่น "ของจริง" ซึ่งอาจมีประโยชน์เมื่อทดสอบการออกแบบขนาดใหญ่โดยรวม คุณจะให้ชื่อสถาปัตยกรรมเหล่านี้ที่ช่วยให้คุณจำสิ่งที่ทำให้พวกเขาแตกต่างจากคนอื่น ๆ และเพียงแค่ bhv / str / rtl มักจะไม่เพียงพอหรือถูกต้องเนื่องจากลักษณะไฮบริดของการออกแบบโลกแห่งความจริง

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

สถาปัตยกรรมสามารถอยู่ในไฟล์ที่แตกต่างกันคุณเพียงแค่ต้องให้แน่ใจว่ามีการรวบรวมการประกาศเอนทิตีก่อน

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


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