在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 步進(jìn)電機(jī)定位控制系統(tǒng)的VHDL程序設(shè)計(jì)

            步進(jìn)電機(jī)定位控制系統(tǒng)的VHDL程序設(shè)計(jì)

            作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò) 收藏

            定位控制系統(tǒng)程序與仿真

            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ù)位信號(hào)
            dir: in STD_LOGIC; --方向控制信號(hào)
            clk: in STD_LOGIC; --系統(tǒng)時(shí)鐘信號(hào)
            ini: in STD_LOGIC; --初始化使能信號(hào)
            manner: in STD_LOGIC_VECTOR (1 downto 0); --激磁方式的選擇開(kāi)關(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; --計(jì)數(shù)器
            signal cntInc: INTEGER range -2 to 2; --設(shè)定累加器所需的累(加/減)計(jì)數(shù)值
            signal cc : integer range 0 to 3;
            signal cntIni: INTEGER range -1 to 0; --設(shè)定累加器所需的計(jì)數(shù)初值
            signal angleDnCount: INTEGER range 255 downto 0; --計(jì)算已經(jīng)轉(zhuǎn)過(guò)的
            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-?相激勵(lì)
            --count=0;
            cntIni=0;
            cntInc=2;
            angleDnCntDec=2;--10;
            when 2 => -- 2-?相激勵(lì)
            --count=7;
            cntIni=-1;
            cntInc=2;
            angleDnCntDec=2;--10;
            when 3 => -- 1-2?相激勵(lì)
            --count=0;
            cntIni=0;
            cntInc=1;
            angleDnCntDec=1;--01;
            when 0 => --manner=00 autodetect
            if (angle rem 2) =1 then -- 2-?相激勵(lì)
            --count=7;
            cntIni=-1;
            cntInc=2;
            angleDnCntDec=2;--10;
            else -- 1-?相激勵(lì)
            --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-?相激勵(lì)
            --count=0;
            cntIni=0;
            cntInc=-2;
            angleDnCntDec=2;--10;
            when 2 => -- 2-?相激勵(lì)
            --count=7;
            cntIni=-1;
            cntInc=-2;
            angleDnCntDec=2;--10;
            when 3 => -- 1-2?相激勵(lì)
            --count=0;
            cntIni=0;
            cntInc=-1;
            angleDnCntDec=1;--01;
            when 0 => --manner=00 autodetect
            if (angle rem 2) = 1 then -- 2-?相激勵(lì)
            cntIni=-1;
            cntInc=-2;
            angleDnCntDec=2;--10;
            else -- 1-?相激勵(lì)
            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;
            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;

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


            評(píng)論


            相關(guān)推薦

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

            關(guān)閉