fpga时钟按键倒计时:按下按键1,两个七段数码管进行10s倒计时,显示00时停止,接着蜂鸣器响起3s,停止?

作品基于intel Cyclone IV E EP4CE10F17C8 FPGA板卡,主要开发环境为Quartus Ⅱ,编程并实现了多功能温湿度电子钟。本作品在实现显示实时时间的基础上,设计并完成了设置闹钟、改变闹钟铃声、显示实时温度和实时湿度、基于以太网通信协议的实时视频传输等功能。在未设置闹钟时,作品可显示实时时间(具体包括年月日时分秒),以及作品所在环境的实时温湿度;在设置闹钟后,当时钟时间达到设置的闹钟时间时,蜂鸣器便会以预设的音乐曲谱振动发声,即闹钟响铃;当作品所在环境的温度急剧上升,将摄像头采集的实时图像通过以太网实时传输给用户,用户可远程观察是否发生火灾,帮助用户避免因火灾带来的生命财产损失。总的来说,本作品可以作为多功能温湿度电子钟,在任何需要时钟的场合都具有很强的实用性。且本作品能监控实时温湿度和火灾报警的功能,这对于需要时钟显示时间和火灾报警的室内具有很强的适配性。故本作品的设计贴合实际,应用场景适配性良好,发展前景十分广阔,具有很强的现实意义。(一)作品实现的功能介绍基础功能:1)按键切换2)报警功能3)日期、时间以及报警时间的显示拓展功能:1)蜂鸣器报警音乐2)实时温度的显示3)实时湿度的显示4)基于以太网通信协议的实时视频传输。(二)作品的意义在正常情况下,本作品可以作为家庭版多功能温湿度电子钟,通过控制按键分别显示当前的日期(年月日)、时间(时分秒)、闹钟时间(时分秒)、实时温度和实时湿度,当设置的闹钟时间到了的时候,则播放音乐,提醒用户将要做的事情。当在房间内的温度和湿度出现出现异常,温度急剧上升,湿度急剧下降时,此时则将房间内的实时情况通过以太网的实时视频传输给用户,用户则远程观察家内是否发生火灾,做到未雨绸缪,做到预防火灾的发生,保障每家每户的财产安全。(三)产品硬件介绍(1)DHT11数字温湿度传感器DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便。接口原理图:(2)74HC595芯片74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7'输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。接口原理图:(3)无源蜂鸣器相比于有源蜂鸣器,无源蜂鸣器成本更低,声音频率可控,需要输入PWM方波才能驱动其发声,通过改变PWM波的频率,可以实现不同音调的改变;通过改变PWM波的占空比,可以实现声音大小的改变,所以我们只需要产生不同频率和占空比的PWM方波去驱动无源蜂鸣器就能让无源蜂鸣器发出不同的音调了。接口原理图:(4)SDRAM同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)是有一个同步接口的动态随机存取内存(DRAM)。通常DRAM是有一个异步接口的,这样它可以随时响应控制输入的变化。而SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步。时钟被用来驱动一个有限状态机,对进入的指令进行管线(Pipeline)操作。这使得SDRAM与没有同步接口的异步DRAM(asynchronous DRAM)相比,可以有一个更复杂的操作模式。接口原理图:(5)OV5640图像采集OV5640 的 CMOS 类型数字图像传感器。该传感器支持输出最大为 500 万像素的图像 (2592x1944 分辨率),支持使用 VGA 时序输出图像数据,输出图像的数据格式支持 YUV(422/420)、YCbCr422、 RGB565 以及 JPEG 格式,若直接输出 JPEG 格式的图 像时可大大减少数据量,方便网络传输。(6)以太网部分以太网 PHY 芯片型号为 LAN8720A,是低功耗的 10-BASET/100-BASE-TX 全双工以太网 PHY 层芯片,支持 10Mbps 和 100Mbps,I/O 引脚电压可 变,符合 IEEE802.3-2005 标准,支持通过 RMII 接口与以太网 MAC 层通信,可通过自协 商的的方式与目的主机实现最佳的连接方式(调整最佳速度和双工模式)接口原理图:(四)芯片资源使用(五)引脚分配可以直接复制到.qsf文件中:set_location_assignment PIN_E16 -to key_in[3]set_location_assignment PIN_J11 -to buzzerset_location_assignment PIN_R1 -to dsset_location_assignment PIN_E15 -to key_in[2]set_location_assignment PIN_M1 -to key_in[1]set_location_assignment PIN_M2 -to key_in[0]set_location_assignment PIN_L11 -to oeset_location_assignment PIN_B1 -to shcpset_location_assignment PIN_K9 -to stcpset_location_assignment PIN_L14 -to dht11set_location_assignment PIN_E1 -to sys_clkset_location_assignment PIN_M15 -to sys_rst_nset_location_assignment PIN_R4 -to sdram_clkset_location_assignment PIN_R9 -to sdram_ckeset_location_assignment PIN_R12 -to sdram_cs_nset_location_assignment PIN_R11 -to sdram_ras_nset_location_assignment PIN_R10 -to sdram_cas_nset_location_assignment PIN_L9 -to sdram_we_nset_location_assignment PIN_R13 -to sdram_ba[0]set_location_assignment PIN_R14 -to sdram_ba[1]set_location_assignment PIN_M11 -to sdram_addr[12]set_location_assignment PIN_N12 -to sdram_addr[11]set_location_assignment PIN_T15 -to sdram_addr[10]set_location_assignment PIN_P9 -to sdram_addr[9]set_location_assignment PIN_T10 -to sdram_addr[8]set_location_assignment PIN_T11 -to sdram_addr[7]set_location_assignment PIN_T12 -to sdram_addr[6]set_location_assignment PIN_T13 -to sdram_addr[5]set_location_assignment PIN_T14 -to sdram_addr[4]set_location_assignment PIN_N11 -to sdram_addr[3]set_location_assignment PIN_N9 -to sdram_addr[2]set_location_assignment PIN_P14 -to sdram_addr[1]set_location_assignment PIN_P11 -to sdram_addr[0]set_location_assignment PIN_T2 -to sdram_dq[15]set_location_assignment PIN_T3 -to sdram_dq[14]set_location_assignment PIN_T4 -to sdram_dq[13]set_location_assignment PIN_T5 -to sdram_dq[12]set_location_assignment PIN_T6 -to sdram_dq[11]set_location_assignment PIN_T7 -to sdram_dq[10]set_location_assignment PIN_T8 -to sdram_dq[9]set_location_assignment PIN_P8 -to sdram_dq[8]set_location_assignment PIN_N8 -to sdram_dq[7]set_location_assignment PIN_R8 -to sdram_dq[6]set_location_assignment PIN_M8 -to sdram_dq[5]set_location_assignment PIN_R7 -to sdram_dq[4]set_location_assignment PIN_R6 -to sdram_dq[3]set_location_assignment PIN_R5 -to sdram_dq[2]set_location_assignment PIN_T9 -to sdram_dq[1]set_location_assignment PIN_R3 -to sdram_dq[0]set_location_assignment PIN_M10 -to sdram_dqm[0]set_location_assignment PIN_M9 -to sdram_dqm[1]set_location_assignment PIN_C3 -to eth_clkset_location_assignment PIN_B3 -to eth_rst_nset_location_assignment PIN_D5 -to eth_tx_en_rset_location_assignment PIN_D6 -to eth_tx_data_r[1]set_location_assignment PIN_C8 -to eth_tx_data_r[0]set_location_assignment PIN_L13 -to ov5640_data[7]set_location_assignment PIN_F13 -to ov5640_data[6]set_location_assignment PIN_B16 -to ov5640_data[5]set_location_assignment PIN_C15 -to ov5640_data[4]set_location_assignment PIN_D16 -to ov5640_data[3]set_location_assignment PIN_F14 -to ov5640_data[2]set_location_assignment PIN_F15 -to ov5640_data[1]set_location_assignment PIN_G15 -to ov5640_data[0]set_location_assignment PIN_M16 -to ov5640_pclkset_location_assignment PIN_F16 -to ov5640_rst_nset_location_assignment PIN_J13 -to ov5640_hrefset_location_assignment PIN_C16 -to ov5640_vsyncset_location_assignment PIN_G11 -to ov5640_pwdnset_location_assignment PIN_P15 -to sccb_sclset_location_assignment PIN_N14 -to sccb_sdaQuartus、Notepad++、Modelsim本作品在实现显示实时时间的基础上,设计并完成了设置闹钟、改变闹钟铃声、显示实时温度和实时湿度、基于以太网通信协议的实时视频传输等功能。(一)基础时钟任务包含 3个子功能模块:自身数码管显示控制模块、时间日期运行控制模块和闹钟模块。(1)年月日时分秒模块默认主界面为时分秒显示界面,通过按键可调出年月日界面,并显示三秒钟后自动跳转回主界面,进入到年月日界面后,可通过设置按键设置年月日的值,设置完成后自动保存,默认主界面为时分秒显示界面,设置按键可设置当前显示界面时分秒的值,设置完成后自动保存。(2)数码管显示控制模块此模块包括:按键控制年月日/时分秒/闹钟功能。可以开启闹钟设置界面,设置闹钟状态,到达闹钟设置时刻输出高电平awaken信号给蜂鸣器模块发出音乐达到定时闹钟的效果。段选信号为当前数码管显示的数字大小,位选信号为哪个数码管亮。如果开启闹钟,则显示设置的闹钟时间,如果关闭闹钟,则显示连续的 “-”,表示关闭了闹钟,当时间达到闹钟设的值时,蜂鸣器播放歌曲,播放歌曲期间按键任意按键即可关闭闹钟。(3)闹钟模块此模块可以将按键输入的时间存储起来,并显示在数码管上,设定时间用于与当前时间进行比较判断是否达到设定闹钟的条件达到闹钟的效果。(二)按键消抖模块我们所使用的按键开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而做的措施就是按键消抖。我们使用软件消抖方法,根据抖动的时间为 5ms~10ms,我们产生一个 20ms 的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。我们要计数过滤掉按键抖动的时间要实现的就是对输入的key_in 信号进行去抖动,输出信号为去抖动后的稳定的按键信号 press。(三)基于DHT11的温湿度采集包含2个子功能模块:温湿度采集模块和动态功能显示模块。(1)温湿度采集模块主设备与DHT11的通信方式采用单总线格式(定义如下),实现将DHT内采集的串行温湿度数据,转化为并行的温湿度数据和温度符号位,且利用已消抖的理想按键脉冲,控制温度和湿度的切换。(2)动态功能显示模块将已生成的并行温湿度数据和温度符号位,显示到数码管上。1.数码管动态扫描模块:数码管动态扫描用于显示。采集到的温湿度转化为段选和位选信号,显示到数码管上。2.8421BCD模块:用于数据的转化显示。(三)蜂鸣器报警音乐输入PWM方波才能驱动其发声,通过改变PWM波的频率,可以实现不同音调的改变;通过改变PWM波的占空比,可以实现声音大小的改变,所以我们只需要产生不同频率和占空比的PWM方波去驱动无源蜂鸣器就能让无源蜂鸣器发出不同的音调了。(四)74HC595 控制模块4HC595 是一个 8 位串行输入、并行输出的位移缓存器。其内部具有 8 位移位寄存器和一个存储器,具有三态输出功能。seg(数码管段选)和 sel(数码管位选)由数码管显示模块传来。 seg 数据和 sel 数据就是我们需要串并转换的数据,这两个信号的位宽加起来为 14 位,即我们每传输 14 位数据后需并行输出。我们使用系统时钟(50MHz)四分频得到的 shcp 时钟(12.5MHz)去进行驱动 。该模块我们需要产生 stcp、 shcp、 ds、 oe 四个信号对74HC595 进行控制。ds(串行数据):输出的数码管位选信号和段选信号。 shcp(移位寄存器时钟):上升沿时ds 数据进入移位寄存器的时钟。stcp(存储寄存器时钟):当 14 位数码管控制信号传输完之后,拉高一个stcp 时钟来将信号存入存储寄存器之中。oe(存储寄存器数据输出使能信号): 低电平有效,这里我们将复位信号取反的值赋给该信号即可。(五)基于以太网通信协议的实时视频传输包含 6 个子功能模块:时钟信号生成模块、 OV5640 摄像头驱动模块、图像格式配置模块、图像数据打包模块、以太网数据发送模块、SDRAM 数据读写控制器和顶层模块。(1)时钟信号生成模块为实验工程各模块提供工作时钟,PLL时钟模块通过调用锁相环(PLL)IP核来实现,最简单的一个模块,用quartus软件可以直接生成。(2)OV5640 摄像头驱动模块利用说明手册,实现 OV5640 摄像头的寄存器配置、初始化,经 OV5640 摄像头传输的图像数据进行拼接,并暂存到 SDRAM 中。1. I2C驱动模块(i2c):I2C驱动模块负责驱动OV5640 SCCB接口总线(详细使用方法见doc文件夹的官方手册),用户可根据该模块提供的用户接口对OV5640的寄存器进行配置。2. 摄像头图像采集模块(data):摄像头采集模块在像素时钟的驱动下将传感器输出的场同步信号、行同步信号以及8位数据转换成SDRAM读写控制模块的写使能信号和16 位写数据信号。3. 配置模块(cfg):I2C配置模块的驱动时钟是由I2C驱动模块输出的时钟提供的,这样方便了I2C驱动模块和I2C配置模块之间的数据交互。该模块寄存需要配置的寄存器地址、数据以及控制初始化的开始与结束,同时该模块输出OV5640的寄存器地址和数 据以及控制I2C驱动模块开始执行的控制信号,直接连接到I2C驱动模块的用户接口,从而完成对OV5640传感器的初始化。(3)图像格式配置模块图像格式配置模块 format,功能是将待传输图片的图片格式按照上位机图像格式指令包进行打包,打包完成后,将格式指令包通过以太网传输给 PC 段的上位机。 上位机接收到格式指令包后,提取图片格式信息,进行显示格式配置,配置格式代码根据上位机的格式编写,因为上位机采用的是别人的软件,在实现图片传输时保持他们给出的配置格式。(4)图像数据打包模块图像数据打包模块 image_data,功能是读取暂存在 SDRAM 的图像数据,按照野火上位机的图像数据包格式进行打包,打包完成后,将图像数据包通过以太网传输给 PC 端口的上位机。上位机接收到数据包后,提取图像数据信息,进行图像显示。(5)以太网数据发送模块UDP模块实现以太网通信的收发功能,该模块内部、以太网发送模块(ip_send)和CRC32校验模块(crc32_d4)、MII 接口转 RMII 接口模块(mii_yo_rmii)。1. 以太网发送模块(send):以太网发送模块,有 IP首部校验和和CRC循环冗余校验的计算。CRC的校验并不是在发送模块完成,发送模块的发送顺序是前导码+帧起始界定符→以太网帧头→IP首部 →UDP首部→UDP数据(有效数据)→CRC校验。生产数据格式为mii格式。2. CRC校验模块(crc32):CRC校验模块是对以太网发送模块的数据(不包括前导码和帧 起始界定符)做校验,把校验结果值拼在以太网帧格式的FCS字段,如果CRC校验值计算错误或者没有的话,那么电脑网卡会直接丢弃该帧导致收不到数据,代码由网页工具生产。3. mii_to_rmii模块(mii_to_rmii):基于 MII 接口的 UDP 控制模块传入的符合 MII 接口时序的使能及数据信号转换为符合 RMII 接口时序的使能、数据信号,将转换后的使能、数据信号。(6)SDRAM 数据读写控制器由于片上资源比较少,我使用开发板上的SDRAM,SDRAM读写控制模块(sdram_top):SDRAM读写控制器模块负责驱动SDRAM片外存储器,缓存图像传感器输出的图像数据。该模块将SDRAM复杂的读写操作封装成类似FIFO的用户接口, 非常方便用户的使用。1. FIFO控制模块:作为SDRAM控制器与用户的交互接口,该模块在写FIFO中的数据量到达用户指定的突发长度后将数据自动写入SDRAM;并在读FIFO中的数据量小于突发长度时将SDRAM 中的数据读出。2. SDRAM控制器:(内部包含读写、初始化、刷新、和控制模块)负责完成外部SDRAM存储芯片的初始化、读写及刷新等一系列操作,详细使用方法见doc文件夹的SDRAM的官方使用手册。(一)基础时钟调试与分析调试:(modelsim)1.基础时间显示和调制(调了时间参数体)2.基础日期显示和调整3.闹钟设置显示调试:(实物)1.基础时间显示和调制2.基础日期显示和调整3.闹钟设置显示分析:从实物展示中分析,所有基础任务均达标。在日期显示,时刻十分准确,在年月日也可以随意设置年月日(设置时会闪烁)。闹钟板块也显示正常,在未设置闹钟时或者闹钟关闭时,会显示六个横杠。如果在开启闹钟后,会显示闹钟的数值,闹钟的数值也会相应改变数值,当闹钟数值和时钟数值相同时,蜂鸣器会发出我们所设定的音乐。(二)按键消抖模块调试和分析调试:分析:通过对按键的前抖动和抖动进行模拟输入,最后的到被拉高一次的标志信号。(三)温湿度采集调试与分析调试:1.湿度显示2.温度显示分析:温度和湿度采集均达到预期设定效果,满足显示要求。都精确到小数点后一位,但是由于采集精度不是特别高,所以说准确度不是特别精确。(四)蜂鸣器音乐播放调试与分析调试:1.Modelsim仿真图像和乐谱对比:分析:第一个仿真值刚好的乐谱A3对应的值相同(五)以太网视频传输调试与分析调试(modelsim):调试(实物):1.查询以太网ip地址2.查询物理地址MAC3.设置上位机的参数4.调试接收画面分析:在达到警报阈值之后,可以正常接收到实时画面,并且在没有达到警戒标志时只会存储画面,但是不会将画面读出。在这里,我个人认为还是可以加入更复杂的图像处理可以加入对实时画面的分析,但是并不会显示出来,这也是我们可以扩展的一个方向。由于基于图片的神经网络或者形态学分析火灾,我们有一个大概方向,但是还是没有正常实现。希望在后面的学习中,可以在这方面可以突破。 总的来说,本作品可以作为多功能温湿度电子钟,在任何需要时钟的场合都具有很强的实用性。且本作品能监控实时温湿度和火灾报警的功能,这对于需要时钟显示时间和火灾报警的室内具有很强的适配性。但是对于数据采集精准度和报警实时准确性并没有这么精准,只能有一个大体框架。属于采集的数据不够准确和画面分析也没有。如果将来可以将本设备设升级,可以考虑从采集的数据的精准度进行分析,可以增加烟雾报警模块,实现对烟雾的实时采集,当温度和湿度还有烟雾三种条件,达到某某个临界值时可以发生警报,这样对于火灾的精准度可以更好的把握。 也可以加入对视频分析的数字图像处理,可以对采集到的画面进行分析,加入形态学或者神经网络分析画面中是否存在火焰等火灾等特点。总体来说还是比较完美的,有了一个大体框架,主要欠缺的还是数据采集方面的不足,可以从这方面让本次设计有更好的提升和更大的应用面,还需要软件协调达到如果发生火灾业主能马上手机收到信息和画面,软件开发也是我们不得不面对的问题。源代码关注私发}

我要回帖

更多关于 fpga时钟 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信