简单的 EDA 电子钟作业或者其他的的EDA都行

百度网友19283a0
2011-06-11 · TA获得超过110个赞
知道答主
回答量:105
采纳率:100%
帮助的人:56.6万
展开全部
vhdl步进电机控制器
以一个具体的双向步进电机控制的例子来讲述Moore型状态机的设计过程。该控制电路的输入信号有3个:时钟信号clk,复位信号reset和方向控制信号dir。输出信号为phase[3..0],用来控制步进电机的动作。当方向控制信号dir为1时,要求输出信号phase[3..0] 按照“0001”、“0010”、“0100”、“1000”、“0001”的顺序循环变化。当方向控制信号dir为0时,要求输出信号phase[3..0]按照“1000”、“0100”、“0010”、“0001”、“1000”的顺序循环变化。
根据控制器的功能要求,画出状态转换图和状态与输出信号的关系,分别如下图和表。

步进电机控制器的状态转换图
步进电机状态与输出信号的对应关系
状态 输出信号phase[3..0]
S0 0001
S1 0010
S2 0100
S3 1000
步进电机控制器VHDL程序。
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY stepmotor IS
PORT(
clk,reset:IN STD_LOGIC;
dir:IN STD_LOGIC;
phase :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END ENTITY stepmotor ;
ARCHITECTURE arc1 OF stepmotor IS
TYPE states IS (s0,s1,s2,s3);
SIGNAL current_state: states;
BEGIN
PROCESS(clk)
BEGIN
IF clk'EVENT AND clk='1' THEN
IF reset='1'THEN
current_state<=s0;
ELSE
CASE current_state IS
WHEN s0 =>
IF dir='1' THEN
current_state<=s1;
ELSE
current_state<=s3;
END IF;
WHEN s1 =>
IF dir='1' THEN
current_state<=s2;
ELSE
current_state<=s0;
END IF;
WHEN s2 =>
IF dir='1' THEN
current_state<=s3;
ELSE
current_state<=s1;
END IF;
WHEN s3 =>
IF dir='1' THEN
current_state<=s0;
ELSE
current_state<=s2;
END IF;
WHEN OTHERS =>
current_state<=s0;
END CASE;
END IF;
END IF;
END PROCESS;
PROCESS (current_state)
BEGIN
CASE current_state IS
WHEN s0 =>
phase<="0001";
WHEN s1 =>
phase<="0010";
WHEN s2 =>
phase<="0100";
WHEN s3 =>
phase<="1000";
END CASE;
END PROCESS;
END ARCHITECTURE arc1;
深圳市科通技术股份有限公司_
2022-11-07 广告
价格只是购买产品或服务过程中的一项指标,如果单纯只比较价格,其实考虑并不是那么周到。价格、质量、服务、口碑、是否合适自己的情况等都需要一起考虑。以上内容如果还觉得不够全面,也可以沟通下科通数字。科通数字是科通芯城集团下的专注服务电子制造业的... 点击进入详情页
本回答由深圳市科通技术股份有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式