การออกแบบ FPGA สามารถเป็นแบบอะซิงโครนัสได้หรือไม่


39

เรามีหลักสูตร FPGA / Verilog สั้น ๆ ที่มหาวิทยาลัย (5 ปีที่แล้ว) และเรามักใช้นาฬิกาทุกที่

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

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

สำหรับตาของฉันเริ่มต้นปรากฏว่าสิ่งก่อสร้างเพียงอย่างเดียวที่ต้องใช้นาฬิกาเป็นอย่างregมากและความเข้าใจของฉันก็คือ FPGA ทั่วไป (เช่น Cyclone II) จะมีฟลิป - ฟล็อปแบบ pre-wired ไปยังสัญญาณนาฬิกาเฉพาะ ถูกต้องหรือไม่ มีนาฬิกาโดยนัยอื่น ๆ เช่นนี้หรือไม่และสามารถขับเคลื่อนด้วยการออกแบบได้หรือไม่?


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

คำตอบ:


27

คำตอบสั้น ๆ คือ: ใช่; คำตอบอีกต่อไปคือ: มันไม่คุ้มค่ากับเวลาของคุณ

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

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

ในทางปฏิบัติผู้คนมุ่งมั่นในการออกแบบแบบซิงโครนัสอย่างสมบูรณ์ แต่ถ้าคุณต้องการเพียงแค่บัฟเฟอร์หรือกลับด้านสัญญาณคุณไม่จำเป็นต้องผ่านฟล็อปฟล็อปตราบใดที่คุณ จำกัด มันอย่างถูกต้อง

หวังว่านี่จะเป็นการลบล้างสิ่งเล็กน้อย


3
ฉันต้องใช้อุปกรณ์บางอย่างที่มีการออกแบบ FPGA แบบอะซิงโครนัส พวกเขาทำงานหนักด้วย โปรดใช้ข้อ จำกัด เรื่องเวลาอย่างน้อย
Tim Williscroft

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

2
คำตอบนี้ไม่ได้ให้คำแนะนำที่ดีโดยเฉพาะ คุณสามารถสร้าง FPGA แบบไม่มีนาฬิกาได้และช่วยลดความซับซ้อนของสถานที่และเส้นทางขจัดปัญหามากมายเกี่ยวกับข้อกำหนดด้านเวลา ปัญหาที่แท้จริงเกิดขึ้นเมื่อคุณพยายามแมปวงจรที่มีสัญญาณนาฬิกากับ FPGA แบบไม่มีนาฬิกาเพราะพวกมันมีลักษณะเวลาที่แตกต่างกันมาก มันสามารถทำได้มันแค่ต้องการการประมวลผลส่วนหน้าอีกเล็กน้อยเพื่อทำการแปลง vlsi.cornell.edu/~rajit/ps/rc_overview.pdf
Ned Bingham

19

"เราสามารถสร้างตรรกะที่ซับซ้อนและมีสิ่งกระเพื่อมผ่านได้เร็วที่สุด" ใช่. ซีพียูทั้งหมดได้รับการสร้างขึ้นซึ่งมีความสัมพันธ์แบบอะซิงโครนัสอย่างน้อยหนึ่งในนั้นคือซีพียูที่เร็วที่สุดในโลก http://en.wikipedia.org/wiki/Asynchronous_circuit#Asynchronous_CPU

มันทำให้ฉันรู้สึกว่าผู้คนปฏิเสธเทคนิคการออกแบบแบบอะซิงโครนัสแม้ว่าพวกเขาในทางทฤษฎีจะมีข้อดีกว่าเทคนิคการออกแบบแบบซิงโครนัส แต่เพียงเพราะ (อย่างที่คนอื่นพูด) การออกแบบแบบอะซิงโครนัส

สำหรับฉันแล้วก็เหมือนกับการแนะนำให้ทำสะพานทั้งหมดที่ทำจากไม้เพราะผู้คนมีเครื่องมืองานไม้มากกว่าเครื่องมือที่ทำจากเหล็ก

โชคดีที่บางส่วนของข้อดีของการออกแบบที่ไม่ตรงกันจะได้รับในขณะที่ยังคงใช้เทคนิคการออกแบบซิงโครส่วนใหญ่โดยใช้ทั่วโลกตรงกันซิงโครท้องถิ่น (GALS)การออกแบบ


ฉันรู้สึกแบบเดียวกันกับแนวโน้มที่ทันสมัยในการกำหนดเส้นทาง PCB บนตารางสี่เหลี่ยมแม้ว่าประโยชน์ของการโยกย้ายจะมีความสำคัญน้อยกว่ามาก
Roman Starkov

@romkyns - ที่เพิ่มขึ้นลงไปความจริงที่ว่าเขียนซอฟต์แวร์ PCB ที่ใช้กริดที่ไม่เป็นเส้นตรงเป็นเรื่องยาก
Connor Wolf

1
@supercat: ฉันสงสัยว่าคุณกำลังยิ่งทำให้ตรรกะสี่เฟส มันเป็นสัญญาณนาฬิกาแบบหลายเฟสที่ดูเหมือนว่าจะถูกลืม
davidcary

