mirror of
				https://github.com/Klagarge/Cursor.git
				synced 2025-10-31 05:59:18 +00:00 
			
		
		
		
	Initial commit
This commit is contained in:
		
							
								
								
									
										111
									
								
								Libs/Lcd_test/hdl/lcdDemo_tester_test.vhd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								Libs/Lcd_test/hdl/lcdDemo_tester_test.vhd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | ||||
| ARCHITECTURE test OF lcdDemo_tester IS | ||||
|  | ||||
|   constant clockPeriod: time := (1.0/clockFrequency) * 1 sec; | ||||
|   signal clock_int: std_ulogic := '1'; | ||||
|  | ||||
|   constant testInterval:time := 0.1 ms; | ||||
|   constant initSequenceLength:time := 20 us; | ||||
|   constant helloSequenceLength:time := 1 ms; | ||||
|  | ||||
|   constant rs232Frequency: real := real(baudRate); | ||||
|   constant rs232Period: time := (1.0/rs232Frequency) * 1 sec; | ||||
|   constant rs232WriteInterval: time := 10*rs232Period; | ||||
|    | ||||
|   signal rs232OutString : string(1 to 32); | ||||
|   signal rs232SendOutString: std_uLogic; | ||||
|   signal rs232SendOutDone: std_uLogic; | ||||
|   signal rs232OutByte: character; | ||||
|   signal rs232SendOutByte: std_uLogic; | ||||
|    | ||||
| 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; | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|                                                                 -- test sequence | ||||
|   process | ||||
|   begin | ||||
|     rs232SendOutString <= '0'; | ||||
|     buttons <= (others => '0'); | ||||
|     wait for initSequenceLength + helloSequenceLength; | ||||
|                                                   -- send bytes from serial port | ||||
|     rs232OutString <= "a                               "; | ||||
|     rs232SendOutString <= '1', '0' after 1 ns; | ||||
|     wait until rs232SendOutDone = '1'; | ||||
|     wait for rs232WriteInterval; | ||||
|  | ||||
|     rs232OutString <= "hello world                     "; | ||||
|     rs232SendOutString <= '1', '0' after 1 ns; | ||||
|     wait until rs232SendOutDone = '1'; | ||||
|     wait for rs232WriteInterval; | ||||
|     wait for testInterval; | ||||
|                                                            -- send hello message | ||||
|     wait until rising_edge(clock_int); | ||||
|     for index in buttons'range loop | ||||
|       buttons(index) <= '1'; | ||||
|       wait until rising_edge(clock_int); | ||||
|       buttons(index) <= '0'; | ||||
|       wait until rising_edge(clock_int); | ||||
|     end loop; | ||||
|     wait for helloSequenceLength; | ||||
|     wait for testInterval; | ||||
|                                                             -- end of simulation | ||||
|     assert false | ||||
|       report "End of simulation" | ||||
|       severity failure; | ||||
|     wait; | ||||
|   end process; | ||||
|  | ||||
| --============================================================================ | ||||
|                                                                  -- RS232 send | ||||
|   rsSendSerialString: process | ||||
|     constant rs232BytePeriod : time := 15*rs232Period; | ||||
|     variable commandRight: natural; | ||||
|   begin | ||||
|     rs232SendOutByte <= '0'; | ||||
|     rs232SendOutDone <= '0'; | ||||
|  | ||||
|     wait until rising_edge(rs232SendOutString); | ||||
|  | ||||
|     commandRight := rs232OutString'right; | ||||
|     while rs232OutString(commandRight) = ' ' loop | ||||
|       commandRight := commandRight-1; | ||||
|     end loop; | ||||
|  | ||||
|     for index in rs232OutString'left to commandRight loop | ||||
|       rs232OutByte <= rs232OutString(index); | ||||
|       rs232SendOutByte <= '1', '0' after 1 ns; | ||||
|       wait for rs232BytePeriod; | ||||
|     end loop; | ||||
|  | ||||
|     rs232OutByte <= cr; | ||||
|     rs232SendOutByte <= '1', '0' after 1 ns; | ||||
|     wait for rs232BytePeriod; | ||||
|  | ||||
|     rs232SendOutDone <= '1'; | ||||
|     wait for 1 ns; | ||||
|   end process rsSendSerialString; | ||||
|                                                                   -- send byte | ||||
|   rsSendSerialByte: process | ||||
|     variable txData: unsigned(7 downto 0); | ||||
|   begin | ||||
|     RxD <= '1'; | ||||
|  | ||||
|     wait until rising_edge(rs232SendOutByte); | ||||
|     txData := to_unsigned(character'pos(rs232OutByte), txData'length); | ||||
|  | ||||
|     RxD <= '0'; | ||||
|     wait for rs232Period; | ||||
|  | ||||
|     for index in txData'reverse_range loop | ||||
|       RxD <= txData(index); | ||||
|       wait for rs232Period; | ||||
|     end loop; | ||||
|  | ||||
|   end process rsSendSerialByte; | ||||
|  | ||||
| END ARCHITECTURE test; | ||||
		Reference in New Issue
	
	Block a user