乒乓球游戏电路

1.课程设计目的

摘要: 一、 实验目的 (1) 学习用MAX+Plus II开发系统对可编程逻辑器件编程的方法;(2) 学习“ CPLD /FPGA数字发展实验箱”的使用方法以及把文件下载到CPLD芯片中的方法。   二、 仿真电路设计及设计思路   仿真电路图如图所示。具体的电路接法及工作原理说明如下:     用两个74LS194四位双向移位寄存器模拟乒乓球台,其中第一个74LS194的DL输出

  一、 实验目的

(1) 学习用MAX+Plus II开发系统对可编程逻辑器件编程的方法;
(2) 学习“ CPLD /FPGA数字发展实验箱”的使用方法以及把文件下载到CPLD芯片中的方法。

    随着科学技术日益迅速的发展,数字系统已深入到生活的各个方面,它具有技术效果好、经济效益高、技术先进、造价低、可靠性高、维修方便等优点。所以我们用Verilog HDL设计一款乒乓球游戏电路。通过给定的一个信号满足灯的亮和灭、灭与移动的速度,进而来实现乒乓球游戏。

2,设计思想和过程

    分别定义af、aj、bf、bj,分别表示A的发球与接球、B的发球与接球。采用七段数码管分别记录和显示其A与B的得分情况,当控制指定的按键来实现接球与发球的游戏功能,并且利用7位二进制来控制具体的乒乓球的运动情况和各个得分情况,来实现课题所要求的各种情况。对于时间方面,可以采用分频器来进行具体的时间控制。

代码

module tbpp;
    reg clk;
    reg af;
    reg aj;
    reg bf;
    reg bj;
    reg reset;
    wire[4:0] shift;
    wire[6:0] seg7;
    wire[6:0] seg8;
    
    initial
        begin
            clk=0;
            reset=0;
            #10 reset=1;
            #20 reset=0;
        end
        
    always #5 clk=~clk;
    
    initial
        begin
        af=0;bf=0;
        #40 bf=1;
        #10 bf=0;
        repeat (4) @(posedge clk);
        #5 aj=1;
        #10 aj=0;
        repeat (3) @(posedge clk);
        bj=1;
        #10    bj=0;
        #30;
        @(posedge clk);
        #5 bf=1;
        #10 bf=0;
        #100 $stop;
    end
pp pp(shift,seg7,seg8,clk,reset,af,aj,bf,bj);

endmodule

module pp(shift, seg7, seg8, clk50Mhz, rst, af, aj, bf, bj);
    output[4:0] shift;
    output[6:0] seg7;
    output[6:0] seg8;
    input clk50Mhz;
    input af;
    input aj;
    input bf;
    input bj;
    input rst;
    reg[4:0] shift;
    reg[6:0] seg7;
    reg[6:0] seg8;
    reg clk2hz;
    reg[3:0] a_score, b_score;
    reg[23:0] cnt;
    reg a, b;
    reg[4:0] shift_1;
    
    always@(posedge clk50Mhz)
    begin
        if(cnt==24'd12500000)
        begin
            clk2hz=~clk2hz;
            cnt<=0;
        end
        else
        cnt<=cnt+1;
    end
    
    always@(posedge clk2hz)
    begin
        if(rst)
            begin
            a_score<=0;
            b_score<=0;
            a<=0;
            b<=0;
            shift_1<=0;
            end
        else
            begin
                if(!a&&!b&&af)
                    begin
                        a<=1;
                        shift_1<='b10000;
                    end
                else if(!a&&!b&&bf)
                    begin
                        b<=1;
                        shift_1<='b00001;
                    end
                else if(a&&!b)
                    begin
                        if(shift_1>'b00100)
                            begin
                                if(bj)
                                    begin
                                        a_score<=a_score+1;
                                        a<=0;
                                        b<=0;
                                        shift_1<='b00000;
                                    end
                                else
                                    begin
                                        shift_1[4:0]<=shift_1[4:0]>>1;
                                    end
                            end
                        else if(shift_1==1'b0)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值