Line 53... |
Line 53... |
|
|
-- /* AXI Slave interface */
|
-- /* AXI Slave interface */
|
-- axiSlave_in:in tAxi4Transactor_m2s;
|
-- axiSlave_in:in tAxi4Transactor_m2s;
|
-- axiSlave_out:buffer tAxi4Transactor_s2m;
|
-- axiSlave_out:buffer tAxi4Transactor_s2m;
|
|
|
symbolsPerTransfer:in t_cnt;
|
lastTransaction:in boolean;
|
outstandingTransactions:in t_cnt;
|
|
|
|
/* Debug ports. */
|
/* Debug ports. */
|
-- dbg_cnt:out unsigned(9 downto 0);
|
-- dbg_cnt:out unsigned(9 downto 0);
|
-- dbg_axiRxFsm:out axiBfmStatesRx:=idle;
|
-- dbg_axiRxFsm:out axiBfmStatesRx:=idle;
|
dbg_axiTxFsm:out axiBfmStatesTx:=idle
|
dbg_axiTxFsm:out axiBfmStatesTx:=idle
|
Line 89... |
Line 88... |
else
|
else
|
case next_axiTxState is
|
case next_axiTxState is
|
when idle=>
|
when idle=>
|
if i_trigger then axiTxState<=payload; end if;
|
if i_trigger then axiTxState<=payload; end if;
|
when payload=>
|
when payload=>
|
if outstandingTransactions<1 then axiTxState<=endOfTx; end if;
|
if lastTransaction then axiTxState<=endOfTx; end if;
|
when endOfTx=>
|
when endOfTx=>
|
axiTxState<=idle;
|
axiTxState<=idle;
|
when others=>axiTxState<=idle;
|
when others=>axiTxState<=idle;
|
end case;
|
end case;
|
end if;
|
end if;
|
Line 101... |
Line 100... |
|
|
/* output logic for AXI4-Stream Master Tx BFM. */
|
/* output logic for AXI4-Stream Master Tx BFM. */
|
axi_bfmTx_op: process(all) is begin
|
axi_bfmTx_op: process(all) is begin
|
i_writeResponse<=writeResponse;
|
i_writeResponse<=writeResponse;
|
|
|
i_axiMaster_out.tValid<=false;
|
i_axiMaster_out<=axiMaster_out;
|
i_axiMaster_out.tLast<=false;
|
i_axiMaster_out.tLast<=false;
|
i_axiMaster_out.tData<=(others=>'Z');
|
|
i_writeResponse.trigger<=false;
|
i_writeResponse.trigger<=false;
|
|
|
case next_axiTxState is
|
case next_axiTxState is
|
when idle=>
|
when idle=>
|
|
i_axiMaster_out.tValid<=false;
|
|
i_axiMaster_out.tData<=(others=>'Z');
|
|
|
if i_trigger then
|
if i_trigger then
|
i_axiMaster_out.tData<=writeRequest.message;
|
i_axiMaster_out.tData<=writeRequest.message;
|
i_axiMaster_out.tValid<=true;
|
i_axiMaster_out.tValid<=true;
|
end if;
|
end if;
|
when payload=>
|
when payload | endOfTx =>
|
|
if i_trigger then
|
i_axiMaster_out.tData<=writeRequest.message;
|
i_axiMaster_out.tData<=writeRequest.message;
|
i_axiMaster_out.tValid<=true;
|
i_axiMaster_out.tValid<=true;
|
|
end if;
|
|
|
if axiMaster_in.tReady then
|
if axiMaster_in.tReady then
|
i_writeResponse.trigger<=true;
|
i_writeResponse.trigger<=true;
|
end if;
|
end if;
|
|
|
if outstandingTransactions<1 then i_axiMaster_out.tLast<=true; end if;
|
if lastTransaction then i_axiMaster_out.tLast<=true; end if;
|
when others=> null;
|
when others=> null;
|
end case;
|
end case;
|
end process axi_bfmTx_op;
|
end process axi_bfmTx_op;
|
|
|
/* state registers and pipelines for AXI4-Stream Tx BFM. */
|
/* state registers and pipelines for AXI4-Stream Tx BFM. */
|