สารบัญ:
- ขั้นตอนที่ 1: ข้อมูลจำเพาะ
- ขั้นตอนที่ 2: มุมมอง RTL ของทั้งระบบ
- ขั้นตอนที่ 3: ผลการทดสอบ
- ขั้นตอนที่ 4: ไฟล์แนบ
วีดีโอ: การออกแบบตัวควบคุมแคชเชื่อมโยงชุดสี่ทางอย่างง่ายใน VHDL: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ในคำแนะนำก่อนหน้าของฉัน เราเห็นวิธีออกแบบตัวควบคุมแคชที่แมปโดยตรงอย่างง่าย คราวนี้เราก้าวไปข้างหน้า เราจะออกแบบตัวควบคุมแคชที่เชื่อมโยงชุดสี่ทางอย่างง่าย ข้อได้เปรียบ ? อัตราการพลาดน้อยกว่าแต่ต้องเสียประสิทธิภาพ เช่นเดียวกับบล็อกก่อนหน้านี้ เราจะออกแบบและจำลองโปรเซสเซอร์ทั้งหมด หน่วยความจำหลัก และสภาพแวดล้อมแคชเพื่อทดสอบตัวควบคุมแคชของเรา ฉันหวังว่าพวกคุณจะพบว่าสิ่งนี้เป็นข้อมูลอ้างอิงที่มีประโยชน์ในการทำความเข้าใจแนวคิดและออกแบบตัวควบคุมแคชของคุณเองในอนาคต เนื่องจากรุ่นสำหรับโปรเซสเซอร์ (ม้านั่งทดสอบ) และระบบหน่วยความจำหลักเหมือนกับบล็อกที่แล้วของฉันทุกประการ ฉันจะไม่อธิบายอีก โปรดดูรายละเอียดเกี่ยวกับคำแนะนำก่อนหน้านี้
ขั้นตอนที่ 1: ข้อมูลจำเพาะ
ดูข้อมูลจำเพาะของ Cache Controller ที่แสดงไว้ที่นี่อย่างรวดเร็ว:
- Four-way Set Associative Cache Controller (ไปที่ลิงค์นี้หากกำลังมองหา Direct Mapped Cache Controller)
- ธนาคารเดียว บล็อกแคช
- นโยบายการเขียนผ่านเกี่ยวกับการเขียนฮิต
- นโยบายเขียนรอบเกี่ยวกับการเขียนพลาด
- นโยบายทดแทน Tree Pseudo-LRU (pLRU)
- Tag Array ภายในคอนโทรลเลอร์
- พารามิเตอร์ที่กำหนดค่าได้
ข้อกำหนดเริ่มต้นสำหรับ Cache Memory และ Main Memory นั้นเหมือนกับจากคำสั่งก่อนหน้าของฉัน โปรดอ้างอิงถึงพวกเขา
ขั้นตอนที่ 2: มุมมอง RTL ของทั้งระบบ
การแสดง RTL ที่สมบูรณ์ของ Top Module จะแสดงในรูป (ไม่รวมโปรเซสเซอร์) ข้อกำหนดเริ่มต้นสำหรับรถโดยสารคือ:
- Data Buses ทั้งหมดเป็นบัส 32 บิต
- แอดเดรสบัส = บัส 32 บิต (แต่หน่วยความจำสามารถระบุแอดเดรสได้เพียง 10 บิตที่นี่)
- Data Block = 128 บิต (ไวด์แบนด์วิดท์บัสสำหรับการอ่าน)
- ส่วนประกอบทั้งหมดขับเคลื่อนด้วยนาฬิกาเดียวกัน
ขั้นตอนที่ 3: ผลการทดสอบ
Top Module ได้รับการทดสอบโดยใช้ Test Bench ซึ่งจำลองโปรเซสเซอร์ที่ไม่ใช่แบบไปป์ไลน์ เช่นเดียวกับที่เราทำในคำสั่งสุดท้าย Test Bench สร้างคำขออ่าน/เขียนข้อมูลไปยังหน่วยความจำบ่อยครั้ง สิ่งนี้เลียนแบบคำสั่ง "โหลด" และ "จัดเก็บ" ทั่วไป ซึ่งพบได้ทั่วไปในโปรแกรมทั้งหมดที่ดำเนินการโดยโปรเซสเซอร์
ผลการทดสอบได้ตรวจสอบการทำงานของ Cache Controller เรียบร้อยแล้ว ต่อไปนี้เป็นสถิติการทดสอบที่สังเกตได้:
- สัญญาณการอ่าน/เขียน Miss และ Hit ทั้งหมดถูกสร้างขึ้นอย่างถูกต้อง
- การดำเนินการอ่าน/เขียนข้อมูลทั้งหมดประสบความสำเร็จในทั้งสี่วิธี
- อัลกอริธึม pLRU ได้รับการตรวจสอบเรียบร้อยแล้วสำหรับการแทนที่แคชไลน์
- ไม่พบปัญหาความไม่ต่อเนื่องของข้อมูล/ความไม่สอดคล้องกัน
- การออกแบบได้รับการตรวจสอบเวลาสำหรับ Maxm เรียบร้อยแล้ว ความถี่สัญญาณนาฬิกาของการทำงาน = 100 MHz ในบอร์ด Xilinx Virtex-4 ML-403 (ทั้งระบบ), 110 MHz สำหรับ Cache Controller เพียงอย่างเดียว
- บล็อกแรมถูกอนุมานสำหรับหน่วยความจำหลัก อาร์เรย์อื่นๆ ทั้งหมดถูกนำไปใช้กับ LUT
ขั้นตอนที่ 4: ไฟล์แนบ
ไฟล์ต่อไปนี้แนบมากับบล็อกนี้:
- ไฟล์. VHD ของ Cache Controller, Cache Data Array, ระบบหน่วยความจำหลัก
- ม้านั่งทดสอบ
- เอกสารเกี่ยวกับ Cache Controller
หมายเหตุ:
- อ่านเอกสารประกอบเพื่อทำความเข้าใจข้อกำหนดของ Cache Controller ที่นำเสนอที่นี่
- การเปลี่ยนแปลงใดๆ ในโค้ดจะขึ้นอยู่กับโมดูลอื่นๆ ดังนั้น การเปลี่ยนแปลงควรทำอย่างรอบคอบ
- ให้ความสนใจกับความคิดเห็นและส่วนหัวทั้งหมดที่ฉันได้ให้ไว้
- หากด้วยเหตุผลใดก็ตาม Block RAM จะไม่ถูกอนุมานสำหรับหน่วยความจำหลัก ลดขนาดของหน่วยความจำ ตามด้วยการเปลี่ยนแปลงความกว้างของแอดเดรสบัสในไฟล์ และอื่นๆ เพื่อให้สามารถใช้หน่วยความจำเดียวกันได้ทั้งบน LUT หรือ RAM แบบกระจาย วิธีนี้จะช่วยประหยัดเวลาและทรัพยากรในการกำหนดเส้นทาง หรือไปที่เอกสาร FPGA เฉพาะและค้นหาโค้ดที่เข้ากันได้สำหรับ Block RAM และแก้ไขโค้ดตามนั้น และใช้ข้อกำหนดความกว้างของบัสแอดเดรสเดียวกัน เทคนิคเดียวกันสำหรับ Altera FPGA
แนะนำ:
Cordic Algorithm ใช้ VHDL: 4 ขั้นตอน
Cordic Algorithm โดยใช้ VHDL: ## เป็นลิงก์ที่ได้รับความนิยมสูงสุดใน Google สำหรับการนำ VHDL ไปใช้ของ CORDIC ALGORITHM เพื่อสร้างคลื่นไซน์และโคไซน์## ในปัจจุบัน มีอัลกอริธึมที่มีประสิทธิภาพด้านฮาร์ดแวร์จำนวนมาก แต่ก็ยังไม่เป็นที่ทราบกันดีเนื่องจาก การครอบงำของซอฟต์แวร์
การออกแบบ Interrupt Controller ที่ตั้งโปรแกรมได้ใน VHDL: 4 ขั้นตอน
การออกแบบ Programmable Interrupt Controller ใน VHDL: ฉันรู้สึกท่วมท้นกับคำตอบที่ได้รับในบล็อกนี้ ขอบคุณสำหรับการเยี่ยมชมบล็อกของฉันและกระตุ้นให้ฉันแบ่งปันความรู้ของฉันกับคุณ ครั้งนี้ ฉันจะนำเสนอการออกแบบโมดูลที่น่าสนใจอื่นที่เราเห็นใน SOC ทั้งหมด -- Interrupt C
การออกแบบตัวควบคุมแคชอย่างง่ายใน VHDL: 4 ขั้นตอน
การออกแบบ Simple Cache Controller ใน VHDL: ฉันกำลังเขียนคำสั่งนี้ เพราะฉันพบว่ามันยากนิดหน่อยที่จะรับโค้ด VHDL อ้างอิงเพื่อเรียนรู้และเริ่มออกแบบตัวควบคุมแคช ดังนั้นฉันจึงออกแบบตัวควบคุมแคชด้วยตัวเองตั้งแต่เริ่มต้น และทดสอบกับ FPGA ได้สำเร็จ ฉันมีพ
PID Controller VHDL: 10 ขั้นตอน
PID Controller VHDL: โครงการนี้เป็นโครงการสุดท้ายของฉันในการสำเร็จการศึกษาระดับปริญญาตรีเกียรตินิยมจาก Cork Institute of Technology บทช่วยสอนนี้แบ่งออกเป็นสองส่วน ส่วนแรกจะครอบคลุมเนื้อหาหลักของรหัส PID ซึ่งเป็นจุดประสงค์หลักของโครงการและส่วนที่สอง
การออกแบบ I2C Master ใน VHDL: 5 ขั้นตอน
การออกแบบ I2C Master ใน VHDL: ในคำแนะนำนี้จะกล่าวถึงการออกแบบต้นแบบ I2C อย่างง่ายใน VHDL หมายเหตุ: คลิกที่แต่ละภาพเพื่อดูภาพเต็ม