基于fpga的电子钟的设计(编辑修改稿)内容摘要:
基于 FPGA的电子钟的设计 第 14 页 共 56 页 图 38 时间计数模块电路图 该模块逻辑框图如图 39 所示。 仿真波形图如图 310 所示。 图 39 时间计数模块逻辑框图 图 310 时间计数模块仿真波形图 秒计数 子 模块逻辑框图如图 311所示。 图 311 秒计数子模块框图 EN 是时间显示信号,当 Timepiece_En=1 时有效; clk 是秒脉冲输入端口;输出端口second_data0[3..0]是秒时钟的低位, second_data1[3..0]是高位; EO 端口是进位输出端口,当秒计数到 59 时输出高电平,其它时候输出低电平。 北方民族大学学士学位论文 基于 FPGA的电子钟的设计 第 15 页 共 56 页 分计数子模块的设计原理与秒模块的类似。 逻辑框图如图 312 所示。 图 312 分计数子模块框图 时计数 子 模块逻辑框图如图 313 所示。 图 313 时计数模块框图 时间设置模块( timeset) 该模块主要完成对时间的设置相关的闪烁显示控制以及时间中的小时、分钟、秒等数据的改变,流程图如图 314 所示,逻辑框图如 315 所示,波形仿真图如 316 所示。 初 始 化 , 将 当 前 时 间 赋予 设 置 后 的 时 间开 始T i m e s e t _ E N = 1 ?d i s p _ d r i v e 3 39。 b 1 0 1 ?d i s p _ d r i v e = d i s p _ d r i v e + 3 39。 b 1依 S W 2 , 按 位 进 行 数 字 调 整结 束d i s p _ d r i v e = 3 39。 b 0是否S W 1是 图 314 时间设置模块流程图 北方民族大学学士学位论文 基于 FPGA的电子钟的设计 第 16 页 共 56 页 图 315 时间设置模块框图 图 316 时间设置模块波形仿真图 表 31 时间设置模块的端口说明 输入端口 功能 TimeSet_EN 时间设置使能,当其电平为高时,时间设置有效 SW1,SW2 调整键 1 与调整键 2 输入信号 hour1,hour0 当前时间的小时数输入 minute1,minute0 当前时间的分钟数输入 second0,second1 当前时间的秒数输入 输出端口 功能 hour_set1,hour_set0 设置时间后的小时数 minute_set1,minute_set0 设置时间后的分钟数 second_set1,second_set0 设置时间后的秒数 disp_drive 设置中的闪烁显示设置 当 Timeset_EN 为 1 时,即实现时间设置功能。 SW1 实现时间格式中小时高、低位,北方民族大学学士学位论文 基于 FPGA的电子钟的设计 第 17 页 共 56 页 分钟高、低位,秒高、低位的位选,即每出现一个 SW1 上升沿, disp_drive 的相应数值加1(选择具体的需要调整的位置)。 SW2 实现相应得位的数值的调整,即每出现一个 SW2上升沿,相应位的数值增加 1。 时间数据多路选择模块 ( time_mux) 该模块用来选择向显示单元传输所要显示的数据,流程图如图 317 所示,逻辑框图如图 318 所示,波形仿真如图 319 所示。 依 输 入 条 件 , 判 断 是 自 动 显示 时 间 或 显 示 调 整 后 的 时 间开 始T i m e s e t _ E N = 1 ?显 示 设 置 后 的 时 间 显 示 自 动 模 式 时 的 时 间是否结 束 图 317 多路选择模块的流程图 表 32 多路选择模块的端口说明 输入端口 功能 TimeSet_EN 时间设置使能信号 hour1,hour0 自动模式中当前时间的小时数输入 minute1,minute0 自动模式中当前时间的分钟数输入 second0,second1 自动模式中当前时间的秒数输入 hour_set1,hour_set0 时间设置后的小时数输入 北方民族大学学士学位论文 基于 FPGA的电子钟的设计 第 18 页 共 56 页 minute_set1,minute_set0 时间设置后的分钟数输入 second_set1,second_set0 时间设置后的秒数输入 输出端口 功能 hour_1,hour_0 当前需要显示的小时输出 minute_1,minute_0 当前需要显示的分钟输出 second_0,second_1 当前需要显示的秒输出 图 318 时间数据多路选择模块框图 图 319 时间数据多路选择模块波形仿真图 时间显示 动态位选模块( time_disp_select) 该模块用来分时显示时间数据, TimeSet_EN 表示时间设置使能, Time_EN 表示时间自动显示使能, clk_1kHz 用于动态显示时, clk_200Hz 用于闪烁显示时间, timeset_disp_drive北方民族大学学士学位论文 基于 FPGA的电子钟的设计 第 19 页 共 56 页 表示时间设置数据显示的同步信号, time_disp_select 表示显示动态位选输出信号。 当TimeSet_EN 为 0, Time_EN 为 1 时,以 clk_1kHz为时钟信号,输出自动显示的时间,按位依次显示;当 TimeSet_EN 为 1, Time_EN 为 0 时,则 以 clk_200Hz 为时钟信号,输出以 timeset_disp_drive 对应的位置。 逻辑框图如图 320 所示,波形仿真如图 321 所示。 图 320 时间显示动态位选模块框图 图 321( a)时间显示动态位选模仿真波形图 图 321( b)时间显示动态位选模仿真波形图 该模块的 VerilogHDL 程序如下: module time_disp_select(clk_1khz,clk_200hz,Time_EN,TimeSet_EN, timeset_disp_drive,time_disp_select)。 output [5:0] time_disp_select。 input clk_1khz。 北方民族大学学士学位论文 基于 FPGA的电子钟的设计 第 20 页 共 56 页 input clk_200hz。 input Time_EN。 input TimeSet_EN。 input [2:0] timeset_disp_drive。 reg [5:0] time_disp_select。 reg [2:0] auto_disp_drive。 reg clk。 reg [2:0] disp_drive。 always @(posedge clk_1khz) /*实现自动运行模式中的动态显示 “位选的驱动 ”*/ begin if(auto_disp_drive 339。 b101) auto_disp_drive = auto_disp_drive + 339。 b1。 else auto_disp_drive = 339。 b0。 end always begin /*实现自动运行模式中时间动态显示位选驱动与时间设置中的时间动态显示位选驱动的二选一 */ if(Time_EN == 139。 b1) begin clk= clk_1khz。 disp_drive = auto_disp_drive。 end 北方民族大学学士学位论文 基于 FPGA的电子钟的设计 第 21 页 共 56 页 else if(TimeSet_EN == 139。 b1) begin clk= clk_200hz。 disp_drive = timeset_disp_drive。 end end always @(posedge clk) begin case(disp_drive) 339。 b000: time_disp_select = 639。 b100000。 339。 b001: time_disp_select = 639。 b010000。 339。 b010: time_disp_select = 639。 b001000。 339。 b011: time_disp_select = 639。 b000100。 339。 b100: time_disp_select = 639。 b000010。 339。 b101: time_disp_select = 639。 b000001。 default: time_disp_select = 639。 b000000。 endcase end endmodule 显示模块( disp_data_mux) 该 模块是时间、日期等数据用数码管显示的控制与数据传输模块,包括数据的传输以及 BCD 码的译码等。 逻辑框图如图 322 所示,仿真波形如图 323 所示。 北方民族大学学士学位论文 基于 FPGA的电子钟的设计 第 22 页 共 56 页 图 322 显示模块逻辑框图 图 323 显示模块波形仿真图 该模块的 VerilogHDL 程序如下 : module disp_data_mux(Timepiece_EN,TimeSet_EN,Stopwatch_EN,time_disp_select, Alarmclock_EN,alarmclock_disp_select,hour1,hour0,minute1,minute0,second1,second0,Date_EN,DateSet_EN,date_disp_select,month1,month0,day1,day0,disp_select,disp_data)。 output [5:0] disp_select。 output [6:0] disp_data。 北方民族大学学士学位论文 基于 FPGA的电子钟的设计 第 23 页 共 56 页 input Timepiece_EN,TimeSet_EN,Stopwatch_EN。 input [5:0] time_disp_select。 input Alarmclock_EN。 input [5:0] alarmclock_disp_select。 input [3:0] hour1,hour0,minute1,minute0,second1,second0。 input Date_EN,DateSet_EN。 input [5:0] date_disp_select。 input [3:0] month1,month0,day1,day0。 reg [5:0] disp_select。 reg [6:0] disp_data。 reg [3:0] Data。 always @(Timepiece_EN,TimeSet_EN,Stopwatch_EN,time_disp_select,Alarmclock_EN,alarmclock_disp_select,hour1,hour0,minute1,minute0,second1,second0,Date_EN,DateSet_EN,date_disp_select,month1,month0,day1,day0,disp_select) begin //时钟,秒表显示 if((Timepiece_EN || TimeSet_EN || Stopwatch_E。基于fpga的电子钟的设计(编辑修改稿)
相关推荐
入式开发软件、可编程逻辑设计于一体,是一种综合性的开发平台。 使用 Quartus II 的设计过程包括以下几步,若任一步出错或未达到设计要求则应修改设计,然后重复以后各步, Quartus II 的设计流程如图 11 所示。 图 11 Quartus II 的设计流程。 逻辑设计的输入方法有原理图形输入、文本输入、波形输入及第三方 EDA 工具生成的设计网表文件输入等。 输入方法不同
这里只需了解系统的轮廓即可,后面会详细介绍各模块的设计与实现。 河南理工大学毕业设计(论文)说明书 15 3 模块设计与实现 如前面所述,顶层实体由 3个模块构成: 微控制器接口模块、相位累加器模块及双端口 RAM 模块。 由 8 个比例乘法器级联组成的分频器模块以端口定义的形式例化在微控制器模块中,属于后者的子模块,但是由于比例乘法器的本设计中所发挥的作用很大,加之相关资料少之又少
0 进行温度采集,将采集到的温度数字直接以数字信号传输给 FPGA 控制器,控制器通过比较采集的温度和用户设置的温度来做出发送降温还是加热的控制信号给空调机。 同时通过 FPGA 芯片还可以实现定时和控制显示,使用 6 个数码管将传感器测量到的温度,设置的温度、定时时长都显示出来。 其方框图 32如下: 图 32 基于 FPGA 的空调控制系统框图 方案论证与确定 通过比较两个方案,方案 1
o u n t 4 [ 3 . . 0 ]A d d 04 39。 h 1 A d d 11 1 39。 h 0 0 1 C o u n t 1 1 ~[ 1 0 . . 0 ]L e s s T h a n 04 39。 h B 12 相应音符频率的两倍值。 此时从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个 D 触发器以均衡其占空比
器、 8 位 D/A 转换电路及转换控制电路构成。 它因为 价格低廉、接口简单、转换控制容易等优点, 而 得到 了 广泛的应用 [7]。 DAC0832 的主要参数有: 8位。 1us。 177。 1LSB。 10~+10V。 +5~+15V。 输入与 TTL 兼容。 它的内部逻辑结构如图 所示: 图 DAC0832 内部逻辑结构 DAC0832 引脚排列如图 所示: 基于 FPGA
( 5)底层嵌入功能单元 ( 6)内嵌专用硬核 与“底层嵌入单元”是有区别的,这里指的硬核主要是那些通用性相对较弱,不是所有 FPGA 器件都包含硬核。 目前绝大部分 FPGA 都采用查找表( Look Up Table, LUT)技术,如 Altera 的 ACEX、 APEX、 Cyclone、 Stratix 系列, Xilinx 的 Spartan、 Virtex 系列等。 FPGA