cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
srinivasan
Explorer
Explorer
2,135 Views
Registered: ‎02-17-2017

Unable to export SPI in Zynq vivado 2015.2

Dear Xilinx Community,

 

I need to configure SPI1 and SPi2 ports via EMIO in viavdo 2015.2 , I followed the below link

 

http://blog.idv-tech.com/2014/03/22/howto-export-zynq-peripheralsi2c-spi-uart-and-etc-to-pmod-connectors-of-zedboard-using-vivado-2013-4/

 

After creating the HDL wrapper as mentioned in the above link, and after running implementation, I am unable to see the SPI ports being listed in IO ports menu as attched in the snapshots

 

Could you please let me know why am unable to see the SPI ports in IO port menu, I hope am terribly doing something wrong or due to the vivado version am not aware of it

 

Kindly do the needful in resolving this issue as am stuck with this from yesterday

Eagerly awaiting for your replies

Many Thanks in advance

Unable to get SPI ports listed in Winows IO ports.png
Unable to get SPI ports listed in Winows IO ports1.png
0 Kudos
2 Replies
pratham
Scholar
Scholar
2,102 Views
Registered: ‎06-05-2013

@srinivasan Are you able to see the port from implemented design in the schematic? Click on the port and properties to apply.

I dont see any issues in 2017.1. You are using an older version of the tool, please upgrade.

 

-Pratham

----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------
forum.JPG
0 Kudos
srinivasan
Explorer
Explorer
2,070 Views
Registered: ‎02-17-2017

Dear Pratham,

 

Thanks a lot for your quick responses

 

Could you please verify the exported SPI interface in the attached configuration in .vhd. xdc and .bd and confirm that whether I have exported SPI configuration correctly. Could you please verify mainly in .vhd file

 

Kindly do the needful as early as possible

Many Thanks in advance

 

System_top.vhd

 

 

---------------------------------------------------------------------------------------------------
--  Project          : Mars ZX3 Vivado Reference Design
--  File description : Top Level file for Mars PM3
--  File name        : system_top.vhd
--  Author           : Christoph Glattfelder
---------------------------------------------------------------------------------------------------
--  Copyright (c) 2014 by Enclustra GmbH, Switzerland
--  All rights reserved.
---------------------------------------------------------------------------------------------------
--  Description:
--    This is a top-level file for the Mars ZX3 Vivado reference design.
--    
--    
---------------------------------------------------------------------------------------------------
--  File history:
--
--  Version | Date     | Author             | Remarks
--  -----------------------------------------------------------------------------------------------
--  1.0     | 21.01.14 | Ch. Glattfelder    | First released version
--          |          |                    |
---------------------------------------------------------------------------------------------------


library ieee;
    use ieee.std_logic_1164.all;
    use ieee.numeric_std.all;

library unisim;
    use unisim.vcomponents.all;

