สารบัญ:
- ขั้นตอนที่ 1: ข้อมูลจำเพาะ
- ขั้นตอนที่ 2: มุมมอง RTL ของทั้งระบบ
- ขั้นตอนที่ 3: ทดสอบสภาพแวดล้อม
- ขั้นตอนที่ 4: ไฟล์แนบ
วีดีโอ: การออกแบบตัวควบคุมแคชอย่างง่ายใน VHDL: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ฉันกำลังเขียนคำแนะนำนี้ เพราะฉันพบว่ามันยากเล็กน้อยที่จะรับโค้ด VHDL อ้างอิงเพื่อเรียนรู้และเริ่มออกแบบตัวควบคุมแคช ดังนั้นฉันจึงออกแบบตัวควบคุมแคชด้วยตัวเองตั้งแต่เริ่มต้น และทดสอบกับ FPGA ได้สำเร็จ ฉันได้นำเสนอตัวควบคุมแคชที่แมปโดยตรงอย่างง่ายที่นี่ รวมถึงจำลองระบบหน่วยความจำโปรเซสเซอร์ทั้งหมดเพื่อทดสอบ Cache Controller ฉันหวังว่าพวกคุณจะพบว่าคำแนะนำนี้มีประโยชน์สำหรับการอ้างอิงในการออกแบบตัวควบคุมแคชของคุณเอง
ขั้นตอนที่ 1: ข้อมูลจำเพาะ
นี่คือข้อกำหนดหลักของ Cache Controller ที่เราจะออกแบบ:
- แมปโดยตรง (ไปที่ลิงค์นี้หากต้องการค้นหา Associative Mapped Cache Controller)
- ธนาคารเดียว บล็อกแคช
- นโยบายการเขียนผ่านเกี่ยวกับการเขียนฮิต
- No-Write จัดสรรหรือเขียนรอบนโยบายเกี่ยวกับการเขียนพลาด
- ไม่มีบัฟเฟอร์การเขียนหรือการเพิ่มประสิทธิภาพอื่นๆ
- Tag Array เป็น Incorporated
นอกจากนั้น เราจะออกแบบหน่วยความจำแคชและระบบหน่วยความจำหลักด้วย
ข้อกำหนดเริ่มต้น (กำหนดค่าได้) ของหน่วยความจำแคช:
- แคชธนาคารเดียว 256 ไบต์
- 16 Cache Lines แต่ละ Cache Line (Block) = 16 Bytes
ข้อมูลจำเพาะของหน่วยความจำหลัก:
- หน่วยความจำอ่าน/เขียนแบบซิงโครนัส
- Multi-banked Interleaved Memory - สี่หน่วยความจำ
- แต่ละธนาคารขนาด = 1 kB แต่ละอัน ดังนั้น ขนาดรวม = 4 kB
- หน่วยความจำแอดเดรส Word (4 ไบต์) พร้อมแอดเดรสบัส 10 บิต
- แบนด์วิดธ์ที่สูงขึ้นสำหรับการอ่าน อ่านความกว้างของข้อมูล = 16 ไบต์ในรอบนาฬิกาหนึ่งรอบ
- เขียนข้อมูลความกว้าง = 4 ไบต์
หมายเหตุ: ตรวจสอบคำแนะนำที่ใหม่กว่าของฉันหากคุณกำลังมองหาการออกแบบตัวควบคุมแคชที่เชื่อมโยง 4 ทาง
ขั้นตอนที่ 2: มุมมอง RTL ของทั้งระบบ
การแสดง RTL ที่สมบูรณ์ของ Top Module จะแสดงในรูป (ไม่รวมโปรเซสเซอร์) ข้อกำหนดเริ่มต้นสำหรับรถโดยสารคือ:
- Data Buses ทั้งหมดเป็นบัส 32 บิต
- แอดเดรสบัส = บัส 32 บิต (แต่หน่วยความจำสามารถระบุแอดเดรสได้เพียง 10 บิตที่นี่)
- Data Block = 128 บิต (ไวด์แบนด์วิดท์บัสสำหรับการอ่าน)
- ส่วนประกอบทั้งหมดขับเคลื่อนด้วยนาฬิกาเดียวกัน
ขั้นตอนที่ 3: ทดสอบสภาพแวดล้อม
Top Module ได้รับการทดสอบโดยใช้ Test Bench ซึ่งจำลองโปรเซสเซอร์ที่ไม่ใช่แบบไปป์ไลน์ (เพราะการออกแบบโปรเซสเซอร์ทั้งหมดนั้นไม่ง่ายเลย !!) Test Bench สร้างคำขออ่าน/เขียนข้อมูลไปยังหน่วยความจำบ่อยครั้ง สิ่งนี้เลียนแบบคำสั่ง "โหลด" และ "จัดเก็บ" ทั่วไป ซึ่งพบได้ทั่วไปในโปรแกรมทั้งหมดที่ดำเนินการโดยโปรเซสเซอร์ ผลการทดสอบได้ตรวจสอบการทำงานของ Cache Controller เรียบร้อยแล้ว ต่อไปนี้เป็นสถิติการทดสอบที่สังเกตได้:
- สัญญาณการอ่าน/เขียน Miss และ Hit ทั้งหมดถูกสร้างขึ้นอย่างถูกต้อง
- การดำเนินการอ่าน/เขียนข้อมูลทั้งหมดสำเร็จ
- ไม่พบปัญหาความไม่ต่อเนื่องของข้อมูล/ความไม่สอดคล้องกัน
- การออกแบบได้รับการตรวจสอบเวลาสำหรับ Maxm เรียบร้อยแล้ว ความถี่สัญญาณนาฬิกาของการทำงาน = 110 MHz ในบอร์ด Xilinx Virtex-4 ML-403 (ทั้งระบบ), 195 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 เพื่อสร้างคลื่นไซน์และโคไซน์## ในปัจจุบัน มีอัลกอริธึมที่มีประสิทธิภาพด้านฮาร์ดแวร์จำนวนมาก แต่ก็ยังไม่เป็นที่ทราบกันดีเนื่องจาก การครอบงำของซอฟต์แวร์
การออกแบบตัวควบคุมแคชเชื่อมโยงชุดสี่ทางอย่างง่ายใน VHDL: 4 ขั้นตอน
การออกแบบ Simple Four-way Set Associative Cache Controller ใน VHDL: ในคำสั่งก่อนหน้าของฉัน เราเห็นวิธีการออกแบบตัวควบคุมแคชที่แมปโดยตรงอย่างง่าย คราวนี้เราก้าวไปข้างหน้า เราจะออกแบบตัวควบคุมแคชที่เชื่อมโยงชุดสี่ทางอย่างง่าย ข้อได้เปรียบ ? อัตราการพลาดน้อยกว่า แต่ในราคาประสิทธิภาพ
การออกแบบ Interrupt Controller ที่ตั้งโปรแกรมได้ใน VHDL: 4 ขั้นตอน
การออกแบบ Programmable Interrupt Controller ใน VHDL: ฉันรู้สึกท่วมท้นกับคำตอบที่ได้รับในบล็อกนี้ ขอบคุณสำหรับการเยี่ยมชมบล็อกของฉันและกระตุ้นให้ฉันแบ่งปันความรู้ของฉันกับคุณ ครั้งนี้ ฉันจะนำเสนอการออกแบบโมดูลที่น่าสนใจอื่นที่เราเห็นใน SOC ทั้งหมด -- Interrupt C
PID Controller VHDL: 10 ขั้นตอน
PID Controller VHDL: โครงการนี้เป็นโครงการสุดท้ายของฉันในการสำเร็จการศึกษาระดับปริญญาตรีเกียรตินิยมจาก Cork Institute of Technology บทช่วยสอนนี้แบ่งออกเป็นสองส่วน ส่วนแรกจะครอบคลุมเนื้อหาหลักของรหัส PID ซึ่งเป็นจุดประสงค์หลักของโครงการและส่วนที่สอง
การออกแบบ I2C Master ใน VHDL: 5 ขั้นตอน
การออกแบบ I2C Master ใน VHDL: ในคำแนะนำนี้จะกล่าวถึงการออกแบบต้นแบบ I2C อย่างง่ายใน VHDL หมายเหตุ: คลิกที่แต่ละภาพเพื่อดูภาพเต็ม