圖書館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
結束行為;