ไม่มีอะไรผิดปกติเกี่ยวกับการใช้จำนวนเต็มสำหรับ RTL ต่อ seแต่มีเหตุผลบางอย่างที่หลีกเลี่ยงได้ นี่เป็นคำถามเกี่ยวกับ "การปฏิบัติที่ดีที่สุด" แบบอัตนัยและในที่สุดคุณจะต้องค้นหาตัวเองในสิ่งที่คุณต้องการ เพื่อช่วยในเรื่องนั้นฉันจะแบ่งปันประสบการณ์และความคิดเกี่ยวกับเรื่องนี้
โดยเฉพาะอย่างยิ่งผมอยู่ในความโปรดปรานของการใช้ ( จำกัด ) จำนวนเต็มยังเมื่อเขียนสำหรับการสังเคราะห์ บางครั้งฉันทำมัน แต่ในทางปฏิบัติฉันมักจะติดsigned
และunsigned
และฉันจะอธิบายอย่างละเอียดว่าทำไม
คุณจะถูกบังคับให้ใช้ดาต้าประเภทเวกเตอร์ในส่วนของการออกแบบของคุณ:
ผู้ขาย -IP หรือ IP ของบุคคลที่สามแทบจะไม่ได้ใช้ integer
ชนิดสำหรับพอร์ต
เช่นเมื่อส่งข้อมูลผ่าน BlockRam แม้ว่าคุณจะอนุมานแล้วดังนั้นไม่จำเป็นต้องเชื่อมต่อกับ IP / แมโคร / ดั้งเดิมคุณจะต้องแปลงเป็น vectorized ทุกประเภท
แม้ว่าจะไม่ได้กล่าวถึงข้างต้นคุณจะต้องเชื่อมต่อกับบางสิ่งบางอย่างเป็นส่วนใหญ่ในบางจุด (พอร์ตระดับบนสุดหากไม่มีสิ่งอื่นใด)
เนื่องจากคุณไม่สามารถใช้integer
การออกแบบเต็มรูปแบบได้คุณอาจต้องการข้ามมันทั้งหมดเข้าด้วยกันเนื่องจาก:
ในบางจุดคุณจะต้องทำการแปลงต่อไปและสิ่งนี้จะเป็นส่วนหนึ่งของการใช้integer
งานตั้งแต่แรก
นอกจากนี้สำหรับการจำลองการแปลงเหล่านี้โดยทั่วไปจะถูกเรียกด้วยเวกเตอร์ของ'U'
หรือ'X'
ไม่ว่าจะก่อนรีเซ็ตหรือในเวลาอื่น ๆ และทุกการเรียกใช้ฟังก์ชั่นดังกล่าวจะสร้างข้อความเตือนจากฟังก์ชั่นแพคเกจ
ข้อเสียของการใช้integer
:
ตรงกันข้ามกับประเภทเวกเตอร์, จำนวนเต็มไม่มี'U'
และ'X'
; ฉันพบว่ามีประโยชน์มากในการจำลองสถานการณ์ คุณจะเห็นว่าสัญญาณที่ไม่มีการกำหนดค่าเริ่มต้นแพร่กระจายผ่านการออกแบบและคุณอาจตอบสนองหากคุณเห็นสัญญาณที่ไม่ได้กำหนดค่าเริ่มต้นจำนวนมากหลังจากการรีเซ็ต กรณีนี้จะไม่เกิดขึ้นหากใช้จำนวนเต็ม
ด้วยจำนวนเต็มจะมีความเสี่ยงมากขึ้นในการจำลอง / สังเคราะห์การจับคู่ผิดพลาดเมื่อเพิ่มหรือลบผลที่เกิดขึ้นภายใต้ / ล้น (ตามที่คนอื่นชี้ไปแล้ว)
กรณีทั่วไปที่ฉันพบว่าinteger
เป็นตัวเลือกที่ดีจริงๆ:
สำหรับการดีบักสัญญาณ / ตัวนับที่คุณตรวจสอบผ่าน chipScope / signalTap เป็นต้น
การแสดงตัวนับภายในทั้งหมดที่ไม่เคยเข้าหรือออกจากรหัสของคุณเอง ใช่มีเช่นมีกรณีเช่นนี้หากคุณกำลังเขียน FIFO และคุณจะเขียนตายนับ / อ่านในรูปแบบสัญญาณfull
, empty
, almostFull
ฯลฯ ( แต่เลขคณิตในชี้เป็นวิธีที่ดีกว่าตายคำนวณในกรณีนี้ .. )
ข้อสรุปของตัวเอง:ฉันใช้จำนวนเต็มบางครั้ง แต่เท่าที่จำเป็นและส่วนใหญ่ในกรณีที่อธิบายข้างต้น ฉันไม่เห็นค่าใช้จ่ายมากนักในการใช้งานunsigned
และsigned
แทนที่จะเป็นจำนวนเต็มดังนั้นมักจะติดกับพวกเขา