This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

HOW to config GPMC connected with FPGA?

Other Parts Discussed in Thread: AM3352

hi:

all,i have designed GPMC moduled connected with FPGA.but i have some problems about configuration  wtih GPMC_CONFIG1---GPMC_CONFIG7,and i designed as follow:

1)FPGA used for 16bit  write and read;

2) addr pins :GPMC_A11 --- GPMC_A1(highest 11 bit),GPMC_AD15 --- GPMC_AD0(lowest 16bit);

3) data pins:GPMC_AD15 --- GPMC_AD0;in other words GPMC is in Address and data multiplexed attached device.

4) FPGA is connected through GPMC_CS1;

5) my paltfrom is AM3352,used startware kit. not linux system.

I want to write/read with in sync mode.how should i config GPMC_CONFIG1---GPMC_CONFIG7?

I tryed as follow:

1) pins mux cpnfig:

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(1) ) =
              (0 << CONTROL_CONF_GPMC_A1_CONF_GPMC_A1_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A1_CONF_GPMC_A1_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A1_CONF_GPMC_A1_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A1_CONF_GPMC_A1_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A1_CONF_GPMC_A1_SLEWCTRL_SHIFT);


    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(2) ) =
              (0 << CONTROL_CONF_GPMC_A2_CONF_GPMC_A2_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A2_CONF_GPMC_A2_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A2_CONF_GPMC_A2_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A2_CONF_GPMC_A2_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A2_CONF_GPMC_A2_SLEWCTRL_SHIFT);


    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(3) ) =
              (0 << CONTROL_CONF_GPMC_A3_CONF_GPMC_A3_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A3_CONF_GPMC_A3_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A3_CONF_GPMC_A3_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A3_CONF_GPMC_A3_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A3_CONF_GPMC_A3_SLEWCTRL_SHIFT);

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(4) ) =
              (0 << CONTROL_CONF_GPMC_A4_CONF_GPMC_A4_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A4_CONF_GPMC_A4_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A4_CONF_GPMC_A4_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A4_CONF_GPMC_A4_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A4_CONF_GPMC_A4_SLEWCTRL_SHIFT);

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(5) ) =
              (0 << CONTROL_CONF_GPMC_A5_CONF_GPMC_A5_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A5_CONF_GPMC_A5_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A5_CONF_GPMC_A5_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A5_CONF_GPMC_A5_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A5_CONF_GPMC_A5_SLEWCTRL_SHIFT);

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(6) ) =
              (0 << CONTROL_CONF_GPMC_A6_CONF_GPMC_A6_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A6_CONF_GPMC_A6_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A6_CONF_GPMC_A6_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A6_CONF_GPMC_A6_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A6_CONF_GPMC_A6_SLEWCTRL_SHIFT);

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(7) ) =
              (0 << CONTROL_CONF_GPMC_A7_CONF_GPMC_A7_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A7_CONF_GPMC_A7_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A7_CONF_GPMC_A7_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A7_CONF_GPMC_A7_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A7_CONF_GPMC_A7_SLEWCTRL_SHIFT);

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(8) ) =
              (0 << CONTROL_CONF_GPMC_A8_CONF_GPMC_A8_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A8_CONF_GPMC_A8_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A8_CONF_GPMC_A8_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A8_CONF_GPMC_A8_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A8_CONF_GPMC_A8_SLEWCTRL_SHIFT);

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(9) ) =
              (0 << CONTROL_CONF_GPMC_A9_CONF_GPMC_A9_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A9_CONF_GPMC_A9_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A9_CONF_GPMC_A9_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A9_CONF_GPMC_A9_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A9_CONF_GPMC_A9_SLEWCTRL_SHIFT);

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(10) ) =
              (0 << CONTROL_CONF_GPMC_A10_CONF_GPMC_A10_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A10_CONF_GPMC_A10_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A10_CONF_GPMC_A10_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A10_CONF_GPMC_A10_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A10_CONF_GPMC_A10_SLEWCTRL_SHIFT);

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_A(11) ) =
              (0 << CONTROL_CONF_GPMC_A11_CONF_GPMC_A11_MMODE_SHIFT)     |
              (0 << CONTROL_CONF_GPMC_A11_CONF_GPMC_A11_PUDEN_SHIFT)     |
              (1 << CONTROL_CONF_GPMC_A11_CONF_GPMC_A11_PUTYPESEL) |
              (0 << CONTROL_CONF_GPMC_A11_CONF_GPMC_A11_RXACTIVE_SHIFT)  |
              (0 << CONTROL_CONF_GPMC_A11_CONF_GPMC_A11_SLEWCTRL_SHIFT);


    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(0) ) = 0x30;
    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(1) ) = 0x30;

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(2) ) = 0x30;

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(3) ) = 0x30;


    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(4) ) = 0x30;
    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(5) ) = 0x30;

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(6) ) = 0x30;
    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(7) ) = 0x30;

    //GPMC_AD8~GPMC_AD15
    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(8) ) = 0x30;

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(9) ) = 0x30;

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(10) ) = 0x30;

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(11) ) = 0x30;


    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(12) ) = 0x30;

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(13) ) = 0x30;

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(14) ) = 0x30;

    HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_AD(15) ) = 0x30;

        // CONF_GPMC_CS1N for FPGA Chip-Select
 HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_CSN(1) ) =
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_MMODE_SHIFT)     |
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_PUDEN_SHIFT)     |
     (1 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_PUTYPESEL_SHIFT) |
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_RXACTIVE_SHIFT)  |
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_SLEWCTRL_SHIFT);

        // CONF_GPMC_CS1N for FPGA Chip-Select
 HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_CSN(2) ) =
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_MMODE_SHIFT)     |
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_PUDEN_SHIFT)     |
     (1 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_PUTYPESEL_SHIFT) |
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_RXACTIVE_SHIFT)  |
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_SLEWCTRL_SHIFT);

        // CONF_GPMC_CS1N for FPGA Chip-Select
 HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_CSN(3) ) =
     (7 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_MMODE_SHIFT)     |
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_PUDEN_SHIFT)     |
     (1 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_PUTYPESEL_SHIFT) |
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_RXACTIVE_SHIFT)  |
     (0 << CONTROL_CONF_GPMC_CSN1_CONF_GPMC_CSN1_SLEWCTRL_SHIFT);
   
    // BE1n, BE0n, CS2n, OEn, WEn
 // CONF_GPMC_WEN
 HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_WEN ) =
     (0 << CONTROL_CONF_GPMC_WEN_CONF_GPMC_WEN_MMODE_SHIFT)     |
     (0 << CONTROL_CONF_GPMC_WEN_CONF_GPMC_WEN_PUDEN_SHIFT)     |
     (1 << CONTROL_CONF_GPMC_WEN_CONF_GPMC_WEN_PUTYPESEL_SHIFT) |
     (0 << CONTROL_CONF_GPMC_WEN_CONF_GPMC_WEN_RXACTIVE_SHIFT)  |
     (0 << CONTROL_CONF_GPMC_WEN_CONF_GPMC_WEN_SLEWCTRL_SHIFT);

 // CONF_GPMC_OEN_REN
 HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_OEN_REN ) =
     (0 << CONTROL_CONF_GPMC_OEN_REN_CONF_GPMC_OEN_REN_MMODE_SHIFT)     |
     (0 << CONTROL_CONF_GPMC_OEN_REN_CONF_GPMC_OEN_REN_PUDEN_SHIFT)     |
     (1 << CONTROL_CONF_GPMC_OEN_REN_CONF_GPMC_OEN_REN_PUTYPESEL_SHIFT) |
     (0 << CONTROL_CONF_GPMC_OEN_REN_CONF_GPMC_OEN_REN_RXACTIVE_SHIFT)  |
     (0 << CONTROL_CONF_GPMC_OEN_REN_CONF_GPMC_OEN_REN_SLEWCTRL_SHIFT);

 // CONF_GPMC_BE0N_CLE
 HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_BE0N_CLE ) =
   (0 << CONTROL_CONF_GPMC_BE0N_CLE_CONF_GPMC_BE0N_CLE_MMODE)   |
   (0 << CONTROL_CONF_GPMC_BE0N_CLE_CONF_GPMC_BE0N_CLE_PUDEN_SHIFT)    |
   (1 << CONTROL_CONF_GPMC_BE0N_CLE_CONF_GPMC_BE0N_CLE_PUTYPESEL_SHIFT)|
   (0 << CONTROL_CONF_GPMC_BE0N_CLE_CONF_GPMC_BE0N_CLE_RXACTIVE_SHIFT) |
   (0 << CONTROL_CONF_GPMC_BE0N_CLE_CONF_GPMC_BE0N_CLE_SLEWCTRL_SHIFT);


 // CONF_GPMC_BE1N
  HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_BE1N ) =
   (0 << CONTROL_CONF_GPMC_BE1N_CONF_GPMC_BE1N_MMODE_SHIFT) |
   (0 << CONTROL_CONF_GPMC_BE1N_CONF_GPMC_BE1N_PUDEN_SHIFT)    |
   (1 << CONTROL_CONF_GPMC_BE1N_CONF_GPMC_BE1N_PUTYPESEL_SHIFT)|
   (0 << CONTROL_CONF_GPMC_BE1N_CONF_GPMC_BE1N_RXACTIVE_SHIFT) |
   (0 << CONTROL_CONF_GPMC_BE1N_CONF_GPMC_BE1N_SLEWCTRL_SHIFT);


 // CONF_GPMC_CLK
   HWREG(SOC_CONTROL_REGS + CONTROL_CONF_GPMC_CLK ) =
   (0 << CONTROL_CONF_GPMC_CLK_CONF_GPMC_CLK_MMODE_SHIFT)    |
   (1 << CONTROL_CONF_GPMC_CLK_CONF_GPMC_CLK_PUDEN_SHIFT)    |
   (1 << CONTROL_CONF_GPMC_CLK_CONF_GPMC_CLK_PUTYPESEL_SHIFT)|
   (1 << CONTROL_CONF_GPMC_CLK_CONF_GPMC_CLK_RXACTIVE_SHIFT) |
   (0 << CONTROL_CONF_GPMC_CLK_CONF_GPMC_CLK_SLEWCTRL_SHIFT);

