FPGA与Vince步进电机驱动器

一、工程简介

1、 本工程实现的功能:用FPGA通过两个按键控制步进电机的启动和停止,硬件包括:黑金开发板、步进电机和Vince步进电机驱动器和电脑。
2、FPGA通过控制电机驱动器来控制步进电机的旋转,通过控制脉冲个数来控制电机角位移量,控制发送脉冲频率来控制电机的速度和加速度。
3、FPGA与Vince步进电机驱动器之间的通讯协议采用RS232电平标准的串口通信(UART),FPGA发送给驱动器的命令是32位数据或64位的,因此串口模块还实现了32转8位数据的功能。
4.我的电机用在下图中:
在这里插入图片描述

二、顶层设计

motor顶层包括3个子模块:2个按键模块(key_ctrl)和一个电机模块(motor_ctrl)。顶层如图一所示。
这块模块要特别注意:motor模块复位端口rst_n的接线,如果不接,那么key_ctrl模块的rst_n必须接高电平,否则电机无法启动,原因是直接接motor模块的外部rst_n,电平不稳定,会导致这个key_ctrl模块一直处于复位状态,可用SignalTap II抓取一下rst_n信号就一目了然了。

module motor (

	input		wire				clk,
	input		wire				rst_n,
	
	input		wire				key1,
	input		wire				key2,
	
	output 	wire				TXD
); 
	
	wire				key_flag1;
	wire				key_flag2;			//	key_flag2 = 0 in general 

//================ key1 control motor stop =============================

	key_ctrl key_ctrl_inst1 (

		.clk					(clk			),
		.rst_n				(1'b1			),
                         
		.key					(key1			),
		                   
		.key_flag			(key_flag1	)
	);

//=========================================================================

//================ key2 control motor start/reset =========================

	key_ctrl key_ctrl_inst2 (

		.clk					(clk			),
		.rst_n				(1'b1			),		//	if rst_n connected to port rst_n,rst_n must be allocated pins.
                         
		.key					(key2			),
		                   
		.key_flag			(key_flag2	)
	);

//========================================================================

	motor_ctrl motor_ctrl_inst(

		.clk						(clk			),
		.rst_n					(~ key_flag2), 
		
		.motor_end				(key_flag1	), 
		
		.TXD						(TXD			)
	);
	
endmodule 

三、架构设计

1、key_ctrl模块

该模块分为两个部分:按键消抖和边缘检测。其中中间信号key_wave的脉宽由按键按下的时间长短来决定,key_ctrl模块顶层如下:

module key_ctrl (

	input		wire					clk,
	input		wire					rst_n,

	input		wire					key,
	
	output	wire					key_flag
);

	wire					key_wave;
	
	key_filter key_filter_inst(

				.clk				(clk			),
				.rst_n			(rst_n		),
				
				.key				(key			),
				
				.key_wave		(key_wave	)
	);

	edge_check edge_check_inst(

				.clk				(clk			),
				.rst_n			(rst_n		),
				
				.key				(key_wave	),
				
				.flag_pos		(),
				.flag_neg		(key_flag	)
	);

endmodule 

(1)按键消抖模块(key_filter)

按键按下的标准:按下时间超过5ms。按键的状态可以分为4个:松开(KEY_OFF)、闭合抖动(ON_SHAKE)、闭合(K

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值