entity system_top is
    port (
        DDR_addr            : inout std_logic_vector ( 14 downto 0 );
        DDR_ba                : inout std_logic_vector ( 2 downto 0 );
        DDR_cas_n            : inout std_logic;
        DDR_ck_n            : inout std_logic;
        DDR_ck_p            : inout std_logic;
        DDR_cke                : inout std_logic;
        DDR_cs_n            : inout std_logic;
        DDR_dm                : inout std_logic_vector ( 3 downto 0 );
        DDR_dq                : inout std_logic_vector ( 31 downto 0 );
        DDR_dqs_n            : inout std_logic_vector ( 3 downto 0 );
        DDR_dqs_p            : inout std_logic_vector ( 3 downto 0 );
        DDR_odt                : inout std_logic;
        DDR_ras_n            : inout std_logic;
        DDR_reset_n            : inout std_logic;
        DDR_we_n            : inout std_logic;
        
        FIXED_IO_ddr_vrn    : inout std_logic;
        FIXED_IO_ddr_vrp    : inout std_logic;
        FIXED_IO_mio        : inout std_logic_vector ( 53 downto 0 );
        FIXED_IO_ps_clk        : inout std_logic;
        FIXED_IO_ps_porb    : inout std_logic;
        FIXED_IO_ps_srstb    : inout std_logic;

        Eth_Rst_N            : inout    std_logic;
        Usb_Rst_N            : inout    std_logic;

        UART0_TX            : out     std_logic;
        UART0_RX             : in     std_logic;

        I2C0_SDA            : inout std_logic;
        I2C0_SCL            : inout std_logic;
        I2C0_INT_N_pin        : in     std_logic;
        
        Rev5                : in    std_logic;
        Rev4                : in    std_logic;

        Led_N                 : out    std_logic_vector(3 downto 0);
        
        -- unused pins, set to high impedance
        Vref0                : inout std_logic;
        Vref1                : inout std_logic;
        CLK33                : inout std_logic;
        NAND_WP                : inout std_logic;
        PWR_GOOD_R            : inout std_logic;
        DDR3_VSEL           : inout std_logic;
        
        ETH_Link            : inout std_logic;
        ETH_MDC                : inout std_logic;
        ETH_MDIO            : inout std_logic;
        ETH_RX_CLK            : inout std_logic;
        ETH_RX_CTL            : inout std_logic;
        ETH_RXD                : inout std_logic_vector(3 downto 0);
        ETH_TX_CLK            : inout std_logic;
        ETH_TX_CTL            : inout std_logic;
        ETH_TXD                : inout std_logic_vector(3 downto 0);
        

        -------------------------------------------------------------------------------------------
        -- SD interface
        -------------------------------------------------------------------------------------------


        FX3_DQ1_SDD3        : inout    std_logic;
        FX3_DQ3_SDD2        : inout    std_logic;
        FX3_PKTEND_SDD1_N    : out    std_logic;
        FX3_SLOE_SDD0_N        : out    std_logic;
        FX3_SLRD_SDCLK_N    : out    std_logic;
        FX3_SLWR_SDCMD_N    : out    std_logic;
        
        -------------------------------------------------------------------------------------------
        -- UART interface
        -------------------------------------------------------------------------------------------
        
        UART1_TX            : out     std_logic;
        UART1_RX             : in     std_logic;
        
        -------------------------------------------------------------------------------------------
        -- SPI 1 interface
        -------------------------------------------------------------------------------------------
        
        SPI_MISO_ME_1 : inout std_logic;
        SPI_MOSI_ME_1 : inout std_logic;
        SPI_SCK_ME_1 : inout std_logic;
        SPI_CS_ME_1  : inout std_logic;
        
        -------------------------------------------------------------------------------------------
        -- SPI 2 interface
        -------------------------------------------------------------------------------------------
        
        SPI_MISO_ME_2   : inout std_logic;
        SPI_MOSI_ME_2   : inout std_logic;
        SPI_SCK_ME_2     : inout std_logic;
        SPI_CS_ME_2     : inout std_logic;
        
        -------------------------------------------------------------------------------------------
        -- GPIO interface
        -------------------------------------------------------------------------------------------
               
        VDDIO_EN_H : out STD_LOGIC_VECTOR ( 0 downto 0 ); -- 54 -- 960
        V_ANT_EN_H : out STD_LOGIC_VECTOR ( 1 downto 1 ); -- 55 -- 961
        VCC_TCXO_DCS_EN_H : out STD_LOGIC_VECTOR ( 2 downto 2 ); --56 -- 962
        VCC_TCXO_ME_EN_H : out STD_LOGIC_VECTOR ( 3 downto 3 ); -- 57 -- 963
        VCC_DCS_EN_H : out STD_LOGIC_VECTOR ( 4 downto 4 ); -- 58 -- 964
        VCC_ME_L2_EN_H : out STD_LOGIC_VECTOR ( 5 downto 5 ); -- 59 -- 965
        VCC_ME_L1_EN_H : out STD_LOGIC_VECTOR ( 6 downto 6 ); -- 60 -- 966
        
        RESET_N_ME_1 : out STD_LOGIC_VECTOR (7 downto 7); -- 61 -- 967
        RESET_N_ME_2 : out STD_LOGIC_VECTOR (8 downto 8); -- 62 -- 968
        RESET_N_DCS : out STD_LOGIC_VECTOR (9 downto 9); -- 63 -- 969
        SAFEBOOT_N_ME_1 : out STD_LOGIC_VECTOR (10 downto 10); -- 64 -- 970
        SAFEBOOT_N_ME_2 : out STD_LOGIC_VECTOR (11 downto 11); -- 65 -- 971
        SAFEBOOT_N_ME_DCS : out STD_LOGIC_VECTOR (12 downto 12); -- 66 -- 972
                  
        MEASUREMENT_PULSE_ME_1 : in STD_LOGIC_VECTOR (13 downto 13); -- 67 -- 973
        MEASUREMENT_PULSE_ME_2 : in STD_LOGIC_VECTOR (14 downto 14); --68 -- 974
        
        SPI_MISO_DCS : in STD_LOGIC_VECTOR (15 downto 15); -- 69 -- 975
        SPI_MOSI_DCS : out STD_LOGIC_VECTOR (16 downto 16); --70 -- 976
        SPI_SCK_DCS : out STD_LOGIC_VECTOR (17 downto 17); --71  -- 977
        SPI_CS_DCS : out STD_LOGIC_VECTOR (18 downto 18); --72 -- 978
        
        ERROR_N_ME1 : in STD_LOGIC_VECTOR (19 downto 19); --73 -- 979
        ERROR_P_ME1 : in STD_LOGIC_VECTOR (20 downto 20); --74 -- 980
        ERROR_N_ME2 : in STD_LOGIC_VECTOR (21 downto 21); -- 75 -- 981
        ERROR_P_ME2 : in STD_LOGIC_VECTOR (22 downto 22); -- 76 -- 982
        
        TX_READY_ME_1 : in STD_LOGIC_VECTOR (23 downto 23); --78 -- 983
        TX_READY_ME_2 : in STD_LOGIC_VECTOR (24 downto 24) --79 --985
                        
--         SPI_MISO_ME_1 : in STD_LOGIC_VECTOR (25 downto 25); --80 --986
--         SPI_MOSI_ME_1 : out STD_LOGIC_VECTOR (26 downto 26); --81 --987
--         SPI_SCK_ME_1 : out STD_LOGIC_VECTOR (27 downto 27); --82--988
--         SPI_CS_ME_1  : out STD_LOGIC_VECTOR (28 downto 28)  --83 --989
        
    );
