扫码加入

  • 方案介绍
  • 相关推荐
申请入驻 产业图谱

呼叫铃设计Verilog代码Quartus开发板

2025/09/09
1119
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称:呼叫铃设计Verilog代码Quartus开发板

软件:Quartus

语言:Verilog

代码功能:

1、用1~4个拨码开关模拟4个病房的呼叫输入信号,1号优先级最高;1~4优先级依次降低;

2、用一个数码管显示呼叫信号的号码,没信号呼叫时显示0;有多个信号呼叫时,显示优先级最高的呼叫号(其它呼叫号用指示灯显示);(数码管8显示当前呼叫号码)

3、凡有呼叫发出5秒的呼叫声(蜂鸣器频率1Hz,持续5秒,LED1频率1Hz一直闪烁);

4、对低优先级的呼叫进行存储,处理完高优先级的呼叫,再进行低优先级呼叫的处理。(按键S5进行处理)

本代码已在开发板验证,开发板如下,其他开发板可以修改管脚适配:

开发板.jpg

image.png

image.png

image.png

image.png

部分代码展示:

module sickroom_ctrl(
input clk,//时钟50MHz
input rst_p,//低电平复位
//4个呼叫按键
input key_1,
input key_2,
input key_3,
input key_4,
input deal_key,//处理按键,按下表示处理当前最高优先级
output [5:0] led,//呼叫指示灯
output [7:0] dig,
output reg [7:0] dataout
);
assign dig=8'b1111_1110;
reg [3:0] number;//数码管显示呼叫信号的号码
reg [5:0] call_data=6'd0;
always@(posedge clk or negedge rst_p)
if(rst_p==0)
call_data<=6'd0;
else
if(key_1==0)//呼叫按键1
call_data<=call_data | 6'b100000;
else if(key_2==0)//呼叫按键2
call_data<=call_data | 6'b010000;
else if(key_3==0)//呼叫按键3
call_data<=call_data | 6'b001000;
else if(key_4==0)//呼叫按键4
call_data<=call_data | 6'b000100;
else if(call_data[5]==1)
if(deal_key==0)//处理按键
call_data<=call_data & 6'b011111;
else
call_data<=call_data;
else if(call_data[4]==1) 
if(deal_key==0)//处理按键
call_data<=call_data & 6'b101111;
else
call_data<=call_data;
else if(call_data[3]==1) 
if(deal_key==0)//处理按键
call_data<=call_data & 6'b110111;
else
call_data<=call_data;
else if(call_data[2]==1) 
if(deal_key==0)//处理按键
call_data<=call_data & 6'b111011;
else
call_data<=call_data;
else if(call_data[1]==1) 
if(deal_key==0)//处理按键
call_data<=call_data & 6'b111101;
else
call_data<=call_data;
else if(call_data[0]==1) 
if(deal_key==0)//处理按键
call_data<=call_data & 6'b111110;
else
call_data<=call_data;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1538

相关推荐