2)  GPMC_CONFIG1---GPMC_CONFIG7:

        HWREG(GPMC_CONFIG_REGS + GPMC_CONFIG7( FPGA_SRAM_CHIP_SELECT ) )= 0;
         
        //GPMC_CONFIG1_i
        HWREG(GPMC_CONFIG_REGS + GPMC_CONFIG1(FPGA_SRAM_CHIP_SELECT) ) = 0x28001200;
       
 //GPMC_CONFIG2_i
 HWREG(GPMC_CONFIG_REGS + GPMC_CONFIG2(FPGA_SRAM_CHIP_SELECT) ) = 0x00060700;


 //GPMC_CONFIG3_i Chip-select signal timing parameter configuration
 HWREG(GPMC_CONFIG_REGS + GPMC_CONFIG3(FPGA_SRAM_CHIP_SELECT) )= 0x11010100;

 //GPMC_CONFIG4_i WE# and OE# signal timing parameter configuration
 HWREG(GPMC_CONFIG_REGS + GPMC_CONFIG4(FPGA_SRAM_CHIP_SELECT) )= 0x0602e722; 

 //GPMC_CONFIG5_i RdAccess Time and Cycle Time parameter configuration
 HWREG(GPMC_CONFIG_REGS + GPMC_CONFIG5(FPGA_SRAM_CHIP_SELECT) )= 0x01060607;

 //GPMC_CONFIG6_i WrAccess, WrDataOnADmuxBus, Cycle2Cycle, and BusTurnAround parameter configuration
 HWREG(GPMC_CONFIG_REGS + GPMC_CONFIG6(FPGA_SRAM_CHIP_SELECT) )= 0x030301c1;


 //GPMC_CONFIG7_i Chip-Selectaddress mapping configuration

 HWREG(GPMC_CONFIG_REGS + GPMC_CONFIG7( FPGA_SRAM_CHIP_SELECT ) )=
   (0x0 << GPMC_CONFIG7_1_BASEADDRESS_SHIFT) |
   (1  << GPMC_CONFIG7_1_CSVALID_SHIFT)|
   (0x00 << GPMC_CONFIG7_1_MASKADDRESS_SHIFT);

But GPMC_CLK is not output!

Anyone could give some help? BASEADDR IS WRONG ? or have some pin mux wrong?

Thanks.