diff --git a/designs/vivado/scalp_firmware/2020.2/src/hdl/scalp_firmware.vhd b/designs/vivado/scalp_firmware/2020.2/src/hdl/scalp_firmware.vhd index fea8251cab004a136f6e3606176b1d36f568d35f..cfb395dbaf27700b1fd0df50f4000184b8a21d2d 100644 --- a/designs/vivado/scalp_firmware/2020.2/src/hdl/scalp_firmware.vhd +++ b/designs/vivado/scalp_firmware/2020.2/src/hdl/scalp_firmware.vhd @@ -15,7 +15,7 @@ -- Tool version: 2020.2 -- Description: scalp_firmware -- --- Last update: 2021-05-05 +-- Last update: 2021-05-06 -- --------------------------------------------------------------------------------- @@ -535,38 +535,38 @@ architecture arch of scalp_firmware is attribute mark_debug of TXAxism2sVectorxD : signal is "true"; attribute keep of TXAxism2sVectorxD : signal is "true"; -- Scalp Aurora PHY Ready -> TX Side - attribute mark_debug of NorthTXM2SxD : signal is "true"; - attribute keep of NorthTXM2SxD : signal is "true"; - attribute mark_debug of NorthTXS2MxD : signal is "true"; - attribute keep of NorthTXS2MxD : signal is "true"; - attribute mark_debug of EastTXM2SxD : signal is "true"; - attribute keep of EastTXM2SxD : signal is "true"; - attribute mark_debug of EastTXS2MxD : signal is "true"; - attribute keep of EastTXS2MxD : signal is "true"; - attribute mark_debug of SouthTXM2SxD : signal is "true"; - attribute keep of SouthTXM2SxD : signal is "true"; - attribute mark_debug of SouthTXS2MxD : signal is "true"; - attribute keep of SouthTXS2MxD : signal is "true"; - attribute mark_debug of WestTXM2SxD : signal is "true"; - attribute keep of WestTXM2SxD : signal is "true"; - attribute mark_debug of WestTXS2MxD : signal is "true"; - attribute keep of WestTXS2MxD : signal is "true"; - attribute mark_debug of NorthRXM2SxD : signal is "true"; - attribute keep of NorthRXM2SxD : signal is "true"; - attribute mark_debug of NorthRXS2MxD : signal is "true"; - attribute keep of NorthRXS2MxD : signal is "true"; - attribute mark_debug of EastRXM2SxD : signal is "true"; - attribute keep of EastRXM2SxD : signal is "true"; - attribute mark_debug of EastRXS2MxD : signal is "true"; - attribute keep of EastRXS2MxD : signal is "true"; - attribute mark_debug of SouthRXM2SxD : signal is "true"; - attribute keep of SouthRXM2SxD : signal is "true"; - attribute mark_debug of SouthRXS2MxD : signal is "true"; - attribute keep of SouthRXS2MxD : signal is "true"; - attribute mark_debug of WestRXM2SxD : signal is "true"; - attribute keep of WestRXM2SxD : signal is "true"; - attribute mark_debug of WestRXS2MxD : signal is "true"; - attribute keep of WestRXS2MxD : signal is "true"; + -- attribute mark_debug of NorthTXM2SxD : signal is "true"; + -- attribute keep of NorthTXM2SxD : signal is "true"; + -- attribute mark_debug of NorthTXS2MxD : signal is "true"; + -- attribute keep of NorthTXS2MxD : signal is "true"; + -- attribute mark_debug of EastTXM2SxD : signal is "true"; + -- attribute keep of EastTXM2SxD : signal is "true"; + -- attribute mark_debug of EastTXS2MxD : signal is "true"; + -- attribute keep of EastTXS2MxD : signal is "true"; + -- attribute mark_debug of SouthTXM2SxD : signal is "true"; + -- attribute keep of SouthTXM2SxD : signal is "true"; + -- attribute mark_debug of SouthTXS2MxD : signal is "true"; + -- attribute keep of SouthTXS2MxD : signal is "true"; + -- attribute mark_debug of WestTXM2SxD : signal is "true"; + -- attribute keep of WestTXM2SxD : signal is "true"; + -- attribute mark_debug of WestTXS2MxD : signal is "true"; + -- attribute keep of WestTXS2MxD : signal is "true"; + -- attribute mark_debug of NorthRXM2SxD : signal is "true"; + -- attribute keep of NorthRXM2SxD : signal is "true"; + -- attribute mark_debug of NorthRXS2MxD : signal is "true"; + -- attribute keep of NorthRXS2MxD : signal is "true"; + -- attribute mark_debug of EastRXM2SxD : signal is "true"; + -- attribute keep of EastRXM2SxD : signal is "true"; + -- attribute mark_debug of EastRXS2MxD : signal is "true"; + -- attribute keep of EastRXS2MxD : signal is "true"; + -- attribute mark_debug of SouthRXM2SxD : signal is "true"; + -- attribute keep of SouthRXM2SxD : signal is "true"; + -- attribute mark_debug of SouthRXS2MxD : signal is "true"; + -- attribute keep of SouthRXS2MxD : signal is "true"; + -- attribute mark_debug of WestRXM2SxD : signal is "true"; + -- attribute keep of WestRXM2SxD : signal is "true"; + -- attribute mark_debug of WestRXS2MxD : signal is "true"; + -- attribute keep of WestRXS2MxD : signal is "true"; begin @@ -891,7 +891,9 @@ begin (WordxD => std_ulogic_vector(to_unsigned(16#02334455#, (C_BYTE_SIZE * 4))), IdxD => 7)); - type t_write_sp_states is (E_WR_SP_IDLE, E_WR_SP_VALID, E_WR_SP_WAIT); + -- type t_write_sp_states is (E_WR_SP_IDLE, E_WR_SP_VALID, E_WR_SP_WAIT); + + type t_write_sp_states is (E_WR_SP_IDLE_0, E_WR_SP_VALID_0, E_WR_SP_WAIT_0, E_WR_SP_IDLE_1, E_WR_SP_VALID_1, E_WR_SP_WAIT_1); signal ScalpRouterResetxRNA : std_ulogic := '0'; -- Scalp Packets @@ -914,8 +916,8 @@ begin signal WrSPStatexDN : t_write_sp_states := E_WR_SP_IDLE; signal VioWrSpValidxS : std_ulogic := '0'; -- Scalp Packet - attribute mark_debug of ScalpPacket0xD : signal is "true"; - attribute keep of ScalpPacket0xD : signal is "true"; + -- attribute mark_debug of ScalpPacket0xD : signal is "true"; + -- attribute keep of ScalpPacket0xD : signal is "true"; attribute mark_debug of ScalpPacketValid12xS : signal is "true"; attribute keep of ScalpPacketValid12xS : signal is "true"; -- VIO @@ -1141,7 +1143,7 @@ begin ScalpRouterResetxRNA) is begin -- process UpdateRegxP if ScalpRouterResetxRNA = '0' then - WrSPStatexDP <= E_WR_SP_IDLE; + WrSPStatexDP <= E_WR_SP_IDLE_0; elsif rising_edge(AuroraClkMasterxC.UserClkxC) then WrSPStatexDP <= WrSPStatexDN; end if; @@ -1154,18 +1156,32 @@ begin ScalpPacketValid12xS <= '0'; case WrSPStatexDP is - when E_WR_SP_IDLE => + when E_WR_SP_IDLE_0 => if VioWrSpValidxS = '1' then ScalpPacketValid12xS <= '1'; - WrSPStatexDN <= E_WR_SP_VALID; + WrSPStatexDN <= E_WR_SP_VALID_0; end if; - when E_WR_SP_VALID => + when E_WR_SP_VALID_0 => ScalpPacketValid12xS <= '0'; - WrSPStatexDN <= E_WR_SP_WAIT; - when E_WR_SP_WAIT => + WrSPStatexDN <= E_WR_SP_WAIT_0; + when E_WR_SP_WAIT_0 => + WrSPStatexDN <= E_WR_SP_IDLE_1; + + when E_WR_SP_IDLE_1 => + ScalpPacketValid12xS <= '1'; + WrSPStatexDN <= E_WR_SP_VALID_1; + + when E_WR_SP_VALID_1 => + ScalpPacketValid12xS <= '0'; + WrSPStatexDN <= E_WR_SP_WAIT_1; + + when E_WR_SP_WAIT_1 => if VioWrSpValidxS = '0' then - WrSPStatexDN <= E_WR_SP_IDLE; + WrSPStatexDN <= E_WR_SP_IDLE_0; end if; + -- if VioWrSpValidxS = '0' then + -- WrSPStatexDN <= E_WR_SP_IDLE; + -- end if; when others => null; end case; end process SpValidxP;