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

课堂打铃系统的设计Verilog代码Xilinx ISE EVM31开发板

23小时前
342
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-25121G62019136.docx

共1个文件

名称:课堂打铃系统的设计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

 

 

 

  • 2-25121G62019136.docx
    下载

相关推荐

Baidu
map