cyclone4 FPGA EP4CE10F17C8N设计数字时钟quartus工程源码+WORD说明文档, 本设计采用FPGA,实现核心控制。利用独立按键当作输入,利用六位一体的共阳极数码管作为显示设备。具体要求如下: 1. 数字钟要求显示时间、日期、闹钟时间。本设计采用verilog,芯片为50MHZ的EP4CE10F17C8N,实现核心控制。 2. 显示时利用小数点将所显示内容分开。(例:19.12.55) 3. 外部输入的按键有,切换按键,调整按键,加按键,减按键。具体功能如下: 数字钟要求显示时间、日期、闹钟设定时间。利用切换按键进行年月日、时间、闹钟定时操作,三种状态均可用增减两个按键进行调整,对于选中的数码管调整位,通过闪烁表示已经选中,例如:首先切换至日期,选中表示“年”的数码管,那么选中的位进行0.5秒的闪烁表示选中,其次可通过增减按键进行数字的增减。另外在按键消抖后,每次按键按下,蜂鸣器响表示已经按下;设定的闹钟到时候,按下任何按键均停止蜂鸣器,若没有按键按下,蜂鸣器长响至1min时长后,自动停止。 module digital_clock (clk,rst_n,key_add,key_sub,key_adjust,key_switch,beep, seven_tube_sel,seven_tube_seg); input clk; input rst_n; input key_add; input key_sub; input key_switch; input key_adjust; output beep; output [7:0] seven_tube_seg; output [2:0] seven_tube_sel; wire flag_add; wire flag_sub; wire flag_adjust; wire flag_switch; wire [23:0] show_data; wire flag_alarm; wire [5:0] dp_en; key_processor key_processor_inst( .clk (clk), .rst_n (rst_n), .key_add (key_add), .key_sub (key_sub), .key_adjust (key_adjust), .key_switch (key_switch), .flag_add (flag_add), .flag_sub (flag_sub), .flag_adjust (flag_adjust), .flag_switch (flag_switch) ); digital_clock_ctrl digital_clock_ctrl_inst( .clk (clk), .rst_n (rst_n), .flag_add (flag_add), .flag_sub (flag_sub), .flag_adjust (flag_adjust), .flag_switch (flag_switch), .show_data (show_data), .flag_alarm (flag_alarm) ); seven_tube_drive seven_tube_drive_inst( .clk (clk), .rst_n (rst_n), .show_data (show_data), .dp_en (6'b010100), .seven_tube_seg (seven_tube_seg), .seven_tube_sel (seven_tube_sel) ); beep_drive beep_drive_inst( .clk (clk), .rst_n (rst_n), .flag_alarm (flag_alarm), .flag_add (flag_add), .flag_sub (flag_sub), .flag_adjust (flag_adjust), .flag_switch (flag_switch), .beep (beep) ); endmodule
个人数字逻辑课程设计作品,全部编译通过在实验板上可行,传上来分享一下,希望对大家有帮助。
2021-12-27 15:19:02 1.09MB vhdl 数字时钟 fpga
1
FPGA设计时分秒进位数字时钟verilog实验Quartus9.1工程源码+设计说明文件 /* 本实验实现一个能显示小时,分钟,秒的数字时钟。 */ module clock(clk,rst,dataout,en); input clk,rst; output[7:0] dataout; reg[7:0] dataout; output[7:0] en; reg[7:0] en; reg[3:0] dataout_buf[7:0]; reg[25:0] cnt; reg[15:0] cnt_scan; reg[3:0] dataout_code; wire[5:0] cal; //各级进位标志 assign cal[0]=(dataout_buf[0]==9)?1:0; assign cal[1]=(cal[0]&&dataout_buf[1]==5)?1:0; assign cal[2]=(cal[1]&&dataout_buf[3]==9)?1:0; assign cal[3]=(cal[2]&&dataout_buf[4]==5)?1:0; assign cal[4]=(cal[3]&&dataout_buf[6]==9)?1:0; assign cal[5]=(cal[3]&&dataout_buf[6]==2&&dataout_buf[7]==1)?1:0; always@(posedge clk or negedge rst) begin if(!rst) begin cnt_scan<=0; en<=8'b1111_1110; end else begin cnt_scan<=cnt_scan+1; if(cnt_scan==16'hffff) begin en[7:1]<=en[6:0]; en[0]<=en[7]; end end end always@(*) begin case(en) 8'b1111_1110: dataout_code=dataout_buf[0]; 8'b1111_1101: dataout_code=dataout_buf[1]; 8'b1111_1011: dataout_code=dataout_buf[2]; 8'b1111_0111: dataout_code=dataout_buf[3]; 8'b1110_1111: dataout_code=dataout_buf[4]; 8'b1101_1111: dataout_code=dataout_buf[5]; 8'b1011_1111: dataout_code=dataout_buf[6]; 8'b0111_1111: dataout_code=dataout_buf[7]; default: dataout_code=dataout_buf[0]; endcase end always@(posedge clk or negedge rst) begin if(!rst) cnt<=0; else if(cnt!=40000000) cnt<=cnt+1; else cnt<=0; end always@(posedge clk or negedge rst) //实现计数和进位的功能 begin if(!rst) begin dataout_buf[0]<=0; dataout_buf[1]<=0; dataout_buf[2]<=15; dataout_buf[3]<=0; dataout_buf[4]<=0; dataout_buf[5]<=15; dataout_buf[6]<=2; dataout_buf[7]<=1; end else begin if(cnt==26'd40000000) begin if(!cal[0]) dataout_buf[0]<=dataout_buf[0]+1; else begin dataout_buf[0]
本资源压缩包内含整个Quartus项目工程Top_proj。本项目基于Verilog语言和Quartus II平台设计了一个FPGA简易数字钟,能实现小时、分钟和秒的计时及显示,其中,通过控制时、分和秒实现时钟计时的计数模块是本次设计的核心。计数模块的关键在于能够理解三个计时单位之间的联系,即秒计数满60产生一个向分钟的进位,分钟计数满60产生一个向小时的进位,这两个进位信号将小时、分和秒联系起来,是理解本设计的关键点。 为时钟设计一个初值设置控制信号,按下设置信号时能利用开发板上的拨码开关或按键对时间进行校对设置。https://xinso.blog.csdn.net/article/details/106558166
2021-06-05 09:03:34 1.86MB LED数字时钟 数字时钟 FPGA verilog
1
本项目实现一个具有小时 分 秒的时钟 具有整点报时。手动校正时间等等功能! 适合初学者~ 初学者 , 项目 , 校正
2019-12-21 19:40:42 135KB 多功能数字时钟 FPGA  实现 代码
1