微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 想用VHDL设计一个用摇杆,控制基于FPGA的蜘蛛型行走机器人

想用VHDL设计一个用摇杆,控制基于FPGA的蜘蛛型行走机器人

时间:10-02 整理:3721RD 点击:
小弟在这些设计方面的经验非常不足,真诚希望能够得到帮助。
这个蜘蛛型机器人有六个脚,每个脚上有两个伺服马达,两个伺服马达分别控制水平移动和垂直移动;机器人的身体实际上是一块FPGA板子,是xilinx Spartan-3 XC3S4000。
我的这个任务是接着别人做的,机器人的部分已经由别人做好了,我的主要任务是用vhdl来描述这个摇杆(就好比游戏机那样的类比摇杆),通过摇杆来控制机器人的行走。这个摇杆是两个8-bit,“上下","左右”分别是一个8-bit,摇杆的数据通过串行通信的方式传输给机器人。

vhdl的基础语法小弟虽然都学过,但是在应用方面经验尚浅,望诸位设计高手能就这个任务给小弟指明一些基本的思路。不胜感激!

这个还真是不容易啊呵呵,摇杆的输入量是什么样的?

小编能对整个系统的功能和结构划分再说的详细点吗?
据我个人的理解,摇杆的位置信号应该是通过某种途径(有线的,或是无线的)传到FPGA板子上,然后存放在两个8位寄存器中,你所设计的模块就是从这两个8位寄存器中读取数据,然后再通过串行的方式传给下面的接收端口,再由接收端口进一步控制机器人的行动。如果这一接收端口事先已定义好,就不在小编设计的考虑范围中了。

所以,小编设计的模块和其他模块的接口就是:(1)摇杆信号的两个8位寄存器 (2)串行接收端口
模块所要考虑的问题有 :(1)从8位寄存器读取数据的定时问题,即每隔多久去读取一次数据  (2)串行数据的发送时序及协议,是否需要接收端口的应答信号?如果接收端口接收数据失败,是否要重发?
(3)由于从寄存器读数据和向接收端口发数据不是同步的,所以可能需要一个FIFO来作为缓冲。
以上只是我按照自己的理解,能想到的一些问题。欢迎大家讨论,补充

非常感谢楼上的回复。
根据楼上的建议,我所设计一个模块,应该是一个并行输入,串行输出的模块吧?是不是也得用VHDL把两个寄存器描述出来?
由于系统本身比较复杂,完全把VHDL代码贴出来篇幅太长,所以我尽可能详细地把前人做出来的蜘蛛机器人FPGA上的各个功能说一下:
如顶楼所述,机器人有六个脚,每个脚上两个马达,其中一个马达可以上下动(最上是127,最下是-127)另一个马达可以前后动(最前是127,最后是-127)。
机器人的身体是一块FPGA,其中FPGA上关于机器人的各种motion已经被前面的人通过VHDL编出来了。
这个VHDL结构体下还包括3个component:
- 1. PWM信号生成的描述。由于马达的移动是靠PWM信号来控制的,所以这个元件主要负责生成PWM信号。
- 2. 一个指令定时器。即两个指令之间的间隔等待时间。
- 3. 闪存控制。 把预先编写的机器人行走程序存入FPGA的闪存中,这样机器人可以自动完成一段行走路线。(关于这一部分,大概和我的摇杆部分没有关系,因为我是直接用摇杆来控制机器人的行走)

关于(1):楼上所指的是不是就是串行通信的波特率?
关于(3):使用FIFO来实现数据同步的内容过去只是略有耳闻,不知道可否详细讲述一下或者推荐一些相关的文章?

非常感谢。

有意思!

看样子挺复杂的

这是一个控制系统
1,首先你目的是控制蜘蛛,要行与停,左转,右转,后退四个动作.
2.接下去,你要对蜘蛛动做进行建模,描术每个动做与每个脚之间的函数关系(带时间参数的关系,我是不太理解这个关系).把每个动作分解成脚的动做.
3,再接下去,你要把脚的动做分解为电机的动作.
4.明白了如上的控制关系,也就没明白了你的解码关系.先把行控制为解码为脚的动作.再后再解码为电机动作.
最后,我再说一点吧,动作都是时间的函数,这样每个动之间准确的描术要用泛函吧(我不太清楚了),简化一点可以把时间化为参量,但这样蜘蛛的动做一定不会流畅.不过这对硬件人员来说是很强的实现了.找个算法分析的帮你分析一下吧.
自已做的话找一找动做建模这样的书会有参考意义,3D游戏中有很多动做建模,不过它的模型是让人看上去好看,能不能让实物动就不知道了.小编你的努力啊,这可以让中国研究生的毕业东东.

刚刚开始学,也想有朝一日做个机器人。学习一下

有点意思

关于串行通信有一点还是不太明白: 摇杆有X轴和Y轴,每个轴分别是8 bit。通过8 bit的串行通信输入到FPGA上的话,如何区分X和Y的值?
也就是说,我现在比如用摇杆输入方向“上”,“上”的值是(X=00h ,Y= 7Fh),
在串行通信中,是不是先送一组
“开始位&00h&停止位”
然后再送一组
“开始位&7Fh&停止位“
然后把两组数据分别存到两个寄存器中?
是不是这样的?

xia look ok xie xie

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top