Das Projekt Microblaze References (MB-Ref) beinhaltet fertig nutzbare FPGA Designs für verschiedene Evaluierungssysteme. Sie sind im Verzeichnis working-designs
hinterlegt.
Die Designs liegen immer in zwei verschiedenen Ausbaustufen vor, einer Lite- und einer Full-Variante (Details siehe unten). Jedes Design wird für mehrere Xilinx ISE/EDK Versionen evaluiert und bei Bedarf auf neuere Versionen übertragen. Alle Designs basieren auf der jeweils aktuellsten MicroBlaze Implementierung wie sie von der zugrunde liegenden Xilinx ISE/EDK Version angeboten wird.
FPGA-Designs mit Multi-Core Implementierungen werden aktuell noch nicht unterstützt!
microblaze_0
mdm_0
xps_intc_0
xps_timer_0
xps_uart_0
xps_ether_0
microblaze_0
xps_intc_0
xps_timer_0
xps_uart_0
xps_ether_0
Alle FPGA Designs folgen den hier aufgestellten Entwurfsrichtlinien. Eine Ausnahme bildet das Design von Sensor-to-Image. Dieses wird komplett separat behandelt.
Jedes FPGA Design wird ausschließlich mit dem Xilinx Platfrom Studion (XPS) entwickelt. Eigene IP Cores müssen als eigenständiges Design entwickelt und in das FPGA Design im XPS integriert werden. Dazu kann der Create and Import Peripheral Wizard (CreateIP) aus dem Xilinx EDK oder gleich das Integrated Synthesis Environment (ISE) benutzt werden.
Ein Ansatz nur über ISE mit der Integration einer XPS Instanz für das Prozessorsystem ist zwar prinzipiell möglich, aber wird für ein Referenzsystem innerhalb von MB-Ref nicht zugelassen.
Jeder verbaute IP Core wird als eine Instanz von sich selbst in ein FPGA Design aufgenommen und kann dabei beliebig oft instantiiert werden. Der Name der im FPGA Design entstehenden Instanz wird vom Namen des zugrunde liegenden IP Core abgeleitet und um eine laufende Nummer beginnend bei 0 erweitert. Beispiel: Der IP Core des Zählerbausteins XPS Timer/Counter besitzt den Namen xps_timer
. Somit wird die erste Instanz xps_timer_0
genannt. Die zweite Instanz erhält den Namen xps_timer_1
, und so weiter.
Die hier zugeordneten Speicherbereiche entsprechen den generell für die jeweiligen IP Core Instanzen reservierten Speicherbereiche. Somit werden Cluster im Speicher gebildet, damit funktional gleiche bzw. ähnliche IP Core Instanzen an einer festen Stelle und nur dort im Speicher zu finden sind. IP Core Instanzen, die keinen Speicher benötigen, erhalten auch keine Zuordnung.
Folgende Namen sind bekannt und werden so benutzt:
Kategorie | IP Core1) | ||||
---|---|---|---|---|---|
IP Core Name | Name der Instanzen | Speicherbereich | Größe | ||
Extensions | |||||
Instanzen von Design spez. IP Cores | 0xB000.0000 … 0xFFFF.FFFF | 1 GB | |||
Linear ROM | Xilinx Multi-CHannel External Memory Controller (XPS MCH EMC) | ||||
xps_mch_emc | 1-fache Instantiierung | ||||
xps_mch_emc_0 | 0xAF00.0000 … 0xAFFF.FFFF | min. 16 MB | |||
0x9000.0000 … 0xAFFF.FFFF | max. 512 MB | ||||
2-fache Instantiierung | |||||
xps_mch_emc_0 | 0xAF00.0000 … 0xAFFF.FFFF | min. 16 MB | |||
0xA000.0000 … 0xAFFF.FFFF | max. 256 MB | ||||
xps_mch_emc_1 | 0x9F00.0000 … 0x9FFF.FFFF | min. 16 MB | |||
0x9000.0000 … 0x9FFF.FFFF | max. 256 MB | ||||
4-fache Instantiierung | |||||
xps_mch_emc_0 | 0xAF00.0000 … 0xAFFF.FFFF | min. 16 MB | |||
0xA800.0000 … 0xAFFF.FFFF | max. 128 MB | ||||
xps_mch_emc_1 | 0xA700.0000 … 0xA7FF.FFFF | min. 16 MB | |||
0xA000.0000 … 0xA7FF.FFFF | max. 128 MB | ||||
xps_mch_emc_2 | 0x9F00.0000 … 0x9FFF.FFFF | min. 16 MB | |||
0x9800.0000 … 0x9FFF.FFFF | max. 128 MB | ||||
xps_mch_emc_3 | 0x9700.0000 … 0x97FF.FFFF | min. 16 MB | |||
0x9000.0000 … 0x97FF.FFFF | max. 128 MB | ||||
… | |||||
On-Chip Debug (OCD) | MicroBlaze Debug Module (MDM) | ||||
mdm | mdm_0 | 0x8FFF.0000 … 0x8FFF.FFFF | 64 kB | ||
mdm_1 | 0x8FFE.0000 … 0x8FFE.FFFF | 64 kB | |||
mdm_2 | 0x8FFD.0000 … 0x8FFD.FFFF | 64 kB | |||
… | |||||
mdm_15 | 0x8FF0.0000 … 0x8FF0.FFFF | 64 kB | |||
Reserve für weitere IP Cores dieser Kategorie | 0x8F00.0000 … 0x8FEF.FFFF | 15 MB | |||
Reserve für weitere Kategorien | 0x8B00.0000 … 0x8EFF.FFFF | 64 MB | |||
OS spezifisch | XPS Interrupt Controller (XPS INTC) | ||||
xps_intc | xps_intc_0 | 0x8AFF.0000 … 0x8AFF.FFFF | 64 kB | ||
xps_intc_1 | 0x8AFE.0000 … 0x8AFE.FFFF | 64 kB | |||
xps_intc_2 | 0x8AFD.0000 … 0x8AFD.FFFF | 64 kB | |||
… | |||||
xps_intc_15 | 0x8AF0.0000 … 0x8AF0.FFFF | 64 kB | |||
XPS Timer/Counter (XPS TIMER) | |||||
xps_timer | xps_timer_0 | 0x8AEF.0000 … 0x8AEF.FFFF | 64 kB | ||
xps_timer_1 | 0x8AEE.0000 … 0x8AEE.FFFF | 64 kB | |||
xps_timer_2 | 0x8AED.0000 … 0x8AED.FFFF | 64 kB | |||
… | |||||
xps_timer_15 | 0x8AE0.0000 … 0x8AE0.FFFF | 64 kB | |||
SDMA Controller of Multi-Port Memory Controller (DDR/DDR2/SDRAM) | |||||
mpmc:sdma_ctrl | mpmc:sdma_ctrl_0 | 0x8ADF.0000 … 0x8ADF.FFFF | 64 kB | ||
mpmc:sdma_ctrl_1 | 0x8ADE.0000 … 0x8ADE.FFFF | 64 kB | |||
mpmc:sdma_ctrl_2 | 0x8ADD.0000 … 0x8ADD.FFFF | 64 kB | |||
… | |||||
mpmc:sdma_ctrl_15 | 0x8AD0.0000 … 0x8AD0.FFFF | 64 kB | |||
Reserve für weitere IP Cores dieser Kategorie | 0x8A00.0000 … 0x8ACF.FFFF | 13 MB | |||
UART Leitungen | XPS Universal Asynchronous Receiver Transmitter (UART) Lite Interface | ||||
xps_uartlite | xps_uart_0 | 0x89FF.0000 … 0x89FF.FFFF | 64 kB | ||
xps_uart_1 | 0x89FE.0000 … 0x89FE.FFFF | 64 kB | |||
xps_uart_2 | 0x89FD.0000 … 0x89FD.FFFF | 64 kB | |||
… | |||||
xps_uart_255 | 0x8900.0000 … 0x8900.FFFF | 64 kB | |||
XPS 16550 Universal Asynchronous Receiver Transmitter (UART) | |||||
xps_uart16550 | xps_uart_0 | 0x89FF.0000 … 0x89FF.FFFF | 64 kB | ||
xps_uart_1 | 0x89FE.0000 … 0x89FE.FFFF | 64 kB | |||
xps_uart_2 | 0x89FD.0000 … 0x89FD.FFFF | 64 kB | |||
… | |||||
xps_uart_255 | 0x8900.0000 … 0x8900.FFFF | 64 kB | |||
Netzwerk Leitungen | XPS Ethernet Lite Media Access Controller (MAC) | ||||
xps_ethernetlite | xps_ether_0 | 0x88F0.0000 … 0x88FF.FFFF | 1 MB | ||
xps_ether_1 | 0x88E0.0000 … 0x88FE.FFFF | 1 MB | |||
xps_ether_2 | 0x88D0.0000 … 0x88FD.FFFF | 1 MB | |||
… | |||||
xps_ether_15 | 0x8800.0000 … 0x8800.FFFF | 1 MB | |||
XPS Local Link (LL) Tri-Mode Ethernet Media Access Controller (TEMAC) | |||||
xps_ll_temac | xps_ether_0 | 0x88F0.0000 … 0x88FF.FFFF | 1 MB | ||
xps_ether_1 | 0x88E0.0000 … 0x88FE.FFFF | 1 MB | |||
xps_ether_2 | 0x88D0.0000 … 0x88FD.FFFF | 1 MB | |||
… | |||||
xps_ether_15 | 0x8800.0000 … 0x8800.FFFF | 1 MB | |||
Reserve für weitere Kategorien | 0x8100.0000 … 0x87FF.FFFF | 112 MB | |||
GPIO Leitungen | XPS General Purpose Input/Output (GPIO) | ||||
xps_gpio | xps_gpio_0 | 0x80FF.0000 … 0x80FF.FFFF | 64 kB | ||
xps_gpio_1 | 0x80FE.0000 … 0x80FE.FFFF | 64 kB | |||
xps_gpio_2 | 0x80FD.0000 … 0x80FD.FFFF | 64 kB | |||
… | |||||
xps_gpio_15 | 0x80F0.0000 … 0x80F0.FFFF | 64 kB | |||
Serial Bus Leitungen | XPS Low Speed, Two Wire, Serial Bus Interface | ||||
xps_iic | xps_iic_0 | 0x80EF.0000 … 0x80EF.FFFF | 64 kB | ||
xps_iic_1 | 0x80EE.0000 … 0x80EE.FFFF | 64 kB | |||
xps_iic_2 | 0x80ED.0000 … 0x80ED.FFFF | 64 kB | |||
… | |||||
xps_iic_15 | 0x80E0.0000 … 0x80E0.FFFF | 64 kB | |||
Reserve für weitere Kategorien | 0x6000.0000 … 0x80DF.FFFF | 526 MB | |||
Linear RAM | Multi-Port Memory Controller (DDR/DDR2/SDRAM) | ||||
mpmc | 1-fache Instantiierung | ||||
mpmc_0 | 0x2000.0000 … 0x5FFF.FFFF | max. 1 GB | |||
2-fache Instantiierung | |||||
mpmc_0 | 0x4000.0000 … 0x5FFF.FFFF | max. 512 MB | |||
mpmc_1 | 0x2000.0000 … 0x3FFF.FFFF | max. 512 MB | |||
4-fache Instantiierung | |||||
mpmc_0 | 0x5000.0000 … 0x5FFF.FFFF | max. 256 MB | |||
mpmc_1 | 0x4000.0000 … 0x4FFF.FFFF | max. 256 MB | |||
mpmc_2 | 0x3000.0000 … 0x3FFF.FFFF | max. 256 MB | |||
mpmc_3 | 0x2000.0000 … 0x2FFF.FFFF | max. 256 MB | |||
8-fache Instantiierung | |||||
mpmc_0 | 0x5800.0000 … 0x5FFF.FFFF | max. 128 MB | |||
mpmc_1 | 0x5000.0000 … 0x57FF.FFFF | max. 128 MB | |||
mpmc_2 | 0x4800.0000 … 0x4FFF.FFFF | max. 128 MB | |||
mpmc_3 | 0x4000.0000 … 0x47FF.FFFF | max. 128 MB | |||
mpmc_4 | 0x3800.0000 … 0x3FFF.FFFF | max. 128 MB | |||
mpmc_5 | 0x3000.0000 … 0x37FF.FFFF | max. 128 MB | |||
mpmc_6 | 0x2800.0000 … 0x2FFF.FFFF | max. 128 MB | |||
mpmc_7 | 0x2000.0000 … 0x27FF.FFFF | max. 128 MB | |||
… | |||||
Reserve für weitere Kategorien | 0x0010.0000 … 0x1FFF.FFFF | 511 MB | |||
BRAM | |||||
Reserve für weitere IP Cores dieser Kategorie | 0x0001.0000 … 0x000F.FFFF | 960 kB | |||
Local Memory Bus (LMB) Block RAM (BRAM) Interface Controller | |||||
dlmb_cntrl ilmb_cntrl | dlmb_cntrl | 0x0000.0000 … 0x0000.FFFF | 64 kB | ||
Maximum: … 0x0000.7FFF | 32 kB | ||||
Medium: … 0x0000.3FFF | 16 kB | ||||
Minimum: … 0x0000.1FFF | 8 kB | ||||
CPU | MicroBlaze Soft Processor | ||||
microblaze | microblaze_15 | ||||
… | |||||
microblaze_2 | |||||
microblaze_1 | |||||
microblaze_0 |
Instanz | Ordnung | Zuordnung | typisch |
---|---|---|---|
xps_gpio_0 | primary | System | Reset (per Software) |
xps_gpio_1 | secondary | Kommunikation | Taster (Push Buttons) |
xps_gpio_2 | tertiary | Schalter (DIP Switches) | |
xps_gpio_3 | quaternary | Leuchten (LED Lamps) | |
xps_gpio_4 | quinary | Leuchten (LED Positions) | |
xps_gpio_5 | senary | Peripherie | extern … |
xps_gpio_6 | septenary | erster freier Port | |
xps_gpio_7 | octonary | … | |
xps_gpio_8 | nonary | ||
xps_gpio_9 | denary |
Instanz | Ordnung | Zuordnung | typisch |
---|---|---|---|
xps_iic_0 | primary | System | On-Board (RTC, EEPROM, DIMM) |
xps_iic_1 | secondary | Kommunikation | On-Board (SFP) |
xps_iic_2 | tertiary | Peripherie | extern (DVI) |
xps_iic_3 | quaternary | erster freier Bus | |
xps_iic_4 | quinary | … | |
xps_iic_5 | senary | ||
xps_iic_6 | septenary | ||
xps_iic_7 | octonary | ||
xps_iic_8 | nonary | ||
xps_iic_9 | denary |
Priorität | angeschlossene Instanzen | Anmerkungen |
---|---|---|
höchste | xps_timer_0 | System Tick |
mpmc_0:sdma_0_rx | DMA Komponenten | |
mpmc_0:sdma_0_tx |
||
xps_central_dma_0 |
||
z.B. PCIe | Bus Bridges | |
z.B. SysACE CF , SATA | Massenspeicher | |
Reserve für höchste Priorität | ||
xps_ether_0 | System Network I/F | |
xps_ether_1 |
||
xps_uart_0 | System UART I/F | |
xps_uart_1 |
||
Reserve für mittlere Priorität | ||
xps_iic_0 | System Serial Bus I/F | |
tiefste | Reserve für tiefste Priorität |
Je nach Ausstattung der Evaluierungssysteme mit nicht flüchtigem Speicher (ROM) wird sich die Nutzung an der folgenden Grafik orientieren. Folgende Richtlinien sind immer einzuhalten:
0xB000.0000
(top-down)0xAFF80.0000
, in unserem Fall U-Boot