菜单
  

    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. VHDL+EDA波形发生器设计

  3. 基于过期CSI的多天线中继选择系统设计与仿真

  4. SPCE061A基于DDS的正弦信号发生器设计+PCB电路图

  5. STM32基于WIFI通信的数字温湿度监测系统设计

  6. 基于粒子群算法的软件可靠性模型参数估计

  7. 基于串口通信的抢答器仿真设计+电路图+程序

  8. 高警觉工作人群的元情绪...

  9. NFC协议物理层的软件实现+文献综述

  10. 上市公司股权结构对经营绩效的影响研究

  11. 浅析中国古代宗法制度

  12. 中国传统元素在游戏角色...

  13. 现代简约美式风格在室内家装中的运用

  14. 江苏省某高中学生体质现状的调查研究

  15. g-C3N4光催化剂的制备和光催化性能研究

  16. 巴金《激流三部曲》高觉新的悲剧命运

  17. C++最短路径算法研究和程序设计

  

About

优尔论文网手机版...

主页:http://www.youerw.com

关闭返回