1*c66ec88fSEmmanuel VadotImagination University Program MIPSfpga 2*c66ec88fSEmmanuel Vadot======================================= 3*c66ec88fSEmmanuel Vadot 4*c66ec88fSEmmanuel VadotUnder the Imagination University Program, a microAptiv UP core has been 5*c66ec88fSEmmanuel Vadotreleased for academic usage. 6*c66ec88fSEmmanuel Vadot 7*c66ec88fSEmmanuel VadotAs we are dealing with a MIPS core instantiated on an FPGA, specifications 8*c66ec88fSEmmanuel Vadotare fluid and can be varied in RTL. 9*c66ec88fSEmmanuel Vadot 10*c66ec88fSEmmanuel VadotThis binding document is provided as baseline guidance for the example 11*c66ec88fSEmmanuel Vadotproject provided by IMG. 12*c66ec88fSEmmanuel Vadot 13*c66ec88fSEmmanuel VadotThe example project runs on the Nexys4DDR board by Digilent powered by 14*c66ec88fSEmmanuel Vadotthe ARTIX-7 FPGA by Xilinx. 15*c66ec88fSEmmanuel Vadot 16*c66ec88fSEmmanuel VadotRelevant details about the example project and the Nexys4DDR board: 17*c66ec88fSEmmanuel Vadot 18*c66ec88fSEmmanuel Vadot- microAptiv UP core m14Kc 19*c66ec88fSEmmanuel Vadot- 50MHz clock speed 20*c66ec88fSEmmanuel Vadot- 128Mbyte DDR RAM at 0x0000_0000 21*c66ec88fSEmmanuel Vadot- 8Kbyte RAM at 0x1000_0000 22*c66ec88fSEmmanuel Vadot- axi_intc at 0x1020_0000 23*c66ec88fSEmmanuel Vadot- axi_uart16550 at 0x1040_0000 24*c66ec88fSEmmanuel Vadot- axi_gpio at 0x1060_0000 25*c66ec88fSEmmanuel Vadot- axi_i2c at 0x10A0_0000 26*c66ec88fSEmmanuel Vadot- custom_gpio at 0x10C0_0000 27*c66ec88fSEmmanuel Vadot- axi_ethernetlite at 0x10E0_0000 28*c66ec88fSEmmanuel Vadot- 8Kbyte BootRAM at 0x1FC0_0000 29*c66ec88fSEmmanuel Vadot 30*c66ec88fSEmmanuel VadotRequired properties: 31*c66ec88fSEmmanuel Vadot-------------------- 32*c66ec88fSEmmanuel Vadot - compatible: Must include "digilent,nexys4ddr","img,xilfpga". 33*c66ec88fSEmmanuel Vadot 34*c66ec88fSEmmanuel VadotCPU nodes: 35*c66ec88fSEmmanuel Vadot---------- 36*c66ec88fSEmmanuel VadotA "cpus" node is required. Required properties: 37*c66ec88fSEmmanuel Vadot - #address-cells: Must be 1. 38*c66ec88fSEmmanuel Vadot - #size-cells: Must be 0. 39*c66ec88fSEmmanuel VadotA CPU sub-node is also required for at least CPU 0. Required properties: 40*c66ec88fSEmmanuel Vadot - device_type: Must be "cpu". 41*c66ec88fSEmmanuel Vadot - compatible: Must be "mips,m14Kc". 42*c66ec88fSEmmanuel Vadot - reg: Must be <0>. 43*c66ec88fSEmmanuel Vadot - clocks: phandle to ext clock for fixed-clock received by MIPS core. 44*c66ec88fSEmmanuel Vadot 45*c66ec88fSEmmanuel VadotExample: 46*c66ec88fSEmmanuel Vadot 47*c66ec88fSEmmanuel Vadot compatible = "img,xilfpga","digilent,nexys4ddr"; 48*c66ec88fSEmmanuel Vadot cpus { 49*c66ec88fSEmmanuel Vadot #address-cells = <1>; 50*c66ec88fSEmmanuel Vadot #size-cells = <0>; 51*c66ec88fSEmmanuel Vadot 52*c66ec88fSEmmanuel Vadot cpu0: cpu@0 { 53*c66ec88fSEmmanuel Vadot device_type = "cpu"; 54*c66ec88fSEmmanuel Vadot compatible = "mips,m14Kc"; 55*c66ec88fSEmmanuel Vadot reg = <0>; 56*c66ec88fSEmmanuel Vadot clocks = <&ext>; 57*c66ec88fSEmmanuel Vadot }; 58*c66ec88fSEmmanuel Vadot }; 59*c66ec88fSEmmanuel Vadot 60*c66ec88fSEmmanuel Vadot ext: ext { 61*c66ec88fSEmmanuel Vadot compatible = "fixed-clock"; 62*c66ec88fSEmmanuel Vadot #clock-cells = <0>; 63*c66ec88fSEmmanuel Vadot clock-frequency = <50000000>; 64*c66ec88fSEmmanuel Vadot }; 65*c66ec88fSEmmanuel Vadot 66*c66ec88fSEmmanuel VadotBoot protocol: 67*c66ec88fSEmmanuel Vadot-------------- 68*c66ec88fSEmmanuel Vadot 69*c66ec88fSEmmanuel VadotThe BootRAM is a writeable "RAM" in FPGA at 0x1FC0_0000. 70*c66ec88fSEmmanuel VadotThis is for easy reprogrammibility via JTAG. 71*c66ec88fSEmmanuel Vadot 72*c66ec88fSEmmanuel VadotThe BootRAM initializes the cache and the axi_uart peripheral. 73*c66ec88fSEmmanuel Vadot 74*c66ec88fSEmmanuel VadotDDR initialization is already handled by a HW IP block. 75*c66ec88fSEmmanuel Vadot 76*c66ec88fSEmmanuel VadotWhen the example project bitstream is loaded, the cpu_reset button 77*c66ec88fSEmmanuel Vadotneeds to be pressed. 78*c66ec88fSEmmanuel Vadot 79*c66ec88fSEmmanuel VadotThe bootram initializes the cache and axi_uart. 80*c66ec88fSEmmanuel VadotThen outputs MIPSFPGA\n\r on the serial port on the Nexys4DDR board. 81*c66ec88fSEmmanuel Vadot 82*c66ec88fSEmmanuel VadotAt this point, the board is ready to load the Linux kernel 83*c66ec88fSEmmanuel Vadotvmlinux file via JTAG. 84