Initial commit
This commit is contained in:
		
							
								
								
									
										40
									
								
								Libs/NanoBlaze/hdl/branchStack_RTL.vhd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								Libs/NanoBlaze/hdl/branchStack_RTL.vhd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| ARCHITECTURE RTL OF branchStack IS | ||||
|  | ||||
|   subtype progCounterType is unsigned(progCounter'range); | ||||
|   type progCounterArrayType is array (0 to 2**stackPointerBitNb) of progCounterType; | ||||
|   signal progCounterArray : progCounterArrayType; | ||||
|  | ||||
|   signal writePointer : unsigned(stackPointerBitNb-1 downto 0); | ||||
|   signal readPointer  : unsigned(stackPointerBitNb-1 downto 0); | ||||
|  | ||||
| BEGIN | ||||
|   ------------------------------------------------------------------------------ | ||||
|                                                                -- stack pointers | ||||
|   updateStackPointer: process(reset, clock) | ||||
|   begin | ||||
|     if reset = '1' then | ||||
|       writePointer <= (others => '0'); | ||||
|     elsif rising_edge(clock) then | ||||
|       if storePC = '1' then | ||||
|         writePointer <= writePointer + 1; | ||||
|       elsif prevPC = '1' then | ||||
|         writePointer <= writePointer - 1; | ||||
|       end if; | ||||
|     end if; | ||||
|   end process updateStackPointer; | ||||
|  | ||||
|   readPointer <= writePointer - 1; | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|                                                        -- program counters stack | ||||
|   updateStack: process(reset, clock) | ||||
|   begin | ||||
|     if rising_edge(clock) then | ||||
|       if storePc = '1' then | ||||
|         progCounterArray(to_integer(writePointer)) <= progCounter; | ||||
|       end if; | ||||
|       storedProgCounter <= progCounterArray(to_integer(readPointer)); | ||||
|     end if; | ||||
|   end process updateStack; | ||||
|  | ||||
| END ARCHITECTURE RTL; | ||||
		Reference in New Issue
	
	Block a user