⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motor_control.vhd

📁 LIBRARY IEEE USE IEEE.STD_LOGIC_1164.ALL USE IEEE.STD_LOGIC_ARITH.ALL USE IEEE.STD_LOGIC_UNSIG
💻 VHD
字号:
LIBRARY IEEE;
USE  IEEE.STD_LOGIC_1164.ALL;
USE  IEEE.STD_LOGIC_ARITH.ALL;
USE  IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY motor_control IS
	PORT       (clock_1khz			: IN	STD_LOGIC;
		lmotor_dir, rmotor_dir		: IN STD_LOGIC;
		lmotor_speed, rmotor_speed	: IN STD_LOGIC;
		lmotor, rmotor		: OUT	STD_LOGIC);
END motor_control;

ARCHITECTURE a OF motor_control IS
	SIGNAL count_motor: STD_LOGIC_VECTOR( 4 DOWNTO 0 ); 
BEGIN
	PROCESS
	       BEGIN
				-- Count_motor is a 20ms  timer
		WAIT UNTIL clock_1Khz'EVENT AND clock_1Khz = '1';
			IF count_motor /=19 THEN
			        count_motor <= count_motor + 1;
			ELSE
			        count_motor <= "00000";
			END IF;
			IF count_motor >= 17 AND count_motor < 18 THEN
				-- Don't generate any pulse for speed = 0
				IF lmotor_speed = '0' THEN 
				        lmotor <= '0'; 
				ELSE
				        lmotor <= '1';
				END IF;
				IF rmotor_speed = '0' THEN 
				        rmotor <= '0'; 
				ELSE
				        rmotor <= '1';
				END IF;
				-- Generate a 1 or 2ms pulse for each motor
				-- depending on direction
				-- reverse directions between the two motors because
				-- of servo mounting on the UP1-bot base
			ELSIF count_motor >=18 AND count_motor <19 THEN
				IF lmotor_speed /= '0' THEN
				        CASE lmotor_dir IS
					-- FORWARD
					WHEN '0' =>
					  	lmotor <= '1';
					-- REVERSE
					WHEN '1' =>
						lmotor <= '0';
					WHEN OTHERS => NULL;
					END CASE;
				ELSE
					lmotor <= '0';
				END IF;
				IF rmotor_speed /= '0' THEN
				        CASE rmotor_dir IS
					-- FORWARD
					WHEN '1' =>
					   	rmotor <= '1';
					-- REVERSE
					WHEN '0' =>
						rmotor <= '0';
					WHEN OTHERS => NULL;
					END CASE;
				ELSE
					rmotor <= '0';
				END IF;
			ELSE
				lmotor <= '0';
				rmotor <= '0';
			END IF;
	END PROCESS;
END a;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -