Initial commit
This commit is contained in:
		
							
								
								
									
										88
									
								
								Libs/Memory_test/hdl/flashController_tester_test.vhd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								Libs/Memory_test/hdl/flashController_tester_test.vhd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | ||||
| LIBRARY BoardTester_test; | ||||
|   USE BoardTester_test.testUtils.all; | ||||
|  | ||||
| ARCHITECTURE test OF flashController_tester IS | ||||
|  | ||||
|   constant clockFrequency: real := 66.0E6; | ||||
|   constant clockPeriod: time := (1.0/clockFrequency) * 1 sec; | ||||
|   signal clock_int: std_uLogic := '1'; | ||||
|  | ||||
|   signal flashAddr_int: natural := 0; | ||||
|   signal flashDataOut_int: natural := 0; | ||||
|  | ||||
|   signal refreshEn: std_uLogic := '0'; | ||||
|  | ||||
|   constant separator : string(1 to 80) := (others => '-'); | ||||
|   constant indent    : string(1 to  2) := (others => ' '); | ||||
|  | ||||
| BEGIN | ||||
|   ------------------------------------------------------------------------------ | ||||
|                                                               -- reset and clock | ||||
|   reset <= '1', '0' after 2*clockPeriod; | ||||
|  | ||||
|   clock_int <= not clock_int after clockPeriod/2; | ||||
|   clock <= transport clock_int after clockPeriod*9/10; | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|                                                                  -- flash access | ||||
|   process | ||||
|   begin | ||||
|     flashRd <= '0'; | ||||
|     flashWr <= '0'; | ||||
|     flashEn <= '1'; | ||||
|     wait for 1 us; | ||||
|     print(cr & separator); | ||||
|                                                                --  erase block 0 | ||||
|     print(sprintf("%tu", now) & ": Erasing block 0"); | ||||
|     flashAddr_int <= 16#10000#; | ||||
|     flashDataOut_int <= 16#0020#; | ||||
|     flashWr <= '1', '0' after clockPeriod; | ||||
|     wait until falling_edge(flashDataValid); | ||||
|     wait for clockPeriod/10; | ||||
|     flashDataOut_int <= 16#00D0#; | ||||
|     flashWr <= '1', '0' after clockPeriod; | ||||
|     wait for 2 us; | ||||
|                                                                 --  program word | ||||
|     print(sprintf("%tu", now) & ": Writing data into Flash"); | ||||
|     flashAddr_int <= 16#0000#; | ||||
|     flashDataOut_int <= 16#0040#; | ||||
|     flashWr <= '1', '0' after clockPeriod; | ||||
|     wait until falling_edge(flashDataValid); | ||||
|     wait for clockPeriod/10; | ||||
|     flashAddr_int <= 16#0010#; | ||||
|     flashDataOut_int <= 16#CAFE#; | ||||
|     flashWr <= '1', '0' after clockPeriod; | ||||
|     wait for 2 us; | ||||
|                                                                    --  read word | ||||
|     print(sprintf("%tu", now) & ": Reading data from Flash"); | ||||
|     flashAddr_int <= 16#0000#; | ||||
|     flashRd <= '1', '0' after clockPeriod; | ||||
|     wait for 1 us; | ||||
|                                                                    --  read word | ||||
|     print(sprintf("%tu", now) & ": Reading data from Flash"); | ||||
|     flashAddr_int <= 16#000F#; | ||||
|     flashRd <= '1', '0' after clockPeriod; | ||||
|     wait for 500 ns; | ||||
|     flashAddr_int <= 16#0010#; | ||||
|     flashRd <= '1', '0' after clockPeriod; | ||||
|     wait for 500 ns; | ||||
|     flashAddr_int <= 16#0011#; | ||||
|     flashRd <= '1', '0' after clockPeriod; | ||||
|     wait for 500 ns; | ||||
|  | ||||
|     wait; | ||||
|   end process; | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|                                                              -- address and data | ||||
|   flashAddr <= to_unsigned(flashAddr_int, flashAddr'length); | ||||
|   flashDataOut <= std_ulogic_vector(to_unsigned(flashDataOut_int, flashDataOut'length)); | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|                                                               -- memory bus hold | ||||
|   refreshEn <= '1' after 15*clockPeriod when refreshEn = '0' | ||||
|     else '0' after clockPeriod; | ||||
|   memBusEn_n <= refreshEn; | ||||
|  | ||||
| END ARCHITECTURE test; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user