目录

六足机器人FPGA程序思路解读

分层设计

本次FPGA程序主要有五大模块,分别是
1.PWM发生模块
2.目标角度转换目标翻转值模块
3.命令解析模块(产生各种动作指令)
4.UART数据接收模块
5.top模块

PWM发生模块

系统时钟频率为12M,而我们需要20ms为周期的pwm,因此设计一个计数器,每计数240000次清零,然后在翻转值之前,输出高电平,翻转值之后,输出低电平,这样一个周期20ms且占空比可调的PWM发生模块就设计好了。

目标角度转换目标翻转值模块

由于对于舵机来说,需要的是接收一个周期20ms,高电平时间为0.5ms到2.5ms之间的pwm,而角度和这个高电平的时间又是成线性的,因此我们可以专门做个表,将各个角度对应各个不同的翻转值,这样,我们的命令解析模块,在对各个舵机进行指令输出的时候,直接输出目标角度即可,这样也极大的提高了程序的可读性。

命令解析模块(产生各种动作指令)

我们在接收到指令后,要对指令进行进行解析,是行走还是左转或是右转。而不同的动作对应不同的控制逻辑,因此,命令解析模块主要就是负责根据接收到的不同的指令,进相应不同的逻辑控制,如行走动作应该分几步完成一个动作,每一步之间的时间间隔以及每一步18个舵机应该分别是多少角度等。

UART数据接收模块

UART数据接收模块主要就是负责接收从树莓派传输过来的8位控制指令,在设计过程中,每一位数据分别采样了16次并通过1或者0在16次中的占比判断该位数据是否有异常,这主要是为了保证在复杂的电磁环境下,可以降低干扰对数据传输的影响

top模块

顶层模块的作用就是把各个模块例化,连线,并且定义输入输出,属于最宏观的一层,在进行fpga设计的时候,可以顶层和底层的模块同时设计,也可以自顶向下,或者自低向上,这些看实际情况而定。
具体的程序参考http://www.eetree.io/doc/tproject1.4#fpga%E8%BF%9E%E6%8E%A5%E5%92%8Cverilog%E7%BC%96%E7%A8%8B