นาฬิกาเอียงคืออะไรและทำไมจึงเป็นลบได้


10

คอมไพเลอร์ HDL ของฉัน (Quartus II) สร้างรายงานเวลา ในนั้นโหนดมีคอลัมน์ "นาฬิกาเอียง" คำจำกัดความเฉพาะนาฬิกาเอียงที่ฉันพบอยู่ในเอกสาร TimeQuest (ดูหน้า 7-24):

ในการระบุความไม่แน่นอนของนาฬิกาด้วยตนเองหรือเอียงสำหรับการถ่ายโอนแบบนาฬิกาต่อวันให้ใช้set_clock_uncertaintyคำสั่ง

ดังนั้นหากความเบ้เป็น "ความไม่แน่นอน" ทำไมนาฬิกาบางส่วนของฉันถึงเป็นลบ (เช่น -0.048) นาฬิกาเอียงคืออะไร?

คำตอบ:


8

จากวิกิพีเดีย :

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

TSkewi,j=TCiTCj

นาฬิกาเอียงอาจเป็นค่าบวกหรือลบ หากสัญญาณนาฬิกามีความสอดคล้องกันโดยสมบูรณ์สัญญาณนาฬิกาที่สังเกตที่รีจิสเตอร์เหล่านี้จะเป็นศูนย์

ดังนั้นจำนวนนาฬิกาที่การลงทะเบียนครั้งเดียวจึงสัมพันธ์กับการลงทะเบียนอีกครั้ง เนื่องจากเป็นญาติจึงสามารถเป็นบวกหรือลบ

ภาพประกอบบางส่วน:

บวก / ลบเอียง ชั้นนำ / ปกคลุมด้วยวัตถุฉนวนเอียง

ยกตัวอย่างเช่นการโอน intraclock ตามที่กำหนดไว้ในเอกสาร TimeQuest ที่คุณระบุ:

การถ่ายโอน Intraclock เกิดขึ้นเมื่อการถ่ายโอนแบบ register-to-register เกิดขึ้นในแกนหลักของอุปกรณ์และนาฬิกาต้นทางและนาฬิกาปลายทางมาจากขาออก PLL หรือพอร์ตนาฬิกาเดียวกัน

ดังนั้นหากการลงทะเบียนปลายทางนั้นอยู่ใกล้กับวงจรกำเนิดสัญญาณนาฬิกามากขึ้นนาฬิกาอาจจะมาถึงการลงทะเบียนปลายทางก่อนที่จะมาถึงที่ลงทะเบียนต้นทางทำให้เกิดนาฬิกาเอียงชั้นนำซึ่งเป็นผลบวกจริง ๆ หากการลงทะเบียนปลายทางได้รับขอบนาฬิกาหลังจากการลงทะเบียนต้นทางนาฬิกาจะเอียงหรือติดลบ

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

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


10

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

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

ด้วยสไตล์การออกแบบนี้ความเบ้ของนาฬิกาและปัญหาเกี่ยวกับเวลาอื่น ๆนั้นไม่เกี่ยวข้องยกเว้นในการหา "อัตรานาฬิกาสูงสุดสำหรับระบบนี้คืออะไร"

นาฬิกาเอียงคืออะไร?

ตัวอย่างเช่น:

...
     R1 - register 1              R3
     +-+                  
   ->| |------>( combinational  )  +-+
...->| |------>(         logic  )->| |--...
   ->|^|------>(                )->|^|
     +-+       (                )  +-+
      |   +--->(                )   |
     CLK  | +->(                )  CLK
          | |
     R2:  | |
     +-+  | |               
...->| |->+ |
   ->|^|->--+
     +-+
      |
     CLK

ในฮาร์ดแวร์จริง "CLK" สัญญาณไม่เคยจริงๆสวิตช์ตรงพร้อมกันทุกครั้งที่ลงทะเบียน นาฬิกาลาด Tskew ความล่าช้าของนาฬิกาญาติปลายน้ำเพื่อนาฬิกาต้นน้ำ ( ):

Tskew (ต้นทางปลายทาง) = destination_time - source_time

