基于FPGA的数字温度测量仪设计
0 引言
温度作为一种最基本的环境参数,与人民的生活有着密切关系。温度的测量和控制在工业、农业、国防、医疗等各个领域中应用普遍。温度测量仪是利用物质各种物理性质随温度变化的规律,把温度转换为电量并显示的一种仪器,有着广泛的适用范围。
本文利用FPGA器件与DS18B20温度传感器设计实现了一种数字温度测量仪,用于检测室温。与其它系统相比较,此测量仪具有结构简单、抗干扰能力强、精确性高、转换速度快、扩展性好等优点。
1 软件程序设计
根据系统的设计要求,将程序部分设计分为5个模块,包括分频模块、DS18B20通信模块、控制模块、数制转换模块、显示模块,如图1所示。利用VHDL语言在QuartusII开发平台上完成程序设计。
1.1 分频模块
分频模块是FPGA设计项目中的基本模块之一。针对50MHz的时钟频率进行分频产生1MHz频率信号,分频模块如图2所示。
系统提时钟信号进入分频模块clock引脚,经过分频后得到信号从clk 1m输出。分频模块仿真结果如图3所示。
由图3可知,输入端的50MHz时钟信号被50分频后得到输出端的1MHz信号。
1.2 DS18B20通信模块
图4中时钟clock为输入端口,DS18820数据总线口dq[0..0]为双向端口,使能端enable为输出端口,led[11..1]为测试时的指示端口,在实际操作中无需接出。
DS18B20采用一根I/O总线读写数据,因此它对读写数据位有严格的时序要求,如图5所示。
从分频模块的clk_1m输出1MHz到通信模块的clock作为时钟信号;根据DS18B20所遵循的初始化时序、读时序、写时序等通信协议将程序完成;将获取的12位的温度信号传送给下一个模块。
1.3 控制模块
通过控制模块,将从DS18B20读取的二进制温度信息传给数制转换模块,如图6所示。
程序中设定了三个状态(清除clear、使能enable、显示display),当ena为‘1’时,状态从显示转到清除;ena为‘0’时,状态一直为显示,把输入数据win[11..1]从输出端口wout[11..1]输出到下一模块,之间的转换关系如图7所示。
控制模块仿真结果如图8所示。
图8中,clock输入为1 MHz信号,经过500分频后,得到频率为1kHz的信号clk lk,此时累加器cnt0为‘0’。当cnt0为‘1’时,系统状态由原来的清除状态转变为使能状态,此时enb为‘1’,cnt0进行累加;当cnt0=‘1’时,系统状态从使能状态转变到显示状态,系统就把win[11..1]输入的数据通过wout[11..1]输出到下一模块。
1.4 数制转换模块
利用数制转换模块将输入的11位二进制的温度数据转换为3位十进制表示,如图9所示。
图9中,clear为清零输入端口,enable为使能输入端口,indata[11..1]为数据输入端口,b1『3..0]、b2[3..0]、b3[3..0]为三个输出端口。如果clear输入信号为‘1’时,程序将清除暂存寄存器中数据;反之则不清除。enable输入信号出现上升沿时,程序开始进行数制转换,并通过b1[3..0]、b2[3..0]、b3[3..0]端口将得到的十进制数输出到相应的显示模块中。数制转换模块仿真见图10。
由图10知,输入数据为“010011 10000”,clear端为低电平,当enable信号有上升沿时,数据开始转换。转换后数据为b1=0、b2=9、b3=3,符合设计值。
1.5 显示模块
从数制转换模块输出的十进制数接入到显示模块中,将其译码为七段值,输出到共阴数码管上显示,模块如图11所示。
由图12可知,当输入为0时,输出为“1111110”;当输入为1时,输出为“0000110”;当输入为2时,输出为“1101101”;当输入为3时,输出为“1111001”等,在七段数码管上正好显示相同数字,表明所编写的程序正确。
1.6 总体电路框图
整体电路图如图13所示。
输入50MHz信号接入分频模块的clock端口,经过分频后的信号输入到DS18B20通信和数制转换模块的clock端,作为模块的时钟信号。DS 18B20将测得的温度数据传给控制模块的win[11..1],通过数制转换模块将数据转换为3位十进制表示,最后利用显示模块译码后由共阴数码管显示。
2 硬件电路设计
设计采用FPGA器件和DS18B20实现温度测量仪,FPGA电路板主要由FPGA器件、时钟电路、下载电路、电源电路、显示电路、指示灯和按键等构成。核心芯片采用ALTERA公司生产的CycloneII系列EP2C5T144C8芯片。在设计温度传感器部分时,由于DS18B20进行精确转换时需要I/O引脚保持大电流供电,这样对FPGA芯片引脚造成很大压力,所以要使DS18B20的VDD引脚接外部电源。电路框图如图14所示。
3 下载调试
选择下载FPGA芯片为EP2C5T144C8,在菜单中选择Pins项设定引脚,在弹出的窗口中设置好各个输入输出端与硬件相对应的引脚,并编译通过。
将FPGA的下载数据线一端连接FPGA电路板,一端接计算机USB口,在命令栏里Programmer项,在弹出的窗口中选择Hardware Setup,确认计算机已与DE2板连接好后,点击Start开始下载运行。
连接好DS18B20温度传感器电路,即可测量室内温度,实物电路图如图15所示。由实测知,当前室温为24.2℃。
- 基于DSP的数字温度传感器控制系统(11-28)
- 基于DS18B20数字温度传感器的设计与实现(09-23)
- 基于iNEMO的车载式汽车安全检测仪方案设计(03-18)
- 沐浴加热节水器设计方案,包含源代码(09-29)
- 设计超低功耗的嵌入式应用(三)(09-22)
- 基于FPGA的高精度超声波温度计设计(06-05)