> 文章列表 > 【FPGA实验4】举重比赛机制

【FPGA实验4】举重比赛机制

【FPGA实验4】举重比赛机制

举重比赛有三名裁判,当运动员将杠铃举起后,须有两名或两名以上裁判认可,方可判定试举成功,若用A、B、C分别代表三名裁判的意见输入,同意为1,否定为0;F为裁判结果输出,试举成功时F=1,试举失败时F=0。

一、分析与Verilog代码

真值表:
A B C F
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1

因而可以得到 F = (A&&B) || (A&&C) ||(B&&C)

Verilog代码:
module test(input wire A,input wire B,input wire C,output wire F);reg result=0;always @(A,B,C)result = (A&&B) || (A&&C) ||(B&&C);assign F = result;endmodule

二、软件仿真

tb文件:
module test_tb();wire result;
reg [3:0] count;
reg A, B, C;
reg clk;always #5 clk=~clk;initial beginclk<=0;A<=0;B<=1;C<=1;count<=1'b0;
endalways @ (posedge clk) beginif (count == 4'd2) beginA<=~A;endelse if(count ==4'd4)beginB<=~B;endelse beginC=~C;endif (count==4'd4)begincount<=4'b0;endelse begincount<=count+1'b1;endendtest u_test(.A      (A),.B      (B),.C      (C),.F      (result)
);endmodule
仿真结果:

当同一时刻,A、B、C中有大于等于两个为高电平时,输出为高电平。

【FPGA实验4】举重比赛机制

三、硬件箱实现

裁判A、B、C通过按键K1、K2、K3输入自己的结果,若通过,则绿色的LED灯L2亮起;若不通过,LED不亮。

1、代码调整

由于led是低电平驱动,所以需要对代码的最后做一点小的修改:

 assign F = result;

↓ ↓ ↓

 assign F = !result;

整体代码如下:

module test(input wire A,input wire B,input wire C,output wire F);reg result=0;always @(A,B,C)result = (A&&B) || (A&&C) ||(B&&C);assign F = result;endmodule
2、实现

编译没有问题后可以查看一下RTL图:

在这里插入图片描述
接着进行引脚分配,引脚分配结果如下:

在这里插入图片描述
分配完引脚之后再编译一次,接着进行sof文件的烧录。

用下载线将按键接口JX22连接到JP5,将按键接口JX5连接到JP1,JTAG接口用下载线连接到电脑的USB口。

(为什么要这样接线可以参考《【FPGA实验2】二进制转为格雷码》中的【三、实验箱实验】➡️【3、引脚分配】。)

4、实验结果

【FPGA实验1.5】举重裁判机制

Foever young,always tearful. 😏