43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
| -- restart -f ; run 34 ms
 | |
| 
 | |
| ARCHITECTURE test OF serialPortTransmitter_tester IS
 | |
|                                                               -- reset and clock
 | |
|   constant clockPeriod: time := (1.0/clockFrequency) * 1 sec;
 | |
|   signal clock_int: std_uLogic := '1';
 | |
|                                                                       -- Tx test
 | |
|   constant rs232Frequency: real := baudRate;
 | |
|   constant rs232Period: time := (1.0/rs232Frequency) * 1 sec;
 | |
|   constant rs232WriteInterval: time := 20*rs232Period;
 | |
| 
 | |
| 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;
 | |
| 
 | |
|   ------------------------------------------------------------------------------
 | |
|                                                                       -- Tx test
 | |
|   process
 | |
|   begin
 | |
| 
 | |
|     dataIn <= (others => '0');
 | |
|     send <= '0';
 | |
|     wait for rs232Period;
 | |
| 
 | |
|     for index in 0 to 2**dataBitNb-1 loop
 | |
|       dataIn <= std_ulogic_vector(to_unsigned(index, dataIn'length));
 | |
|       wait until rising_edge(clock_int);
 | |
|       send <= '1';
 | |
|       wait until rising_edge(clock_int);
 | |
|       send <= '0';
 | |
|       wait for rs232WriteInterval;
 | |
|     end loop;
 | |
| 
 | |
|     wait;
 | |
| 
 | |
|   end process;
 | |
| 
 | |
| END ARCHITECTURE test;
 |