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

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

一、分析与Verilog代码
真值表:
ABCF
0000
0010
0100
0111
1000
1011
1101
1111

因而可以得到 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 begin
    clk<=0;
    A<=0;
    B<=1;
    C<=1;
    count<=1'b0;
end

always @ (posedge clk) begin
    if (count == 4'd2) begin
        A<=~A;
    end
    else if(count ==4'd4)begin
        B<=~B;
        
    end
    else begin
        C=~C;
    end
    if (count==4'd4)begin
        count<=4'b0;
        end
        else begin
    count<=count+1'b1;
    end

end

test u_test(
    .A      (A),
    .B      (B),
    .C      (C),
    .F      (result)
);


endmodule
仿真结果:

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

在这里插入图片描述

三、硬件箱实现

裁判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. 😏

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值