เมื่อใช้สลักดีกว่ารองเท้าแตะใน FPGA ที่รองรับทั้งสองอย่าง?


20

คำถาม:

เมื่อใช้สลักดีกว่ารองเท้าแตะใน FPGA ที่รองรับทั้งสองอย่าง?

พื้นหลัง:

เป็นหลักการที่รู้จักกันดีว่าควรหลีกเลี่ยงการใช้สลักแบบโปร่งใสระดับความอ่อนไหวใน FPGAs และควรใช้เฉพาะแผ่นฟลิปที่มีความไวต่อขอบ สถาปัตยกรรม FPGA ส่วนใหญ่สนับสนุนทั้งสลักและ flip-flop

คำแนะนำทั่วไป - จากผู้จำหน่าย FPGA คือการระวังสลักหรือไม่ใช้สลัก ฯลฯ มีเหตุผลที่ดีมากสำหรับคำแนะนำนี้รายละเอียดซึ่งเป็นที่รู้จักกันดี อย่างไรก็ตามคำแนะนำส่วนใหญ่จะใช้ถ้อยคำ "อย่าใช้สลักเว้นแต่คุณจะรู้ว่าคุณต้องการใช้มัน"

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

โน๊ตสำคัญ:

Latches vs. flip-flop มักทำให้ผู้คนโกรธ ฉันสนใจคำตอบของคำถามเท่านั้น คำตอบที่อธิบายความแตกต่างระหว่างสลักและฟลิปฟล็อปเหตุผลที่อธิบายอย่างกว้างขวางในการใช้ไม่ใช้แลตช์อธิบายรายละเอียดว่าเหตุใดฟลิปฟลิปดีกว่าแลตช์


เมื่อคุณใช้ FPGA เพื่อเลียนแบบวงจรที่มีอยู่ที่ใช้แลตช์อย่างแน่นอน
Majenko

คำตอบ:


11

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

ฉันชอบคุณมักจะพบวิธีที่ดีกว่าในการใช้ flip-flop ดังนั้นหลีกเลี่ยงการใช้สลัก ตรรกะที่เกิดขึ้นมักจะสง่างามและแข็งแกร่ง แต่มีบางครั้งที่ฉันไม่สามารถควบคุมตรรกะเพื่อหลีกเลี่ยงการ latches ได้ ตัวอย่างเช่นฉันอาจเชื่อมต่อกับบัสโปรเซสเซอร์ซึ่งต้องใช้สลักเพื่อให้ตรงตามข้อกำหนดที่ต้องการ เนื่องจากฉันไม่สามารถออกแบบ CPU หรือบัสได้ฉันจึงติดกับสลัก

ในช่วง 13 ปีที่ผ่านมานั่นเป็นครั้งเดียวที่ฉันต้องการสลัก


2
ขอบคุณสำหรับคำตอบ. ฉันกำลังยื่นคำตอบของคุณทางจิตใจภายใต้ "ความเข้ากันได้แบบบังคับย้อนหลัง" ซึ่งดูเหมือนสมเหตุสมผลทั้งหมด =)
wjl

8

รองเท้าแตะมักเป็นที่นิยมใช้ในการสลักเพราะมีเงื่อนไข / ข้อ จำกัด การแข่งขันเพียงสี่ประการ:

  1. เวลาในการตั้งค่าระหว่างการเปลี่ยนแปลงข้อมูลอินพุตและขอบนาฬิกาที่ใช้งานต่อไปนี้และ
  2. กดค้างไว้ระหว่างขอบนาฬิกากับการเปลี่ยนแปลงครั้งต่อไปของอินพุตข้อมูล
  3. ระยะเวลาพัลส์นาฬิกาขั้นต่ำที่ใช้งานอยู่
  4. ระยะเวลาพัลส์นาฬิกาขั้นต่ำที่ไม่ใช้งาน

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

