Referenzsysteme

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!

"Lite"

  1. MicroBlaze Ausstattung: microblaze_0
    • 2kB Instruction Cache (line length 4)
    • 2kB Data Cache (line length 4)
    • MMU: virtual, full register access, 2 protection zones
    • Exception Handling
    • Barrel Shifter
    • Pattern Comparator
    • MSR Instruction
    • MUL32 Multiplicator
    • without Divider
    • without FPU
    • Debug: 1 PC breakpoint, without read/write watchpoints
    • PVR: full USER1 and USER2
  2. Kernkomponenten für Betriebssysteme und Debugging:
    • 1 JTAG UART, only primary instance: mdm_0
    • 1 Interrupt Controller, only primary instance: xps_intc_0
    • 1 Timer (system tick), only primary instance: xps_timer_0
  3. UART Leitungen:
    • only primary instance: xps_uart_0
    • XPS UART Lite
    • 115200 Baud (8N1)
    • interrupt source
  4. Netzerk Leitungen:
    • only primary instance: xps_ether_0
    • XPS Ethernet Lite
    • Duplex Mode
    • MDIO support
    • without second Rx/TX buffer
    • interrupt source

"Full"

  1. MicroBlaze Ausstattung: microblaze_0
    • 16kB Instruction Cache (line length 8)
    • 16kB Data Cache (line length 4)
    • MMU: virtual, full register access, 2 protection zones
    • Exception Handling
    • Barrel Shifter
    • Pattern Comparator
    • MSR Instruction
    • MUL32 Multiplicator
    • Integer Divider
    • Basic FPU: no FLOAT ↔ INT, no SQRT
    • Debug: 1 PC breakpoint, without read/write watchpoints
    • PVR: full USER1 and USER2
  2. Kernkomponenten für Betriebssysteme und Debugging:
    • 1 JTAG UART, only primary instance: mdm_0
    • 1 Interrupt Controller, only primary instance: xps_intc_0
    • 1 Timer (system tick), only primary instance: xps_timer_0
  3. UART Leitungen:
    • only primary instance: xps_uart_0
    • XPS 16550 UART
    • interrupt source
  4. Netzerk Leitungen:
    • only primary instance: xps_ether_0
    • XPS LL TEMAC
    • Duplex Mode
    • MDIO support
    • SDMA access
    • interrupt source

Alle FPGA Designs folgen den hier aufgestellten Entwurfsrichtlinien. Eine Ausnahme bildet das Design von Sensor-to-Image. Dieses wird komplett separat behandelt.

Aufbau der FPGA Projekte

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.

Systemrichtlinien

