软件:Quartus
语言:Verilog
代码功能:
1、用1~4个拨码开关模拟4个病房的呼叫输入信号,1号优先级最高;1~4优先级依次降低;
2、用一个数码管显示呼叫信号的号码,没信号呼叫时显示0;有多个信号呼叫时,显示优先级最高的呼叫号(其它呼叫号用指示灯显示);(数码管8显示当前呼叫号码)
3、凡有呼叫发出5秒的呼叫声(蜂鸣器频率1Hz,持续5秒,LED1频率1Hz一直闪烁);
4、对低优先级的呼叫进行存储,处理完高优先级的呼叫,再进行低优先级呼叫的处理。(按键S5进行处理)
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在开发板验证,开发板如下,其他开发板可以修改管脚适配:
部分代码展示:
//呼叫铃控制模块 module beep_ctrl( input clk,//时钟50MHz input rst_p,//复位 //4个呼叫按键 input key_1, input key_2, input key_3, input key_4, output LED1,//频率1Hz一直闪烁 output beep//呼叫声 ); parameter time_5s=32'd250_000000;//上板用该句 //parameter time_5s=32'd100; //仿真用该句 wire beep_en_n; assign beep_en_n=(key_1 & key_2 & key_3 & key_4);//呼叫 //计时 reg [31:0] time_5s_cnt=32'd100000000; always@(posedge clk or negedge rst_p) if(rst_p==0) time_5s_cnt<=time_5s; else if(beep_en_n==0) time_5s_cnt=time_5s)//5秒 time_5s_cnt<=time_5s_cnt; else time_5s_cnt32'd1 && time_5s_cnt<time_5s) beep_buf<=1;//5秒蜂鸣器响 else beep_buf<=0; //分频产生1KHz reg [31:0] div_cnt; wire div_clk; always@(posedge clk or negedge rst_p) if(rst_p==0) div_cnt=32'd50_000) div_cnt<=32'd0; else
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1538
阅读全文
621