Topic: Adding New Module with registers to existing star [sip_fmc30rf]  (Read 2777 times)

kcfarleyswmacb December 05, 2013, 02:12 PM

  • Member
  • *
  • Posts: 45
4DSP Support:
1) I added a new component to fmc30rf_if that has a command interface and registers.
2) It should fit in to existing register space of 4096.
3) I also modified NB_CMD_BUS to be increased by 1.
4) I wired my new component using additional cmd in bus and following fmc30rf_ctrl as an example.

I can’t seem to access these new registers.
What else do I need to do? What are the steps to adding a component with regsters/command interface into existing star ?
Are there any other files that need to be modified?

fmc30rf_if.vhd
constant NB_CMD_BUS : integer := 9+1; --Number of local command busses
constant START_ADDR_MY_NEW        : std_logic_vector(27 downto 0) := START_ADDR + x"0000080";
constant STOP_ADDR_NY_NEW          : std_logic_vector(27 downto 0) := START_ADDR + x"000008F";
----------------------------------------------------------------------------------------------------
-- Constant declaration
----------------------------------------------------------------------------------------------------
constant START_ADDR_FMC30RF_CTRL    : std_logic_vector(27 downto 0) := START_ADDR + x"0000000";
constant STOP_ADDR_FMC30RF_CTRL     : std_logic_vector(27 downto 0) := START_ADDR + x"000000F";
constant START_ADDR_AFE7225_PHY     : std_logic_vector(27 downto 0) := START_ADDR + x"0000010";
constant STOP_ADDR_AFE7225_PHY      : std_logic_vector(27 downto 0) := START_ADDR + x"000001F";
constant START_ADDR_CDCE62005_CTRL  : std_logic_vector(27 downto 0) := START_ADDR + x"0000020";
constant STOP_ADDR_CDCE62005_CTRL   : std_logic_vector(27 downto 0) := START_ADDR + x"000002F";
constant START_ADDR_TRF3765_CTRL    : std_logic_vector(27 downto 0) := START_ADDR + x"0000030";
constant STOP_ADDR_TRF3765_CTRL     : std_logic_vector(27 downto 0) := START_ADDR + x"000003F";
constant START_ADDR_TRF3711_CTRL    : std_logic_vector(27 downto 0) := START_ADDR + x"0000040";
constant STOP_ADDR_TRF3711_CTRL     : std_logic_vector(27 downto 0) := START_ADDR + x"000004F";
constant START_ADDR_TRF3720_CTRL    : std_logic_vector(27 downto 0) := START_ADDR + x"0000050";
constant STOP_ADDR_TRF3720_CTRL     : std_logic_vector(27 downto 0) := START_ADDR + x"000005F";
constant START_ADDR_AFE7225_CTRL    : std_logic_vector(27 downto 0) := START_ADDR + x"0000100";
constant STOP_ADDR_AFE7225_CTRL     : std_logic_vector(27 downto 0) := START_ADDR + x"00004FF";
constant START_ADDR_AMC7823_CTRL    : std_logic_vector(27 downto 0) := START_ADDR + x"0000500";
constant STOP_ADDR_AMC7823_CTRL     : std_logic_vector(27 downto 0) := START_ADDR + x"0000820";
constant START_ADDR_FREQ_CNT        : std_logic_vector(27 downto 0) := START_ADDR + x"0000060";
constant STOP_ADDR_FREQ_CNT         : std_logic_vector(27 downto 0) := START_ADDR + x"0000061";
 

 

arnaudNL December 06, 2013, 07:15 AM (#1)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 7110
Dear Sir,


The way I would do it is to take the default reference design and instantiate FMC30RF star twice, "AS-IS". Then I would modify the cid_package.vhd file to map other addresses to this new instance (this file is created by StellarIP and has BAR addresses of all the stars). You would do is modify the UCF to map the second instance to physical pin. Modify the data routers so they can have more wormhole and connect the new instance to the modified data routers.


The only thing I don't see in your post is modification of cid_package.vhd (in sip_cid). This dictates where the star are mapped in a constellation point of view.


Best Regards,
Arnaud