微机大作业基于fpga对step motor的控制等_第1页
微机大作业基于fpga对step motor的控制等_第2页
微机大作业基于fpga对step motor的控制等_第3页
微机大作业基于fpga对step motor的控制等_第4页
微机大作业基于fpga对step motor的控制等_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

--1 任课教师: 张 基于 : --PAGE10LEDPC1,8255LED21,同时步进电机按预先设定PC2,8255LED21,同时步进电机按预先设定PC3,8255LED21,同时步进电机按预先设定PC4,8255LED21,同时步进电机按预先设定CPULED模块、UART8255+LED+按键模块。在所有实验中总线模块处于中心位置不变,基础模块根据实验内容不同任意组合。总线模块和基础模块程序固定。CPU模块程序根据实3项82558255(2)step(3)PCUARTstep4位地址总线、8位数据总线、3位控制总线(复位、读、写)4bank0CPU模块连接,bank1、bank2、bank3与基础模块连接。CPU1与基础3122CPU向数据总线写数据时,3个基础模块的数据总线都会得到数据。但当CPU想要数据时,int_bank1int_bank2[0]int_bank3CPU1001或bank3。当CPU输出数码管地址,数据总线输出—— 示1——8。复位信号使能,数码管熄灭。bank0bank1bank3sw7——sw2中任CPU模块输出按键模块地址,数据总线输出— UARTJ26(TXD、RXD、GND三个管脚DIGICUBEvision1.1232J25TXDRXD232USB接口是无法使用的,作者在实验J26PC1011,通过bank1bank2CPUUART地址,wr信号使能,TXDPC8tx_done中断信号。PC端发送数据,UARTRXD8位数据传输到数据总线,rx_done中断信号。图2驱动与电机实物连接MP28GA5.625360640.33r/s11MP28GA°比5KULN2003APG的驱动驱动原理图如下图所示3LUN2003uln2003主要用于驱动步进电机工作,因为步进电机的工作电压高电流大,FPGA是不uln2003来提供。即为实现功率放大的作用。2分配顺序123456785红4橙110000013黄011100002粉000111001蓝00000111红线接+5Vpin1至pin45.625度需88pin1至pin40001-0011-0010-0110-0100-1100-1000-1001,则步进电机转过一格(5.625度,如果需要转过多格,8pin1至pin4:依1001-1000-1100-0100-0110-0010-0011-0001即可倒转一格(-5.625度。 CPUCPU输入缓冲器,每次输入数据都到这个缓冲CPU18.432MHz全局复位输入/(1.2)8255DBD0~D78255CPU8ABA0~A1A、B、C根据定义,82553A、B、C8825524(1)APA0~PA782558(2)BPB0~PB782558(3)CPC0~PC7825589600bit/s为例。波特率是每秒发送/0116个时钟周期等于接收/120个UCLK时钟周期。1618018(2)stepmotorstepmotor的原理知,让转一格(5.625度pin1pin4依次给信0001-0011-0010-0110-0100-1100-1000-1001(正转)1001-1000-1100-0100-0110-代码如下,各端口作用为stepmotor按键输入缓冲,每次输入数据都到这个缓冲中,以控制motorFPGAmodulemotor(rst,clk,out);input[3:0]rst;inputclk;wire[3:0]rst;output[3:0]out;wirenewclk,clk;reg[3:0]out;reg[3:0]reg[6:0]diviu1(clk,newclk);always@(posedgenewclk)if(rst==4'b1000||rst==4'b0100||rst==4'b0010||elsealways@(posedgenewclk)if(rst==4'b1000||rst==4'b0100||rst==4'b0010|| else always@(posedgenewclk)4'b0000:beginout<=4'b1000;end4'b0001:beginout<=4'b1100;end4'b0010:beginout<=4'b0100;end4'b0011:beginout<=4'b0110;end4'b0100:beginout<=4'b0010;end4'b0101:beginout<=4'b0011;end4'b0110:beginout<=4'b0001;end4'b0111:beginout<=4'b1001;end4'b1000:beginout<=4'b1000;end :beginout<=4'b1000; :beginout<=4'b1100; :beginout<=4'b0100; :beginout<=4'b0110; :beginout<=4'b0010; :beginout<=4'b0011; :beginout<=4'b0001; :beginout<=4'b1001; :beginout<=4'b1000;end4'b0000:beginout<=4'b1001;end4'b0001:beginout<=4'b0001;end4'b0010:beginout<=4'b0011;end4'b0011:beginout<=4'b0010;end4'b0100:beginout<=4'b0110;end4'b0101:beginout<=4'b0100;end4'b0110:beginout<=4'b1100;end4'b0111:beginout<=4'b1000;end4'b1000:beginout<=4'b1001;end :beginout<=4'b1001; :beginout<=4'b0001; :beginout<=4'b0011; :beginout<=4'b0010; :beginout<=4'b0110; :beginout<=4'b0100; :beginout<=4'b1100; :beginout<=4'b1000; :beginout<=4'b1001;endmoduledivi(clk,newclk);//分频器inputclk;outputnewclk;regnewclk;reg[24:0]count;always@(posedgeclk)if(count==6067)//实际应该为18.432e6/177=~.n/2-1=52066beginnewclk<=~newclk; (3)PCUARTstepmotormotor的运行。PC8255。`timescale1ns///////Create 15:04:15//Design//Module //Project//Target//Tool////////Revision0.01-File//Additionalmoduletop(///////////////Portdeclarations/////////////////////inputgclk;inputrst;input[7:0]sw;inputwr,rd;output[3:0]output[7:0]output[7:0]led2;outputint_btn;input[3:0]inout[7:0]wire[7:0]data_8255;wirecs_n,wr_n,rd_n,a1,a0,cs_8255,cs_button,cs_led1,cs_led2,rst_n;wire[7:0]pa;wire[7:0]wire[3:0]wire[3:0]wire[7:0]wire[7:0]wire[3:0]wire[7:0]assigncs_8255=(addr_bus[2]&&!addr_bus[3])?1:0;assigna0=addr_bus[0];assignassigncs_led1=(addr_bus[3]&&!addr_bus[2]&&!addr_bus[1]&&!addr_bus[0])?1:0;assigncs_led2=(addr_bus[3]&&!addr_bus[2]&&!addr_bus[1]&&addr_bus[0])?1:0;assigncs_button=(addr_bus[3]&&!addr_bus[2]&&addr_bus[1]&&!addr_bus[0])?1:0;assignwr_n=~wr;assignrd_n=~rd;assignled1_in=pa;assignled2_in=pb;assignmotor1=pb[3:0];assignpch=sw_out[7:4];assignpcl=sw_out[3:0];assignrst_n=~rst;assigncs_n=~cs_8255;assigndata_bus=(!wr&&rd)?data_8255:8'hzz;assigndata_8255=(wr&&!rd)?top_8255top_8255(.cs_n(cs_n),.a1(a1),.a0(a0),_btn(int_btn),ledledmotorstepmotor`timescale1ns///////Create 01:07:53//Design//Module //Project//Target//Tool////////Revision0.01-File//Additionalmodulemotor(motor1,clk,out);input[3:0]motor1;inputclk;wire[3:0]motor1;output[3:0]out;wirenewclk,clk;reg[3:0]out;reg[3:0]reg[6:0]diviu1(clk,newclk);always@(posedgenewclk)if(motor1==4'b1000||motor1==4'b0100||motor1==4'b0010||elsealways@(posedgenewclk)if(motor1==4'b1000||motor1==4'b0100||motor1==4'b0010|| else always@(posedgenewclk)4'b0000:beginout<=4'b1000;end4'b0001:beginout<=4'b1100;4'b0010:beginout<=4'b0100;end4'b0011:beginout<=4'b0110;end4'b0100:beginout<=4'b0010;end4'b0101:beginout<=4'b0011;end4'b0110:beginout<=4'b0001;end4'b0111:beginout<=4'b1001;end4'b1000:beginout<=4'b1000;end :beginout<=4'b1000; :beginout<=4'b1100; :beginout<=4'b0100; :beginout<=4'b0110; :beginout<=4'b0010; :beginout<=4'b0011; :beginout<=4'b0001; :beginout<=4'b1001; :beginout<=4'b1000;end4'b0000:beginout<=4'b1001;end4'b0001:beginout<=4'b0001;end4'b0010:beginout<=4'b0011;end4'b0011:beginout<=4'b0010;end4'b0100:beginout<=4'b0110;end4'b0101:beginout<=4'b0100;end4'b0110:beginout<=4'b1100;end4'b0111:beginout<=4'b1000;end4'b1000:beginout<=4'b1001;end :beginout<=4'b1001; :beginout<=4'b0001; :beginout<=4'b0011; :beginout<=4'b0010; :beginout<=4'b0110; :beginout<=4'b0100; :beginout<=4'b1100; :beginout<=4'b1000; :beginout<=4'b1001;moduledivi(clk,newclk);inputclk;outputnewclk;regnewclk;reg[24:0]count;always@(posedgeclk)if(count==6067)//实际应该为18.432e6/177=~.n/2-1=52066beginnewclk<=~newclk; :子上LED模块内的现象;而板子和微机之间也可以通讯。见1。(2)单板如1234控制。具体效果见2。截图如上。(3)P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论