2024年FPGA国赛决赛基础能力测试x.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2024FPGA国赛能力测试题

注:题目二选一即可,所有题目只验收仿真波形。

十二小时制电子钟设计

创作一个12小时制的电子钟,带上午/下午指示器。要求如下:

顶层模块命名为top。

输入时钟信号为i_clk。

复位信号i_rst将电子钟复位至00:00am。

使能信号为i_ena。

o_pm为0表示上午,o_pm为1表示下午。

o_hh、o_mm和o_ss均为两位的BCD码,分别代表小时(00-11)、分钟(00-59)和秒(00-59)。

复位i_rst的优先级高于使能i_ena,即使未使能也能进行复位。

程序头:

moduletop(

inputi_clk,

inputi_rst,

inputi_ena,

outputo_pm,

output[7:0]o_hh,

output[7:0]o_mm,

output[7:0]o_ss

);

endmodule

Benchmark:

moduletb();

regi_clk=0;

regi_rst=1;

regi_ena=1;

wireo_pm;

wire[7:0]o_hh;

wire[7:0]o_mm;

wire[7:0]o_ss;

toptest(

.i_clk(i_clk),

.i_rst(i_rst),

.i_ena(i_ena),

.o_pm(o_pm),

.o_hh(o_hh),

.o_mm(o_mm),

.o_ss(o_ss)

);

always#1i_clk=~i_clk;

initialbegin

#3i_rst=0;

#7i_rst=1;

#3i_rst=0;

#1000000;

$stop;

end

endmodule

游戏机自动计费功能设计

实现一个游戏机计费程序的设计。某游戏机具有多个模式,价格不同,要求如下:

普通模式每分钟1元,畅玩模式每分钟收费2元,体验模式不计费但是只能体验一次,且时间限制为5分钟,体验结束回到普通模式(reset后体验次数重置);

默认情况下为普通模式(boost为2’b01),在boost为2’b10时进入畅玩模式,在boost为2’b11时进入体验模式,boost为2’b00时关闭游戏机(等待状态);

游戏机采用预付费模式,输入端口money的数值为预付费用,在set信号有效时,将money的数值读入。输出端口remain的数值为剩余费用,当费用小于10元时,黄色信号灯yellow亮起。当费用不足时,红色信号灯red亮起;

在游戏过程中可以通过set端口续费。每次set信号有效将此时刻money的数值加到remain之中。

注:在程序中以每个时钟周期代表一分钟,每个单位大小表示1元。

程序头:

modulegame_count(

inputrst_n,

inputclk,

input[9:0]money,

inputset,

input[1:0]boost,

output[9:0]remain,

outputyellow,

outputred

);

endmodule

Benchmark:

moduletbtb();

regrst_n;

regclk;

reg[9:0]money;

regset;

reg[1:0]boost;

wire[9:0]remain;

wireyellow;

wirered;

game_counttest(

.clk(clk),

.rst_n(rst_n),

.money(money),

.set(set),

.boost(boost),

.remain(remain),

.yellow(yellow),

.red(red)

);

initialbegin

clk=0;

rst_n=0;

set=0;

boost=2b01;//普通模式

money=10d0;

#15rst_n=1;

#10money=10d15;

#10set=1;//充值15元

#10set=0;

#50boost=2b11;//体验模式

#30money=10d15;

#70set=1;//再充值1次

#10

文档评论(0)

wszwtlg202 + 关注
实名认证
文档贡献者

一页纸且

1亿VIP精品文档

相关文档