新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于FPGA的乒乓球游戏的设计与实现

基于FPGA的乒乓球游戏的设计与实现

作者: 时间:2012-02-27 来源:网络 收藏

代码分析:

首先简单介绍Avalon总线。SOPCBuilder自动生成的Avalon交换架构是针对系统处理器和外设的专用互联需求进行优化。Avalon总线可以连接许多外部设备,如定时器/计数器,外部三态桥接,外部SRAM接口,UART,LCD接口,用户逻辑接口JTAG,UARTC,并行I/O等。代码中,IOWR_ALTERA_AVALON_UART_STATUS()函数可以完成向串口发送数据的任务,IOWR_ALTERA_AVALON_PIO_DATA()函数则可以给内部工程发送并行数据,控制占空比的值。

在中断服务函数中,通过设置标志位变量flag辨别是否为双击命令。在确定击球方式后生成cmd的四种状态。cmd为全局变量,在main()函数中实现状态的选择。

3.4小球运动程序

41.jpg

程序分析:

该段程序是主函数main()的关键部分,其中数组xlabel[50]是小球在X轴方向的运动轨迹,轨迹方程是xlabel=i×5。数组ylabel[50]和ylabel2[50]是小球在Y方向的两个轨迹,轨迹方程分别为ylabel=-0.007i2+1.792i和ylabel2=-0.013i2+3.328i,其中i是小球运动的变量,在for循环函数中匀速增加或减小。当出现break时小球运动方向改变。当i=0或者i=49时,说明小球触壁却没能遭到有效击球,判定一方得分,通过UART发送指令在单片机上显示比分。delay()函数用来控制小球的运动速度。

4实验结果

将程序烧写到芯片内部,在NiosII开发环境下运行RunasNiosⅡHardware。把低通滤波器的两个输出通道分别接到双踪示波器的输入端。观察到示波器上显示出小球沿着抛物线轨迹来回运动,并可以通过按键实现击球命令改变小球运动。

5结束语

本实验可以进行适当改进。比如小球轨迹可以选用三个或三个以上更加丰富的轨道码表,这样小球的运动轨迹将更加多样。还可以设立对游戏难度的设置,改变对小球的运动速度,这个想法可以在中断服务函数通过对delay()函数进行实参的变换而实现。


上一页 1 2 3 下一页

关键词: FPGA

评论


相关推荐

技术专区

关闭