162306a36Sopenharmony_ciImagination University Program MIPSfpga
262306a36Sopenharmony_ci=======================================
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciUnder the Imagination University Program, a microAptiv UP core has been
562306a36Sopenharmony_cireleased for academic usage.
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciAs we are dealing with a MIPS core instantiated on an FPGA, specifications
862306a36Sopenharmony_ciare fluid and can be varied in RTL.
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciThis binding document is provided as baseline guidance for the example
1162306a36Sopenharmony_ciproject provided by IMG.
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciThe example project runs on the Nexys4DDR board by Digilent powered by
1462306a36Sopenharmony_cithe ARTIX-7 FPGA by Xilinx.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciRelevant details about the example project and the Nexys4DDR board:
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci- microAptiv UP core m14Kc
1962306a36Sopenharmony_ci- 50MHz clock speed
2062306a36Sopenharmony_ci- 128Mbyte DDR RAM	at 0x0000_0000
2162306a36Sopenharmony_ci- 8Kbyte RAM		at 0x1000_0000
2262306a36Sopenharmony_ci- axi_intc		at 0x1020_0000
2362306a36Sopenharmony_ci- axi_uart16550		at 0x1040_0000
2462306a36Sopenharmony_ci- axi_gpio		at 0x1060_0000
2562306a36Sopenharmony_ci- axi_i2c		at 0x10A0_0000
2662306a36Sopenharmony_ci- custom_gpio		at 0x10C0_0000
2762306a36Sopenharmony_ci- axi_ethernetlite	at 0x10E0_0000
2862306a36Sopenharmony_ci- 8Kbyte BootRAM	at 0x1FC0_0000
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciRequired properties:
3162306a36Sopenharmony_ci--------------------
3262306a36Sopenharmony_ci - compatible: Must include "digilent,nexys4ddr","img,xilfpga".
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciCPU nodes:
3562306a36Sopenharmony_ci----------
3662306a36Sopenharmony_ciA "cpus" node is required.  Required properties:
3762306a36Sopenharmony_ci - #address-cells: Must be 1.
3862306a36Sopenharmony_ci - #size-cells: Must be 0.
3962306a36Sopenharmony_ciA CPU sub-node is also required for at least CPU 0. Required properties:
4062306a36Sopenharmony_ci - device_type: Must be "cpu".
4162306a36Sopenharmony_ci - compatible: Must be "mips,m14Kc".
4262306a36Sopenharmony_ci - reg: Must be <0>.
4362306a36Sopenharmony_ci - clocks: phandle to ext clock for fixed-clock received by MIPS core.
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciExample:
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci	compatible = "img,xilfpga","digilent,nexys4ddr";
4862306a36Sopenharmony_ci	cpus {
4962306a36Sopenharmony_ci		#address-cells = <1>;
5062306a36Sopenharmony_ci		#size-cells = <0>;
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci		cpu0: cpu@0 {
5362306a36Sopenharmony_ci			device_type = "cpu";
5462306a36Sopenharmony_ci			compatible = "mips,m14Kc";
5562306a36Sopenharmony_ci			reg = <0>;
5662306a36Sopenharmony_ci			clocks	= <&ext>;
5762306a36Sopenharmony_ci		};
5862306a36Sopenharmony_ci	};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci	ext: ext {
6162306a36Sopenharmony_ci		compatible = "fixed-clock";
6262306a36Sopenharmony_ci		#clock-cells = <0>;
6362306a36Sopenharmony_ci		clock-frequency = <50000000>;
6462306a36Sopenharmony_ci	};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciBoot protocol:
6762306a36Sopenharmony_ci--------------
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciThe BootRAM is a writeable "RAM" in FPGA at 0x1FC0_0000.
7062306a36Sopenharmony_ciThis is for easy reprogrammibility via JTAG.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciThe BootRAM initializes the cache and the axi_uart peripheral.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciDDR initialization is already handled by a HW IP block.
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ciWhen the example project bitstream is loaded, the cpu_reset button
7762306a36Sopenharmony_cineeds to be pressed.
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ciThe bootram initializes the cache and axi_uart.
8062306a36Sopenharmony_ciThen outputs MIPSFPGA\n\r on the serial port on the Nexys4DDR board.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciAt this point, the board is ready to load the Linux kernel
8362306a36Sopenharmony_civmlinux file via JTAG.
84