Imagination University Program MIPSfpga 
 | 
======================================= 
 | 
  
 | 
Under the Imagination University Program, a microAptiv UP core has been 
 | 
released for academic usage. 
 | 
  
 | 
As we are dealing with a MIPS core instantiated on an FPGA, specifications 
 | 
are fluid and can be varied in RTL. 
 | 
  
 | 
This binding document is provided as baseline guidance for the example 
 | 
project provided by IMG. 
 | 
  
 | 
The example project runs on the Nexys4DDR board by Digilent powered by 
 | 
the ARTIX-7 FPGA by Xilinx. 
 | 
  
 | 
Relevant details about the example project and the Nexys4DDR board: 
 | 
  
 | 
- microAptiv UP core m14Kc 
 | 
- 50MHz clock speed 
 | 
- 128Mbyte DDR RAM    at 0x0000_0000 
 | 
- 8Kbyte RAM        at 0x1000_0000 
 | 
- axi_intc        at 0x1020_0000 
 | 
- axi_uart16550        at 0x1040_0000 
 | 
- axi_gpio        at 0x1060_0000 
 | 
- axi_i2c        at 0x10A0_0000 
 | 
- custom_gpio        at 0x10C0_0000 
 | 
- axi_ethernetlite    at 0x10E0_0000 
 | 
- 8Kbyte BootRAM    at 0x1FC0_0000 
 | 
  
 | 
Required properties: 
 | 
-------------------- 
 | 
 - compatible: Must include "digilent,nexys4ddr","img,xilfpga". 
 | 
  
 | 
CPU nodes: 
 | 
---------- 
 | 
A "cpus" node is required.  Required properties: 
 | 
 - #address-cells: Must be 1. 
 | 
 - #size-cells: Must be 0. 
 | 
A CPU sub-node is also required for at least CPU 0. Required properties: 
 | 
 - device_type: Must be "cpu". 
 | 
 - compatible: Must be "mips,m14Kc". 
 | 
 - reg: Must be <0>. 
 | 
 - clocks: phandle to ext clock for fixed-clock received by MIPS core. 
 | 
  
 | 
Example: 
 | 
  
 | 
    compatible = "img,xilfpga","digilent,nexys4ddr"; 
 | 
    cpus { 
 | 
        #address-cells = <1>; 
 | 
        #size-cells = <0>; 
 | 
  
 | 
        cpu0: cpu@0 { 
 | 
            device_type = "cpu"; 
 | 
            compatible = "mips,m14Kc"; 
 | 
            reg = <0>; 
 | 
            clocks    = <&ext>; 
 | 
        }; 
 | 
    }; 
 | 
  
 | 
    ext: ext { 
 | 
        compatible = "fixed-clock"; 
 | 
        #clock-cells = <0>; 
 | 
        clock-frequency = <50000000>; 
 | 
    }; 
 | 
  
 | 
Boot protocol: 
 | 
-------------- 
 | 
  
 | 
The BootRAM is a writeable "RAM" in FPGA at 0x1FC0_0000. 
 | 
This is for easy reprogrammibility via JTAG. 
 | 
  
 | 
The BootRAM initializes the cache and the axi_uart peripheral. 
 | 
  
 | 
DDR initialization is already handled by a HW IP block. 
 | 
  
 | 
When the example project bitstream is loaded, the cpu_reset button 
 | 
needs to be pressed. 
 | 
  
 | 
The bootram initializes the cache and axi_uart. 
 | 
Then outputs MIPSFPGA\n\r on the serial port on the Nexys4DDR board. 
 | 
  
 | 
At this point, the board is ready to load the Linux kernel 
 | 
vmlinux file via JTAG. 
 |