48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
ARCHITECTURE test OF rotaryToUnsigned_tester IS
 | 
						|
 | 
						|
  constant clockFrequency : real := 100.0E6;
 | 
						|
  constant clockPeriod    : time := 1.0/clockFrequency * 1 sec;
 | 
						|
  signal clock_int        : std_ulogic := '1';
 | 
						|
 | 
						|
  constant stepPeriod     : time := 100*clockPeriod;
 | 
						|
  signal rotary_int       : unsigned(rotary'range);
 | 
						|
 | 
						|
BEGIN
 | 
						|
  ------------------------------------------------------------------------------
 | 
						|
                                                             -- reset and clock
 | 
						|
  reset <= '1', '0' after 3*clockPeriod;
 | 
						|
  clock_int <= not clock_int after clockPeriod/2;
 | 
						|
  clock <= transport clock_int after clockPeriod*9/10;
 | 
						|
 | 
						|
  ------------------------------------------------------------------------------
 | 
						|
                                                                 -- input signal
 | 
						|
  turnRotary: process
 | 
						|
  begin
 | 
						|
    rotary_int <= (others => '0');
 | 
						|
    wait for 10*stepPeriod;
 | 
						|
                                                          -- count over max value
 | 
						|
    for index in 1 to 2**outputBitNb+2 loop
 | 
						|
      rotary_int <= rotary_int + 1;
 | 
						|
      wait for stepPeriod;
 | 
						|
    end loop;
 | 
						|
                                                              -- count down again
 | 
						|
    for index in 1 to 2**outputBitNb+2 loop
 | 
						|
      rotary_int <= rotary_int - 1;
 | 
						|
      wait for stepPeriod;
 | 
						|
    end loop;
 | 
						|
                                                             -- end of simulation
 | 
						|
    wait;
 | 
						|
  end process turnRotary;
 | 
						|
 | 
						|
  addGlitches: process
 | 
						|
  begin
 | 
						|
    wait on rotary_int;
 | 
						|
    rotary <= (others => '0');
 | 
						|
    wait for clockPeriod;
 | 
						|
    rotary <= (others => '1');
 | 
						|
    wait for clockPeriod;
 | 
						|
    rotary <= rotary_int;
 | 
						|
  end process addGlitches;
 | 
						|
 | 
						|
END ARCHITECTURE test;
 |