Skip to content

CMR GHRD create hps

nnaufel edited this page May 17, 2022 · 18 revisions

Create the Processor System using Platform Designer

  • Open Platform Designer from Quartus Prime via one of the two methods below:

    • Tools -> Platform Designer menu, or
    • Click on its icon in the tool bar.  A blank project is created with a default name of unsaved.qsys.
  • Do a File -> Save As … to give it the name system_bd.qsys. This saves the file in the project folder .../quartus_project/.

  • When Saving is done, click Close.

Add peripheral modules from the IP Catalog

Add the HPS IP (Hard Processor System IP)

Either type HPS in the IP Catalog search bar or, expand the Processors and Peripherals -> Hard Processor Systems and double-click Arria V/Cyclone V Hard Processor System to add it to the system.



This action opens the HPS configuration window.

  • In the FPGA Interfaces tab,

    • un-check all boxes.
    • In the AXI Bridges set the FPGA-to-HPS interface width to 64-bit and HPS-to-FPGA interface width to Unused.
    • In the FPGA-to-HPS SDRAM Interface section:
      • Set the f2h_sdram0 Type to Avalon-MM Bidirectional with a width of 64.
  • In the Interrupts section, check the box to Enable FPGA-to-HPS interrupts.



  • Select the Peripheral Pins tab and set the peripheral pins as follows:
    Controller Pin Setting Mode Setting
    Ethernet Media Access Controller EMAC1 pin HPS I/O Set 0 EMAC1 mode RGMII
    Quad SPI Flash Controller QSPI pin HPS I/O Set 1 QSPI mode 2SS
    SD/MMC Controller SDIO pin HPS I/O Set 0 SDIO mode 4-bit Data
    USB Controller USB1 pin HPS I/O Set 0 USB1 PHY interface mode SDR with PHY clock output mode
    UART Controller UART0 pin HPS I/O Set 2 UART0 mode No Flow Control
    I2C Controller I2C0 pin HPS I/O Set 1 I2C1 pin HPS I/O Set 0
    I2C Controller I2C2 pin FPGA I2C3 pin FPGA

  • Scroll down to the bottom of the Peripheral Pins window until the Peripheral Mux Table is visible.
  • Scroll the table to the right until the GPIO and LOANIO columns are visible and click the following pins:
    • GPIO00
    • GPIO09
    • GPIO28
    • GPIO37
    • GPIO40
    • GPIO41
    • GPIO42
    • GPIO44
    • GPIO48
    • GPIO49
    • GPIO50
    • GPIO53
    • GPIO54
    • GPIO55
    • GPIO56
    • GPIO60
    • GPIO62
    • LOANIO43
    • LOANIO57
    • LOANIO58
    • LOANIO61

These pins are used for HPS_GPIO and HPS_LOANIO signals.

  • Select the HPS Clocks tab and keep all settings in the Input Clocks sub-tab at defaults.


  • Select the Output Clocks sub-tab and change the following selections from their defaults:
    • In the HPS-to-FPGA User Clocks section, check only the box for Enable HPS-to-FPGA user 0 clock


  • Select the SDRAM tab.
    • In the PHY Settings sub-tab, set:
      • Memory clock frequency to 400.0 MHz
      • PLL reference clock frequency to 25MHz
      • Supply Voltage to 1.35V DDR3L


  • Select the Memory Parameters sub-tab and set the following:

    Parameter Setting
    Memory device speed grade 800.0 MHz
    Total interface width 40 (which will automatically update the Number of DQS groups to )
    Row address width 15
    Column address width 10
    Memory CAS latency setting 3
    Output drive strength setting RZQ/7
    ODT Rtt nominal value RZQ/4
    Auto selfrefresh method Automatic
    Memory write CAS latency setting 6


  • Select the Memory Timing sub-tab and set the values as shown in the figure below:


  • Select the Board Settings sub-tab.
    • In the Board Skews section change the setting to match the figure below:


  • Click Finish in the bottom right corner of the window.

In the System Contents tab do the following:

  • Remove the clk_0 module by right-clicking the name -> Remove,

  • Rename the hps_0 module to sys_hps,

  • Double-click in the memory row Export column and call it hps_ddr,

  • Keep the hps_io name,

  • Double-click in the i2c2_scl_in row Export column and call it i2c2_scl_in,

  • Double-click in the i2c2_clk row Export column and call it i2c2_clk,

  • Double-click in the i2c2 row Export column and call it i2c2,

  • Double-click in the i2c3_scl_in row Export column and call it i2c3_scl_in,

  • Double-click in the i2c3_clk row Export column and call it i2c3_clk,

  • Double-click in the i2c3 row Export column and call it i2c3,

  • Form signal connections.
    Note: For this and future steps, all signals with possible connection paths are shown with light grey line segments. Each possible connection point is shown as an empty bubble at the vertex of the line segments. Form a connection by clicking on this bubble and then the line turns dark black to show the completed connection. Hover the mouse over the vertex to see the names of the signals of the connection.

    • Connect the sys_hps/h2f_user0_clock to the f2h_sdram0_clock
    • Connect the sys_hps/h2f_user0_clock to the f2h_axi_clock
    • Connect the sys_hps/h2f_user0_clock to the h2f_lw_axi_clock

Next - Adding Display IP
Back to Create the Project Framework
Back to GHRD Top

Clone this wiki locally