โดยที่ source_time เป็นเวลาของขอบนาฬิกาที่แอ็คทีฟที่การลงทะเบียนซอร์สอัพสตรีม (ในกรณีนี้ R1 หรือ R2) และ destination_time เป็นเวลาของขอบนาฬิกาแอคทีฟ "เดียวกัน" ที่รีจิสเตอร์ปลายทางดาวน์สตรีมบางส่วน (ในกรณีนี้ R3) .

  • นาฬิกาเชิงลบเอียง: CLK ที่ R3 จะสลับก่อนนาฬิกาที่ R1
  • สัญญาณนาฬิกาเป็นบวก: CLK ที่ R3 จะสลับหลังจากนาฬิกาที่ R1

ผลของการเอียงนาฬิกาเป็นอย่างไร

(อาจเป็นแผนภาพเวลาที่นี่จะทำให้ชัดเจนขึ้น)

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

Tskew (R1, R3) <Tco - Th

Tclk_min = Tco + Tcalc + Tsu - Tskew (R1, R3)

ที่อยู่:

  • Tcalc เป็นเวลาการตกตะกอนสูงสุดที่เลวร้ายที่สุดของบล็อกใด ๆ ของตรรกะเชิงผสมที่ใดก็ได้ในระบบ (บางครั้งเราสามารถออกแบบบล็อกของตรรกะเชิงผสมที่อยู่บนเส้นทางวิกฤติผลักชิ้นส่วนต้นน้ำหรือปลายน้ำหรือแทรกขั้นตอนการวางท่ออีกขั้นดังนั้นการออกแบบใหม่จึงมีขนาดเล็กกว่า Tcalc ซึ่งช่วยให้เราเพิ่มอัตรานาฬิกาได้) .
  • Tclk_min เป็นช่วงเวลาต่ำสุดจากขอบนาฬิกาที่ใช้งานหนึ่งไปยังขอบนาฬิกาที่ใช้งานถัดไป เราคำนวณจากสมการข้างต้น
  • Tsu คือเวลาการตั้งค่าการลงทะเบียน ผู้ผลิตที่ลงทะเบียนคาดว่าเราจะใช้นาฬิกาช้าพอที่จะตอบสนองความต้องการนี้ได้เสมอ
  • Th คือเวลาพักการลงทะเบียน ผู้ผลิตที่ลงทะเบียนคาดหวังให้เราควบคุมนาฬิกาไม่ให้เพียงพอที่จะตอบสนองความต้องการนี้ได้เสมอ
  • Tco คือการหน่วงเวลาการส่งสัญญาณนาฬิกา (เวลาแพร่กระจาย) หลังจากแต่ละขอบนาฬิกาที่ใช้งานอยู่ R1 และ R2 ยังคงขับค่าเก่าไปยังตรรกะเชิงผสมสำหรับช่วงเวลาสั้น ๆ Tco ก่อนที่จะเปลี่ยนเป็นค่าใหม่ นี้ถูกกำหนดโดยฮาร์ดแวร์และรับประกันโดยผู้ผลิต แต่ตราบใดที่เรามีคุณสมบัติตรงตามข้อกำหนดของ Tsu และ Th และข้อกำหนดอื่น ๆ ที่ผู้ผลิตระบุสำหรับการทำงานปกติ

การเอียงเชิงบวกมากเกินไปเป็นความหายนะ การเอียงเชิงบวกมากเกินไปสามารถ (ด้วยการรวมข้อมูลบางอย่าง) ทำให้เกิด "เส้นทางการแอบ" เช่นนั้นแทนที่จะ R3 ล็อก "ข้อมูลที่ถูกต้อง" ที่นาฬิกา N + 1 (ฟังก์ชั่นที่กำหนดขึ้นของข้อมูลก่อนหน้านี้เข้า R1 และ R2 ที่นาฬิกา N) ข้อมูลใหม่ที่ล็อกเข้ากับ R1 และ R2 ที่นาฬิกา N + 1 สามารถรั่วไหลผ่านทำให้เสียตรรกะเชิงผสมและทำให้ข้อมูลที่ไม่ถูกต้องเข้าสู่ R3 ที่ "นาฬิกา" ที่ขอบเดียวกัน N + 1

