รีเซ็ต: ซิงโครนัสกับอะซิงโครนัส


15

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

อย่างไรก็ตามมีคนบอกฉันว่าในวงจร ASIC ผู้คนมักจะใช้การรีเซ็ตแบบอะซิงโครนัสทุกที่ ฉันสงสัยว่าทำไมและถ้าเป็นเช่นนั้นในการออกแบบ fpga บางอย่างเช่นกัน ฉันชอบที่จะได้ยินความคิดเห็นมืออาชีพ

ขอบคุณ

คำตอบ:


11

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

คุณจะใช้ตัวซิงโครไนซ์รีเซ็ต (FFs สองตัว) กับเอาท์พุทที่เชื่อมโยงกับส่วนที่เหลือของการออกแบบรีเซ็ต:

ตั้งค่าใหม่

การถกเถียงกันสองสามครั้ง:
Async และการรีเซ็ตการตั้งค่า
ตัวอักษร On Sync และ Async Resets


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

ไม่การปล่อยการรีเซ็ตแบบอะซิงโครนัสไม่รับประกันว่าจะสะอาดเนื่องจากต้องใช้เวลาในการกู้คืนที่ต้องการ (เช่นการตั้งค่า / การพัก) นี่คือสาเหตุที่คุณจะปล่อยการรีเซ็ตแบบซิงโครนัส
Oli Glaser

คำถามของฉันคือการให้ latch1 ปล่อยสัญญาณรีเซ็ตให้อาหาร latch2 บนขอบนาฬิกาแบบเดียวกับ latch2 ที่จะใช้นั้นเป็น kosher หรือไม่นั่นคือเวลาการแพร่กระจายขั้นต่ำจากนาฬิกาของ latch1 ไปยังเอาต์พุตนั้นเป็นไปตามข้อกำหนดการพัก BTW คุณคิดอย่างไรกับคำตอบของฉันข้างต้น วงจรที่คุณวาดนั้นมีภูมิคุ้มกันเพียงเล็กน้อยต่อการหมุนรอบพัลส์ในสายรีเซ็ตเมื่อควรจะมีภูมิคุ้มกันเกือบทั้งหมด
supercat

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

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

7

