60 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
| LIBRARY ieee;
 | |
|   USE ieee.std_logic_1164.all;
 | |
| 
 | |
| PACKAGE ahbLite IS
 | |
|   ------------------------------------------------------------------------------
 | |
|                                                          -- bus components sizes
 | |
|   constant ahbAddressBitNb  : positive := 16;
 | |
|   constant ahbDataBitNb     : positive := 16;
 | |
|   constant ahbSlaveNb       : positive := 16;
 | |
| 
 | |
|   constant ahbTransBitNb    : positive := 2;
 | |
|   constant ahbSizeBitNb     : positive := 1;
 | |
|   constant ahbBurstBitNb    : positive := 3;
 | |
|   constant ahbProtBitNb     : positive := 4;
 | |
| 
 | |
|   ------------------------------------------------------------------------------
 | |
|                                                          -- bus data vector type
 | |
|   subtype ahbDataType is std_logic_vector(ahbDataBitNb-1 downto 0);
 | |
|   type ahbDataVector is array(1 to ahbSlaveNb) of ahbDataType;
 | |
| 
 | |
|   ------------------------------------------------------------------------------
 | |
|                                                               -- address decoder
 | |
|   type ahbMemoryLocationType is
 | |
|     record
 | |
|       baseAddress: natural;
 | |
|       addressMask: natural;
 | |
|     end record;
 | |
|   type ahbMemoryLocationVector is array(1 to ahbSlaveNb) of ahbMemoryLocationType;
 | |
| 
 | |
|   ------------------------------------------------------------------------------
 | |
|                                                                   -- bus signals
 | |
|   subtype transferType is std_ulogic_vector(ahbTransBitNb-1 downto 0);
 | |
|   constant transIdle  : transferType := "00";
 | |
|   constant transBusy  : transferType := "01";
 | |
|   constant transNonSeq: transferType := "10";
 | |
|   constant transSeq   : transferType := "11";
 | |
| 
 | |
|   subtype transferSizeType is std_ulogic_vector(ahbSizeBitNb-1 downto 0);
 | |
|   constant size8   : transferSizeType := "0";
 | |
|   constant size16  : transferSizeType := "1";
 | |
| 
 | |
|   subtype burstType is std_ulogic_vector(ahbBurstBitNb-1 downto 0);
 | |
|   constant burstSingle : burstType := "000";
 | |
|   constant burstIncr   : burstType := "001";
 | |
|   constant burstWrap4  : burstType := "010";
 | |
|   constant burstIncr4  : burstType := "011";
 | |
|   constant burstWrap8  : burstType := "100";
 | |
|   constant burstIncr8  : burstType := "101";
 | |
|   constant burstWrap16 : burstType := "110";
 | |
|   constant burstIncr16 : burstType := "111";
 | |
| 
 | |
|   subtype protectionType is std_ulogic_vector(ahbProtBitNb-1 downto 0);
 | |
|   constant protDefault : protectionType := "0011";
 | |
| 
 | |
|   ------------------------------------------------------------------------------
 | |
|                                                                          -- log2
 | |
|   function addressBitNb (addressNb : natural) return natural;
 | |
| 
 | |
| END ahbLite;
 |