ฉันขอแนะนำให้ใช้สลักในกรณีที่พฤติกรรมที่ต้องการของผลลัพธ์ของชิพอาจจะเป็นแบบอย่างที่สมเหตุสมผลที่สุด ตัวอย่างเช่นฮาร์ดแวร์ของตัวเองควรทำตัวเป็นตัวแปลงอนุกรมเป็นแบบขนานโดยที่ระหว่างขอบที่เพิ่มขึ้นและลดลงของนาฬิกาแรกหลังจากการซิงค์เฟรมเอาต์พุตแรกจะติดตามอินพุต ระหว่างขอบที่สูงขึ้นและต่ำลงของนาฬิกาที่สองเอาท์พุทที่สองติดตามการป้อนข้อมูล ฯลฯ เราสามารถออกแบบวงจรโดยใช้ flip flops และตรรกะ combinatorial ล้วนๆ ซับซ้อนกว่าการใช้สลักและมีแนวโน้มที่จะประพฤติผิดปกติหากไม่มีการ จำกัด เวลา


3
"การตอบสนองอธิบายความแตกต่างระหว่างสลักและฟลิปฟล็อปเหตุผลที่ทำให้ไม่ใช้แลตช์อธิบายรายละเอียดว่าทำไมฟลิปฟลิปดีกว่าแลตช์ ."
Majenko

@supercat อย่างน้อยส่วนที่สองของคำตอบจะมีคำตอบที่เกี่ยวข้องกับคำถาม =) ขอบคุณ
wjl

1
@ Majenko: บางทีฉันควรจะพูดว่า "ใช้งานง่ายกว่า" มากกว่า "ดีกว่า"; ประเด็นของฉันไม่ได้โต้แย้งว่าควรหลีกเลี่ยงการใช้กลอนทุกครั้งที่เป็นไปได้ แต่แทนที่จะแนะนำให้คนที่ใช้แลตช์ต้องระวังความซับซ้อน
supercat

@supercat คุณช่วยอธิบายตัวอย่างของคุณด้วย wavetrace สั้น ๆ ได้ไหม?
ฟิลิปป์

1

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

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

เพื่อหลีกเลี่ยงการแข่งขันคุณต้องใช้ฟังก์ชั่นคอมบิเนชันนอลเหล่านี้ด้วยวิธีที่มีความสามารถพิเศษ น่าเสียดาย (ในกรณีนี้ ;-) มิฉะนั้นเป็นคุณสมบัติที่ดีมาก) เครื่องมือการสังเคราะห์ FPGA จะช่วยเพิ่มประสิทธิภาพการออกแบบของคุณเพื่อขจัดความซ้ำซ้อนทั้งหมด ดังนั้นหากคุณต้องการติดตั้งสลักใน FPGA คุณต้องติดตั้งสลัก "ด้วยมือ" และป้องกันการปรับให้เหมาะสม (เช่นใน VHDL คุณอาจต้องตั้งค่าคุณลักษณะ "คง" เป็น "จริง" สำหรับสัญญาณที่ใช้ภายในสลัก) .


-1 OP ถามถึงเวลาที่คุณควรใช้สลักโดยเฉพาะและผู้อ่านที่ถามเป็นพิเศษไม่ให้เหตุผลเพิ่มเติมที่ไม่ควรใช้สลัก
Joe Hass

-1

ในแง่ของเวลา:

หากเราใช้ flip flops ในการออกแบบประสิทธิภาพนั้นขึ้นอยู่กับความล่าช้าของเส้นทางผสมที่ยาวที่สุด

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


3
-1 ดีกว่าที่จะวิเคราะห์อย่างถูกต้องด้วยข้อ จำกัด ของหลายล้อและอนุญาตให้ส่วน "async" ทำงานมากกว่าสองรอบ ดูเช่นหน้า 7-30 จากaltera.co.uk/literature/hb/qts/qts_qii53018.pdf
shuckc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.