控制模块仿真结果如图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项设定引脚,在弹出的窗口中设置好各个输入输出端与硬件相对应的引脚,并编译通过。