课堂打铃系统的设计Verilog代码Xilinx ISE EVM31开发板
名称:课堂打铃系统的设计Verilog代码Xilinx ISE EVM31开发板
软件:Xilinx ISE
语言:Verilog
代码功能
该课堂打铃系统基于FPGA实现,主要功能包括实时时钟显示和自动打铃控制。系统能够根据预设的课程时间表自动触发不同时长的铃声,包括长铃(12秒)、短铃(7秒)和间歇铃。支持手动时间设置功能,通过按键调整小时、分钟和秒数。系统采用BCD码转换和动态扫描显示技术,实时显示当前时间。
图片


图题:EVM31开发板
设计文档:
代码实现思路
系统采用模块化设计,主模块digital_clock作为控制器。分频模块将系统时钟分频为1Hz和1KHz信号。时间设置模块实现实时时钟功能,支持手动调整时间。打铃控制模块根据预设的课程时间表判断当前时间是否需要打铃,并控制蜂鸣器输出相应铃声。显示模块采用动态扫描技术驱动数码管显示时间信息。
代码结构
系统采用层次化模块结构:
- digital_clock.v - 顶层模块,集成所有功能模块
- fenping.v - 分频模块,产生1Hz和1KHz时钟
- time_set.v - 时间设置模块,实现实时时钟功能
- ring_ctrl.v - 打铃控制模块,根据时间表控制铃声
- disp.v - 显示模块,驱动数码管显示时间
- BCD.v - BCD码转换模块
各模块协同工作,实现完整的课堂打铃系统功能。
部分代码
// 打铃控制模块
module ring_ctrl(
input clk_in, // 系统时钟
input hour_key, // 小时按键
input minute_key, // 分钟按键
input second_key, // 秒按键
input[7:0]hour_BCD, // 小时BCD
input[7:0]minute_BCD,// 分钟BCD
input[7:0]second, // 秒
output beep // 低电平有效
);
reg long_ring; // 长铃
reg short_ring; // 短铃
reg stop_ring; // 间歇铃
wire [15:0] time_hm;
assign time_hm={hour_BCD,minute_BCD};
// 长铃12秒
always@(posedge clk_in)
if(time_hm==16'h0630 || time_hm==16'h0710 || time_hm==16'h1216 ||
time_hm==16'h1730 || time_hm==16'h2330)
if(second>=0 && second<12)
long_ring<=1;
else
long_ring<=0;
else
long_ring<=0;
// 短铃7秒
always@(posedge clk_in)
if(time_hm==16'h0751 || time_hm==16'h1335 ||
time_hm==16'h0845 || time_hm==16'h0935 || time_hm==16'h1035 ||
time_hm==16'h1125 || time_hm==16'h1215 ||
time_hm==16'h1430 || time_hm==16'h1520 || time_hm==16'h1620 ||
time_hm==16'h1710 || time_hm==16'h1915 || time_hm==16'h2010 ||
time_hm==16'h2105 || time_hm==16'h0645)
if(second>=0 && second<7)
short_ring<=1;
else
short_ring<=0;
else
short_ring<=0;
// 间歇铃
always@(posedge clk_in)
if(time_hm==16'h0800 || time_hm==16'h0850 || time_hm==16'h0950 ||
time_hm==16'h1040 || time_hm==16'h1130 ||
time_hm==16'h1345 || time_hm==16'h1435 || time_hm==16'h1535 ||
time_hm==16'h1625 || time_hm==16'h1830 || time_hm==16'h1925 ||
time_hm==16'h2020)
if((second>=0 && second<3) || (second>=6 && second<9) ||
(second>=12 && second<15))
stop_ring<=1;
else
stop_ring<=0;
else
stop_ring<=0;
reg ring_en;
always@(posedge clk_in)
if(hour_key | minute_key |second_key) // 设置时间时关闭铃声
ring_en<=0;
else if(long_ring | short_ring | stop_ring)
ring_en<=1;
else
ring_en<=0;
assign beep=~ring_en; // 低电平有效
endmodule代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 课堂打铃系统的设计Verilog代码Xilinx ISE EVM31开发板
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 课堂打铃系统的设计Verilog代码Xilinx ISE EVM31开发板
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm