Line 54... |
Line 54... |
-- /* 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;
|
symbolsPerTransfer:in t_cnt;
|
outstandingTransactions:buffer t_cnt;
|
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 74... |
Line 74... |
signal i_writeRequest:t_bfm:=((others=>'0'),(others=>'0'),false);
|
signal i_writeRequest:t_bfm:=((others=>'0'),(others=>'0'),false);
|
|
|
signal i_readResponse,i_writeResponse:t_bfm;
|
signal i_readResponse,i_writeResponse:t_bfm;
|
|
|
begin
|
begin
|
/* Transaction counter. */
|
|
process(n_areset,symbolsPerTransfer,aclk) is begin
|
|
--if not n_areset then outstandingTransactions<=symbolsPerTransfer;
|
|
if falling_edge(aclk) then
|
|
/* Use synchronous reset for outstandingTransactions to meet timing because it is a huge register set. */
|
|
if not n_areset then outstandingTransactions<=symbolsPerTransfer;
|
|
else
|
|
if outstandingTransactions<1 then
|
|
outstandingTransactions<=symbolsPerTransfer;
|
|
report "No more pending transactions." severity note;
|
|
elsif axiMaster_in.tReady then outstandingTransactions<=outstandingTransactions-1;
|
|
end if;
|
|
end if;
|
|
end if;
|
|
end process;
|
|
|
|
/* next-state logic for AXI4-Stream Master Tx BFM. */
|
/* next-state logic for AXI4-Stream Master Tx BFM. */
|
axi_bfmTx_ns: process(all) is begin
|
axi_bfmTx_ns: process(all) is begin
|
axiTxState<=next_axiTxState;
|
axiTxState<=next_axiTxState;
|
|
|
if not n_areset then axiTxState<=idle;
|
if not n_areset then axiTxState<=idle;
|