end system_top;

architecture structure of system_top is

    component MarsZX3 is
        port (
            DDR_cas_n            : inout std_logic;
            DDR_cke                : inout std_logic;
            DDR_ck_n            : inout std_logic;
            DDR_ck_p            : inout std_logic;
            DDR_cs_n            : inout std_logic;
            DDR_reset_n            : inout std_logic;
            DDR_odt                : inout std_logic;
            DDR_ras_n            : inout std_logic;
            DDR_we_n            : inout std_logic;
            DDR_ba                : inout std_logic_vector ( 2 downto 0 );
            DDR_addr            : inout std_logic_vector ( 14 downto 0 );
            DDR_dm                : inout std_logic_vector ( 3 downto 0 );
            DDR_dq                : inout std_logic_vector ( 31 downto 0 );
            DDR_dqs_n            : inout std_logic_vector ( 3 downto 0 );
            DDR_dqs_p            : inout std_logic_vector ( 3 downto 0 );
            FIXED_IO_mio        : inout std_logic_vector ( 53 downto 0 );
            FIXED_IO_ddr_vrn    : inout std_logic;
            FIXED_IO_ddr_vrp    : inout std_logic;
            FIXED_IO_ps_srstb    : inout std_logic;
            FIXED_IO_ps_clk        : inout std_logic;
            FIXED_IO_ps_porb    : inout std_logic;
            SDIO0_CDN           : in  STD_LOGIC;
            SDIO0_WP            : in  STD_LOGIC;
            gpio_tri_o            : out std_logic_vector ( 7 downto 0 );
            UART_0_txd            : out std_logic;
            UART_0_rxd            : in std_logic;
            
            UART_1_txd            : out std_logic;
            UART_1_rxd            : in std_logic;
            
            IIC_0_sda_i            : in std_logic;
            IIC_0_sda_o            : out std_logic;
            IIC_0_sda_t            : out std_logic;
            IIC_0_scl_i            : in std_logic;
            IIC_0_scl_o            : out std_logic;
            IIC_0_scl_t            : out std_logic;
            RESET_N                : out std_logic;
            FCLK_CLK1            : out std_logic;
            
            SPI_0_sck_o       : out   std_logic;
            SPI_0_io0_o       : out   std_logic;
            SPI_0_io1_i       : in    std_logic;
            SPI_0_ss_o        : out   std_logic;
            SPI_1_sck_o       : out   std_logic;
            SPI_1_io0_o       : out   std_logic;
            SPI_1_io1_i       : in    std_logic;
            SPI_1_ss_o        : out   std_logic;
            
--            GPIO_I : in STD_LOGIC_VECTOR ( 28 downto 0 );
--            GPIO_O : out STD_LOGIC_VECTOR ( 28 downto 0 )

            GPIO_I : in STD_LOGIC_VECTOR ( 24 downto 0 );
            GPIO_O : out STD_LOGIC_VECTOR ( 24 downto 0 )
        );
    end component MarsZX3;
    
    signal spi_0_io0_i : std_logic;
    signal spi_0_io0_o : std_logic;
    signal spi_0_io0_t : std_logic;
    signal spi_0_io1_i : std_logic;
    signal spi_0_io1_o : std_logic;
    signal spi_0_io1_t : std_logic;
    signal spi_0_sck_i : std_logic;
    signal spi_0_sck_o : std_logic;
    signal spi_0_sck_t : std_logic;
    signal spi_0_ss1_o : std_logic;
    signal spi_0_ss2_o : std_logic;
    signal spi_0_ss_i  : std_logic;
    signal spi_0_ss_o  : std_logic;
    signal spi_0_ss_t  : std_logic;
    
    signal spi_1_io0_i : std_logic;
    signal spi_1_io0_o : std_logic;
    signal spi_1_io0_t : std_logic;
    signal spi_1_io1_i : std_logic;
    signal spi_1_io1_o : std_logic;
    signal spi_1_io1_t : std_logic;
    signal spi_1_sck_i : std_logic;
    signal spi_1_sck_o : std_logic;
    signal spi_1_sck_t : std_logic;
    signal spi_1_ss1_o : std_logic;
    signal spi_1_ss2_o : std_logic;
    signal spi_1_ss_i  : std_logic;
    signal spi_1_ss_o  : std_logic;
    signal spi_1_ss_t  : std_logic;
 
    signal IIC_0_sda_i         : std_logic;
    signal IIC_0_sda_o         : std_logic;
    signal IIC_0_sda_t         : std_logic;
    signal IIC_0_scl_i         : std_logic;
    signal IIC_0_scl_o         : std_logic;
    signal IIC_0_scl_t         : std_logic;
    
    signal I2C0_INT_N        : std_logic;

    signal Clk                : std_logic;
    signal Rst                : std_logic := '0';
    signal Rst_N             : std_logic := '1';
    signal ETH_RST            : std_logic := '0';
    
    signal RstCnt            : unsigned (15 downto 0) := (others => '0'); -- 1ms reset for Ethernet PHY
    
    signal LedCount            : unsigned (23 downto 0);
    signal GPIO                : std_logic_vector (7 downto 0);

    signal SDIO0_CDN_s      : std_logic := '0';
    signal SDIO0_WP_s       : std_logic := '1';
    
    
