Verilog项目设计报拔河游戏机Word文档格式.docx

上传人:b****5 文档编号:19304170 上传时间:2023-01-05 格式:DOCX 页数:16 大小:499.98KB
下载 相关 举报
Verilog项目设计报拔河游戏机Word文档格式.docx_第1页
第1页 / 共16页
Verilog项目设计报拔河游戏机Word文档格式.docx_第2页
第2页 / 共16页
Verilog项目设计报拔河游戏机Word文档格式.docx_第3页
第3页 / 共16页
Verilog项目设计报拔河游戏机Word文档格式.docx_第4页
第4页 / 共16页
Verilog项目设计报拔河游戏机Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Verilog项目设计报拔河游戏机Word文档格式.docx

《Verilog项目设计报拔河游戏机Word文档格式.docx》由会员分享,可在线阅读,更多相关《Verilog项目设计报拔河游戏机Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

Verilog项目设计报拔河游戏机Word文档格式.docx

output[15:

0]LED;

//定义输出

reg[27:

0]Cnt;

regClk_100hz;

regen;

regKey1_n;

regKey1_n_reg;

regKey2_n;

regKey2_n_reg;

reg[3:

0]t;

reg[15:

0]led;

wirekey1,key2;

parameterCNT=28'

d49_999;

(2)分频模块,将Basys3的100M系统时钟分频成为周期为10ms,100Hz频率

always@(posedgeClkorposedgeRst_n)

begin

if(Rst_n)begin

Cnt<

=28'

d0;

Clk_100hz<

=0;

end

elseif(Cnt==CNT)begin

=~Clk_100hz;

else

=Cnt+1'

b1;

(3)按键消抖模块,给每一个按键两个状态,保证按键产生的信号可以消除抖动稳定。

beginif(Rst_n)

beginKey1_n<

Key2_n<

elsebegin

Key1_n<

=Key1_n_reg;

=Key2_n_reg;

always@(*)

if(Cnt==CNT)begin

Key1_n_reg=KEY1;

Key2_n_reg=KEY2;

Key1_n_reg=Key1_n;

Key2_n_reg=Key2_n;

assignkey1=Key1_n&

(~Key1_n_reg);

assignkey2=Key2_n&

(~Key2_n_reg);

(4)比较模块,每当时钟的上升沿,便比较A,B的脉冲个数,即谁按得快,输出就为1,否则就为0

always@(posedgeClk)

beginif(t==4'

d0||t==4'

d14)

en<

=1'

b0;

else

(5)移动模块

always@(posedgeClk_100hzorposedgeRst_n)

begin

if(Rst_n)

t<

=7;

if(en)

case({key1,key2})

2'

b10:

t<

=t+1'

b01:

=t-1'

default:

=t;

endcase

(6)译码模块,将得到的信号t转化为,Led的显示,最后赋值给Led输出端口,并且由数码管显示胜利的一方

case(t)

4'

d0:

led=16'

b0000_0000_0000_0011;

d1:

b0000_0000_0000_0110;

d2:

b0000_0000_0000_1100;

d3:

b0000_0000_0001_1000;

d4:

b0000_0000_0011_0000;

d5:

b0000_0000_0110_0000;

d6:

b0000_0000_1100_0000;

d7:

b0000_0001_1000_0000;

d8:

b0000_0011_0000_0000;

d9:

b0000_0110_0000_0000;

d10:

b0000_1100_0000_0000;

d11:

b0001_1000_0000_0000;

d12:

b0011_0000_0000_0000;

d13:

b0110_0000_0000_0000;

d14:

b1100_0000_0000_0000;

default:

b0000_0000_0000_0000;

endcase

assignLED=led;

endmodule

二、结果与讨论

1、仿真代码

`defineclk_period10//定义时钟周期

moduleBaTB();

regClk;

regRst_n;

regKEY1,KEY2;

wire[15:

project_bau0(

.Clk(Clk),

.Rst_n(Rst_n),

.KEY1(KEY1),

.KEY2(KEY2),

.LED(LED));

initial

beginClk=0;

end

always#(`clk_period/2)Clk=~Clk;

initialbegin

KEY1=0;

KEY2=0;

#(`clk_period*10);

Rst_n=1;

#(`clk_period*10);

Rst_n=0;

KEY1=1;

#(`clk_period*100);

KEY1=1;

KEY1=1;

endmodule

2、仿真波形

可以看到一直给Key1施加高电平时钟信号,Led灯的高电平一直向1方向的led灯方向移动,由此可得仿真成功。

3、问题与分析