ฉันชอบการรีเซ็ตแบบอะซิงโครนัสมากกว่าการรีเซ็ตแบบซิงโครนัสด้วยเหตุผลสองสามประการ (โดยไม่เรียงตามลำดับ):

  • การเพิ่มฟังก์ชั่นการตั้งค่าแบบอะซิงโครนัสหรือรีเซ็ตไปยังฟลิปฟล็อปอาจทำให้การออกแบบมีขนาดเล็กลงเนื่องจากการรวมตรรกะในเซลล์เดียว (เทียบกับฟลิปฟล็อปที่ไม่สามารถตั้งค่าใหม่ได้
  • ประตูที่น้อยลงส่งผลให้การเดินสาย / สถานที่และเส้นทางมีความแออัดน้อยลง
  • เป็นกระบวนการที่ง่ายขึ้น / ง่ายขึ้นในการรีเซ็ตชิป (เป็นมิตรต่อผู้ใช้ / ทดสอบมากขึ้น)
  • การทำให้เส้นทางรีเซ็ตแบบอะซิงโครนัสลดความยุ่งยากในการแบ่งพาร์ติชันการวิเคราะห์เวลาแบบคงที่ของสัญญาณรีเซ็ต
  • การรีเซ็ตแบบซิงโครนัสจะเพิ่มตรรกะพิเศษลงในเส้นทางวิกฤติของการไหลของข้อมูลและทำให้ยากขึ้นที่จะทำตามข้อกำหนดการตั้งค่าและเก็บรักษาไว้
  • ในขณะที่ FPGA มีฟังก์ชันลอจิกอินพุต 4-6 โดยพลการในอินพุตคุณ "จ่าย" สำหรับแต่ละอินพุตในเกตบน ASIC (อินพุตเพิ่มเติม = เกตที่ใหญ่กว่า; ฟังก์ชันที่ซับซ้อน = หลายประตู)

ท้ายที่สุดฉันไม่คิดว่าปัญหาใด ๆ เหล่านี้จะเป็น show-stoppers แต่แน่นอนว่าพวกเขาจะมีส่วนร่วมอย่างมากในการรีเซ็ตแบบอะซิงโครนัสบน ASIC


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

4

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

หากคุณต้องการที่จะขุดลึกลงไปในนี้คุณอาจอ่านเอกสารของคัมมิงเกี่ยวกับเรื่องนี้โดยเฉพาะ:

http://www.sunburst-design.com/papers/CummingsSNUG2003Boston_Resets.pdf

ไชโย


ประเด็นหนึ่งที่ฉันคิดว่ามิสเตอร์คัมมิงส์คิดถึงในกระดาษของเขาคือในขณะที่เครื่องตรวจจับความผิดพลาดอาจยับยั้งสิ่งที่จะเป็นพัลสแบบอื่นพวกเขาสามารถเปลี่ยนพัลส์ความยาวที่ถูกต้องตามกฎหมายให้กลายเป็นพัลส์ ผลของสิ่งนี้คือพัลส์ซึ่งเป็นเพียงความยาวที่ถูกต้องสามารถปิดกั้นสถานะของระบบโดยพลการโดยไม่ทำให้เกิดการรีเซ็ตที่เหมาะสม เนื่องจากเป็นเรื่องยากมากที่จะหลีกเลี่ยงการแพร่กระจายของข้อมูลในทุกกรณีที่ไม่มีการซิงโครไนซ์สองครั้งฉันขอแนะนำให้มีวงจรการจับภาพ async สองอันซึ่งหนึ่งในนั้นมีเกณฑ์การตรวจจับแบบ 'เข้มงวด' แล้ว ...
supercat

... จัดเรียงสิ่งต่าง ๆ เพื่อให้เกิดความผิดพลาดในระยะสั้นหรือไม่อาจทำให้เกิดการรีเซ็ตเกิดขึ้นหนึ่งหรือสองรอบในภายหลัง แต่ชีพจรที่ยาวพอจะทำให้เกิดการรีเซ็ตทันที นอกจากนี้ในขณะที่ใช้อินพุต 'รีเซ็ต async' บน flip flops อาจช่วยสังเคราะห์ในโทโพโลยีบางอย่างนั่นไม่ได้หมายความว่าจะต้องใช้แบบอะซิงโครนัส อาจเป็นประโยชน์หากมีการซิงโครไนซ์สัญญาณรีเซ็ตภายในส่วนใหญ่กับนาฬิกาแม้ว่าจะขับอินพุต "async รีเซ็ต" บนสลัก
supercat

Cummings กล่าวว่าตัวกรองผิดพลาด "น่าเกลียด" ฉันไม่เคยเห็นหนึ่งในไอซีที่ฉันได้ทำงาน เรามักจะใช้ Schmitt-trigger ทุกเซลล์ของแผ่นอินพุตเพื่อหลีกเลี่ยงปัญหาเหล่านี้และการเปิดเครื่องใหม่ที่ฉันใช้นั้นก็จะถูกกำจัดไปในทำนองเดียวกัน โดยวิธีการในกรณีใดคุณจะมีพัลส์สั้น ๆ ในบรรทัดรีเซ็ต? ฉันเคยเห็นสิ่งนี้ในสถานการณ์การทดสอบการสแกนบางอย่าง แต่พวกเขายังคงอยู่ในช่วงของวงจรนาฬิกาที่ยาวนานไม่ใช่พัลส์สั้นที่มีจุดประสงค์ ในความคิดเห็นสุดท้ายของคุณการซิงโครไนซ์การรีเซ็ตต้องถูกซิงโครไนซ์กับนาฬิกาเพื่อหลีกเลี่ยงการละเมิด s / h ในการรีเซ็ตและให้แน่ใจว่าการรีเซ็ตการออกจาก flops ทั้งหมดบนขอบเดียวกัน
mixed_signal_old

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

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

2

อีกวิธีหนึ่งซึ่งดูเหมือนจะปลอดภัยกว่าวิธีการ 'async assert / sync release' ก็คือจะต้องมีตัวตรวจจับการรีเซ็ตแบบอะซิงโครนัส (มากเท่าที่อธิบายที่อื่นด้วย asynchronous 'assert' และ 'การปล่อยแบบซิงโครนัส') แต่มีผลลัพธ์จาก ที่ประตูอุปกรณ์ I / O ที่หันออกไปด้านนอกโดยไม่ต้องรีเซ็ตอะไรแบบอะซิงโครนัส (นอกเหนือจากสลักในตัวตรวจจับ) หากใช้เครื่องตรวจจับการรีเซ็ตแบบอะซิงโครนัสสองเครื่องหนึ่งเครื่องสำหรับ I / O บรรทัดและเครื่องหนึ่งเพื่อป้อนเครื่องตรวจจับการตั้งค่าซิงโครนัสและหากมีการออกแบบเครื่องหนึ่งสำหรับสาย I / O เพื่อให้สามารถ Tripping ได้ด้วยพัลส์รีเซ็ต เดินทางไปยังเครื่องตรวจจับหลักซึ่งอาจหลีกเลี่ยงได้แม้จะมีข้อผิดพลาดของเอาต์พุตในกรณีที่จะไม่รีเซ็ต CPU โปรดทราบว่าหากทำสิ่งนี้ชีพจรการรีเซ็ตความยาวที่ถูกต้องตามกฎหมายจะรีเซ็ตเอาต์พุตแบบอะซิงโครนัส

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

BTW นี่คือวงจรที่แสดงแนวคิด ใกล้มุมซ้ายล่างจะมีอินพุตลอจิกสองตัวสำหรับรีเซ็ต หนึ่งจะสร้างชีพจรรีเซ็ต "สะอาด" และอื่น ๆ จะสร้างหนึ่งเหนอะจริง ๆ ไฟ LED สีเหลืองหมายถึงรีเซ็ตระบบหลัก cyan LED แสดงว่าเปิดใช้งาน I / O การกดปุ่มรีเซ็ตแบบใหม่จะทำให้ "รีเซ็ต" ทันทีของเอาต์พุต การกดปุ่มการตั้งค่า icky อาจทำให้การรีเซ็ตล่าช้าหรือปล่อยให้มันไม่ได้รับผลกระทบ (ในเครื่องจำลองไม่มีวิธีที่จะทำให้กรณี 'ปล่อยให้ไม่ได้รับผลกระทบ')


ฉันคิดว่านี่เป็นความคิดที่ดี เฉดสีเทาจำนวนมากพร้อมสิ่งที่ดูเหมือนง่าย ๆ เช่นการรีเซ็ต
Oli Glaser

0

ในฐานะวิศวกรที่มีประสบการณ์ ( 3 ปีพร้อมการออกแบบ FPGA และระบบฝังตัว ) ฉันกำลังบอกคุณว่าคุณต้องตรวจสอบแผ่นข้อมูลและคู่มือผู้ใช้ของ FPGA มันไม่ใช่คำตอบง่ายๆ

คุณต้องออกแบบให้เหมาะกับประเภท FPGA ที่คุณเลือก FPGA บางตัวมีFlipFlopsที่ออกแบบมาเพื่อรีเซ็ต Async บางรุ่นถูกออกแบบมาเพื่อซิงค์รีเซ็ต

คุณต้องตรวจสอบคู่มือผู้ใช้ FPGA ว่าคุณใช้ FlipFlops ประเภทใด

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

การออกแบบของคุณจะทำงานในกรณีใด ๆแต่บางครั้ง FPGA Implementor จะออกนอกเส้นทางเพื่อให้การทำงานแบบลอจิกของคุณ ( เพิ่มลอจิกมากขึ้น ) แต่จะทำให้ความถี่สูงสุดลดลงและ / หรือทรัพยากร FPGA เพิ่มเติม

ตัวอย่าง: ทดสอบด้วยZYNQ ของ Xilinx ( FPGA ออกแบบมาสำหรับการรีเซ็ตแบบซิงก์ - ดูคู่มือผู้ใช้พื้นฐาน ) ด้วยการเปลี่ยนการรีเซ็ตจาก async เป็นการซิงค์ความถี่สูงสุดที่เสถียรจะเปลี่ยนจาก 220MHz เป็น 258MHzและดังนั้นฉันจึงผ่านมาร์จิ้นความถี่ของฉัน

นอกจากนี้ฉันอาจเพิ่มว่าผู้ดำเนินการไม่ทราบว่าสัญญาณนาฬิกาและการรีเซ็ตคืออะไร มันกำหนดพิน flipflop ให้สัญญาณโดย ORDER ไม่ใช่ตามชื่อ ดังนั้นใน FPGA บางตัวผู้ดำเนินการเลือกสัญญาณแรกหลังจาก "โพรเซส () เริ่มต้น" ใน VHDL เป็นนาฬิกาในบางครั้งเป็นการรีเซ็ตขึ้นอยู่กับว่า FPGA ตัวดำเนินการถูกตั้งค่าเป็น


ฉันไม่เห็นด้วยกับข้อความของคุณว่า "ผู้ดำเนินการไม่ทราบว่าสัญญาณนาฬิกาและสัญญาณรีเซ็ต" คืออะไร เครื่องมือการสังเคราะห์อนุมานว่าเป็นนาฬิกาและถูกรีเซ็ตโดยวิธีการใช้งาน สัญญาณนาฬิกาใช้กับข้อกำหนดขอบการรีเซ็ตไม่ใช่ นอกจากนี้flip-flop ใด ๆสามารถใช้กับสเปคการรีเซ็ตแบบซิงโครนัสและตามที่คุณสังเกตเห็นสิ่งนี้มักจะนำไปสู่เส้นทางที่สำคัญได้เร็วขึ้น
Joe Hass
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.