จำนวนเอียงเชิงลบใด ๆ สามารถ "คงที่" ได้โดยการชะลอความเร็วของนาฬิกา มันเป็นเพียง "ไม่ดี" ในแง่ที่ว่ามันบังคับให้เราเรียกใช้ระบบในอัตรานาฬิกาที่ช้าลงเพื่อให้อินพุตของ R3 เวลาในการชำระหลังจาก R1 และ R2 สลักข้อมูลใหม่ที่ขอบนาฬิกา N และจากนั้น R3 ในภายหลัง latches ผลลัพธ์ที่ขอบนาฬิกา "ถัดไป" N + 1

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

เอกสาร Alteraกล่าว

"หลีกเลี่ยงการใช้ตรรกะเชิงผสมในเส้นทางนาฬิกาเพราะมันก่อให้เกิดการเอียงของนาฬิกา"

นี่คือความจริงที่ว่าคนจำนวนมากเขียน HDL ที่รวบรวมไปยัง FPGA ในลักษณะที่ทำให้เกิดสิ่งอื่นที่ไม่ใช่สัญญาณ CLK ทั่วโลกเพื่อขับเคลื่อนอินพุต CLK ท้องถิ่นของการลงทะเบียนบางอย่าง (นี่อาจเป็นตรรกะ "สัญญาณนาฬิกา" เพื่อให้ค่าใหม่ถูกโหลดเข้าสู่รีจิสเตอร์เมื่อตรงตามเงื่อนไขบางอย่างเท่านั้นหรือตรรกะ "ตัวแบ่งสัญญาณนาฬิกา" ที่ปล่อยให้นาฬิกา N 1 ตัวผ่านหรือ ฯลฯ เท่านั้น) CLK ในพื้นที่นั้นมักจะได้รับมาจาก CLK ทั่วโลกไม่ว่าจะเป็น CLK ทั่วโลกและจากนั้น CLK ท้องถิ่นจะไม่เปลี่ยนแปลงหรือ (ล่าช้าเล็กน้อยหลังจาก CLK ทั่วโลกสำหรับสัญญาณที่จะแพร่กระจายผ่าน "สิ่งอื่น") CLK โลคัลเปลี่ยนหนึ่งครั้ง

เมื่อ "สิ่งอื่น" นั้นขับเคลื่อน CLK ของดาวน์สตรีมรีจิสเตอร์ (R3) มันทำให้ความเบ้เป็นบวกมากขึ้น เมื่อนั้น "อย่างอื่น" ไดรฟ์ CLK ของ upstream register (R1 หรือ R2) มันทำให้ความเบ้เป็นลบมากขึ้น บางครั้งสิ่งใดก็ตามที่ผลักดัน CLK ของทะเบียนต้นน้ำและอะไรก็ตามที่ผลักดัน CLK ของทะเบียนล่องนั้นมีความล่าช้าในทางปฏิบัติเช่นเดียวกัน

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

ฉันยังคงประหลาดใจกับset_clock_uncertaintyคำสั่ง - ทำไมฉันถึงต้องการ "ระบุด้วยตนเอง" เอียง

(*) ยกเว้น: ระบบไม่ตรงกัน


ฉันเชื่อว่าความคิดที่อยู่เบื้องหลังการเพิ่มความล่าช้าเพื่อลดความเบ้ของนาฬิกาบางครั้งอาจเกี่ยวข้องกับการหน่วงเวลาของนาฬิกาเกือบครบรอบ คุณสามารถตั้งค่าเพื่อให้ฟลิปฟล็อป A เห็นขอบนาฬิกา 1 ในเวลาเดียวกันฟลิปฟล็อป B เห็นขอบนาฬิกา 2 จากมุมมองภายนอกมันเป็นขอบที่แตกต่างกัน แต่วงจรไม่ทำงาน ไม่ต้องกังวลตราบใดที่ขอบเรียงตัวกันอย่างสมบูรณ์
ajs410

1

clock skew คือเมื่อนาฬิกามาถึงที่จุดต่าง ๆ ของวงจรในเวลาที่ต่างกันเนื่องจากระยะทางความจุเป็นต้นซึ่งอาจทำให้เกิดความผิดปกติ ฉันคิดว่าค่าลบต้องเป็นเมื่อนาฬิกามาถึงจุดนั้นก่อนที่มันจะนำไปอ้างอิง

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