mirror of
				https://github.com/Klagarge/Cursor.git
				synced 2025-10-31 05:59:18 +00:00 
			
		
		
		
	Initial commit
This commit is contained in:
		
							
								
								
									
										2253
									
								
								Cursor_test/hds/cursor_tester/interface
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2253
									
								
								Cursor_test/hds/cursor_tester/interface
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										118
									
								
								Cursor_test/hds/cursor_tester/test.vhd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								Cursor_test/hds/cursor_tester/test.vhd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,118 @@ | ||||
| ARCHITECTURE test OF cursor_tester IS | ||||
|  | ||||
|   constant clockPeriod: time := 50 ns; | ||||
|   signal sClock: std_uLogic := '1'; | ||||
|  | ||||
|   constant pulsesPerTurn: integer := 200; | ||||
|   constant stepPeriodNb: positive := 8; | ||||
|   signal stepEn: std_uLogic := '0'; | ||||
|   signal direction: std_uLogic; | ||||
|   signal turning: std_uLogic; | ||||
|   signal stepCount: unsigned(10 downto 0) := (others => '0'); | ||||
|  | ||||
| BEGIN | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|   -- clock and reset | ||||
|   -- | ||||
|   reset <= '1', '0' after clockPeriod/4; | ||||
|  | ||||
|   sClock <= not sClock after clockPeriod/2; | ||||
|   clock <= sClock after clockPeriod/10; | ||||
|  | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|   -- test sequence | ||||
|   -- | ||||
|   process | ||||
|   begin | ||||
|  | ||||
|     testMode <= '1'; | ||||
|  | ||||
|     restart <= '0'; | ||||
|     go1 <= '0'; | ||||
|     go2 <= '0'; | ||||
|     setPoint <= '0'; | ||||
|  | ||||
|     sensor1 <= '0'; | ||||
|     sensor2 <= '0'; | ||||
|  | ||||
|     wait for 1 us; | ||||
|  | ||||
|     ---------------------------------------------------------------------------- | ||||
|                                                   -- advance to first stop point | ||||
|     go1 <= '1', '0' after 1 us; | ||||
|     wait for 4 ms; | ||||
|  | ||||
|     ---------------------------------------------------------------------------- | ||||
|                                                  -- advance to second stop point | ||||
|     go2 <= '1', '0' after 1 us; | ||||
|     wait for 4 ms; | ||||
|  | ||||
|     ---------------------------------------------------------------------------- | ||||
|                                               -- back to start with sensor reset | ||||
|     restart <= '1', '0' after 1 us; | ||||
|     wait for 0.5 ms; | ||||
|     sensor1 <= '1', '0' after 1 us; | ||||
|     wait for 0.5 ms; | ||||
|  | ||||
|     ---------------------------------------------------------------------------- | ||||
|                                                  -- advance to second stop point | ||||
|     go2 <= '1', '0' after 1 us; | ||||
|     wait for 7 ms; | ||||
|  | ||||
|     ---------------------------------------------------------------------------- | ||||
|                                                   -- go back to first stop point | ||||
|     go1 <= '1', '0' after 1 us; | ||||
|     wait for 4 ms; | ||||
|  | ||||
|     ---------------------------------------------------------------------------- | ||||
|                                               -- back to start with counter stop | ||||
|     restart <= '1', '0' after 1 us; | ||||
|     wait for 4 ms; | ||||
|     sensor1 <= '1', '0' after 1 us; | ||||
|     wait for 1 ms; | ||||
|  | ||||
|     wait; | ||||
|   end process; | ||||
|  | ||||
|   ------------------------------------------------------------------------------ | ||||
|   -- motor feedback | ||||
|   -- | ||||
|   turning <= motorOn; | ||||
|  | ||||
|   findDirection: process(side1, side2) | ||||
|   begin | ||||
|     if (side1 = '1') and (side2 = '0') then | ||||
|       direction <= '1'; | ||||
|     elsif (side1 = '0') and (side2 = '1') then | ||||
|       direction <= '0'; | ||||
|     end if; | ||||
|   end process findDirection; | ||||
|  | ||||
|   stepEn <= not stepEn after (stepPeriodNb/4)*clockPeriod; | ||||
|  | ||||
|   count: process (stepEn) | ||||
|   begin | ||||
|     if turning = '1' then | ||||
|       if direction = '1' then | ||||
|         if stepCount < pulsesPerTurn-1 then | ||||
|           stepCount <= stepCount + 1; | ||||
|         else | ||||
|           stepCount <= to_unsigned(0, stepCount'length); | ||||
|         end if; | ||||
|       else | ||||
|         if stepCount > 0  then | ||||
|           stepCount <= stepCount - 1; | ||||
|         else | ||||
|           stepCount <= to_unsigned(pulsesPerTurn-1, stepCount'length); | ||||
|         end if; | ||||
|       end if; | ||||
|     end if; | ||||
|   end process count; | ||||
|  | ||||
|   encoderA <= stepCount(1); | ||||
|   encoderB <= not stepCount(1) xor stepCount(0); | ||||
|   encoderI <= '1' when stepCount = pulsesPerTurn-1 else '0'; | ||||
|  | ||||
| END test; | ||||
		Reference in New Issue
	
	Block a user