50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
| LIBRARY Common_test;
 | |
|   USE Common_test.testUtils.all;
 | |
| 
 | |
| ARCHITECTURE RTL OF uvmAhbMonitor IS
 | |
| 
 | |
|   signal addressReg: unsigned(hAddr'range);
 | |
|   signal writeReg: std_ulogic;
 | |
|   signal readReg: std_ulogic;
 | |
| 
 | |
| BEGIN
 | |
|   ------------------------------------------------------------------------------
 | |
|                                                 -- register address and controls
 | |
|   storeControls: process(hReset_n, hClk)
 | |
|   begin
 | |
|     if not(hReset_n) = '1' then
 | |
|       addressReg <= (others => '0');
 | |
|       writeReg <= '0';
 | |
|       readReg <= '0';
 | |
|     elsif rising_edge(hClk) then
 | |
|       writeReg <= '0';
 | |
|       readReg <= '0';
 | |
|       if (hSel = '1') and (hTrans = transNonSeq) then
 | |
|         addressReg <= hAddr(addressReg'range);
 | |
|         writeReg <= hWrite;
 | |
|         readReg <= not hWrite;
 | |
|       end if;
 | |
|     end if;
 | |
|   end process storeControls;
 | |
|                                                               -- monitor acesses
 | |
|   reportBusAccess: process(hReset_n, hClk)
 | |
|   begin
 | |
|     if not(hReset_n) = '1' then
 | |
|       monitorTransaction <= pad( false, ' ', monitorTransaction'length, "idle");
 | |
|     elsif rising_edge(hClk) then
 | |
|       if readReg = '1' then
 | |
|         monitorTransaction <= pad(
 | |
|           false, ' ', monitorTransaction'length,
 | |
|           "read " & sprintf("%04X", addressReg) & ' ' & sprintf("%04X", hRData)
 | |
|         );
 | |
|       elsif writeReg = '1' then
 | |
|         monitorTransaction <= pad(
 | |
|           false, ' ', monitorTransaction'length,
 | |
|           "written " & sprintf("%04X", addressReg) & ' ' & sprintf("%04X", hWData)
 | |
|         );
 | |
|       end if;
 | |
|     end if;
 | |
|   end process reportBusAccess;
 | |
| 
 | |
| END ARCHITECTURE RTL;
 |