İçindekiler:
Video: VHDL'de Basit Bir Önbellek Denetleyicisi Tasarımı: 4 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Bu talimatı yazıyorum, çünkü bir önbellek denetleyicisi tasarlamaya başlamak ve öğrenmek için bazı referans VHDL kodunu almayı biraz zor buldum. Ben de sıfırdan bir önbellek denetleyicisi tasarladım ve FPGA üzerinde başarıyla test ettim. Burada basit bir doğrudan eşlenmiş önbellek denetleyicisi sundum ve ayrıca Önbellek Denetleyicisini test etmek için tüm İşlemci-Bellek Sistemini modelledim. Umarım bu talimatı, kendi önbellek denetleyicilerinizi tasarlamak için bir referans olarak faydalı bulursunuz.
Adım 1: Özellikler
Tasarlayacağımız Önbellek Denetleyicisinin ana özellikleri şunlardır:
- Doğrudan Haritalanmış. (Associative Mapped Cache Controller'ı arıyorsanız bu bağlantıya gidin)
- Tek Bankalı, Engelleme Önbelleği.
- Yazma isabetlerinde Yazma Politikası.
- Yazmama tahsis etme veya Yazma ıskalarında Çevreye Yazma Politikası.
- Yazma Arabelleği veya diğer optimizasyonlar yok.
- Etiket Dizisi Dahildir.
Bunun yanında Cache Memory ve Main Memory System'i de tasarlayacağız.
Önbellek Belleğinin varsayılan (yapılandırılabilir) özellikleri:
- 256 Bayt Tek Bankalı Önbellek.
- 16 Önbellek Satırı, her Önbellek Satırı (Blok) = 16 Bayt.
Ana Belleğin özellikleri:
- Senkronize Okuma/Yazma Belleği.
- Çok sıralı Interleaved Memory - dört bellek bankası.
- Her banka boyutu = her biri 1 kB. Dolayısıyla, toplam boyut = 4 kB.
- 10-bit Adres Yolu ile Word (4 Bayt) adreslenebilir bellek.
- Okuma için Daha Yüksek Bant Genişliği. Bir saat döngüsünde Veri Genişliğini Oku = 16 Bayt.
- Veri Genişliği Yaz = 4 Bayt.
NOT: 4 yollu ilişkisel önbellek denetleyici tasarımı arıyorsanız, yeni talimatımı kontrol edin
Adım 2: Tüm Sistemin RTL Görünümü
Üst Modülün tam RTL gösterimi Şekilde gösterilmektedir (işlemci hariç). Otobüsler için varsayılan özellikler şunlardır:
- Tüm Veri Yolları 32 bit Veri Yollarıdır.
- Adres Yolu = 32-bit Bus (Ancak burada sadece 10 bit Bellek tarafından adreslenebilir).
- Veri Bloğu = 128 bit (Okuma için Geniş Bant Genişliği Veriyolu).
- Tüm bileşenler aynı saat tarafından çalıştırılır.
3. Adım: Test Ortamı
Üst Modül, basit bir şekilde ardışık düzenlenmemiş bir İşlemciyi modelleyen bir Test Tezgahı kullanılarak test edilmiştir (Çünkü tüm bir işlemciyi tasarlamak hiç de kolay değildir!!). Test Tezgahı, Belleğe sık sık Veri Okuma/Yazma istekleri üretir. Bu, bir işlemci tarafından yürütülen tüm programlarda yaygın olan tipik "Yükle" ve "Depola" talimatlarıyla alay eder. Test sonuçları, Önbellek Denetleyicisinin işlevselliğini başarıyla doğruladı. Gözlemlenen test istatistikleri aşağıdadır:
- Tüm Okuma/Yazma Iskalama ve Vuruş sinyalleri doğru şekilde oluşturuldu.
- Tüm Veri Okuma/Yazma işlemleri başarılı oldu.
- Veri tutarsızlığı/tutarsızlığı sorunu tespit edilmedi.
- Tasarım, bir Maxm için başarıyla zamanlama doğrulandı. Saat Çalışma Frekansı = Xilinx Virtex-4 ML-403 Board'da (tüm sistem) 110 MHz, yalnızca Önbellek Denetleyicisi için 195 MHz.
- Ana Bellek için blok RAM'ler çıkarıldı. Diğer tüm diziler LUT'lerde uygulandı.
4. Adım: Ekli Dosyalar
Aşağıdaki dosyalar bu blogla birlikte buraya eklenmiştir:
- Önbellek Denetleyicisi, Önbellek Veri Dizisi, Ana Bellek Sisteminin. VHD dosyaları.
- Test tezgahı.
- Önbellek Denetleyicisi ile ilgili belgeler.
Notlar:
- Burada sunulan Önbellek Denetleyicisinin özelliklerini tam olarak anlamak için belgeleri inceleyin.
- Koddaki herhangi bir değişikliğin diğer modüllere bağımlılığı vardır. Bu nedenle, değişiklikler makul bir şekilde yapılmalıdır. Verdiğim tüm yorumlara ve başlıklara dikkat edin.
- Herhangi bir nedenle, Ana Bellek için Blok RAM'ler çıkarılmazsa, belleğin boyutunu AZALTIN, ardından dosyalar arasındaki adres veriyolu genişliklerinde değişiklikler vb. Böylece aynı bellek LUT'larda veya Dağıtılmış RAM'de uygulanabilir. Bu, yönlendirme süresinden ve kaynaklardan tasarruf sağlayacaktır. Veya, belirli FPGA belgelerine gidin ve Blok RAM için uyumlu kodu bulun ve buna göre kodu düzenleyin ve aynı adres veri yolu genişliği özelliklerini kullanın. Altera FPGA'lar için aynı teknik.
Önerilen:
Arduino Tabanlı Kendin Yap Oyun Denetleyicisi - Arduino PS2 Oyun Denetleyicisi - DIY Arduino Gamepad ile Tekken Oynamak: 7 Adım
Arduino Tabanlı Kendin Yap Oyun Denetleyicisi | Arduino PS2 Oyun Denetleyicisi | Tekken'i DIY Arduino Gamepad ile Oynamak: Merhaba arkadaşlar, oyun oynamak her zaman eğlencelidir ama kendi DIY özel oyun Controller'ınızla oynamak daha eğlencelidir. Bu yüzden bu talimatta arduino pro micro kullanarak bir oyun Controller yapacağız
VHDL'de Basit Dört Yönlü Küme İlişkili Önbellek Denetleyicisi Tasarımı: 4 Adım
VHDL'de Basit Dört Yollu Set İlişkili Önbellek Denetleyicisinin Tasarımı: Önceki talimatımda, basit bir doğrudan eşlenmiş önbellek denetleyicisinin nasıl tasarlanacağını gördük. Bu sefer bir adım ileri gidiyoruz. Basit bir dört yollu küme ilişkisel önbellek denetleyicisi tasarlayacağız. Avantaj? Daha az kayıp oranı, ancak performans pahasına
VHDL'de Programlanabilir Kesinti Denetleyicisi Tasarımı: 4 Adım
VHDL'de Programlanabilir Kesinti Denetleyicisi Tasarımı: Bu blogda aldığım yanıtlardan çok etkilendim. Arkadaşlar, blogumu ziyaret ettiğiniz ve bilgilerimi sizinle paylaşmam için beni motive ettiğiniz için teşekkür ederim. Bu sefer, tüm SOC'lerde gördüğümüz başka bir ilginç modülün tasarımını sunacağım -- Interrupt C
VHDL ve Verilog'da Basit Bir VGA Denetleyici Tasarımı: 5 Adım
VHDL ve Verilog'da Basit Bir VGA Denetleyici Tasarımı: Bu talimatta, RTL'de basit bir VGA Denetleyici tasarlayacağız. VGA Denetleyici, VGA ekranlarını çalıştırmak için tasarlanmış dijital devredir. Görüntülenecek çerçeveyi temsil eden Çerçeve Arabelleğinden (VGA Bellek) okur ve gerekli
YABC - Bir Başka Blynk Denetleyicisi - IoT Bulut Sıcaklık ve Nem Denetleyicisi, ESP8266: 4 Adım
YABC - Yine Bir Başka Blynk Denetleyici - IoT Bulut Sıcaklık ve Nem Denetleyicisi, ESP8266: Merhaba Yapımcılar, Geçenlerde evde mantar yetiştirmeye başladım, İstiridye mantarları, ancak evde Fermenter için bu denetleyicilerden 3x'e zaten sahibim, eşim şimdi de bu Kombucha işini yapıyor ve Isı Termostatı olarak