基于vga ps2 verilog 游戏的坦克游戏

基于FPGA乒乓球游戏机Verilog设计_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于FPGA乒乓球游戏机Verilog设计
&&基于FPGA乒乓球游戏机Verilog设计
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩6页未读,
定制HR最喜欢的简历
你可能喜欢后使用快捷导航没有帐号?
请完成以下验证码
查看: 1576|回复: 4
求助!Verilog乒乓球游戏
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
FPGA新人想向各位大大求助 &&
本人是海外留学生~
最近在用FPGA学习制作乒乓球游戏,
在此附上我已经完成的代码。(Verilog)
我想加上记分功能可是搞不清应该怎么做。希望大家帮个忙
19:19 上传
点击文件名下载附件
172.97 KB, 下载次数: 39
在线时间3130 小时
威望5773分
芯币21593枚
TA的帖子TA的资源
你有实际的板子吗?你想要加上积分功能的话那你应该是还需要有显示的,对把?
首先计分判断,你写一个模块用于计分功能的,根据打球判断来判断是否计分。这个逻辑应该还是很好写的。然后把数值传输到显示模块显示出来就好。
在线时间3130 小时
威望5773分
芯币21593枚
TA的帖子TA的资源
这种计分器模块应该比较好写,去网站上搜索下应该能搜到参考代码。
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
你有实际的板子吗?你想要加上积分功能的话那你应该是还需要有显示的,对把?
首先计分判断,你写一个模块 ...
有实际的板子~
Untitled.jpg (24.64 KB, 下载次数: 0)
03:04 上传
这部分是显示器的代码~ ff指的是分数~ 但是我不懂 if()&-----这个部分的条件(打球判断来判断是否计分)&&
所以希望哪位高手可以帮帮我 &&毕竟是初学者所以对于很多方面还不是很了解。。
在线时间3681 小时
威望4056分
芯币26532枚
TA的帖子TA的资源
先搞懂积分规则再说代码吧,总有个需求吧
EEWORLD 官方微信
Powered by[转载]verilog&不可综合语句
有很多同学在学Verilog语言的时候学了很多相关语法,但是不知道有哪一些语言无法综合,导致在写代码的时候感觉很迷茫,我在网上查了很多,再加上自己的经验总结了这些资料,希望能够对大家有用。
不可综合语句
(1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,
default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,
input,instantitation,module,negedge,posedge,operators,output,parameter。
(2)所有综合工具都不支持的结构:time,defparam,$finish,fork,join,initial,delays,UDP,wait。
(3)有些工具支持有些工具不支持的结构:casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。
建立可综合模型的原则
要保证Verilog
HDL赋值语句的可综合性,在建模时应注意以下要点:
(1)不使用initial。
(2)不使用#10。
(3)不使用循环次数不确定的循环语句,如forever、while等。
(4)不使用用户自定义原语(UDP元件)。
(5)尽量使用同步方式设计电路。
(6)除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议采用
行为语句来完成设计。
(7)用always过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号。
(8)所有的内部寄存器都应该能够被复位,在使用FPGA实现设计时,应尽量使用器
件的全局复位端作为系统总的复位。
(9)对时序逻辑描述和建模,应尽量使用非阻塞赋值方式。对组合逻辑描述和建模,
既可以用阻塞赋值,也可以用非阻塞赋值。但在同一个过程块中,最好不要同时用阻塞赋
值和非阻塞赋值。
(10)不能在一个以上的always过程块中对同一个变量赋值。而对同一个赋值对象
不能既使用阻塞式赋值,又使用非阻塞式赋值。
(11)如果不打算把变量推导成锁存器,那么必须在if语句或case语句的所有条件
分支中都对变量明确地赋值。
(12)避免混合使用上升沿和下降沿触发的触发器。
(13)同一个变量的赋值不能受多个时钟控制,也不能受两种不同的时钟条件(或者
不同的时钟沿)控制。
(14)避免在case语句的分支项中使用x值或z值。
不可综合verilog语句
1、 initial
只能在test
bench中使用,不能综合。(我用ISE10.1综合时,有时简单的initial
也可以综合,不知道为什么)
2、 events
event在同步test bench时更有用,不能综合。
不支持real数据类型的综合。
不支持time数据类型的综合。
5、force 和release
不支持force和release的综合。
6、assign 和deassign
不支持对reg
数据类型的assign或deassign进行综合,支持对wire数据类型的
assign或deassign进行综合。
7、fork join
不可综合,可以使用非块语句达到同样的效果。
8、primitives
支持门级原语的综合,不支持非门级原语的综合。
不支持UDP 和table的综合。
10、敏感列表里同时带有posedge和negedge
如:always @(posedge clk or negedge
clk) begin...end
这个always块不可综合。
11、同一个reg变量被多个always块驱动
以#开头的延时不可综合成硬件电路延时,综合工具会忽略所有延时代码,但不会
这里的#10是用于仿真时的延时,在综合的时候综合工具会忽略它。也就是说,在
综合的时候上式等同于a=b;
13、与X、Z的比较
可能会有人喜欢在条件表达式中把数据和X(或Z)进行比较,殊不知这是不可综合
的,综合工具同样会忽略。所以要确保信号只有两个状态:0或1。
1 module synthesis_compare_xz
6 always @ (b)
8 & if ((b == 1'bz)
|| (b == 1'bx)) begin
10 & end else
14 endmodule
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。坦克游戏——实现坦克的移动和子弹的发射
坦克游戏——实现坦克的移动和子弹的发射
偶的坦克终于可以移动,可以发射子弹了~~
不过从昨天软件开发与实践的老师的角度去说~我这样做是不对的~开发一个程序之前需要做好构架,而我则是想到哪做哪..做错了再改!哈哈!..还有待学习..
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class YouXi extends JFrame
Draw_table d_
//中间的画板
Mypanel panel_
//右边的面板
private static Icon[]
super("傻瓜坦克
版权所有:久城");
c = getContentPane();
c.setLayout(new BorderLayout());
panel_east = new Mypanel();
panel_east.setLayout(new GridLayout(6,1,20,20));
faces= new Icon[]{new ImageIcon("d:11.jpg","")};
JButton button1 = new JButton("重新开始");
JButton button2 = new JButton(new String ("傻瓜坦克"),new ImageIcon(getClass().getResource("11.jpg")));
JTextField text1 = new JTextField("realsmy");
JTextField text2 = new JTextField("0");
JLabel lb1 = new JLabel("玩
JLabel lb2 = new JLabel("杀人数");
text1.setEditable(false);
text2.setEditable(false);
panel_east.add(button2);
panel_east.add(lb1);
panel_east.add(text1);
panel_east.add(lb2);
panel_east.add(text2);
panel_east.add(button1);
//添加键盘监听,不知道加到哪好,随表找个按钮加上去了哈哈!
button2.addKeyListener(new KeyAdapter()
public void keyPressed(KeyEvent e)
if(e.getKeyCode()==KeyEvent.VK_ENTER)
if(d_table.fangxiang == 1)
d_table.zx = d_table.x+50;
d_table.zy = d_table.y+10;
d_table.key_fangxiang = 1;
if(d_table.fangxiang == 2)
d_table.zx = d_table.x+10;
d_table.zy = d_table.y+50;
d_table.key_fangxiang = 2;
if(d_table.fangxiang == 3)
d_table.zx = d_table.x-10;
d_table.zy = d_table.y+10;
d_table.key_fangxiang = 3;
if(d_table.fangxiang == 4)
d_table.zx = d_table.x+10;
d_table.zy = d_table.y-10;
d_table.key_fangxiang = 4;
d_table.key =
if(e.getKeyCode()==KeyEvent.VK_UP){
d_table.y-=10;
d_table.fangxiang = 4;
if(e.getKeyCode()==KeyEvent.VK_DOWN){
d_table.y += 10;
d_table.fangxiang = 2;
if(e.getKeyCode()==KeyEvent.VK_LEFT){
d_table.x -= 10;
d_table.fangxiang = 3;
if(e.getKeyCode()==KeyEvent.VK_RIGHT){
d_table.x +=10;
d_table.fangxiang = 1;
d_table = new Draw_table();
d_table.setBackground(Color.red);
c.add(panel_east,BorderLayout.EAST);
c.add(d_table,BorderLayout.CENTER);
setSize(600,600);
setLocation(200,100);
setVisible(true);
public static void main(String args[])
YouXi yx = new YouXi();
yx.setDefaultCloseOperation(EXIT_ON_CLOSE);
//定义画板类
class Draw_table extends Canvas// implements runnable
static boolean key =
static int x=20,y=20;
//坦克坐标
static int zx,
//子弹起点坐标
static int fangxiang = 1;
//定义车头方向
static int key_fangxiang = 1;
//定义子弹方向
int k = 1;
public void paint(Graphics g)
if(fangxiang == 1)
g.setColor(Color.black);
g.fillRect(x,y,50,30);
g.fillRect(x+50,y+10,10,10);//车头=子弹
g.setColor(Color.blue);
g.fillOval(x+15,y+5,20,20);
if(fangxiang == 2)
g.setColor(Color.black);
g.fillRect(x,y,30,50);
g.fillRect(x+10,y+50,10,10);//车头=子弹
g.setColor(Color.blue);
g.fillOval(x+5,y+15,20,20);
if(fangxiang == 3)
g.setColor(Color.black);
g.fillRect(x,y,50,30);
g.fillRect(x-10,y+10,10,10);//车头=子弹
g.setColor(Color.blue);
g.fillOval(x+15,y+5,20,20);
if(fangxiang == 4)
g.setColor(Color.black);
g.fillRect(x,y,30,50);
g.fillRect(x+10,y-10,10,10);//车头=子弹
g.setColor(Color.blue);
g.fillOval(x+5,y+15,20,20);
try{Thread.sleep(200);}catch(Exception e){}
if(key == true)
//new Thread(new draw_table()).start();
//new Zidan_thread().start();
repaint();
public void zidan()
Graphics g = getGraphics();
g.setColor(Color.yellow);
g.fillRect(zx, zy, 10, 10);
if(key_fangxiang == 1)
if(key_fangxiang == 2)
if(key_fangxiang == 3)
if(key_fangxiang == 4)
try{Thread.sleep(200);}catch(Exception e){}
//public void run()
// zidan();
//面板类定义
class Mypanel extends JPanel
public Insets insets()
return new Insets(60,10,200,10);

我要回帖

更多关于 verilog wait的用法 的文章

 

随机推荐