Skip to content

Bellek Haritası

Bu belge, tasarım yarışması şartnamesine uygun olarak kurguladığımız 32-bit adres alanını açıklar. Geliştirmeler sırasında sistemin gelecekte register eklenmesine olanak sağlayacak şekilde boşluklu (sparse) bir yapıda kalmasına dikkat ettik.


Adres Dağılımı

Sistem başlangıç adresi bootloader için 0x0000_0000 olarak belirlenmiştir.

Başlangıç Adresi Bitiş Adresi Boyut Açıklama
0x0000_0000 0x0000_03FF 1 kB Boot ROM (Bootloader içerir)
0x0000_1000 0x0000_2FFF 8 kB Buyruk Belleği (IMEM)
0x0000_3000 0x0000_4FFF 8 kB Veri Belleği (DMEM)
0x1000_0000 0x1000_00FF 256 B Standart UART Kontrolcüsü
0x1000_0200 0x1000_02FF 256 B GPIO Kontrolcüsü
0x1000_0400 0x1000_04FF 256 B Timer / Zamanlayıcı
0x1000_0600 0x1000_06FF 256 B I2C Master
0x1000_0800 0x1000_08FF 256 B QSPI Master
0x2000_0000 0x2000_00FF 256 B NPU Kontrol Yazmaçları (CSR)
0x2000_8000 0x2000_F7FF 30 kB NPU Çift Portlu Belleği

Detaylı Kullanım

Çevre Birimi Alanları

Memory-mapped I/O yapısı genişletilebilir olacak şekilde kurgulandı. Her bir çevre birimine 256 byte adres alanı tahsis edildi ve birimler arasında bilerek boşluklar (örneğin 0x1000_0100 ile 0x1000_01FF arası) bırakıldı. Bu sayede ileride tasarımı değiştirmeden yeni registerlar eklenebilir.

NPU Belleği (30 kB)

NPU belleği çift portludur ve UART-Stream birimi ile doğrudan bağlantılıdır. UART-Stream, DMA benzeri bir mantıkla çalışarak işlemciye ihtiyaç duymadan dışarıdan aldığı ses verilerini doğrudan bu alana yazar. CPU sadece işlemin başlama konfigürasyonunu AXI-Lite üzerinden yapar. NPU ve UART-Stream birimleri bu belleğe aynı anda erişemez. İşlem tamamlandığında CPU, okuma işlemini NPU CSR alanından yapar.

Boot Süreci

Sistem sıfırlandıktan sonra işlemci 0x0000_0000 adresine yerleştirdiğimiz 1 kB'lık Boot ROM'dan komut okumaya başlar. Bu kod, QSPI master arayüzü üzerinden dışarıdaki bir QSPI flash belleğine bağlanarak sistemi oradan başlatır.