1
@davidcary: เรียงลำดับของยกเว้นทั้ง "phases" ในสายเดียว - เฟสหนึ่งถูกควบคุมโดยขอบที่เพิ่มขึ้นและอีกอันหนึ่งโดยขอบที่ตกลงมา โดยพื้นฐานแล้วฉันจะแบ่งนาฬิกาสลักออกเป็นสี่หมวดหมู่: การเพิ่มขึ้นที่สะอาด, การตกที่สะอาด, การเพิ่มขึ้นช้า, สายช้า แลตช์โอเวอร์คล็อกโดย (L / CB) ขอบที่เพิ่มขึ้นหรือลดลงที่สะอาดสามารถใช้ข้อมูลจากขอบที่เพิ่มขึ้นหรือลดลง L / CB ขอบที่เพิ่มขึ้นในช่วงปลายสามารถใช้ข้อมูลจาก L / CB ขอบที่เพิ่มขึ้นที่สะอาดนั้นขอบที่ตกลงมา L / CB จากการตกดึกอาจใช้ข้อมูลจาก L / CB ที่ตกลงมาอย่างสะอาด
supercat

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

5

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

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

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


4

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


4

ใช่คุณสามารถ. คุณสามารถเพิกเฉยรองเท้าแตะได้อย่างสมบูรณ์และสร้างมันขึ้นมาจาก LUTs และ / หรือคุณสามารถใช้องค์ประกอบสถานะของ Xilinx FPGAs ส่วนใหญ่เป็นสลัก (ระดับทริกเกอร์) แทน flipflops (เรียกใช้ขอบ)


3
สิ่งที่เป็นอันตรายคือถ้าไม่มีใคร จำกัด ตรรกะผู้รวบรวมมันอาจสร้างตรรกะที่มีเวลาการแพร่กระจายเชิงลบสำหรับประตูบางส่วน ตัวอย่างเช่นหากมีใครระบุX=(someComplexFormula)และY=X & Dและหากคอมไพเลอร์ทดแทนสูตรนั้นสำหรับ X และกำหนดว่าX & Dเทียบเท่ากับA & Dคอมไพเลอร์อาจแทนที่คำนวณ Y ในแง่ของ A และ D มากกว่าในแง่ของ X ดังนั้นจึงอนุญาตให้การคำนวณของ Y เพื่อดำเนินการได้เร็วกว่า X การทดแทนดังกล่าวสามารถใช้ได้กับตรรกะเชิงผสม (combinatorial logic) แต่ก่อให้เกิดความเสียหายบนตรรกะแบบอะซิงโครนัสตามลำดับ
supercat

@supercat - ฉันไม่เคยทำงานกับเครื่องมือของ Xilinx แต่เมื่อฉันทำงานกับ Altera FPGAs คุณจะมีตัวเลือกในการระบุเส้นทางที่สำคัญใด ๆ เป็นโมดูลประตูที่เชื่อมต่อมากกว่าใน RTL ซึ่งเป็นจุดที่การเพิ่มประสิทธิภาพเช่นนั้น พิการ
จูลส์

@Jules: การออกแบบเชิงตรรกะที่ตั้งโปรแกรมได้ทั้งหมดของฉันได้ใช้ Abel ซึ่งเป็นภาษาที่ค่อนข้างไร้สาระ แต่ทำให้สามารถระบุสิ่งต่าง ๆ ในรูปแบบที่ CPLD บางส่วนสามารถนำไปใช้ได้ แต่อาจเป็นปัญหาสำหรับเครื่องมือสังเคราะห์ VHDL หรือ Verilog ตัวอย่างเช่นในหนึ่งในโครงการของฉันฉันใช้ประโยชน์จากความจริงที่ว่าชิ้นส่วน Xilinx มีนาฬิกาตั้งค่า async และรีเซ็ต async เพื่อใช้การลงทะเบียนกะ async ที่โหลดได้ ถ้าฉันต้องทำสิ่งต่าง ๆ ใน FPGA โดยไม่เคยใช้ Verilog หรือ VHDL ฉันจะเรียนรู้สิ่งที่ต้องทำได้อย่างไร BTW หากหน่วยความจำทำหน้าที่ผมใช้ T flops สำหรับจำแลงและ ...
SuperCat

... เวลาเป็นเช่นนั้นการเขียนแบบอะซิงก์สามารถเกิดขึ้นได้ในบางครั้งที่อินพุต T จะต่ำโดยสมมติว่าถ้านาฬิกาแบบ nop เกิดขึ้นใกล้กับจุดเริ่มต้นของพัลส์การเขียนการเขียนแบบ async จะขยายออกไปไกลเกินกว่า เพื่อให้แน่ใจว่ามีค่าคงที่และถ้า nop-clock เกิดขึ้นใกล้ถึงจุดสิ้นสุดมันก็แค่จะล็อคค่าคงที่ ฉันไม่แน่ใจว่าจะสามารถจัดการกรณีดังกล่าวได้อย่างมีประสิทธิภาพใน VHDL หรือ Verilog
supercat

