欢迎来到天天文库
浏览记录
ID:52763627
大小:22.00 KB
页数:3页
时间:2020-03-30
《步进电机控制-VHDL程序与仿真.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、步进电机控制系统VHDL语言程序-----仿真libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.all;entitystep_motorisport(reset:inSTD_LOGIC;--系统复位信号dir:inSTD_LOGIC;--方向控制信号clk:inSTD_LOGIC;--系统时钟信号ini:inSTD_LOGIC;--初始化使能信号manner:inSTD_LOGIC_VECTOR(1dow
2、nto0);--激磁方式的选择开关angle:inINTEGERrange255downto0;--步进角的倍数设定输入baBA:outSTD_LOGIC_VECTOR(3downto0));--步进电机状态输出endstep_motor;architecturestepmotor_archofstep_motorissignalcount:INTEGERrange0to7;--计数器signalcntInc:INTEGERrange-2to2;--设定累加器所需的累(加/减)计数值signalcc:integerrange0to3;sig
3、nalcntIni:INTEGERrange-1to0;--设定累加器所需的计数初值signalangleDnCount:INTEGERrange255downto0;--计算已经转过的步进角signalangleDnCntDec:INTEGERrange2downto1;beginprocess(dir,manner,angle)--,ini)begin--ifini='1'thencc<=conv_integer(manner);ifdir='0'thencasecciswhen1=>--1-相激励--count<=0;cntIni<
4、=0;cntInc<=2;angleDnCntDec<=2;--"10";when2=>--2-相激励--count<=7;cntIni<=-1;cntInc<=2;angleDnCntDec<=2;--"10";when3=>--1-2相激励--count<=0;cntIni<=0;cntInc<=1;angleDnCntDec<=1;--"01";when0=>--manner="00"autodetectif(anglerem2)=1then--2-相激励--count<=7;cntIni<=-1;cntInc<=2;angle
5、DnCntDec<=2;--"10";else--1-相激励--count<=0;cntIni<=0;cntInc<=2;angleDnCntDec<=2;--"10";endif;--angleendcase;--mannerelse--ifdir='1'casecciswhen1=>--1-相激励--count<=0;cntIni<=0;cntInc<=-2;angleDnCntDec<=2;--"10";when2=>--2-相激励--count<=7;cntIni<=-1;cntInc<=-2;angleDnCntDec<=2
6、;--"10";when3=>--1-2相激励--count<=0;cntIni<=0;cntInc<=-1;angleDnCntDec<=1;--"01";when0=>--manner="00"autodetectif(anglerem2)=1then--2-相激励cntIni<=-1;cntInc<=-2;angleDnCntDec<=2;--"10";else--1-相激励cntIni<=0;cntInc<=-2;angleDnCntDec<=2;--"10";endif;--angleendcase;--mannerendi
7、f;--elsedir=0--endif;--iniendprocess;counting_reset:process(reset,ini,angle,clk)beginifreset='1'thencount<=0;angleDnCount<=0;elsifclk'eventandclk='1'thenifini='0'thencount<=0+cntIni;angleDnCount<=angle;elsecount<=count+cntInc;ifangleDnCount>angleDnCntDecthenangleDnCount<=a
8、ngleDnCount-angleDnCntDec;elseangleDnCount<=0;endif;endif;endif;endprocess;baBA<="0000"wh
此文档下载收益归作者所有