mirror of
				https://github.com/Klagarge/Cursor.git
				synced 2025-10-31 14:09:17 +00:00 
			
		
		
		
	Initial commit
This commit is contained in:
		
							
								
								
									
										102
									
								
								Libs/Memory_test/hdl/flash_tester_test.vhd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								Libs/Memory_test/hdl/flash_tester_test.vhd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| LIBRARY BoardTester_test; | ||||
|   USE BoardTester_test.testUtils.all; | ||||
|  | ||||
| ARCHITECTURE test OF flash_tester IS | ||||
|  | ||||
|   constant T_W2: time :=  0 ns; | ||||
|   constant T_W3: time := 70 ns; | ||||
|   constant T_W4: time := 50 ns; | ||||
|   constant T_W5: time := 55 ns; | ||||
|   constant T_W6: time := 10 ns; | ||||
|   constant T_R3: time := 120 ns; | ||||
|  | ||||
|   signal addr: natural; | ||||
|   signal data: integer; | ||||
|  | ||||
|   signal writeFlash: std_ulogic := '0'; | ||||
|   signal readFlash: std_ulogic := '0'; | ||||
|  | ||||
|   constant separator : string(1 to 80) := (others => '-'); | ||||
|   constant indent    : string(1 to  2) := (others => ' '); | ||||
|  | ||||
| BEGIN | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|   -- Test | ||||
|   ------------------------------------------------------------------------------ | ||||
|   process | ||||
|   begin | ||||
|     RP_n <= '1'; | ||||
|     wait for 1 us; | ||||
|     print(cr & separator); | ||||
|                                                                --  erase block 0 | ||||
|     print(sprintf("%tu", now) & ": Erasing block 0"); | ||||
|     addr <= 16#10000#; | ||||
|     data <= 16#20#; | ||||
|     writeFlash <= '1', '0' after 1 ns; | ||||
|     wait for 100 ns; | ||||
|     data <= 16#D0#; | ||||
|     writeFlash <= '1', '0' after 1 ns; | ||||
|     wait for 2 us; | ||||
|                                                                 --  program word | ||||
|     print(sprintf("%tu", now) & ": Writing data into Flash"); | ||||
|     addr <= 16#0000#; | ||||
|     data <= 16#0040#; | ||||
|     writeFlash <= '1', '0' after 1 ns; | ||||
|     wait for 100 ns; | ||||
|     addr <= 16#0010#; | ||||
|     data <= 16#CAFE#; | ||||
|     writeFlash <= '1', '0' after 1 ns; | ||||
|     wait for 2 us; | ||||
|                                                                    --  read word | ||||
|     print(sprintf("%tu", now) & ": Reading data from Flash"); | ||||
|     addr <= 16#0000#; | ||||
|     readFlash <= '1', '0' after 1 ns; | ||||
|     wait for 500 ns; | ||||
|                                                                    --  read word | ||||
|     print(sprintf("%tu", now) & ": Reading data from Flash"); | ||||
|     addr <= 16#0010#; | ||||
|     readFlash <= '1', '0' after 1 ns; | ||||
|     wait for 500 ns; | ||||
|  | ||||
|     wait; | ||||
|   end process; | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|   -- Board connections | ||||
|   ------------------------------------------------------------------------------ | ||||
|   CE(2 downto 1) <= (others => '0'); | ||||
|   BYTE_n <= '1'; | ||||
|  | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|   -- Write access | ||||
|   ------------------------------------------------------------------------------ | ||||
|   process | ||||
|   begin | ||||
|     CE(0) <= '1'; | ||||
|     WE_N <= '1'; | ||||
|     OE_N <= '1'; | ||||
|     DQ <= (others => 'Z'); | ||||
|     wait on writeFlash, readFlash; | ||||
|     if rising_edge(writeFlash) then | ||||
|       A <= to_unsigned(addr, A'length) after T_W3 - T_W5; | ||||
|       DQ <= std_logic_vector(to_unsigned(data, DQ'length)) after T_W3 - T_W4; | ||||
|       CE(0) <= '0'; | ||||
|       wait for T_W2; | ||||
|       WE_N <= '0'; | ||||
|       wait for T_W3; | ||||
|       WE_N <= '1'; | ||||
|       wait for T_W6; | ||||
| --      CE(0) <= '1'; | ||||
|     elsif rising_edge(readFlash) then | ||||
|       OE_N <= '0'; | ||||
|       A <= to_unsigned(addr, A'length); | ||||
|       CE(0) <= '0'; | ||||
|       wait for T_R3 + 10 ns; | ||||
| --      CE(0) <= '1'; | ||||
|     end if; | ||||
|   end process; | ||||
|  | ||||
| END ARCHITECTURE test; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user