完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
嗨,
我写了一些代码来控制步进电机 这是状态机: 库IEEE;使用IEEE.STD_LOGIC_1164.ALL; - 如果使用带有有符号或无符号值的算术函数,则取消注释以下库声明 - 使用IEEE.NUMERIC_STD.ALL; - 如果在此代码中实例化任何Xilinx叶子单元,则取消注释以下库声明.-- library UNISIM; - 使用UNISIM.VComponents.all; entity state_machine isPort(clk:IN STD_LOGIC; ena:IN STD_LOGIC; dir:IN STD_LOGIC; reset:IN STD_LOGIC; motor:OUT STD_LOGIC_VECTOR(3 downto 0)); 结束state_machine; 架构state_machine的行为是 type state是(initial,move1,move2,move3,move4); signal current_state,next_state:state; 开始 PROCESS(clk,reset)BEGIN IF reset ='1'THEN current_state ELSIF(rising_edge(clk))THEN current_state end if; 结束过程; process(clk,reset)begin CASE current_state IS WHEN initial => motor IF(ena ='1'且dir ='1')那么next_state else next_state END IF; 当move1 => motor IF(ena ='1'且dir ='1')那么next_state elsif(ena ='1'和dir ='0')则next_state elsif ena ='0'然后next_state else next_state END IF; 当move2 => motor IF(ena ='1'且dir ='1')那么next_state elsif(ena ='1'和dir ='0')则next_state elsif ena ='0'然后next_state else next_state END IF; 当move3 => motor IF(ena ='1'且dir ='1')那么next_state elsif(ena ='1'和dir ='0')则next_state elsif ena ='0'然后next_state else next_state END IF; 当move4 => motor IF(ena ='1'和dir ='1')那么next_state elsif(ena ='1'和dir ='0')则next_state elsif ena ='0'然后next_state else next_state END IF; 结束案例; 结束过程;结束行为; 这是我实例化状态机和测试的代码: 库IEEE;使用IEEE.STD_LOGIC_1164.ALL; - 如果使用带有有符号或无符号值的算术函数,则取消注释以下库声明 - 使用IEEE.NUMERIC_STD.ALL; - 如果在此代码中实例化任何Xilinx叶子单元,则取消注释以下库声明.-- library UNISIM; - 使用UNISIM.VComponents.all; entity motor_control是Port(clk:IN STD_LOGIC; ena:IN STD_LOGIC; dir:IN STD_LOGIC; reset:IN STD_LOGIC; motor:OUT STD_LOGIC_VECTOR(3 downto 0)); end motor_control; 建筑motor_control的行为是 component state_machine Port(clk:IN STD_LOGIC; ena:IN STD_LOGIC; dir:IN STD_LOGIC; reset:IN STD_LOGIC; motor:OUT STD_LOGIC_VECTOR(3 downto 0)); 最终组件; 常数clk_t:time:= 1 ms; 信号new_clk1:std_logic; 开始 state_machine1:state_machineport map(clk => clk,ena => ena,dir => dir,reset => reset,motor => motor); --clock_change1:clock_change - 端口映射(clk => clk, - reset => reset, - new_clk => new_clk1); 进程开始clk等待clk_t / 2; clk等待clk_t / 2; 结束过程; reset ena dir end Behavioral; 我试过运行模拟,但我有这些错误: 错误:[USF-XSim-62]'编译'步骤因错误而失败。 请查看Tcl控制台输出或'C:/Users/Q-BOT_WS7/AppData/Roaming/Xilinx/Vivado/Documents/motor_control/motor_control.sim/sim_1/behav/xvhdl.log'文件以获取更多信息.ERROR:[Vivado 12-4473]运行模拟时检测到错误。 请更正此问题并重试此操作.ERROR:[Common 17-39]'launch_simulation'由于早期错误而失败。 你能帮我理解为什么它不起作用? |
|
相关推荐
8个回答
|
|
|
嗨@ qbot,
请尝试以下代码: 库IEEE;使用IEEE.STD_LOGIC_1164.ALL; - 如果使用带有符号或无符号值的算术函数,则取消注释以下库声明 - 使用IEEE.NUMERIC_STD.ALL; - 如果实例化,则取消注释以下库声明 - 任何Xilinx 此代码中的叶子单元.--库UNISIM; - 使用UNISIM.VComponents.all;实体state_machine isPort(clk:IN STD_LOGIC; ena:IN STD_LOGIC; dir:IN STD_LOGIC; reset:IN STD_LOGIC; motor:OUT STD_LOGIC_VECTOR(3 downto 0)); end state_machine;架构state_machine的行为istype状态是(initial,move1,move2,move3,move4); signal current_state,next_state:state; beginPROCESS(clk,reset)BEGINIF reset ='1'THENcurrent_state ELSIF(rising_edge) (clk))THENcurrent_state结束if;结束过程; process(clk,reset)begin CASE current_state ISWHEN initial => motor IF(ena ='1'and dir ='1')THENnext_state else next_state END IF; WHEN move1 => motor IF(ena ='1'and dir =' 1')THENnext_state elsif(ena ='1'和dir ='0')然后next_state elsif ena ='0'然后next_state else next_state END IF; WHEN move2 => motor IF(ena ='1'和dir = '1 ')THENnext_state elsif(ena ='1'和dir ='0')然后next_state elsif ena ='0'然后next_state else next_state END IF; WHEN move3 => motor IF(ena ='1'且dir ='1' )THENnext_state elsif(ena ='1'和dir ='0')然后next_state elsif ena ='0'然后next_state else next_state END IF; WHEN move4 => motor IF(ena ='1'和dir ='1') THENnext_state elsif(ena ='1'和dir ='0')然后next_state elsif ena ='0'然后next_state else next_state END IF; 结束案例;结束过程;结束行为; - 这是我实例化状态机和测试的代码: 库IEEE;使用IEEE.STD_LOGIC_1164.ALL; - 如果使用带有符号或无符号值的算术函数,则取消注释以下库声明 - 使用IEEE.NUMERIC_STD.ALL; - 如果实例化,则取消注释以下库声明 - 任何Xilinx 此代码中的叶子单元.--库UNISIM; - 使用UNISIM.VComponents.all;实体motor_control是 - 端口(clk:IN STD_LOGIC; - ena:IN STD_LOGIC; --dir:IN STD_LOGIC; --reset: IN STD_LOGIC; - motor:OUT STD_LOGIC_VECTOR(3 downto 0)); end motor_control; architecture motor_control的行为是 component state_machine Port(clk:IN STD_LOGIC; ena:IN STD_LOGIC; dir:IN STD_LOGIC; reset:IN STD_LOGIC; motor:OUT STD_LOGIC_VECTOR(3 downto 0)); end component; signal clk:std_logic; signal ena:std_logic; signal dir:std_logic; signal reset:std_logic; signal motor:std_logic_vector(3 downto 0); 常数clk_t:time:= 1 ms; signal new_clk1:std_logic; beginstate_machine1:state_machineport map(clk => clk,ena => ena,dir => dir,reset => reset,motor => motor); --clock_change1:clock_change - 端口映射(clk => clk, - reset => reset, - new_clk => new_clk1); proces***eginclk等待clk_t / 2; clk等待clk_t / 2;结束进程;重置ena dir 结束行为; 谢谢,Arpan 谢谢,Arpan ----------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - - -请注意- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。感谢Kudos .-------------------- -------------------------------------------------- ------------------------ 在原帖中查看解决方案 |
|
|
|
|
|
嗨@ qbot,
请尝试以下代码: 库IEEE;使用IEEE.STD_LOGIC_1164.ALL; - 如果使用带有符号或无符号值的算术函数,则取消注释以下库声明 - 使用IEEE.NUMERIC_STD.ALL; - 如果实例化,则取消注释以下库声明 - 任何Xilinx 此代码中的叶子单元.--库UNISIM; - 使用UNISIM.VComponents.all;实体state_machine isPort(clk:IN STD_LOGIC; ena:IN STD_LOGIC; dir:IN STD_LOGIC; reset:IN STD_LOGIC; motor:OUT STD_LOGIC_VECTOR(3 downto 0)); end state_machine;架构state_machine的行为istype状态是(initial,move1,move2,move3,move4); signal current_state,next_state:state; beginPROCESS(clk,reset)BEGINIF reset ='1'THENcurrent_state ELSIF(rising_edge) (clk))THENcurrent_state结束if;结束过程; process(clk,reset)begin CASE current_state ISWHEN initial => motor IF(ena ='1'and dir ='1')THENnext_state else next_state END IF; WHEN move1 => motor IF(ena ='1'and dir =' 1')THENnext_state elsif(ena ='1'和dir ='0')然后next_state elsif ena ='0'然后next_state else next_state END IF; WHEN move2 => motor IF(ena ='1'和dir = '1 ')THENnext_state elsif(ena ='1'和dir ='0')然后next_state elsif ena ='0'然后next_state else next_state END IF; WHEN move3 => motor IF(ena ='1'且dir ='1' )THENnext_state elsif(ena ='1'和dir ='0')然后next_state elsif ena ='0'然后next_state else next_state END IF; WHEN move4 => motor IF(ena ='1'和dir ='1') THENnext_state elsif(ena ='1'和dir ='0')然后next_state elsif ena ='0'然后next_state else next_state END IF; 结束案例;结束过程;结束行为; - 这是我实例化状态机和测试的代码: 库IEEE;使用IEEE.STD_LOGIC_1164.ALL; - 如果使用带有符号或无符号值的算术函数,则取消注释以下库声明 - 使用IEEE.NUMERIC_STD.ALL; - 如果实例化,则取消注释以下库声明 - 任何Xilinx 此代码中的叶子单元.--库UNISIM; - 使用UNISIM.VComponents.all;实体motor_control是 - 端口(clk:IN STD_LOGIC; - ena:IN STD_LOGIC; --dir:IN STD_LOGIC; --reset: IN STD_LOGIC; - motor:OUT STD_LOGIC_VECTOR(3 downto 0)); end motor_control; architecture motor_control的行为是 component state_machine Port(clk:IN STD_LOGIC; ena:IN STD_LOGIC; dir:IN STD_LOGIC; reset:IN STD_LOGIC; motor:OUT STD_LOGIC_VECTOR(3 downto 0)); end component; signal clk:std_logic; signal ena:std_logic; signal dir:std_logic; signal reset:std_logic; signal motor:std_logic_vector(3 downto 0); 常数clk_t:time:= 1 ms; signal new_clk1:std_logic; beginstate_machine1:state_machineport map(clk => clk,ena => ena,dir => dir,reset => reset,motor => motor); --clock_change1:clock_change - 端口映射(clk => clk, - reset => reset, - new_clk => new_clk1); proces***eginclk等待clk_t / 2; clk等待clk_t / 2;结束进程;重置ena dir 结束行为; 谢谢,Arpan 谢谢,Arpan ----------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - - -请注意- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。感谢Kudos .-------------------- -------------------------------------------------- ------------------------ |
|
|
|
|
|
|
|
|
嗨@ qbot,
你的问题解决了吗? 如果是这样,请关闭此主题我的标记“接受为解决方案”的答案。 谢谢,Arpan 谢谢,Arpan ----------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - - -请注意- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。感谢Kudos .-------------------- -------------------------------------------------- ------------------------ |
|
|
|
|
|
None
|
|
|
|
|
|
嗨@ qbot,
粘贴Tcl控制台的输出。 谢谢,Arpan 谢谢,Arpan ----------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - - -请注意- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。感谢Kudos .-------------------- -------------------------------------------------- ------------------------ |
|
|
|
|
|
我已经解决了这个问题,谢谢
|
|
|
|
|
|
None
|
|
|
|
|
只有小组成员才能发言,加入小组>>
3118 浏览 7 评论
3407 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2874 浏览 9 评论
3966 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
3057 浏览 15 评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
1325浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
1167浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 11:57 , Processed in 0.891421 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
452