--    signal GPIO_I : STD_LOGIC_VECTOR ( 28 downto 0 );
--    signal GPIO_O : STD_LOGIC_VECTOR ( 28 downto 0 );

    signal GPIO_I : STD_LOGIC_VECTOR ( 24 downto 0 );
   signal GPIO_O : STD_LOGIC_VECTOR ( 24 downto 0 );
    
begin


    ------------------------------------------------------------------------------------------------
    --    Processing System
    ------------------------------------------------------------------------------------------------

    i_system : MarsZX3
        port map (
            DDR_addr            => DDR_addr,
            DDR_ba                => DDR_ba,
            DDR_cas_n            => DDR_cas_n,
            DDR_ck_n            => DDR_ck_n,
            DDR_ck_p            => DDR_ck_p,
            DDR_cke                => DDR_cke,
            DDR_cs_n            => DDR_cs_n,
            DDR_dm                => DDR_dm,
            DDR_dq                => DDR_dq,
            DDR_dqs_n            => DDR_dqs_n,
            DDR_dqs_p            => DDR_dqs_p,
            DDR_odt                => DDR_odt,
            DDR_ras_n            => DDR_ras_n,
            DDR_reset_n            => DDR_reset_n,
            DDR_we_n            => DDR_we_n,
            FCLK_CLK1            => Clk,
            FIXED_IO_ddr_vrn    => FIXED_IO_ddr_vrn,
            FIXED_IO_ddr_vrp    => FIXED_IO_ddr_vrp,
            FIXED_IO_mio        => FIXED_IO_mio,
            FIXED_IO_ps_clk        => FIXED_IO_ps_clk,
            FIXED_IO_ps_porb    => FIXED_IO_ps_porb,
            FIXED_IO_ps_srstb    => FIXED_IO_ps_srstb,
            RESET_N                => Rst_N,
            UART_0_rxd            => UART0_RX,
            UART_0_txd            => UART0_TX,
            
            UART_1_rxd            => UART1_RX,
            UART_1_txd          => UART1_TX,
            
            SDIO0_CDN           => SDIO0_CDN_s,
            SDIO0_WP            => SDIO0_WP_s,
            gpio_tri_o            => GPIO,
            IIC_0_sda_i         => IIC_0_sda_i,
            IIC_0_sda_o          => IIC_0_sda_o,
            IIC_0_sda_t          => IIC_0_sda_t,
            IIC_0_scl_i          => IIC_0_scl_i,
            IIC_0_scl_o          => IIC_0_scl_o,
            IIC_0_scl_t          => IIC_0_scl_t,
                
            SPI_0_SCK_O      => SPI_SCK_ME_1,
            SPI_0_IO0_O      => SPI_MOSI_ME_1,
            SPI_0_IO1_I      => SPI_MISO_ME_1,
            SPI_0_SS_O       => SPI_CS_ME_1,
            
            SPI_1_SCK_O      => SPI_SCK_ME_2,
            SPI_1_IO0_O      => SPI_MOSI_ME_2,
            SPI_1_IO1_I      => SPI_MISO_ME_2,
            SPI_1_SS_O       => SPI_CS_ME_2,
            

             GPIO_I(24 downto 0) => GPIO_I,
             GPIO_O(24 downto 0) => GPIO_O
                  
--            GPIO_I(28 downto 0) => GPIO_I,
--            GPIO_O(28 downto 0) => GPIO_O

        );
        
        VDDIO_EN_H <= GPIO_O(0 downto 0);
        V_ANT_EN_H <= GPIO_O(1 downto 1);
        VCC_TCXO_DCS_EN_H <= GPIO_O(2 downto 2);
        VCC_TCXO_ME_EN_H <= GPIO_O(3 downto 3);
        VCC_DCS_EN_H <= GPIO_O(4 downto 4);
        VCC_ME_L2_EN_H <= GPIO_O(5 downto 5);
        VCC_ME_L1_EN_H <= GPIO_O(6 downto 6);
        
        RESET_N_ME_1 <= GPIO_O(7 downto 7);
        RESET_N_ME_2 <= GPIO_O(8 downto 8);
        RESET_N_DCS <= GPIO_O(9 downto 9);
        SAFEBOOT_N_ME_1 <= GPIO_O(10 downto 10);
        SAFEBOOT_N_ME_2 <= GPIO_O(11 downto 11);
        SAFEBOOT_N_ME_DCS <= GPIO_O(12 downto 12);
    
        
        GPIO_I(15 downto 15) <= SPI_MISO_DCS;
        SPI_MOSI_DCS <= GPIO_O(16 downto 16);
        SPI_SCK_DCS <= GPIO_O(17 downto 17);
        SPI_CS_DCS <= GPIO_O(18 downto 18);
        
        
        GPIO_I(13 downto 13) <= MEASUREMENT_PULSE_ME_1;
        GPIO_I(14 downto 14) <= MEASUREMENT_PULSE_ME_2;
        
        GPIO_I(19 downto 19) <= ERROR_N_ME1;
        GPIO_I(20 downto 20) <= ERROR_P_ME1;
        GPIO_I(21 downto 21) <= ERROR_N_ME2;
        GPIO_I(22 downto 22) <= ERROR_P_ME2;
        
        GPIO_I(23 downto 23) <= TX_READY_ME_1;
        GPIO_I(24 downto 24) <= TX_READY_ME_2;
        
