İçindekiler:

VHDL'de Basit Bir Önbellek Denetleyicisi Tasarımı: 4 Adım
VHDL'de Basit Bir Önbellek Denetleyicisi Tasarımı: 4 Adım

Video: VHDL'de Basit Bir Önbellek Denetleyicisi Tasarımı: 4 Adım

Video: VHDL'de Basit Bir Önbellek Denetleyicisi Tasarımı: 4 Adım
Video: FPGA Nedir Nasıl Yapılandırılır - Tuba Ayhan 2024, Haziran
Anonim
VHDL'de Basit Önbellek Denetleyici Tasarımı
VHDL'de Basit Önbellek Denetleyici Tasarımı

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

Özellikler
Ö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ü

Tüm Sistemin RTL Görünümü
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: