本帖最后由 ZZP 于 2015-4-9 20:29 编辑
一:小组成员
组长:钟在攀
组员:赵文静,杜琼珠,钟在攀
二:项目名称
基于FPGA+ARM+安卓的机器人
三:项目概述
本设计有五个组成部分:第一部分也是最重要的一部分,FPGA部分,其实主要包含PWM模块,串行接口模块,AD采样模块,蜂鸣器模块,数码管模块,角度rom模块;第二部分是ARM部分,主要包括机器人动作处理,连接互联网。第三部分是安卓部分,主要包括连接云端进行语音识别,通过TCP协议把数据发到wifi模块;第四部分是电源部分,7.4v的锂电池充满电是8.4v,直接给一般舵机供电不行,所以要降压,本系统采用二极管降压,电源部分还包括隔离模块,因为舵机直接连接开发板,会烧板子,大部分人采用光耦隔离,本组队友不甘心有普通的光耦隔离,自己研制出新型隔离模块,过程相当惨不忍睹,烧坏三个板子,但是是值得的,最后成功拒绝光耦。第五部分是机器人结构,零件采购,舵机采购然后自己组装。
三:作品实物图
五:演示视频
江大“至芯杯”作品
六:部分模块
1.1. 原理与框图
Ctrl为占空比调节控制位,clk为高频率的时钟信号,模块内通过分频产生50hz的可控制舵机的信号。框图如图1。
1.2. verilog hdl 程序清单
1.2.1. 主程序
module bio_polorl(ctrl,clk,pwm,en,reset);
input[15:0]ctrl;
input clk;
input en;
input reset;
output pwm;
reg pwm;
reg[15:0]cnt=0;
reg[15:0]CTRLS=1500;
always@(posedge clk or negedge reset)
begin
if(!reset)
begin
CTRLS<=1500;
cnt<=0;
end
else
begin
if(!en)CTRLS<=ctrl;
if(cnt>20000)
begin cnt<='b0;
end
else if(cnt<=CTRLS)
begin
pwm<=1;
cnt<=cnt+1;
end
else
begin
pwm<=0;
cnt<=cnt+1;
end
end
end
endmodule
1.2.2. 仿真程序
module bio_polorl_test;
// Inputs
reg [15:0] ctrl;
reg clk;
reg en;
reg reset;
// Outputs
wire pwm;
// Instantiate the Unit Under Test (UUT)
bio_polorl uut (
.ctrl(ctrl),
.clk(clk),
.pwm(pwm),
.en(en),
.reset(reset)
);
initial begin
// Initialize Inputs
ctrl = 1500;
clk = 0;
en = 0;
reset = 1;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
end
always #1 clk=~clk;
endmodule
1.3. 仿真结果如图2
|