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.