Skip to content

ClazyChen/BumperCar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

主状态机state说明:

0000:初始状态,运行initial模块,等待initial的com返回1(键盘按下)

0001:initial的com返回1,运行wait模块读数据,等待wait的com返回1

0010:wait的com返回1,初始化graph

0011:运行collide模块获得碰撞判断信息,等待collide的com返回1(现在这个状态是直接跳过的哈哈哈哈

0100:利用collide返回的碰撞信息更新graph(现在这个状态是直接跳过的哈哈哈哈

0101:graph更新后,运行modify模块等待下一个60Hz时钟上沿,这期间记录键盘输入信息

0110:根据modify返回的res更新graph

0111:60Hz时钟上沿到达之后,运行motion模块获得运动信息,等待motion的com返回1

1000:利用motion返回的运动信息更新graph(现在是直接回0011了)

1001:graph更新后,运行win模块获得判断胜负信息,等待win的com返回1(没做)

1010:win模块返回1以后,如果胜负未定,转到0100状态,否则在这里输出结果(没做)

警告!所有的!用到实数算术的!

都用50MHz的时钟!!!!!

graph的内容包括:

所有物体(每个数字32位×15个数字×2个物体):

  • 速度:vx,vy
  • 角速度:omega(sin,cos)
  • 角加速度:alpha(sin,cos)
  • 加速度:ax,ay
  • 质量:mess
  • 转动惯量:j
  • 半径:r
  • 位置:x,y
  • 旋转角:rotation(sin,cos)
属性 P1 P2
速度vx(dt倍) 928 448
速度vy(dt倍) 896 416
角速度正弦sin$\omega$ 864 384
角速度余弦cos$\omega$ 832 352
角加速度正弦sin$\alpha$ 800 320
角加速度余弦cos$\alpha$ 768 288
加速度ax(dt倍) 736 256
加速度ay(dt倍) 704 224
质量mess 672 192
转动惯量j 640 160
半径r 608 128
位置x 576 96
位置y 544 64
旋转角正弦sin$\theta$ 512 32
旋转角余弦cos$\theta$ 480 0

开源的add.vhd(加法),一次6个时钟(50MHz下同

mult7.vhd(乘法),一次7个时钟

我写的angleadd.vhd(角加法,用正弦、余弦),一次36个时钟

clk60.vhd(完成)

输入:clk(100MHz时钟)

输出:clk60(60Hz时钟)

ps2_keyboard.vhd:(完成

输入:clk_in(键盘时钟),data(键盘输入)

输出:key(长度为8的向量,ps2码)

keyboard_ctrl.vhd(完成

输入:clk(时钟),data(键盘输入)

输出:down(长度为8的向量,是否按下)

para.vhd:

输入:clk, address

输出:q

各种图形.vhd

输入:clk, address

输出:q

vga_ctrl.vhd(完成

输入:clk(100M时钟输入), rst, state(状态机), q, rgb(当前颜色)

输出:clk25(25M时钟输出), hs, vs, r, g, b, address, x, y(当前坐标)

paint.vhd

输入:clk, rst, state(状态机), q, graph(当前逻辑状态), x, y(当前坐标)

输出:rgb(当前颜色), address

main.vhd(更新中

输入:clk, rst, data(键盘)

输出:hs, vs, r, g, b(VGA)

angleadd.vhd(完成

输入:clk, rst, sin1,sin2,cos1,cos2

输出:sino, coso, com

initial.vhd(完成

输入:clk, rst, data(键盘)

输出:com(结束信号), con(选择的模式)

waiting.vhd(完成

输入:clk, rst, con(模式)

输出:com(结束信号), graph(生成的逻辑状态)

collide.vhd

输入:clk, rst, graph(逻辑状态)

输出:com(结束信号), res(计算结果,下个状态更新graph)

modify.vhd(完成

输入:clk, rst, data

输出:com, res(计算结果)

motion.vhd

输入:clk, rst, graph

输出:com, res

win.vhd

输入:clk, rst, graph

输出:com, result

About

PENG PENG Car!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors