用vhdl写一个脉冲信号,来驱动步进电机,但是怎么也写不出怎么在一个周期内产生多个脉冲。
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 2018/08/17 13:24:09
-- Design Name:
-- Module Name: motor10000 - Behavioral
-- Project Name:
-- Target Devices:
-- Tool Versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx leaf cells in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity motor10000 is
Port
(
clk: in std_logic;
rst: in std_logic;
clk_in: in std_logic;
pulse: out std_logic;
encoder_b_b: out std_logic;
cnt: out std_logic_vector(15 downto 0)
-- encoderB_A_L: out std_logic
);
end motor10000;
architecture Behavioral of motor10000 is
signal cnt_temp:std_logic_vector(15 downto 0);
begin
cnt<=cnt_temp;
--------clk----------
process(clk,rst)
begin
if rst='0'then
encoder_b_b<='0';
elsif clk'event and clk='1'then
encoder_b_b<='1';
else
encoder_b_b<='0';
end if;
end process;
--------phase----------
process(clk,rst)
begin
if rst='0'then
pulse<='0';
elsif clk'event and clk='1'then
pulse<='1';
else
pulse<='0';
end if;
end process;
process(clk_in,rst)
begin
if rst='0'then
pulse<='0';
elsif clk_in'event and clk_in='1'then
pulse<='0';
-- else
-- pulse<='1';
end if;
end process;
---------counter-------
process(clk,rst)
begin
if rst='0'then
cnt_temp<=x"0000";
elsif clk'event and clk='1'then
if cnt_temp=x"00ff"then
cnt_temp<=x"0000";
else
cnt_temp<=cnt_temp+'1';
end if;
end if;
end process;
end Behavioral;
此帖出自
小平头技术问答
时钟频率为40MHz,xilinx的一款fpga,一个周期想要产生5-10个脉冲,脉冲主要时提供给步进电机,让他工作,步进电机应该是一个脉冲运动5度,有什么好的建议提一下,如果有代码那就太感谢了!
我感觉有点问题,40MHz时钟,一个周期即25ns;如果产生5个脉冲,即每个脉冲平均间隔最大只有5ns;10个脉冲的话,平均每个脉冲间隔仅有2.5ns。
你们的设计要求是这样的吗?什么电机转这么快?
一周热门 更多>