@supercat - รับปัญหาที่คล้ายกันดูที่คู่มืออุปกรณ์ Cyclone IV ฉันเห็นว่าวิธีที่ดีที่สุดในการแก้ไขปัญหาเดียวกันคือการใช้ตัวเลือก "LAB-wide synchronous load" ตัวเลือก ("LAB" คือกลุ่มขององค์ประกอบตรรกะ 16 ข้อ ดังนั้นถ้าขนาดของรีจิสเตอร์ดังกล่าวไม่ได้จบลงด้วยจำนวน 16 บิตดังนั้นบิตบางส่วนจะสูญเปล่า แต่สิ่งนี้ดูเหมือนจะเป็นตัวเลือกที่มีประโยชน์ที่สุด) ตอนนี้ฉันมีสองตัวเลือก: ฉันสามารถเขียน verilog ใช้งานได้ซึ่งจะต้องใช้เครื่องมือการสังเคราะห์เพื่อเลือกวิธีการลงทะเบียนที่ต้องการ (ซึ่งมักจะเป็นตัวเลือกที่ดีที่สุด) หรือถ้าฉันมีเวลาที่เข้มงวด ...
Jules

3

@Andrey ชี้ให้เห็นว่ามันไม่คุ้มค่ากับเวลาของคุณ โดยเฉพาะอย่างยิ่งเครื่องมือที่ไม่ทำเช่นนี้ดังนั้นคุณจะสมบูรณ์ด้วยตัวคุณเอง นอกจากนี้เนื่องจากมีการลงทะเบียนในตัวคุณจะไม่บันทึกสิ่งใดเลยหากไม่ได้ใช้


3

จริงๆแล้วมีการออกแบบสามประเภท

  1. combinatorial ไม่มีนาฬิกาและไม่มีเส้นทางป้อนกลับและระบบไม่มี "หน่วยความจำ" เมื่อหนึ่งหรือมากกว่าหนึ่งอินพุตเปลี่ยนแปลงการเปลี่ยนแปลงระลอกแม้ว่าตรรกะ หลังจากเวลาผ่านไปเอาต์พุตจะตกลงสู่สถานะใหม่ซึ่งจะคงอยู่จนกว่าอินพุตจะเปลี่ยนอีกครั้ง
  2. ลำดับการซิงโครนัส ระบบถูกสร้างขึ้นจากการลงทะเบียนและบล็อกของ combinatorial ตรรกะการลงทะเบียนจะโอเวอร์คล็อกด้วยนาฬิกาขนาดเล็ก (มักจะ 1) หากมีนาฬิกาหลายเรือนอาจต้องมีการคิดราคาพิเศษสำหรับสัญญาณที่ส่งจากโดเมนนาฬิกาหนึ่งไปยังอีก
  3. ลำดับแบบอะซิงโครนัส มีเส้นทางป้อนกลับ, ล็อค, รีจิสเตอร์หรือองค์ประกอบอื่น ๆ ที่ให้ความทรงจำการออกแบบของเหตุการณ์ที่ผ่านมาและไม่ได้รับการตอกบัตรโดยเส้นนาฬิกาที่วิเคราะห์ได้ง่าย

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

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

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

ในระบบลำดับแบบอะซิงโครนัสสมมติฐานเหล่านั้นออกไปนอกหน้าต่าง ข้อบกพร่องอาจเป็นเรื่องสำคัญลำดับของการเปลี่ยนแปลงเอาต์พุตอาจมีความสำคัญ ทั้งเครื่องมือและ FPGA เองออกแบบมาเพื่อการออกแบบแบบซิงโครนัส มีการถกเถียงกันมากมาย (การออกแบบ FPGA ของ Google asynchrous ถ้าคุณต้องการทราบข้อมูลเพิ่มเติม) เกี่ยวกับความเป็นไปได้ของการนำระบบ asynchrnous มาใช้บน FPGA มาตรฐานหรือแบบที่ออกแบบมาพิเศษ


2

ใช่. หากคุณไม่มีการสร้างประเภทกระบวนการก็ไม่ควรทำสิ่งต่าง ๆ เช่นอนุมานลงทะเบียน จะมีสิ่งต่าง ๆ เช่นหน่วยความจำออนบอร์ดที่ต้องใช้นาฬิกาแม้ว่าหากคุณต้องการคุณจริงๆก็สามารถสร้างสิ่งเหล่านี้แบบอะซิงโครนัสได้


1
คุณตั้งใจจะทำให้เป็นคำตอบเดียวใช่ไหม?
Kevin Vermeer

1

FWIW ฉันคิดว่าฉันควรเพิ่มเป้าหมายที่ชัดเจนหนึ่งในโซลูชันตรรกะแบบอะซิงโครนัส woukd เป็นการลดการใช้พลังงานทั่วโลก

นาฬิกาทั่วโลก / PLL / บัฟเฟอร์เผาไหม้ Joules มากมาย

ในฐานะที่เป็นโซลูชั่น FPGA ที่คดเคี้ยวเป็นสนามพลังงานแบตเตอรี่ (เช่น Lattice Icestick) ดังนั้นมุมมองนี้จะได้รับความสนใจมากขึ้น


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