Initial commit
This commit is contained in:
		
							
								
								
									
										53
									
								
								Libs/RiscV/HEIRV32/hdl/registerFile_rtl.vhd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Libs/RiscV/HEIRV32/hdl/registerFile_rtl.vhd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
|  | ||||
| ARCHITECTURE rtl OF registerFile IS | ||||
|     -- Bank of register | ||||
|     type t_registersBank is array (31 downto 0) of | ||||
|         std_ulogic_vector(31 downto 0); | ||||
|     -- A bank of registers | ||||
|     signal larr_registers: t_registersBank; | ||||
|     signal lvec_btns : std_ulogic_vector(31 downto 0); | ||||
| BEGIN | ||||
|     -- Special regs | ||||
|     process(rst, clk) | ||||
|     begin | ||||
|         if rst = '1' then | ||||
|             lvec_btns <= (others => '0'); | ||||
|         elsif rising_edge(clk) then | ||||
|             lvec_btns <= (btns'length to g_datawidth-1 => '0') & btns; | ||||
|         end if; | ||||
|     end process; | ||||
|  | ||||
|     -- Clocked write | ||||
|     process(rst, clk) begin | ||||
|     if rst = '1' then | ||||
|         larr_registers <= (others => (others => '0')) after g_tRfWr; | ||||
|     elsif rising_edge(clk) then | ||||
|         if writeEnable3 = '1' and en = '1' then | ||||
|             larr_registers(to_integer(unsigned(addr3))) <= writeData after (g_tRfWr + g_tSetup); | ||||
|         end if; | ||||
|     end if; | ||||
|     end process; | ||||
|  | ||||
|     -- Comb. read | ||||
|     -- Addr 0 wired to 0s | ||||
|     process(addr1, addr2) begin | ||||
|         if (to_integer(unsigned(addr1)) = 0) then | ||||
|             RD1 <= (others => '0') after g_tRfRd; | ||||
|         elsif (to_integer(unsigned(addr1)) = 31) then -- buttons | ||||
|             RD1 <= lvec_btns after g_tRfRd; | ||||
|         else | ||||
|             RD1 <= larr_registers(to_integer(unsigned(addr1))) after g_tRfRd; | ||||
|         end if; | ||||
|  | ||||
|         if (to_integer(unsigned(addr2)) = 0) then | ||||
|             RD2 <= (others => '0') after g_tRfRd; | ||||
|         elsif (to_integer(unsigned(addr2)) = 31) then -- buttons | ||||
|             RD2 <= lvec_btns after g_tRfRd; | ||||
|         else | ||||
|             RD2 <= larr_registers(to_integer(unsigned(addr2))) after g_tRfRd; | ||||
|         end if; | ||||
|     end process; | ||||
|  | ||||
|     leds <= larr_registers(30); | ||||
|  | ||||
| END ARCHITECTURE rtl; | ||||
		Reference in New Issue
	
	Block a user