菜单
  

    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_Arith.ALL;
    USE IEEE.STD_LOGIC_Unsigned.ALL;
    ENTITY pwm_logic IS
    PORT(
    clock_48M:        IN    STD_LOGIC;    --系统输入时钟
    duty_cycle:    IN  STD_LOGIC_VECTOR(3 DOWNTO 0);
    pwm_en:        IN  STD_LOGIC;    --PWM使能.
    pwm_out:    OUT STD_LOGIC    --PWM输出
    );
    END;
    ARCHITECTURE one OF pwm_logic     IS
    SIGNAL pwm_out_io:    STD_LOGIC;            --PWM输出
    SIGNAL count:        STD_LOGIC_VECTOR(7 DOWNTO 0);--PWM内部计数器(仿真)
    BEGIN
    pwm_out<=pwm_out_io;
    PROCESS(clock_48M)
    BEGIN
        IF RISING_EDGE(clock_48M) THEN
            IF    pwm_en ='1' THEN
                count<=count+1;
            END IF;
        END IF;
    END PROCESS;
    PROCESS(clock_48M)
    BEGIN
        IF RISING_EDGE(clock_48M) THEN
          IF    pwm_en ='1' AND count(7 DOWNTO 4)<=duty_cycle THEN--(仿真)
                pwm_out_io<='1';
            ELSE
                pwm_out_io<='0';
            END IF;
        END IF;
    END PROCESS;
    END ;
    (3)VHDL程序分析
    该程序中有三个输入端,分别是clock_48M、duty_cycle[3..0]、pwm_en,其中clock_48M是接系统时钟端;duty_cycle[3..0]是输入的固定四位二进制数,由电机控制模块产生;pwm_en是该模块的使能控制端,也是由电机控制模块产生。该程序还有一个输出端,即pwm_out,该端口输出PWM控制的输出波形,可以根据不同的输入的四位二进制数duty_cycle[3..0],来产生具有不同占空比的PWM波形。
    (4)仿真波形及分析
    仿真时选择duty_cycle[3..0]=0110(即十进制的6),由程序中的这段代码:
    IF     pwm_en =’1’ AND count(7 DOWNTO 4)<=duty_cycle THEN
                pwm_out_io<=’1’;
    ELSE
                pwm_out_io<=’0’;
    可以看出,当输入的duty_cycle[3..0]=0110且pwm_en=1时,如果满足count[7..4]<=0110,就把pwm_out_io赋值为高电平,也就是说count正常计数从00000000到01101111都满足这个条件,此时输出pwm_out为高电平,其余时刻(即count从01110000到11111111)都输出低电平。此时的占空比的计算如下:
    count总共是8位二进制数,总数为28=256,而高电平占据了从00000000到01101111,共112个数据,占空比为112/256=0.4375
    duty_cycle[3..0]=0110且pwm_en=1时的仿真波形如下:
     
    图4.3  脉宽调制仿真波形
    Fig.4.3 Pulse width modulation simulation waveform
    由仿真波形可以看出,一个PWM波形周期中,周期为2.56ns,其中高电平占据时间为1.12ns,占空比为1.12/2.56=0.4375,跟理论分析值一致。
    4.4.2  电机控制模块
    (1)生成的功能模块图
     
    图4.4  电机控制功能模块图
    Fig.4.4 Motor control function module chart
    (2)电机控制的VHDL编程
    LIBRARY IEEE;                      
    USE IEEE.STD_LOGIC_1164.ALL;
  1. 上一篇:基于FPGA的线阵CCD驱动设计+源代码
  2. 下一篇:视频深度图像的产生和编码+文献综述
  1. 基于差分进化算法的自动...

  2. 基于混沌的图像加密通信...

  3. MATLAB基于时频分析的穿墙呼吸检测算法研究

  4. 基于LTE的OFDM无线传输链路设计与仿真

  5. 基于OFDM的用户接入控制技术研究

  6. 基于OFDM的数字图像无线传输关键技术研究

  7. QPSK无线通信网络中基于...

  8. 电站锅炉暖风器设计任务书

  9. 当代大学生慈善意识研究+文献综述

  10. 乳业同业并购式全产业链...

  11. 杂拟谷盗体内共生菌沃尔...

  12. 河岸冲刷和泥沙淤积的监测国内外研究现状

  13. java+mysql车辆管理系统的设计+源代码

  14. 酸性水汽提装置总汽提塔设计+CAD图纸

  15. 大众媒体对公共政策制定的影响

  16. 十二层带中心支撑钢结构...

  17. 中考体育项目与体育教学合理结合的研究

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回