--        GPIO_I(25 downto 25) <= SPI_MISO_ME_1;
--        SPI_MOSI_ME_1 <= GPIO_O(26 downto 26);
--        SPI_SCK_ME_1 <= GPIO_O(27 downto 27);
--        SPI_CS_ME_1 <= GPIO_O(28 downto 28);
        

    -- supply voltage for thh DDR3 memory
    DDR3_VSEL       <= '0'; -- 1.35V
--  DDR3_VSEL       <= 'Z'; -- 1.5V

    -- tristate buffer
    I2C0_SDA    <= IIC_0_sda_o when IIC_0_sda_t = '0' else 'Z';
    IIC_0_sda_i <= I2C0_SDA;
    I2C0_SCL    <= IIC_0_scl_o when IIC_0_scl_t = '0' else 'Z';
    IIC_0_scl_i <= I2C0_SCL;

    ------------------------------------------------------------------------------------------------
    -- I2C INT inversion
    ------------------------------------------------------------------------------------------------
    I2C0_INT_N <= I2C0_INT_N_pin when Rev5 = '0' else not(I2C0_INT_N_pin);

    ------------------------------------------------------------------------------------------------
    --    Clock and Reset
    ------------------------------------------------------------------------------------------------
       
    --  reset 1ms reset for Ethernet PHY
       process (Clk)
       begin
        if rising_edge (Clk) then
               if (not RstCnt) = 0 then
                   Rst            <= '0';
               else
                   Rst            <= '1';
                   RstCnt        <= RstCnt + 1;
               end if;
           end if;
       end process;

    ETH_RST_N <= '0' when Rst = '1' else 'Z';
    USB_RST_N <= '0' when Rst = '1' else 'Z';
    
    ------------------------------------------------------------------------------------------------
    -- Blinking LED counter
    ------------------------------------------------------------------------------------------------
   
    process (Clk)
    begin
        if rising_edge (Clk) then
            if Rst = '1' then
                LedCount    <= (others => '0');
            else
                LedCount <= LedCount + 1;
            end if;
        end if;
    end process;
    

    Led_N(3) <= not LedCount(23);
    Led_N(2) <= not GPIO(2);
    Led_N(1) <= not GPIO(1);
    Led_N(0) <= not GPIO(0);


    ------------------------------------------------------------------------------------------------
    -- Unused pins are set to high impedance in the constraints
    ------------------------------------------------------------------------------------------------
end architecture structure;

_BD.png
Schematics.png
elaborated_design.png
0 Kudos