FPGA仿真非诚勿扰灭灯爆灯(vivado/quartus/modelsim+verilog

本文介绍了一个使用Verilog语言实现的相亲选择逻辑模块。该模块通过输入按钮信号来模拟相亲过程中的“灭灯”和“爆灯”操作,并记录下最后“爆灯”的女嘉宾编号。文章通过具体的代码示例展示了如何设计这种逻辑电路。

`timescale 1 ns / 100ps


module exx(reset,button0,button1,led,lamp,number);
    input reset;
    input[24:1] button0;   //灭灯按钮
    input[24:1] button1;   //爆灯按钮
    output[24:1] led;      //灭灯
    output reg lamp;       //爆灯
    output[4:0] number;    //爆灯女嘉宾号码
    
    reg[24:1] led;
    reg[4:0] number;
    integer i;
    reg flag;              //爆灯标志位只有一次机会
    
    always @(reset or button0 or button1)
    if (!reset)   
      begin
        led = 24'b11111111_11111111_11111111; 
        lamp = 0;
        number=0;
        flag=1;
      end  
    else
      begin
        for(i=1;i<=24;i=i+1)
          begin  
            if(button0[i]==0) led[i]=0;      //按下灭灯按钮,灭灯
            if(led[i]==1&button1[i]==0&flag) //本人未灭灯且flag有效按下爆灯按钮 
              begin 
                flag=0;       //flag失效 
                lamp=1;       //爆灯
                number=i;     //显示爆灯女嘉宾编号
              end
          end
      end
      
endmodule 


module exx_tst(  ); 
  
    reg reset;
    reg[24:1] button0;
    reg[24:1] button1;
    wire[24:1] led;
    wire lamp;
    wire number;
    
    exx myexx(reset,button0,button1,led,lamp,number);
    
    initial                                              
    begin                
         reset=0;
         button0 = 24'b11111111_11111111_11111111;//初始化灭灯按钮,按下为0,弹起为1
         button1 = 24'b11111111_11111111_11111111;//初始化爆灯按钮,按下为0,弹起为1
         #10; reset=1;
         #80; button0 = 24'b00000000_00000000_10100001;//0灭灯按钮,3人留灯分别为1 3 8号女嘉宾
         #80; button0 = 24'b11111111_11111111_11111111;//灭灯后按钮弹起恢复为1,但LED灯保持灭
         #10; button1 = 24'b11111111_11111111_11111011;//3号女嘉宾灭灯后后悔想按爆灯按钮button1,发现无法爆灯 
         #80; button1 = 24'b11111111_11111111_11111111;//按钮弹起
         #80; button1 = 24'b11111111_11111111_11011111;//6号女嘉宾按下爆灯按钮button1,爆灯,number显示为6 
         #80; button1 = 24'b11111111_11111111_01111111;//8号女嘉宾按下爆灯按钮button1,number依然显示为6  
         #80; reset=0;      //重新复位                        
    end 
  
endmodule  

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值