?? pwm.vhd
字號(hào):
---- 本模塊的功能是驗(yàn)證實(shí)現(xiàn)和PC機(jī)進(jìn)行基本的串口通信的功能。需要在--PC機(jī)上安裝一個(gè)串口調(diào)試工具來(lái)驗(yàn)證程序的功能。-- 程序?qū)崿F(xiàn)了一個(gè)收發(fā)一幀10個(gè)bit(即無(wú)奇偶校驗(yàn)位)的串口控--制器,10個(gè)bit是1位起始位,8個(gè)數(shù)據(jù)位,1個(gè)結(jié)束--位。串口的波特律由程序中定義的div_par參數(shù)決定,更改該參數(shù)可以實(shí)--現(xiàn)相應(yīng)的波特率。程序當(dāng)前設(shè)定的div_par 的值是0x104,對(duì)應(yīng)的波特率是--9600。用一個(gè)8倍波特率的時(shí)鐘將接受每一位bit的周期時(shí)間--劃分為8個(gè)時(shí)隙以使通信同步.--字符串(串口調(diào)試工具設(shè)成按ASCII碼接受方式);PC可隨時(shí)向CPLD發(fā)送0-F的十六進(jìn)制--數(shù)據(jù),CPLD接受后顯示在7段數(shù)碼管上。library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PWM IS PORT ( clk : IN std_logic; width_word : IN std_logic_vector(6 DOWNTO 0);--width_word為0的時(shí)候方向盤(pán)最左,為63(換成十進(jìn)制候)正中,為127時(shí)最右 to_servo : OUT std_logic ); END PWM;ARCHITECTURE arch OF PWM IS --//////////////////inner reg//////////////////// SIGNAL div_reg : std_logic_vector(6 DOWNTO 0);--分頻計(jì)數(shù)器,分頻值由脈寬步進(jìn)決定。分頻后得到clk_servo時(shí)鐘,周期為步進(jìn)脈寬 SIGNAL clk_servo : std_logic; --步進(jìn)電機(jī)時(shí)鐘 SIGNAL div_reg_pwm : std_logic_vector(11 DOWNTO 0); --////////////////////////////////////////////// CONSTANT div_par : std_logic_vector(6 DOWNTO 0) := "1111101"; --分頻參數(shù),產(chǎn)生脈寬步進(jìn)時(shí)鐘,也就是說(shuō)產(chǎn)生的時(shí)鐘周期為脈寬步進(jìn)6.25us BEGIN PROCESS(clk) BEGIN IF(clk'EVENT AND clk='1')THEN IF (div_reg = div_par - "0000001") THEN div_reg <= "0000000"; clk_servo<= NOT clk_servo; --得到6.25us步進(jìn)時(shí)鐘 ELSE div_reg <= div_reg + "0000001"; END IF; END IF; END PROCESS; PROCESS(clk_servo) BEGIN IF(clk_servo'EVENT AND clk_servo='1')THEN IF div_reg_pwm = "110001111111" THEN--6.25us步進(jìn)時(shí)鐘3200分頻得到20ms周期的鋸齒波 div_reg_pwm<= "000000000000"; ELSE div_reg_pwm <= div_reg_pwm + "000000000001"; END IF ; END IF; END PROCESS; PROCESS(div_reg_pwm) BEGIN IF div_reg_pwm>="101111001101"-width_word THEN -------width_word 從"0000000"到"1111111"變化----------為"0000000"對(duì)應(yīng)1120us脈寬,為"1111111"對(duì)應(yīng)1920us脈寬-- to_servo<='1'; ELSE to_servo<='0'; END IF; END PROCESS;END arch;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -