OpenCores
URL https://opencores.org/ocsvn/axi4_tlm_bfm/axi4_tlm_bfm/trunk

Subversion Repositories axi4_tlm_bfm

[/] [axi4_tlm_bfm/] [trunk/] [rtl/] [quartus-synthesis/] [axi4-stream-bfm-master.vhdl] - Diff between revs 13 and 14

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 13 Rev 14
Line 76... Line 76...
        signal i_readResponse,i_writeResponse:t_bfm;
        signal i_readResponse,i_writeResponse:t_bfm;
 
 
begin
begin
        /* Transaction counter. */
        /* Transaction counter. */
        process(n_areset,symbolsPerTransfer,aclk) is begin
        process(n_areset,symbolsPerTransfer,aclk) is begin
                /* Using synchronous reset will meet timing. However, because outstandingTransactions is a huge
                --if not n_areset then outstandingTransactions<=symbolsPerTransfer;
                        register set, using asynchronous reset will violate timing.
                if falling_edge(aclk) then
                        FIXME Try and close timing even with asynchronous reset applied on outstandingTransactions.
                        /* Use synchronous reset for outstandingTransactions to meet timing because it is a huge register set. */
                                Using asynchronous reset will help to lower power.
 
                */
 
                if not n_areset then outstandingTransactions<=symbolsPerTransfer;
                if not n_areset then outstandingTransactions<=symbolsPerTransfer;
                elsif falling_edge(aclk) then
                        else
                        if outstandingTransactions<1 then
                        if outstandingTransactions<1 then
                                outstandingTransactions<=symbolsPerTransfer;
                                outstandingTransactions<=symbolsPerTransfer;
                                report "No more pending transactions." severity note;
                                report "No more pending transactions." severity note;
                        elsif axiMaster_in.tReady then outstandingTransactions<=outstandingTransactions-1;
                        elsif axiMaster_in.tReady then outstandingTransactions<=outstandingTransactions-1;
                        end if;
                        end if;
                end if;
                end if;
 
                end if;
        end process;
        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;
Line 123... Line 122...
                if writeRequest.trigger xor i_writeRequest.trigger then
                if writeRequest.trigger xor i_writeRequest.trigger then
                        axiMaster_out.tData<=writeRequest.message;
                        axiMaster_out.tData<=writeRequest.message;
                        axiMaster_out.tValid<=true;
                        axiMaster_out.tValid<=true;
                end if;
                end if;
 
 
 
                if not n_areset then axiMaster_out.tData<=(others=>'Z');
 
                else
                case next_axiTxState is
                case next_axiTxState is
                        when payload=>
                        when payload=>
                                axiMaster_out.tData<=writeRequest.message;
                                axiMaster_out.tData<=writeRequest.message;
                                axiMaster_out.tValid<=true;
                                axiMaster_out.tValid<=true;
 
 
Line 136... Line 137...
 
 
                                /* TODO change to a flag at user.vhdl. Move outstandingTransactions to user.vhdl. */
                                /* TODO change to a flag at user.vhdl. Move outstandingTransactions to user.vhdl. */
                                if outstandingTransactions<1 then axiMaster_out.tLast<=true; end if;
                                if outstandingTransactions<1 then axiMaster_out.tLast<=true; end if;
                        when others=> null;
                        when others=> null;
                end case;
                end case;
 
                end if;
        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. */
        process(n_areset,aclk) is begin
        process(n_areset,aclk) is begin
                if falling_edge(aclk) then
                if falling_edge(aclk) then

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.