Instanzen und ihre Speicherbereiche

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.00000xFFFF.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.00000xAFFF.FFFF min. 16 MB
0x9000.00000xAFFF.FFFF max. 512 MB
2-fache Instantiierung
xps_mch_emc_0 0xAF00.00000xAFFF.FFFF min. 16 MB
0xA000.00000xAFFF.FFFF max. 256 MB
xps_mch_emc_1 0x9F00.00000x9FFF.FFFF min. 16 MB
0x9000.00000x9FFF.FFFF max. 256 MB
4-fache Instantiierung
xps_mch_emc_0 0xAF00.00000xAFFF.FFFF min. 16 MB
0xA800.00000xAFFF.FFFF max. 128 MB
xps_mch_emc_1 0xA700.00000xA7FF.FFFF min. 16 MB
0xA000.00000xA7FF.FFFF max. 128 MB
xps_mch_emc_2 0x9F00.00000x9FFF.FFFF min. 16 MB
0x9800.00000x9FFF.FFFF max. 128 MB
xps_mch_emc_3 0x9700.00000x97FF.FFFF min. 16 MB
0x9000.00000x97FF.FFFF max. 128 MB
On-Chip
Debug (OCD)
MicroBlaze Debug Module (MDM)
mdm mdm_0 0x8FFF.00000x8FFF.FFFF 64 kB
mdm_1 0x8FFE.00000x8FFE.FFFF 64 kB
mdm_2 0x8FFD.00000x8FFD.FFFF 64 kB
mdm_15 0x8FF0.00000x8FF0.FFFF 64 kB
Reserve für weitere IP Cores dieser Kategorie 0x8F00.00000x8FEF.FFFF 15 MB
Reserve für weitere Kategorien 0x8B00.00000x8EFF.FFFF 64 MB
OS
spezifisch
XPS Interrupt Controller (XPS INTC)
xps_intc xps_intc_0 0x8AFF.00000x8AFF.FFFF 64 kB
xps_intc_1 0x8AFE.00000x8AFE.FFFF 64 kB
xps_intc_2 0x8AFD.00000x8AFD.FFFF 64 kB
xps_intc_15 0x8AF0.00000x8AF0.FFFF 64 kB
XPS Timer/Counter (XPS TIMER)
xps_timer xps_timer_0 0x8AEF.00000x8AEF.FFFF 64 kB
xps_timer_1 0x8AEE.00000x8AEE.FFFF 64 kB
xps_timer_2 0x8AED.00000x8AED.FFFF 64 kB
xps_timer_15 0x8AE0.00000x8AE0.FFFF 64 kB
SDMA Controller of Multi-Port Memory Controller (DDR/DDR2/SDRAM)
mpmc:sdma_ctrl mpmc:sdma_ctrl_0 0x8ADF.00000x8ADF.FFFF 64 kB
mpmc:sdma_ctrl_1 0x8ADE.00000x8ADE.FFFF 64 kB
mpmc:sdma_ctrl_2 0x8ADD.00000x8ADD.FFFF 64 kB
mpmc:sdma_ctrl_15 0x8AD0.00000x8AD0.FFFF 64 kB
Reserve für weitere IP Cores dieser Kategorie 0x8A00.00000x8ACF.FFFF 13 MB
UART
Leitungen
XPS Universal Asynchronous Receiver Transmitter (UART) Lite Interface
xps_uartlite xps_uart_0 0x89FF.00000x89FF.FFFF 64 kB
xps_uart_1 0x89FE.00000x89FE.FFFF 64 kB
xps_uart_2 0x89FD.00000x89FD.FFFF 64 kB
xps_uart_255 0x8900.00000x8900.FFFF 64 kB
XPS 16550 Universal Asynchronous Receiver Transmitter (UART)
xps_uart16550 xps_uart_0 0x89FF.00000x89FF.FFFF 64 kB
xps_uart_1 0x89FE.00000x89FE.FFFF 64 kB
xps_uart_2 0x89FD.00000x89FD.FFFF 64 kB
xps_uart_255 0x8900.00000x8900.FFFF 64 kB
Netzwerk
Leitungen
XPS Ethernet Lite Media Access Controller (MAC)
xps_ethernetlite xps_ether_0 0x88F0.00000x88FF.FFFF 1 MB
xps_ether_1 0x88E0.00000x88FE.FFFF 1 MB
xps_ether_2 0x88D0.00000x88FD.FFFF 1 MB
xps_ether_15 0x8800.00000x8800.FFFF 1 MB
XPS Local Link (LL) Tri-Mode Ethernet Media Access Controller (TEMAC)
xps_ll_temac xps_ether_0 0x88F0.00000x88FF.FFFF 1 MB
xps_ether_1 0x88E0.00000x88FE.FFFF 1 MB
xps_ether_2 0x88D0.00000x88FD.FFFF 1 MB
xps_ether_15 0x8800.00000x8800.FFFF 1 MB
Reserve für weitere Kategorien 0x8100.00000x87FF.FFFF 112 MB
GPIO
Leitungen
XPS General Purpose Input/Output (GPIO)
xps_gpio xps_gpio_0 0x80FF.00000x80FF.FFFF 64 kB
xps_gpio_1 0x80FE.00000x80FE.FFFF 64 kB
xps_gpio_2 0x80FD.00000x80FD.FFFF 64 kB
xps_gpio_15 0x80F0.00000x80F0.FFFF 64 kB
Serial Bus
Leitungen
XPS Low Speed, Two Wire, Serial Bus Interface
xps_iic xps_iic_0 0x80EF.00000x80EF.FFFF 64 kB
xps_iic_1 0x80EE.00000x80EE.FFFF 64 kB
xps_iic_2 0x80ED.00000x80ED.FFFF 64 kB
xps_iic_15 0x80E0.00000x80E0.FFFF 64 kB
Reserve für weitere Kategorien 0x6000.00000x80DF.FFFF 526 MB
Linear
RAM
Multi-Port Memory Controller (DDR/DDR2/SDRAM)
mpmc 1-fache Instantiierung
mpmc_0 0x2000.00000x5FFF.FFFF max. 1 GB
2-fache Instantiierung
mpmc_0 0x4000.00000x5FFF.FFFF max. 512 MB
mpmc_1 0x2000.00000x3FFF.FFFF max. 512 MB
4-fache Instantiierung
mpmc_0 0x5000.00000x5FFF.FFFF max. 256 MB
mpmc_1 0x4000.00000x4FFF.FFFF max. 256 MB
mpmc_2 0x3000.00000x3FFF.FFFF max. 256 MB
mpmc_3 0x2000.00000x2FFF.FFFF max. 256 MB
8-fache Instantiierung
mpmc_0 0x5800.00000x5FFF.FFFF max. 128 MB
mpmc_1 0x5000.00000x57FF.FFFF max. 128 MB
mpmc_2 0x4800.00000x4FFF.FFFF max. 128 MB
mpmc_3 0x4000.00000x47FF.FFFF max. 128 MB
mpmc_4 0x3800.00000x3FFF.FFFF max. 128 MB
mpmc_5 0x3000.00000x37FF.FFFF max. 128 MB
mpmc_6 0x2800.00000x2FFF.FFFF max. 128 MB
mpmc_7 0x2000.00000x27FF.FFFF max. 128 MB
Reserve für weitere Kategorien 0x0010.00000x1FFF.FFFF 511 MB
BRAM
Reserve für weitere IP Cores dieser Kategorie 0x0001.00000x000F.FFFF 960 kB
Local Memory Bus (LMB) Block RAM (BRAM) Interface Controller
dlmb_cntrl
ilmb_cntrl
dlmb_cntrl
ilmb_cntrl
0x0000.00000x0000.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

General Purpose I/O Enumeration

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

Serial Bus Enumeration

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

Interrupt Priorität

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

Speicheraufteilung

Linear ROM Mapping (top-down)

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:

  • das ROM Ende liegt unabhängig von seiner Größe immer an der obersten 1 GB Speicheradresse 0xB000.0000 (top-down)
  • in den letzten 512 MB befindet sich ein 2nd stage boot loader ab Adresse 0xAFF80.0000, in unserem Fall U-Boot
  • am ROM Anfang wird immer Platz für die FPGA Konfigurationsdaten gehalten (redundant)

svg@svg:rom-map.svg
1) noch nicht alle: siehe