在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 步進電機定位控制系統(tǒng)VHDL程序與仿真

            步進電機定位控制系統(tǒng)VHDL程序與仿真

            作者: 時間:2012-03-21 來源:網(wǎng)絡(luò) 收藏

            與仿真
            library IEEE;
            use IEEE.std_logic_1164.all;
            use IEEE.std_logic_arith.all;
            use IEEE.std_logic_unsigned.all;
            entity step_motor is
            port (reset:in STD_LOGIC; --系統(tǒng)復(fù)位信號
            dir: in STD_LOGIC; --方向控制信號
            clk: in STD_LOGIC; --系統(tǒng)時鐘信號
            ini: in STD_LOGIC; --初始化使能信號
            manner: in STD_LOGIC_VECTOR (1 downto 0); --激磁方式的選擇開關(guān)
            angle: in INTEGER range 255 downto 0; --步進角的倍數(shù)設(shè)定輸入
            baBA: out STD_LOGIC_VECTOR (3 downto 0)); --狀態(tài)輸出
            end step_motor;
            architecture stepmotor_arch of step_motor is
            signal count: INTEGER range 0 to 7; --計數(shù)器
            signal cntInc: INTEGER range -2 to 2; --設(shè)定累加器所需的累(加/減)計數(shù)值
            signal cc : integer range 0 to 3;
            signal cntIni: INTEGER range -1 to 0; --設(shè)定累加器所需的計數(shù)初值
            signal angleDnCount: INTEGER range 255 downto 0; --計算已經(jīng)轉(zhuǎn)過的步進角
            signal angleDnCntDec: INTEGER range 2 downto 1;
            begin
            process(dir, manner, angle)--, ini)
            begin
            --if ini='1' then
            cc=conv_integer(manner);
            if dir='0' then
            case cc is
            when 1 => -- 1-?相激勵
            --count=0;
            cntIni=0;
            cntInc=2;
            angleDnCntDec=2;--10;
            when 2 => -- 2-?相激勵
            --count=7;
            cntIni=-1;
            cntInc=2;
            angleDnCntDec=2;--10;
            when 3 => -- 1-2?相激勵
            --count=0;
            cntIni=0;
            cntInc=1;
            angleDnCntDec=1;--01;
            when 0 => --manner=00 autodetect
            if (angle rem 2) =1 then -- 2-?相激勵
            --count=7;
            cntIni=-1;
            cntInc=2;
            angleDnCntDec=2;--10;
            else -- 1-?相激勵
            --count=0;
            cntIni=0;
            cntInc=2;
            angleDnCntDec=2;--10;
            end if; --angle
            end case; --manner
            else -- if dir='1'
            case cc is
            when 1 => -- 1-?相激勵
            --count=0;
            cntIni=0;
            cntInc=-2;
            angleDnCntDec=2;--10;
            when 2 => -- 2-?相激勵
            --count=7;
            cntIni=-1;
            cntInc=-2;
            angleDnCntDec=2;--10;
            when 3 => -- 1-2?相激勵
            --count=0;
            cntIni=0;
            cntInc=-1;
            angleDnCntDec=1;--01;
            when 0 => --manner=00 autodetect
            if (angle rem 2) = 1 then -- 2-?相激勵
            cntIni=-1;
            cntInc=-2;
            angleDnCntDec=2;--10;
            else -- 1-?相激勵
            cntIni=0;
            cntInc=-2;
            angleDnCntDec=2;--10;
            end if; --angle
            end case; --manner
            end if; -- else dir=0
            --end if; -- ini
            end process;
            counting_reset: process(reset,ini, angle, clk)
            begin
            if reset='1' then
            count=0;
            angleDnCount=0;
            elsif clk'event and clk='1' then
            if ini='0' then
            count=0+cntIni;
            angleDnCount=angle;
            else
            count = count+cntInc;
            if angleDnCount > angleDnCntDec then
            angleDnCount = angleDnCount-angleDnCntDec;
            else
            angleDnCount = 0;
            end if;
            end if;
            end if;
            end process;

            本文引用地址:http://www.biyoush.com/article/190622.htm

            baBA =0000 when angleDnCount=0 else
            0001 when count=0 else
            0011 when count=1 else
            0010 when count=2 else
            0110 when count=3 else
            0100 when count=4 else
            1100 when count=5 else
            1000 when count=6 else
            1001;-- when count>=7;
            end stepmotor_arch;



            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