在仿真成功以后生成比特流文件时一直显示错误无法成功,之后在请教其他同学以后,共同分析后发现,一开始设计中的数码管模块无法在结束后对应显示,于是便删除了数码管模块,在led移动到一端后便是游戏结束标志。

4、结果

在分析出问题兵解决之后,将程序烧写到fpga开发板上,设计的功能都能实现,于是上板验证也成功。

三、心得体会

一开始接触这个课题的时候,不知道怎么下手,通过其他同学的讲解以及查找资料基本了解了拔河游戏机的设计原理。

通过这次课程设计,我更加感到理论和实际之间的差异很大。

我也越来越强烈地感到要掌握一项技术,唯一的办法也是最好的办法就是实践。

只有通过实践才能将书本上的知识应用,也只有实践才能发现很多问题,真正掌握知识,学以致用。

虽然遇到的问题很多,但是同时得到很多有用的经验。

这些对于以后的学习和工作都有很大的帮助。

四、参考文献

[1]夏宇闻,Verilog数字系统设计教程,北京航天航空大学出版社,2013

[2]王金明,数字系统设计与VerilogHDL,北京电子工业出版社,2009

[3]潘松,EDA技术实用教程,北京科学出版社,2009

附录

实物板级验证图:

1、左边队员胜利

2、右边队员胜利

3、清零重置

4、源代码

module 

project_ba(

Clk,Rst_n,KEY1,KEY2,

LED);

input 

Clk;

Rst_n;

KEY1;

KEY2;

//定义输入 

output 

[15:

0] 

LED;

reg 

[27:

Cnt;

Clk_100hz;

en;

Key1_n;

Key1_n_reg;

Key2_n;

Key2_n_reg;

[3:

t;

led;

wire 

key1,key2;

parameter 

CNT 

28'

always@(posedge 

Clk 

or 

posedge 

Rst_n)

if(Rst_n) 

Cnt 

<

Clk_100hz 

0;

else 

if(Cnt 

== 

CNT) 

~Clk_100hz;

1'

begin 

Key1_n 

Key2_n 

Key1_n_reg 

Key2_n_reg 

assign 

key1 

&

(~Key1_n_reg);

key2 

(~Key2_n_reg);

Rst_n 

7;

b10 

:

b01 

endcase 

Clk)

if(t 

d0 

|| 

en 

led 

16'

d1 

d2 

d3 

d4 

d5 

d6 

d7 

d8 

d9 

default 

end//译码模块

LED 

endmodule 

5、测试文件

`defineclk_period10//定义时钟周期

6、管脚约束

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[15]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[14]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[13]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[12]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[11]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[10]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[9]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[8]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[7]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[6]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[5]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[4]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[3]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[2]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[1]}]

set_propertyIOSTANDARDLVCMOS33[get_ports{LED[0]}]

set_propertyPACKAGE_PINL1[get_ports{LED[15]}]

set_propertyPACKAGE_PINP1[get_ports{LED[14]}]

set_propertyPACKAGE_PINN3[get_ports{LED[13]}]

set_propertyPACKAGE_PINP3[get_ports{LED[12]}]

set_propertyPACKAGE_PINU3[get_ports{LED[11]}]

set_propertyPACKAGE_PINW3[get_ports{LED[10]}]

set_propertyPACKAGE_PINV3[get_ports{LED[9]}]

set_propertyPACKAGE_PINV13[get_ports{LED[8]}]

set_propertyPACKAGE_PINV14[get_ports{LED[7]}]

set_propertyPACKAGE_PINU14[get_ports{LED[6]}]

set_propertyPACKAGE_PINU15[get_ports{LED[5]}]

set_propertyPACKAGE_PINW18[get_ports{LED[4]}]

set_propertyPACKAGE_PINV19[get_ports{LED[3]}]

set_propertyPACKAGE_PINU19[get_ports{LED[2]}]

set_propertyPACKAGE_PINE19[get_ports{LED[1]}]

set_propertyPACKAGE_PINU16[get_ports{LED[0]}]

set_propertyPACKAGE_PINW5[get_portsClk]

set_propertyPACKAGE_PINW19[get_portsKEY1]

set_propertyPACKAGE_PINT17[get_portsKEY2]

set_propertyPACKAGE_PINV17[get_portsRst_n]

set_propertyIOSTANDARDLVCMOS33[get_portsClk]

set_propertyIOSTANDARDLVCMOS33[get_portsKEY1]

set_propertyIOSTANDARDLVCMOS33[get_portsKEY2]

set_propertyIOSTANDARDLVCMOS33[get_portsRst_n]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1