基于FPGA的温度监控系统 - 图文 联系客服

发布时间 : 星期二 文章基于FPGA的温度监控系统 - 图文更新完毕开始阅读

山东科技大学学士学位论文 系统的总体模块设计

的语言逐渐为众多设计者所接受。在一次努力增加语言普及性的活动中, Verilog HDL语言于1990年被推向公众领域。Open Verilog International (OVI)是促进Verilog发展的国际性组织。1992年, OVI决定致力于推广Verilog OVI标准成为IEEE标准。这一努力最后获得成功, Verilog 语言于1995年成为IEEE标准,称为IEEE Std1 364-1995。完整的标准在 Verilog硬描述语言参考手册中有详细描述。

Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言。这是因为C语言在Verilog设计之初,已经在许多领域得到广泛应用,C语言的许多语言要素已经被许多人习惯。一种与C语言相似的硬件描述语言,可以让电路设计人员更容易学习和接受。不过,Verilog与C语言还是存在许多差别。另外,作为一种与普通计算机编程语言不同的硬件描述语言,它还具有一些独特的语言要素,例如向量形式的线网和寄存器、过程中的非阻塞赋值等。总的来说,具备C语言的设计人员将能够很快掌握Verilog硬件描述语言。

4.2 软件程序设计

根据系统的设计要求,将程序部分设计分为4个模块,包括分频模块、DS18B20驱动模块、数制转换模块、显示模块,如图4.1所示。利用Verilog 语言在QuartusII开发平台上完成程序设计。

DS18B20驱动程序分频模块数制转换模块显示模块图4.1 系统的总框图

25

山东科技大学学士学位论文 系统的总体模块设计

4.2.1 DS18B20驱动模块

DS18B20驱动模块是总程序,调用三个子程序,从而达到温度的显示。 DS18B20采用一根I/O总线读写数据,因此它对读写数据位有严格的时序要求。DS18B20 遵循相应的通信协议从而保证数据传输的正确性和完整性。该通信协议定义了多种信号时序:初始化时序、 写时序、 读时序。 从分频模块的clk_1m输出1MHz到通信模块的clk作为时钟信号;根据DS18B20所遵循的初始化时序、读时序、写时序等通信协议将程序完成;将获取的12位的温度信号传送给下一个模块[10]。 4.2.2分频模块

分频模块是FPGA设计项目中的基本模块之一。针对50MHz的时钟频率进行分频产生1MHz频率控制信号和1KHz频率扫描信号,分频模块如图4.2所示。

图4.2 分频模块

1端口说明

clk:输入50M时钟; rst:复位信号;

clk_1k:分频后输出的时钟 clk_1m:分频后输出的时钟。

26

山东科技大学学士学位论文 系统的总体模块设计

2 原理分析

系统时钟信号进入分频模块clk引脚,经过分频后得到信号clk_1m和clk_1k输出。

输出的clk_1k的频率信号用于扫描数码管做动态显示,使人不会看到数码管的闪烁感;输出的clk_1m的频率信号用于产生1us 时钟,用于控制传感器读写时序。

分频模块用Verilog HDL语言描述,见附录B。 4.2.3 数制转换模块

利用数制转换模块将输入的16位二进制的温度数据转换为BCD码,如图4.3所示。

图4.3 数制转换模块

1 端口说明

data[15..0]:输入16位数据 bcd_out[11..0]:输出12位数据 2 原理分析

图4.3中,data[15..0]表示从DS18B20获取的16位数据,前4位表示温度的正负号,后12位表示数据,本次试验显示忽略了小数位和负号,只取整数位,那么只取data[10:4]这7位,便是温度的整数值。

bcd_out[11..0]的每四位储存一个数据,一共有3个数据,这三个数据分

27

山东科技大学学士学位论文 系统的总体模块设计

别代表着温度的个位、十位、百位,便于在下一个模块中便于将其转换成十进制显示出来。

数制转换模块用Verilog HDL语言描述,见附录B。 4.2.4显示模块

本次显示采用的动态显示。数码管动态显示接口是应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当FPGA输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于FPGA对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,缺点就是亮度稍低,但是它能够节省大量的I/O端口,而且功耗更低。

从数制转换模块输出的BCD码转换成十进制数接入到显示模块中,将其译码为七段值,输出到共阳数码管上显示,模块如图4.4所示。

28