4938|9

195

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

vhdl怎么在一个时钟周期内产生多个脉冲 [复制链接]

用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;



此帖出自FPGA/CPLD论坛

最新回复

如果要产生更多的,  那也有办法,  但脉冲的相对位置不能保证满足需要.  详情 回复 发表于 2018-10-8 23:38
点赞 关注(1)
 

回复
举报

15

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
的确做不到,可以适当提高clk的频率,通过分频实现多脉冲
此帖出自FPGA/CPLD论坛
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

板凳
 
如果是FPGA的话,一般器件里内置了倍频器。
此帖出自FPGA/CPLD论坛

点评

那应该怎么调用呢?  详情 回复 发表于 2018-8-28 18:08
 
 
 

回复

372

帖子

0

TA的资源

一粒金砂(高级)

4
 
时钟频率多高?什么器件?一个时钟周期到底需要产生几个脉冲?产生的脉冲具体有些什么要求(占空比等)?
此帖出自FPGA/CPLD论坛

点评

时钟频率为40MHz,xilinx的一款fpga,一个周期想要产生5-10个脉冲,脉冲主要时提供给步进电机,让他工作,步进电机应该是一个脉冲运动5度,有什么好的建议提一下,如果有代码那就太感谢了!  详情 回复 发表于 2018-8-28 18:12
 
 
 

回复

195

帖子

0

TA的资源

一粒金砂(中级)

5
 
仙猫 发表于 2018-8-27 20:29
如果是FPGA的话,一般器件里内置了倍频器。

那应该怎么调用呢?
此帖出自FPGA/CPLD论坛
 
 
 

回复

195

帖子

0

TA的资源

一粒金砂(中级)

6
 
coyoo 发表于 2018-8-28 09:05
时钟频率多高?什么器件?一个时钟周期到底需要产生几个脉冲?产生的脉冲具体有些什么要求(占空比等)?

时钟频率为40MHz,xilinx的一款fpga,一个周期想要产生5-10个脉冲,脉冲主要时提供给步进电机,让他工作,步进电机应该是一个脉冲运动5度,有什么好的建议提一下,如果有代码那就太感谢了!
此帖出自FPGA/CPLD论坛

点评

我感觉有点问题,40MHz时钟,一个周期即25ns;如果产生5个脉冲,即每个脉冲平均间隔最大只有5ns;10个脉冲的话,平均每个脉冲间隔仅有2.5ns。 你们的设计要求是这样的吗?什么电机转这么快?  详情 回复 发表于 2018-8-30 09:38
 
 
 

回复

372

帖子

0

TA的资源

一粒金砂(高级)

7
 
刘123 发表于 2018-8-28 18:12
时钟频率为40MHz,xilinx的一款fpga,一个周期想要产生5-10个脉冲,脉冲主要时提供给步进电机,让他工作 ...

我感觉有点问题,40MHz时钟,一个周期即25ns;如果产生5个脉冲,即每个脉冲平均间隔最大只有5ns;10个脉冲的话,平均每个脉冲间隔仅有2.5ns。
你们的设计要求是这样的吗?什么电机转这么快?
此帖出自FPGA/CPLD论坛
 
 
 

回复

372

帖子

0

TA的资源

一粒金砂(高级)

8
 
本帖最后由 coyoo 于 2018-8-30 09:41 编辑

如果是5个脉冲,也就是72个时钟周期转一圈;72*25=1800ns=1.8us;1.8us一转,一秒转555555圈?
此帖出自FPGA/CPLD论坛
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(中级)

9
 
一个时钟周期,  最多产生2个脉冲
此帖出自FPGA/CPLD论坛
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(中级)

10
 
如果要产生更多的,  那也有办法,  但脉冲的相对位置不能保证满足需要.
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表