當前位置:編程學習大全網 - 編程語言 - PWM編程程序

PWM編程程序

不久前,我剛做了壹個pwm發生器。每按壹次鍵就改變壹次占空比,可以實現占空比的漸變。根據我自己的需求來改吧。頻率和妳的晶振有關,我換了也沒用。

圖書館IEEE

使用IEEE。STD_LOGIC_1164。所有;

使用IEEE。STD_LOGIC_ARITH。所有;

使用IEEE。STD_LOGIC_UNSIGNED所有;

實體PWMgenerator為

port(clk:in STD _ LOGIC;

intr0:在STD_LOGIC中;

PWM:out STD _ LOGIC);

結束PWMgenerator

PWMgenerator的體系結構行為是

信號計數,預置,計數器,setdest:整數範圍0到1000:= 0;

信號PWM _ temp:STD _ LOGIC;

信號change preset:STD _ LOGIC;

開始

進程(時鐘)

開始

如果clk事件和clk = '1 '則

如果count = 1000,則

計數& lt= 0;

changepreset & lt= '1';

其他

計數& lt= count+1;

changepreset & lt= '0';

結束if;

結束if;

結束進程;

過程(計數,預設)

開始

如果count = 0且預置& gt那麽0

pwm _ temp & lt= '1';

否則如果count = preset或preset = 0,則

pwm _ temp & lt= '0';

其他

null

結束if;

結束進程;

進程(intr0,計數器)

開始

如果計數器= 10,則

計數器& lt= 0;

其他

如果intr0 '事件和intr0 = '1 '則

計數器& lt=計數器+1;

結束if;

結束if;

結束進程;

過程(計數器)

開始

案例計數器是

當0 = >時;setdest & lt= 0;

當1 = >setdest & lt= 100;

當2 = >時;setdest & lt= 200;

當3 = >時;setdest & lt= 300;

當4 = >時;setdest & lt= 400;

當5 = >時;setdest & lt= 500;

當6 = >時;setdest & lt= 600;

當7 = >時;setdest & lt= 700;

當8 = >時;setdest & lt= 800;

當9 = >時;setdest & lt= 900;

當10 = >setdest & lt= 1000;

當別人= & gtsetdest & lt= 0;

結束案例;

結束進程;

過程(設置目標、計數、預設、更改預設)

開始

如果changepreset事件和changepreset = '1 ',則

如果預設& lt那就設定目標

預設& lt=預設+1;

elsif預設& gt那就設定目標

預設& lt=預設-1;

其他

null

結束if;

結束if;

結束進程;

PWM & lt= pwm _ temp

結束行為;

  • 上一篇:監獄服刑人員被關禁閉時,其心態是什麽樣的呢?
  • 下一篇:vb的ADO控件如何連接操作MYSQL數據庫啊
  • copyright 2024編程學習大全網