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