ทำไมต้องมีการประมวลผลคำแนะนำในช่วงเวลาที่กำหนด (เช่นการใช้นาฬิกา) พวกเขาไม่สามารถดำเนินการตามลำดับ - ทันทีหลังจากการเรียนการสอนก่อนหน้านี้เสร็จสมบูรณ์?
การเปรียบเทียบความจำเป็นของนาฬิกาในไมโครคอนโทรลเลอร์จะเป็นประโยชน์อย่างยิ่ง
ทำไมต้องมีการประมวลผลคำแนะนำในช่วงเวลาที่กำหนด (เช่นการใช้นาฬิกา) พวกเขาไม่สามารถดำเนินการตามลำดับ - ทันทีหลังจากการเรียนการสอนก่อนหน้านี้เสร็จสมบูรณ์?
การเปรียบเทียบความจำเป็นของนาฬิกาในไมโครคอนโทรลเลอร์จะเป็นประโยชน์อย่างยิ่ง
คำตอบ:
ตัวอย่างหรือสองตัวอย่างอาจช่วยได้ที่นี่ ดูวงจรสมมุติต่อไปนี้:
จำลองวงจรนี้ - แผนผังที่สร้างโดยใช้CircuitLab
สมมติว่าเริ่มต้นทั้ง A และ B สูง (1) เอาต์พุตของ AND คือ 1 และเนื่องจากทั้งสองอินพุตไปยัง XOR เป็น 1 เอาต์พุตจึงเป็น 0
องค์ประกอบลอจิกจะไม่เปลี่ยนสถานะของพวกเขาทันที - มีการหน่วงเวลาเล็กน้อย แต่มีความสำคัญในการเผยแพร่เมื่อมีการจัดการการเปลี่ยนแปลงอินพุท สมมติว่า B ต่ำ (0) XOR เห็นสถานะใหม่ของอินพุตที่สองทันที แต่อินพุตแรกยังคงเห็น 'เก่า' 1 จากประตู AND ดังนั้นเอาต์พุตจะสั้นมาก - แต่จนกว่าสัญญาณจะแพร่กระจายผ่านทางเกทและทำให้ทั้งสองอินพุตไปที่ XOR ต่ำและทำให้เอาท์พุทลดลงอีกครั้ง
ความผิดพลาดไม่ใช่ส่วนที่ต้องการของการทำงานของวงจร แต่ความผิดพลาดเช่นนั้นจะเกิดขึ้นเมื่อใดก็ตามที่มีความแตกต่างของความเร็วในการแพร่กระจายผ่านส่วนต่าง ๆ ของวงจรเนื่องจากจำนวนตรรกะหรือแม้แต่ความยาวของสายไฟ .
วิธีง่าย ๆ อย่างหนึ่งในการจัดการนั่นคือการวางฟลิปฟล็อปที่ขอบทำงานบนเอาต์พุตของตรรกะเชิงผสมของคุณเช่นนี้:
ตอนนี้ความผิดพลาดใด ๆ ที่เกิดขึ้นจะถูกซ่อนจากส่วนที่เหลือของวงจรโดย flipflop ซึ่งจะอัพเดตสถานะของมันเมื่อนาฬิกาเปลี่ยนจาก 0 เป็น 1 ตราบใดที่ช่วงเวลาระหว่างขอบนาฬิกาเพิ่มขึ้นนั้นนานพอที่จะส่งสัญญาณทั้งหมด ทางผ่านกลุ่มตรรกะเชิง combinatorial ผลลัพธ์จะถูกกำหนดอย่างน่าเชื่อถือและปราศจากความผิดพลาด
ฉันรู้สึกว่าคำตอบเหล่านี้ไม่ได้ตอบคำถามหลัก ไมโครคอนโทรลเลอร์มีนาฬิกาเพียงเพราะมันรัน (และจะขับเคลื่อนด้วย) ตรรกะลำดับ
ในทฤษฎีวงจรดิจิตอลซีเควนเชียลต่อเนื่องเป็นประเภทของวงจรลอจิกที่เอาท์พุทไม่เพียง แต่ขึ้นอยู่กับมูลค่าปัจจุบันของสัญญาณอินพุต แต่ตามลำดับของอินพุตที่ผ่านมาคือประวัติอินพุต สิ่งนี้ตรงกันข้ามกับตรรกะเชิงผสมซึ่งเอาต์พุตเป็นฟังก์ชันของอินพุตปัจจุบันเท่านั้น นั่นคือตรรกะลำดับมีสถานะ (หน่วยความจำ) ในขณะที่ตรรกะเชิงผสมไม่มี หรือกล่าวอีกนัยหนึ่งตรรกะตามลำดับคือตรรกะเชิงผสมกับหน่วยความจำ
เช่นกัน:
ข้อได้เปรียบหลักของตรรกะแบบซิงโครนัสคือความเรียบง่าย ประตูลอจิกที่ดำเนินการกับข้อมูลต้องใช้เวลาจำนวน จำกัด เพื่อตอบสนองต่อการเปลี่ยนแปลงของอินพุต สิ่งนี้เรียกว่าความล่าช้าในการแพร่กระจาย ช่วงเวลาระหว่างพัลส์ของนาฬิกาจะต้องมีความยาวเพียงพอเพื่อให้ประตูลอจิกทั้งหมดมีเวลาในการตอบสนองต่อการเปลี่ยนแปลงและเอาท์พุท "ชำระ" เป็นค่าตรรกะที่เสถียรก่อนที่พัลส์นาฬิกาถัดไปจะเกิดขึ้น ตราบใดที่เงื่อนไขนี้เป็นไปตาม (ไม่สนใจรายละเอียดอื่น ๆ ) วงจรรับประกันว่าจะมีเสถียรภาพและเชื่อถือ สิ่งนี้กำหนดความเร็วการทำงานสูงสุดของวงจรซิงโครนัส
คำตอบสั้น ๆ : ผู้จัดการต้องการฟังก์ชั่นที่เรียบง่ายทดสอบได้และพิสูจน์ได้ก่อนที่จะยอมรับการออกแบบหลายล้านดอลลาร์ (หรือมากกว่า) เครื่องมือปัจจุบันเพียง แต่ไม่ให้การออกแบบแบบอะซิงโครนัสคำตอบเหล่านั้น
ไมโครคอมพิวเตอร์และไมโครคอนโทรลเลอร์มักใช้รูปแบบการตอกบัตรเพื่อประกันการควบคุมเวลา มุมกระบวนการทั้งหมดจะต้องรักษาเวลาของแรงดันอุณหภูมิกระบวนการและผลกระทบอื่น ๆ ต่อความเร็วในการแพร่สัญญาณ ขณะนี้ไม่มีประตูตรรกะปัจจุบันทันทีเปลี่ยนแปลง: แต่ละประตูสวิทช์ขึ้นอยู่กับแรงดันไฟฟ้าก็จะถูกส่งให้ไดรฟ์ที่ได้รับการโหลดไดรฟ์และขนาดของอุปกรณ์ที่ใช้ในการทำให้มัน (และแน่นอนโหนดกระบวนการ (ขนาดอุปกรณ์) มันถูกสร้างขึ้นมาและความรวดเร็วของกระบวนการนั้นจริง ๆ แล้ว --- กระบวนการนี้ผ่าน fab) เพื่อให้ได้การสลับ "ทันที" คุณต้องใช้ตรรกะควอนตัมและถือว่าอุปกรณ์ควอนตัมสามารถเปลี่ยนได้ทันที (ฉันไม่แน่ใจ).
ตรรกะแบบโอเวอร์คล็อกทำให้พิสูจน์ได้ว่าเวลาในโปรเซสเซอร์ทั้งหมดทำงานได้กับแรงดันไฟฟ้าอุณหภูมิและตัวแปรการประมวลผลที่คาดหวัง มีเครื่องมือซอฟต์แวร์มากมายที่ช่วยวัดเวลานี้และกระบวนการเน็ตเรียกว่า "การปิดเวลา" การตอกบัตรสามารถ (และจากประสบการณ์ของฉันทำได้ ) ใช้พลังงานระหว่าง 1/3 ถึง 1/2 ของกำลังที่ใช้ในไมโครโปรเซสเซอร์
ดังนั้นทำไมไม่ออกแบบอะซิงโครนัส มีเพียงไม่กี่เครื่องมือปิดเวลาเพื่อสนับสนุนสไตล์การออกแบบนี้ มีเพียงเล็กน้อยหากมีเครื่องมือบอกตำแหน่งและเส้นทางอัตโนมัติที่สามารถจัดการและจัดการการออกแบบแบบอะซิงโครนัสขนาดใหญ่ได้ หากไม่มีสิ่งอื่นผู้จัดการจะไม่อนุมัติสิ่งใดก็ตามที่ไม่มีคอมพิวเตอร์ที่ตรงไปตรงมาและมีฟังก์ชันการทำงานที่ดี
ความคิดเห็นที่การออกแบบแบบอะซิงโครนัสนั้นต้องการสัญญาณซิงโครไนซ์ "หนึ่งตัน" ซึ่งต้องการทรานซิสเตอร์จำนวนมาก "" โดยไม่สนใจต้นทุนของการเราต์และการซิงโครไนซ์นาฬิกาทั่วโลกและต้นทุนของ flip-flop ทั้งหมด การออกแบบแบบอะซิงโครนัสคือ (หรือควร) เล็กกว่าและเร็วกว่าคู่ที่มีสัญญาณนาฬิกาของพวกเขา (หนึ่งใช้เส้นทางสัญญาณที่ช้าที่สุดONEและใช้สิ่งนั้นเพื่อส่งสัญญาณ "พร้อม" กลับไปยังตรรกะก่อนหน้า)
ตรรกะแบบอะซิงโครนัสนั้นเร็วกว่าเพราะมันไม่จำเป็นต้องรอนาฬิกาที่จะต้องขยายไปยังบล็อกอื่นที่อื่น นี่คือความจริงโดยเฉพาะอย่างยิ่งในฟังก์ชั่น register-to-logic-to-register ตรรกะแบบอะซิงโครนัสไม่มีปัญหา "การตั้งค่า" และ "การถือ" หลายอย่างเนื่องจากโครงสร้างอ่างล้างมือตอนจบ (รีจิสเตอร์) มีปัญหาเหล่านั้นซึ่งตรงข้ามกับชุดตรรกะแบบ pipelined ขอบเขต
มันสามารถทำได้? แน่นอนแม้กระทั่งการออกแบบทรานซิสเตอร์หนึ่งพันล้านครั้ง มันยากกว่าไหม ใช่ แต่เพียงเพราะการพิสูจน์ว่าใช้งานได้กับชิปทั้งหมด (หรือระบบเท่ากัน) จึงมีส่วนเกี่ยวข้องมากขึ้น การกำหนดเวลาลงบนกระดาษนั้นโดยตรงสำหรับบล็อกหรือระบบย่อยใด ๆ การกำหนดเวลานั้นถูกควบคุมในสถานที่อัตโนมัติและระบบเส้นทางนั้นยากกว่ามากเพราะเครื่องมือไม่ได้ถูกตั้งค่าเพื่อจัดการกับข้อ จำกัด ด้านเวลาที่มีศักยภาพมากขึ้น
ไมโครคอนโทรลเลอร์ยังมีชุดบล็อกขนาดใหญ่อื่น ๆที่อาจเชื่อมต่อกับสัญญาณภายนอกที่ค่อนข้างช้าซึ่งเพิ่มความซับซ้อนทั้งหมดของไมโครโปรเซสเซอร์ นั่นทำให้เวลามีส่วนร่วมเพิ่มขึ้นเล็กน้อย แต่ไม่มากนัก
การบรรลุกลไกสัญญาณ "ออกมาก่อน" "ล็อกเอาต์" เป็นปัญหาการออกแบบวงจรและมีวิธีการจัดการกับปัญหาดังกล่าว สภาพการแข่งขันเป็นสัญญาณของ 1) การออกแบบที่ไม่ดี หรือ 2) สัญญาณภายนอกเข้าสู่โปรเซสเซอร์ การตอกบัตรจะแนะนำสภาพการแข่งขันสัญญาณและนาฬิกาซึ่งเกี่ยวข้องกับการละเมิด "ตั้งค่า" และ "ถือ"
โดยส่วนตัวฉันไม่เข้าใจว่าการออกแบบแบบอะซิงโครนัสสามารถเข้าสู่การหยุดชะงักหรือสภาพการแข่งขันอื่น ๆได้อย่างไร นั่นอาจเป็นข้อ จำกัดของฉันแต่ถ้ามันเกิดขึ้นที่ข้อมูลที่ป้อนเข้าไปในโปรเซสเซอร์มันไม่ควรเป็นไปได้ในระบบลอจิกที่ได้รับการออกแบบมาเป็นอย่างดีและถึงแม้ว่ามันจะเกิดขึ้นเมื่อสัญญาณเข้าคุณออกแบบเพื่อจัดการกับมัน
(ฉันหวังว่านี่จะช่วยได้).
ทั้งหมดที่กล่าวว่าถ้าคุณมีเงิน ...
Microcontrollers จำเป็นต้องใช้นาฬิกาเพราะพวกเขาจำเป็นต้องสามารถตอบสนองต่อเหตุการณ์ที่อาจเกิดขึ้นได้ทุกเวลารวมถึงเกือบพร้อมกันกับเหตุการณ์ภายนอกอื่น ๆ หรือเหตุการณ์ที่เกิดขึ้นโดยตัวควบคุมเองและมักจะมีหลายวงจรที่จำเป็นต้องรู้ว่า เหตุการณ์หนึ่งนำหน้าเหตุการณ์อื่น Y มันไม่สำคัญว่าวงจรดังกล่าวทั้งหมดจะตัดสินใจว่า X นำหน้า Y หรือวงจรดังกล่าวทั้งหมดตัดสินใจว่า X ไม่ได้นำหน้า Y แต่มันมักจะสำคัญว่าหากมีวงจรใด ๆ ตัดสินใจว่า X นำหน้า Y ทั้งหมดนั้นต้องทำเช่นนั้น น่าเสียดายที่มันยากที่จะตรวจสอบให้แน่ใจว่าวงจรภายในเวลาที่กำหนดจะถึงฉันทามติที่รับประกันได้ว่า X นำหน้า Y หรือถึงฉันทามติว่าพวกเขามาถึงฉันทามติหรือไม่ ตรรกะแบบซิงโครนัสสามารถช่วยได้มาก
การเพิ่มนาฬิกาเข้ากับวงจรทำให้สามารถรับประกันได้ว่าระบบย่อยจะไม่ประสบกับสภาพการแข่งขันใด ๆ เว้นแต่อินพุตจะเปลี่ยนแปลงระบบในหน้าต่างเล็ก ๆ ที่สัมพันธ์กับนาฬิกาและยังรับประกันได้ว่าหากอุปกรณ์หนึ่งถูกป้อนเข้าอุปกรณ์อื่น เอาต์พุตของอุปกรณ์แรกจะไม่เปลี่ยนแปลงในหน้าต่างที่สำคัญของอุปกรณ์ที่สองเว้นแต่ว่าอินพุตของอุปกรณ์แรกจะเปลี่ยนแปลงภายในหน้าต่างที่มีขนาดเล็กลง การเพิ่มอุปกรณ์อื่นก่อนอุปกรณ์ตัวแรกจะช่วยให้มั่นใจได้ว่าอินพุตไปยังอุปกรณ์แรกจะไม่เปลี่ยนแปลงในหน้าต่างเล็ก ๆ นั้นเว้นแต่ว่าการป้อนข้อมูลไปยังอุปกรณ์ใหม่จะเปลี่ยนภายในหน้าต่างเล็ก ๆ จริง ๆ จากมุมมองของภาคปฏิบัติเว้นแต่จะพยายามทำให้เกิดความล้มเหลวอย่างเป็นเอกฉันท์
แน่นอนว่ามันเป็นไปได้ที่จะออกแบบระบบแบบอะซิงโครนัสอย่างสมบูรณ์ที่รัน "เร็วที่สุด" แต่ถ้าระบบนั้นง่ายมากมันจะยากที่จะหลีกเลี่ยงการออกแบบที่สะดุดลงโดยสภาพการแข่งขัน ในขณะที่มีวิธีการแก้ไขเงื่อนไขการแข่งขันโดยไม่ต้องใช้นาฬิกาเงื่อนไขการแข่งขันมักจะสามารถแก้ไขได้อย่างรวดเร็วและง่ายดายมากขึ้นโดยใช้นาฬิกามากกว่าจะเป็นกรณีที่ไม่มีพวกเขา แม้ว่าอะซิงโครนัสตรรกะมักจะสามารถแก้ไขเงื่อนไขการแข่งขันได้เร็วกว่าลอจิกแบบโอเวอร์คล็อกโอกาสที่มันไม่สามารถทำเช่นนั้นเป็นปัญหาที่สำคัญโดยเฉพาะอย่างยิ่งเมื่อความยากลำบากในการมีส่วนของระบบถึงฉันทามติ. ระบบที่สามารถเรียกใช้หนึ่งล้านคำสั่งต่อส่วนโดยทั่วไปจะมีประโยชน์มากกว่าหนึ่งซึ่งบางครั้งอาจเรียกใช้คำสั่งสี่ล้านคำสั่งต่อวินาที แต่อาจชะลอการ milleconds (หรือนานกว่า) ในแต่ละครั้งเนื่องจากสภาพการแข่งขัน
MCUs เป็นเพียงตัวอย่างที่ซับซ้อนมากของวงจรลอจิกตามลำดับแบบซิงโครนัส รูปแบบที่ง่ายที่สุดน่าจะเป็น D-flip-flop (D-FF) ที่มีสัญญาณนาฬิกานั่นคือองค์ประกอบหน่วยความจำแบบซิงโครนัส 1 บิต
มีองค์ประกอบหน่วยความจำที่ไม่ตรงกันตัวอย่างเช่น D-latch ซึ่งเทียบเท่ากับอะซิงโครนัสของ D-FF MCU ไม่มีอะไรมากไปกว่าล้านองค์ประกอบหน่วยความจำพื้นฐาน (D-FF) ที่ติดกาวเข้าด้วยกันพร้อมกับประตูลอจิกจำนวนมาก
ทีนี้มาถึงประเด็น: เหตุใด MCU จึงใช้ D-FF แทน D-latches เป็นองค์ประกอบหน่วยความจำภายใน เป็นหลักสำหรับความน่าเชื่อถือและความสะดวกในการออกแบบ: D-latches ตอบสนองทันทีที่มีการเปลี่ยนแปลงอินพุตและเอาต์พุตของพวกเขาจะได้รับการอัปเดตโดยเร็วที่สุด สิ่งนี้จะช่วยให้การโต้ตอบที่ไม่พึงประสงค์ที่น่ารังเกียจระหว่างส่วนต่าง ๆ ของวงจรตรรกะ (ลูปข้อเสนอแนะที่ไม่ได้ตั้งใจและการแข่งขัน) การออกแบบวงจรเรียงต่อเนื่องที่ซับซ้อนโดยใช้แบบเอกสารสำเร็จรูปแบบอะซิงโครนัสนั้นยากกว่าและเกิดข้อผิดพลาดได้ง่ายกว่า วงจรแบบซิงโครนัสหลีกเลี่ยงกับดักดังกล่าวโดย จำกัด การทำงานของ Building Block เป็นเวลาที่คงที่เมื่อตรวจพบขอบนาฬิกา เมื่อขอบมาถึงวงจรลอจิกแบบซิงโครนัสจะได้รับข้อมูลที่อินพุต แต่ยังไม่อัปเดตเอาต์พุต. ทันทีที่ได้รับอินพุทเอาต์พุตจะได้รับการอัพเดต วิธีนี้จะช่วยลดความเสี่ยงที่สัญญาณขาออกจะถูกป้อนกลับไปยังอินพุตซึ่งยังไม่ได้รับอย่างสมบูรณ์และทำให้เกิดความยุ่งเหยิง (กล่าวง่ายๆ)
กลยุทธ์ของ "การแยกข้อมูล" การรับข้อมูลอินพุตจากการอัปเดตผลลัพธ์จะช่วยให้เทคนิคการออกแบบง่ายขึ้นซึ่งแปลในระบบที่ซับซ้อนมากขึ้นสำหรับความพยายามในการออกแบบที่กำหนด
สิ่งที่คุณอธิบายเรียกว่าตรรกะไม่ตรงกัน มันสามารถทำงานได้และเมื่อมันมักจะเร็วขึ้นและใช้พลังงานน้อยกว่าตรรกะ (โอเวอร์คล็อก) แบบซิงโครนัส น่าเสียดายที่ตรรกะอะซิงโครนัสมีปัญหาบางอย่างที่ทำให้ไม่สามารถใช้งานได้อย่างกว้างขวาง สิ่งสำคัญที่ฉันเห็นคือใช้ทรานซิสเตอร์มากกว่าในการติดตั้งเนื่องจากคุณต้องการสัญญาณซิงโครไนซ์อิสระจำนวนมาก (ตัวควบคุมขนาดเล็กทำงานหลายอย่างพร้อมกันเช่นเดียวกับ CPU) นั่นจะทำให้ต้นทุนเพิ่มขึ้น การขาดเครื่องมือการออกแบบที่ดีนั้นเป็นอุปสรรคที่สำคัญมาก
ไมโครคอนโทรลเลอร์อาจจำเป็นต้องใช้นาฬิกาเสมอเพราะอุปกรณ์ต่อพ่วงของพวกเขามักจะต้องวัดเวลา ตัวจับเวลาและ PWM ทำงานตามช่วงเวลาที่กำหนดอัตราการสุ่มตัวอย่าง ADC ส่งผลกระทบต่อแบนด์วิดธ์และโปรโตคอลการสื่อสารแบบอะซิงโครนัสเช่น CAN และ USB ต้องการนาฬิกาอ้างอิงสำหรับการกู้คืนนาฬิกา โดยปกติเราต้องการให้ CPU ทำงานเร็วที่สุดเท่าที่จะเป็นไปได้ แต่นั่นไม่ใช่กรณีของระบบดิจิตอลอื่น ๆ เสมอไป
ที่จริงคุณจะเห็น MCU เป็นหน่วยที่สมบูรณ์ แต่ความจริงคือมันเองจะทำประตูที่แตกต่างกันและ TTL และ RTL ตรรกะมัก FF อาร์เรย์ที่ทุกคนต้องสัญญาณนาฬิกาเป็นรายบุคคล
จะเฉพาะเจาะจงมากคิดเกี่ยวกับเพียงแค่การเข้าถึงที่อยู่ จากหน่วยความจำงานง่าย ๆ นี้เองอาจเกี่ยวข้องกับการดำเนินการหลายอย่างเช่นทำให้ BUS พร้อมใช้งานสำหรับสายข้อมูลและที่อยู่บรรทัด
วิธีที่ดีที่สุดที่จะบอกว่าเป็นคำแนะนำที่ตัวเองเกิดขึ้นในหน่วยเล็ก ๆ ของการดำเนินงานที่จำเป็นต้องมีรอบนาฬิกาเหล่านี้รวมสำหรับรอบเครื่องที่บัญชีสำหรับคุณสมบัติของ MCU ต่างๆเช่นความเร็ว (FLOPS ** ในความซับซ้อนของ MCU), เยื่อบุท่อ ฯลฯ
เพื่อตอบสนอง ความคิดเห็นของ OP
เพื่อให้แม่นยำมากฉันขอยกตัวอย่างว่ามีชิปชื่อALE(ที่อยู่สลักเปิดใช้งาน) โดยทั่วไปเพื่อจุดประสงค์ในการมัลติเพล็กซ์บัสที่อยู่ด้านล่างสำหรับการส่งที่อยู่และข้อมูลบนหมุดเดียวกันเราใช้ออสซิลเลเตอร์ (Intel 8051 ใช้ออสซิลเลเตอร์ในท้องถิ่น 11.059MHz เป็นนาฬิกา) เพื่อดึงข้อมูลที่อยู่
ดังที่คุณอาจทราบว่าส่วนพื้นฐานของ MCU คือ CPU, ALU และการลงทะเบียนภายในและอื่น ๆ CPU (การควบคุม s / g) ส่งที่อยู่ไปยังหมุดหมุดที่อยู่ทั้งหมด 16 ในกรณีที่ 8051 เกิดขึ้นในช่วงเวลาทันที T1 และหลังจากนั้น ที่อยู่เป็นเมทริกซ์ที่สอดคล้องกันของการจัดเก็บประจุ (ประจุเป็นสัญญาณ) ( * การแมปหน่วยความจำ * ) ถูกเปิดใช้งานและเลือก
หลังจากการเลือกสัญญาณ ALE ถูกเปิดใช้งานเช่น ALE pin ถูกสร้างขึ้นที่นาฬิกาถัดไปว่า T2 ( โดยปกติจะเป็นสัญญาณสูง แต่เปลี่ยนตามการออกแบบหน่วยประมวลผล ) หลังจากนี้บัสแอดเดรสล่างทำหน้าที่เหมือนสายข้อมูลและเขียนหรืออ่านข้อมูล (ขึ้นอยู่กับเอาต์พุตที่พิน RD / WR ของ MCU)
คุณสามารถเห็นได้อย่างชัดเจนว่าเหตุการณ์ทั้งหมดเป็นไปตามลำดับเวลา
จะเกิดอะไรขึ้นถ้าเราไม่ใช้นาฬิกา
จากนั้นเราจะต้องใช้วิธีการตอกบัตรแบบอะซิงโครนัสASQCซึ่งจะทำให้แต่ละประตูขึ้นอยู่กับคนอื่น ๆ และอาจส่งผลให้เกิดความล้มเหลวของฮาร์ดแวร์ เวลาในการทำงานให้เสร็จ
ดังนั้นจึงเป็นสิ่งที่ไม่พึงประสงค์
ปัญหาพื้นฐานที่นาฬิกาแก้ได้คือทรานซิสเตอร์ไม่ใช่อุปกรณ์ดิจิตอลจริง ๆ : พวกเขาใช้ระดับแรงดันไฟฟ้าแบบอะนาล็อกบนอินพุตเพื่อกำหนดเอาท์พุทและใช้เวลา จำกัด ในการเปลี่ยนสถานะ นอกจากที่ได้กล่าวไว้ในคำตอบอื่นคุณจะได้รับอุปกรณ์ควอนตัมซึ่งจะมีช่วงเวลาหนึ่งที่อินพุตจะเปลี่ยนจากสถานะหนึ่งไปเป็นอีกสถานะหนึ่ง เวลาที่ใช้จะได้รับผลกระทบจากการโหลดแบบ capacitive ซึ่งจะแตกต่างจากอุปกรณ์หนึ่งไปยังอุปกรณ์ถัดไป ซึ่งหมายความว่า tranisistor ที่แตกต่างกันที่ประกอบกันเป็นแต่ละประตูตรรกะจะตอบสนองในเวลาที่แตกต่างกันเล็กน้อย นาฬิกาถูกใช้เพื่อ 'สลัก' เอาต์พุตของอุปกรณ์ส่วนประกอบเมื่ออุปกรณ์เหล่านั้นเสถียรแล้ว
ในการเปรียบเทียบให้พิจารณาเลเยอร์การขนส่งการสื่อสาร SPI (Serial Peripheral Interface) การใช้งานโดยทั่วไปของสิ่งนี้จะใช้สามบรรทัด: Data In, Data Out และ Clock ในการส่งไบต์บนเลเยอร์การขนส่งนี้ต้นแบบจะตั้งค่าบรรทัด Data Out และยืนยันบรรทัด Clock เพื่อระบุว่าบรรทัด Data Out มีค่าที่ถูกต้อง อุปกรณ์ทาสจะสุ่มตัวอย่าง Data In line เฉพาะเมื่อได้รับคำสั่งให้ทำเช่นนั้นโดยสัญญาณนาฬิกา หากไม่มีสัญญาณนาฬิกาทาสจะทราบได้อย่างไรว่าจะเก็บตัวอย่าง Data In line เมื่อใด มันสามารถสุ่มตัวอย่างก่อนที่จะถูกตั้งค่าโดยต้นแบบหรือในช่วงการเปลี่ยนภาพระหว่างรัฐ โปรโตคอลอะซิงโครนัสเช่น CAN, RS485, RS422, RS232 และอื่น ๆ แก้ปัญหานี้โดยใช้เวลาการสุ่มตัวอย่างที่กำหนดไว้ล่วงหน้าอัตราบิตคงที่และบิต (ค่าใช้จ่าย)
กล่าวอีกนัยหนึ่งมีความรู้ทั่วไปบางอย่างที่จำเป็นในการพิจารณาว่าทรานซิสเตอร์ทั้งหมดในชุดของประตูถึงสถานะสุดท้ายแล้วและคำสั่งนั้นสมบูรณ์ ในตัวต่อปริศนา (100 ตาสีฟ้า) ที่ระบุในลิงก์ด้านบนและอธิบายรายละเอียดในคำถามนี้ใน Maths Stack Exchange คำว่า 'oracle' ทำหน้าที่เป็นนาฬิกาสำหรับผู้คนบนเกาะ