中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        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.antipu.com.cn/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)閉