From d13b922d25f2dc5100ad645adc881ea0c940b92b Mon Sep 17 00:00:00 2001 From: "Christian, Glenn (DLSLtd,RAL,LSCI)" Date: Wed, 22 May 2024 18:31:57 +0100 Subject: [PATCH] Add FMC_PRSNT unsupported status for targets without physical pin --- common/hdl/defines/interface_types.vhd | 4 ++-- modules/fmc_24vio/fmc_24vio.block.ini | 10 ++++++++-- modules/fmc_24vio/hdl/fmc_24vio_wrapper.vhd | 2 +- modules/fmc_loopback/fmc_loopback.block.ini | 5 ++++- modules/fmc_loopback/hdl/fmc_loopback_wrapper.vhd | 2 +- targets/PandABox/hdl/PandABox_top.vhd | 2 +- targets/ZedBoard/hdl/ZedBoard_top.vhd | 2 +- targets/xu5_st1/hdl/xu5_st1_top.vhd | 1 + 8 files changed, 19 insertions(+), 9 deletions(-) diff --git a/common/hdl/defines/interface_types.vhd b/common/hdl/defines/interface_types.vhd index c279ce47a..427e631b4 100644 --- a/common/hdl/defines/interface_types.vhd +++ b/common/hdl/defines/interface_types.vhd @@ -7,7 +7,7 @@ package interface_types is type FMC_interface is record - FMC_PRSNT : std_logic; + FMC_PRSNT : std_logic_vector(1 downto 0); FMC_LA_P : std_logic_vector(33 downto 0); FMC_LA_N : std_logic_vector(33 downto 0); FMC_CLK0_M2C_P : std_logic; @@ -86,7 +86,7 @@ end; package body interface_types is - constant FMC_init : FMC_interface := ( FMC_PRSNT => '0', + constant FMC_init : FMC_interface := ( FMC_PRSNT => "00", FMC_LA_P => (others => 'Z'), FMC_LA_N => (others => 'Z'), FMC_CLK0_M2C_P => 'Z', diff --git a/modules/fmc_24vio/fmc_24vio.block.ini b/modules/fmc_24vio/fmc_24vio.block.ini index a72ed6ee4..266d6c3b9 100644 --- a/modules/fmc_24vio/fmc_24vio.block.ini +++ b/modules/fmc_24vio/fmc_24vio.block.ini @@ -7,8 +7,11 @@ constraints: const/fmc_24vio_impl.xdc block_suffixes: IN OUT [IN.FMC_PRSNT] -type: read +type: read enum description: FMC present +0: FMC Connected +1: FMC Disconnected +2: FMC_PRSNT not supported [IN.VTSEL] type: param enum @@ -61,8 +64,11 @@ type: read description: Input Voltage and Temp Alarm (Active Low) [OUT.FMC_PRSNT] -type: read +type: read enum description: FMC present +0: FMC Connected +1: FMC Disconnected +2: FMC_PRSNT not supported [OUT.VAL1] type: bit_mux diff --git a/modules/fmc_24vio/hdl/fmc_24vio_wrapper.vhd b/modules/fmc_24vio/hdl/fmc_24vio_wrapper.vhd index 86514f040..b513dca4b 100644 --- a/modules/fmc_24vio/hdl/fmc_24vio_wrapper.vhd +++ b/modules/fmc_24vio/hdl/fmc_24vio_wrapper.vhd @@ -78,7 +78,7 @@ begin --------------------------------------------------------------------------- -- FMC CSR Interface --------------------------------------------------------------------------- -FMC_PRSNT_DW <= ZEROS(31) & FMC.FMC_PRSNT; +FMC_PRSNT_DW <= ZEROS(30) & FMC.FMC_PRSNT; fmc_ctrl : entity work.fmc_24vio_ctrl port map ( diff --git a/modules/fmc_loopback/fmc_loopback.block.ini b/modules/fmc_loopback/fmc_loopback.block.ini index 2b3caf874..348d166f2 100644 --- a/modules/fmc_loopback/fmc_loopback.block.ini +++ b/modules/fmc_loopback/fmc_loopback.block.ini @@ -11,8 +11,11 @@ type: param description: Loopback toggle period for IO [FMC_PRSNT] -type: read +type: read enum description: FMC present +0: FMC Connected +1: FMC Disconnected +2: FMC_PRSNT not supported [LA_P_ERROR] type: read diff --git a/modules/fmc_loopback/hdl/fmc_loopback_wrapper.vhd b/modules/fmc_loopback/hdl/fmc_loopback_wrapper.vhd index 0fbc1c275..e16a0e0dc 100644 --- a/modules/fmc_loopback/hdl/fmc_loopback_wrapper.vhd +++ b/modules/fmc_loopback/hdl/fmc_loopback_wrapper.vhd @@ -170,7 +170,7 @@ port map ( --------------------------------------------------------------------------- -- FMC CSR Interface --------------------------------------------------------------------------- -FMC_PRSNT_DW <= ZEROS(31) & FMC.FMC_PRSNT; +FMC_PRSNT_DW <= ZEROS(30) & FMC.FMC_PRSNT; fmc_ctrl : entity work.fmc_loopback_ctrl port map ( diff --git a/targets/PandABox/hdl/PandABox_top.vhd b/targets/PandABox/hdl/PandABox_top.vhd index 37a434dba..4be04f4c4 100644 --- a/targets/PandABox/hdl/PandABox_top.vhd +++ b/targets/PandABox/hdl/PandABox_top.vhd @@ -805,7 +805,7 @@ pos_bus(POS_BUS_SIZE-1 downto 0) <= inenc_val; -- Assemble FMC records FMC_gen: for I in 0 to NUM_FMC-1 generate - FMC.FMC_ARR(I).FMC_PRSNT <= FMC_PRSNT(I); + FMC.FMC_ARR(I).FMC_PRSNT <= '0' & FMC_PRSNT(I); FMC.FMC_ARR(I).FMC_LA_P <= FMC_LA_P(I); FMC.FMC_ARR(I).FMC_LA_N <= FMC_LA_N(I); FMC.FMC_ARR(I).FMC_CLK0_M2C_P <= FMC_CLK0_M2C_P(I); diff --git a/targets/ZedBoard/hdl/ZedBoard_top.vhd b/targets/ZedBoard/hdl/ZedBoard_top.vhd index 47654bdd5..30a26debc 100644 --- a/targets/ZedBoard/hdl/ZedBoard_top.vhd +++ b/targets/ZedBoard/hdl/ZedBoard_top.vhd @@ -590,7 +590,7 @@ bit_bus(BIT_BUS_SIZE-1 downto 0 ) <= pcap_active; -- Assemble FMC records FMC_gen: for I in 0 to NUM_FMC-1 generate - FMC.FMC_ARR(I).FMC_PRSNT <= FMC_PRSNT(I); + FMC.FMC_ARR(I).FMC_PRSNT <= '0' & FMC_PRSNT(I); FMC.FMC_ARR(I).FMC_LA_P <= FMC_LA_P(I); FMC.FMC_ARR(I).FMC_LA_N <= FMC_LA_N(I); FMC.FMC_ARR(I).FMC_CLK0_M2C_P <= FMC_CLK0_M2C_P(I); diff --git a/targets/xu5_st1/hdl/xu5_st1_top.vhd b/targets/xu5_st1/hdl/xu5_st1_top.vhd index f2b8b338a..bce296ff9 100644 --- a/targets/xu5_st1/hdl/xu5_st1_top.vhd +++ b/targets/xu5_st1/hdl/xu5_st1_top.vhd @@ -485,6 +485,7 @@ bit_bus(BIT_BUS_SIZE-1 downto 0 ) <= pcap_active & ttlin_val; -- Assemble FMC records FMC_gen: for I in 0 to NUM_FMC-1 generate + FMC.FMC_ARR(I).FMC_PRSNT <= "10"; FMC.FMC_ARR(I).FMC_LA_P <= FMC_LA_P(I); FMC.FMC_ARR(I).FMC_LA_N <= FMC_LA_N(I); FMC.FMC_ARR(I).FMC_CLK0_M2C_P <= FMC_CLK0_M2C_P(I);