资源描述
本科毕业设计(论文)
基于FPGA的多路温度传感器检测器
学 院 计算机学院
专 业
年级班别
学 号
学生姓名
指导教师
2015年6月
摘要
温度是工农业生产过程中最普遍、最重要的操作参数之一。温度的检测和控制都直接与安全生产、产品质量、生产效率、节约能源等重大技术经济指标相联系。本系统设计的简单实用的多路温度传感监测器,可广泛应用于各种温度控制领域,如发电厂、热电厂、自动化生产线等工业过程的温度监测,大型中央空调设备用户端,以及农业养殖、温棚、温室、干燥房、粮食仓库、井下温度控制、火灾预警等多种场合。本多路温度传感监测器能够实现温度的实时监测与显示,以便于有效的管理。
本系统基于FPGA设计,运用了IP核技术、LCD显示技术、串口传输技术对多路数字温度传感器DSl8B20进行一系列的指令控制、数据采集、存储、分析及数据转换,并最终通过LCD显示屏与PC端软件显示。无论从抗干扰性,还是从运行可靠性方面,都能达到理想的效果。
本系统研究的基于FPGA的多路温度传感监测器最高可与八路数字温度传感器DSl8B20进行连接,能够实现对周围环境的多点温度检测和动态显示,并能实现自定义温度警报阈值,对超出温度阈值的数据,发出警报提示。
关键词:温度检测,DS18B20,FPGA,IP核,Verilog HDL
Abstract
Temperature is one of the parameters of the most common industrial and agricultural production, the most important operation. Temperature measurement and control are directly related to production safety, product quality, production efficiency, energy conservation and other major technical and economic indicators linked. The system design is simple and practical multi-channel temperature sensor monitors, temperature control can be widely used in various fields, such as temperature monitoring of power plants, thermal power plants, automated production lines and other industrial processes, large central air-conditioning equipment the client, as well as agriculture and breeding , greenhouses, greenhouses, drying rooms, food storage, underground temperature control, fire alarm and other occasions. The multi-channel temperature sensor monitors to achieve real-time monitoring and display of temperature in order to facilitate effective management.
The system is based on FPGA design, the use of IP core technology, LCD display, serial transmission technology for multi-channel digital temperature sensor DSl8B20 series of commands control, data acquisition, storage, analysis and data conversion, and finally through the LCD display and PC terminal software displays. In terms of interference, or from operational reliability, can achieve the desired results.
Highest FPGA-based multi-channel temperature sensor monitors the system can be connected with the study of eight digital temperature sensor DSl8B20, the surrounding environment can be achieved multi-point temperature detection and dynamic display, and can implement a custom temperature alarm thresholds for exceeding Data temperature threshold, an alert prompts.
Keywords : Temperature Detection, DS18B20,FPGA, IP Core, Verilog HDL
目录
1 绪论 1
1.1 系统研究背景及目的 1
1.2 国内外研究现状 1
1.3 题目的研究方法 2
1.4 论文的构成及研究内容 2
2 系统需求分析 3
2.1 系统开发环境 3
2.2 系统设计思路 3
2.3 系统预期效果分析 4
3 系统所用工具介绍 5
3.1 DS18B20温度传感器介绍 5
3.2 Actel ProAISC3 A3P250 PQ208 FPGA 开发板介绍 8
3.3 通用异步收发传输器(UART)介绍 10
3.4 LCD1602显示器显示原理介绍 11
4 系统设计 13
4.1 系统总体设计 13
4.1.1 FPGA设计流程 13
4.1.2 显示软件设计流程 14
4.1.3 系统运转流程 15
4.2 FPGA详细设计 16
4.2.1 系统电路设计 16
4.2.2 系统模块设计 19
4.3 PC端显示软件详细设计 29
4.3.1 软件设计关键要点 29
4.3.2 软件界面设计 29
4.3.4 软件功能 30
5 测试与实现 31
结论 35
参考文献 36
致谢 37
附录A 系统说明 38
1 绪论
温度,无论是在工农业生产和日常生活中,还是在国防、医疗、安全等各个领域中都是经常需要用到的一个最基本的重要环境参数,温度检测也是应用频率最高的技术之一,在粮食仓库存储、环境数据监测、医学体温检测等领域有着广泛应用。显然,一个迅速、准确的温度检测手段,在我们的生产生活中显得异常重要。
1.1 系统研究背景及目的
在化工、石油、冶金等工业化生产过程的物理过程和化学过程中,温度往往是一个很重要的度量,需要加以精确的控制。在我们现代自动化生产中,工业的生产过程在大多数情况下都需要对温度进行严格的监测与控制,才能得以顺利地进行生产。除此以外,使用自动化地对温度进行监控,可以保证生产环境的安全,避免意外事故的发生。从而保障了企业工业生产的财产与设备的安全。
因此研究更准确、更实用的温度的监测系统非常有必要,它可以进一步地优化成一个控制系统。通过控制温度来进行工业化的生产。
1.2 国内外研究现状
我国是一个工业大国,无论是机械工业化生产,还是化学工业生产,再到农业化生产等,对温度的控制往往是必不可少的。因而研究温度的监测,可以为各类工业化生产创造出非常实用的价值,大大降低了工业化生产所需要的成本,也节约了大量的人力资源,避免对生产所需的资源和经济造成极大的浪费。因此对温度的监测的研究,就变得尤其的重要。首先,温度的度量要相当的精确,不容许有极大的差错。其次,在温度传感与硬件系统的设计上,要设计的更加严谨,具有正确性,可运行性,可维护性。最后在考虑数据通信方面,也要保证数据传送的正确性,及时性等。同时整个系统也应当设计富有人性化。目前我国在对温度监测方面上的研究已相当成熟。在基于FPGA的温度控制的研究也相当多。对各类的温度传感器的学习研究和控制上是非常成熟的,例如:DS18B20温度传感器,PT100温度传感器等。其次在FPGA上的研究也是相当的成熟,Actel公司的各类系列的开发板都带有详细的说明,以及各模块的电路图例,这可以极大的方便我们在这基础进行快速的开发上。现在我们学习生活中也有许多的各种系列的数字逻辑的学习资料,如VHDL和Verilog HDL语言学习资料。通过这些资料可以作为基于FPGA的温度检测系统的学习背景。
1.3 题目的研究方法
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。
本系统设计主要基于FPGA上对温度传感器进行采集数据,并将采集到的数据进行转换及存储,将温度数据实时地显示在LCD液晶显示屏幕上,并且通过主机串口向PC机传送温度数据,实现串口通信。从而实现对温度监控。所使用到的开发板是Actel公司的ProASIC3系列的A3P250开发板。该开发板提供了COM串口,LCD液晶显示,JTAG口烧写程序,在开发环境的选择上只能选择Actel公司提供的Libero V9.1集成开发环境。方便对系统的电路设计,综合仿真,布线布局,时序约束和分析、功率分析以及程序文件生成等。轻松创建完整的、基于简单和复杂处理器的系统级芯片(SoC)设计。
1.4 论文的构成及研究内容
本系统基于FPGA的多路温度传感监测器主要的构成及研究内容有以下几个方面:
1、研究DS18B20温度传感器的控制过程;
2、研究LCD1602液晶显示屏的显示过程;
3、研究Actel公司的ProASIC3系列开发板A3P250各个模块电路图,引脚等知识;
4、利用SPI(串行外围设备接口)实现控制单路DS18B20温度传感器;
5、基于单路DS18B20温度传感监测器的设计,实现多路DS18B20温度传感监测器;
6、利用UART(通用异步收发传送器)实现与PC端的串口通信;
7、设计PC端显示软件,通过PC端软件实现多路温度的实时监测显示。
2 系统需求分析
利用VerilogHDL和IP核技术,设计开发一个基于FPGA的多路温度传感器监测器。该设计具有八路DS18B20温度传感器,可对周围环境进行实时温度检测,并通过LCD显示屏和PC端设计软件实时显示出来。
2.1 系统开发环境
1、FPGA设计
FPGA设计平台:Libero IDE v9.1
FPGA设计工具:IP核、Verilog HDL语言
2、PC端显示软件设计
PC端显示软件设计平台: Microsoft Visual Studio 2010
PC端显示软件设计语言:C#
2.2 系统设计思路
本系统利用VerilogHDL语言、IP核技术设计开发一个基于FPGA的多路温度传感器监测器,对八路DS18B20温度传感器进行控制与温度数据采集,并集成于Actel ProAISC3 A3P250 PQ208 FPGA开发板中,以实现对周围温度的实时监测。
具体思路是利用IP核CoreABC核作为控制器,CoreAPB3核作为系统总线,CoreSPI核作为外设接口,CoreUARTapb核作为串行通信接口,CoreTimer核作为延时发生器;利用VerilogHDL语言设计的FIFO、读时钟和写时钟作为LCD显示控制器,双向控制端口作为DS18B20的传输切换控制器;最后将各个模块整合成一个整体。
其中需要说明的是,由于DS18B20为单总线系统,读写操作都由一条总线完成,所以SPI与DS18B20连接时需要通过一个双向控制端口,进行读写切换。对DS18B20的读写操作通过SPI完成,SPI每次想DS18B20读写8位,但相对于DS18B20来说仅读写一位。为了解决控制器与DS18B20、LCD显示器间的速度差异,本系统通过设计内部指令组成延时函数并通过CoreTimer产生延时达到控制器与DS18B20的速度协调,通过FIFO的输入输出特性达到控制器与LCD显示器的速度协调。
2.3 系统预期效果分析
本系统可实现通过八路DS18B20温度传感器对周围环境的实时温度检测,并将检测到的温度数据通过串口传输到电脑中,通过专门设计的软件将八路温度数据在电脑中显示出来,并且若超过阈值,将提示警告信息。同时也通过LCD显示屏实时的循环显示温度数据,并且不断更新。
3 系统所用工具介绍
3.1 DS18B20温度传感器介绍
为了克服传统测温系统测温精度低、灵敏度不高等问题,本设计采用了单总线高精度数字式温度传感器DS18B20[1]。
1、DS18B20特点
DS18B20具有以下几个显著特点:
(1)每个器件有唯一的64位序列号,可用于多路测温系统的器件识别;
(2)测温范围广,达到-55℃ ~ 125℃;
(3)在-10℃ ~ 85℃范围内精确度为±0.5℃;
(4)温度计分辨率可设为9 ~ 12位;
(5)最长750ms内将温度转换为12位数字,以二进制补码形式保存;
(6)具有可自定义的温度阈值警报设置,和警报发生标识;
(7)可选外部电源供电或数据线供电。
2、DS18B20的内部结构
图3.1 DS18B20内部结构图
DS18B20的内部结构如图3.1所示,其主要由4部分组成:电源系统、64位ROM、存储控制逻辑、暂存器。
(1)电源系统包括内部电源模块与外部引脚模块。外部引脚模块共有3个引脚组成,分别是:DQ,为数据总线,与控制器通信时,用于发送和接收数据,但由于单总线接口是漏极开路的,所以与主件连接时总线必须外加一个大约5kΩ的上拉电阻;GND,为DS18B20的接地引脚;VDD,为DS18B20的接电引脚,可接5V电源(外部电源模式)或接地(寄生电源模式)。
(2)64位ROM用于保存一个唯一的64位ID。每个DS18B20温度传感器都具有一个唯一的64位ID码,在具有多路DS18B20温度传感器的系统中可用于识别不同的DS18B20。
(3)存储控制逻辑可完成对控制指令的识别和温度数据等寄存器的读写等操作。
(4)暂存器由连续的9个字节组成,包含DS18B20的各种寄存器。
3、DS18B20温度传感器的暂存器组成
(1)温度数据寄存器,位于暂存器的第1字节和第2字节,用于保存检测到的环境温度数据。其中第1字节保存温度数据的低八位,第2字节保存温度数据的高八位,通过二进制补码形式保存,具体格式如表3.1所示,S表示符号。
表3.1 温度数据寄存器格式
-
7bit
6bit
5bit
4bit
3bit
2bit
1bit
0bit
低八位
23
22
21
20
2-1
2-2
2-3
2-4
高八位
S
S
S
S
S
26
25
24
(2)TH寄存器和TL寄存器,位于暂存器的第3字节和第4字节,用于保存最高温度阈值和最低温度阈值。具体格式如表3.2所示。
表3.2 TH/TL寄存器格式
7bit
6bit
5bit
4bit
3bit
2bit
1bit
0bit
S
26
25
24
23
22
21
20
(3)配置寄存器,位于暂存器的第5字节,用于配置和保存温度传感器的数据分辨率。具体格式如表3.3所示。
表3.3 配置寄存器格式
7bit
6bit
5bit
4bit
3bit
2bit
1bit
0bit
0
R1
R0
1
1
1
1
1
其中R1和R0的不同值组合表示温度数据的不同分辨率。具体组合如表3.4所示。
表3.4 数据分辨率组合
R1
R0
分辨率
最大转换时间
0
0
9位
93.73ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
(4)CRC寄存器,位于暂存器的第9字节,通过检测到的温度数据计算的CRC校验码,保存于CRC寄存器中,可以用于对温度数据的校验。
4、DS18B20的内部指令
DS18B20的内部指令系统分为两部分,分别是ROM指令和功能指令。
其中ROM指令包括:
(1)搜索ROM指令(0xF0):通过多次向总线发送搜索ROM指令,可对总线上多个DS18B20的数量和ID码进行识别,从而挑选不同的DS18B20进行通信。
(2)读取ROM指令(0x33):通过该指令,可读取DS18B20的ID码,但只有当总线上仅有一个DS18B20的时候可用,否则会发生数据冲突。
(3)匹配ROM指令(0x55):后跟64位ID码,通过该指令可定位一个特定DS18B20。
(4)忽略ROM指令(0xCC):允许总线跳过ID码的识别,直接对DS18B20进行功能操作,但只有当总线上仅有一个DS18B20的时候可用,否则会发生数据冲突。
(5)警报搜索指令(0xEC):通过该指令,可对检测因超过温度阈值而发出警报的DS18B20。
功能指令包括:
(1)温度转换指令(0x44):通过该指令,可使DS18B20开始对周围温度进行检测,并转换成二进制补码保存于温度寄存器中。根据不同的分辨率,转换时间略有不同。
(2)写暂存器指令(0x4E):通过该指令,可配置暂存器上的TH、TL和配置寄存器进行相应的配置。
(3)读暂存器指令(0xBE):通过该指令,可从第1字节开始读取暂存器中的温度数据寄存器、TH、TL寄存器等直到第9字节的数据,如何不想继续读下去,可随时复位终止。
3.2 Actel ProAISC3 A3P250 PQ208 FPGA 开发板介绍
Actel ProAISC3 A3P250 PQ208[2]作为本系统的FPGA设计开发板,板上可用资源丰富,包括LED指示灯、板上集成RAM、串行通信接口和LCD显示屏等,可满足绝大部分的FPGA设计。
该开发板具有以下特点:
(1)板上提供测试电压,分别有5V, 3.3V, 2.5V, 1.5V。
(2)板上提供4x8个可设为输入/输出端的LED指示灯。
对应引脚如表3.5所示。
表3.5 FPGA引脚与板上LED指示灯连接表
输入
FPGA
引脚
输入
FPGA
引脚
输入
FPGA
引脚
输入
FPGA
引脚
LD1
58
LD9
68
LD17
86
LD25
96
LD2
59
LD10
69
LD18
85
LD26
95
LD3
60
LD11
70
LD19
84
LD27
94
LD4
61
LD12
73
LD20
83
LD28
93
LD5
63
LD13
74
LD21
82
LD29
92
LD6
64
LD14
75
LD22
80
LD30
91
LD7
66
LD15
76
LD23
79
LD31
80
LD8
67
LD16
77
LD24
78
LD32
87
(3)板上提供40MHZ的振荡器和一个可选频率振荡器,用于产生时钟信号。
对应引脚如表3.6所示。
表3.6 FPGA板上时钟引脚
时钟源
FPGA引脚
40MHZ时钟
55
可定义频率时钟
206
(4)板上提供一个16X2的LCD显示器。
对应引脚如表3.7所示。
表3.7 FPGA与LCD引脚连接表
FPGA引脚
LCD引脚
LCD引脚名
127
7
DB0
129
8
DB1
132
9
DB2
131
10
DB3
134
11
DB4
133
12
DB5
136
13
DB6
135
14
DB7
138
4
RS(寄存器选择)
128
6
EN(指令使能)
137
5
R/~W(读写选择)
(5)板上提供两个标准串行接口。
对应引脚如表3.8所示。
表3.8 FPGA的串口引脚
串口端口名
FPGA引脚
TX0
118
RX0
117
TX1
119
RX1
120
(6)板上提供一个可设为高/低电平有效的复位按键。
对应引脚如表3.9所示。
表3.9 FPGA的复位引脚
复位信号源
FPGA引脚
RESET-H
56
RESET-L
57
3.3 通用异步收发传输器(UART)介绍
通用异步收发传输器(UART)[3]由于其简便性、可靠性、抗干扰能力等优势,被广泛的运用在嵌入式领域中。
它的重要作用包括:
1、对控制器总线和串口间的数据进行串/并转换;
2、只要进行通信的双方设置相同数据位、停止位、校验位和波特率,就能实现双方的读写通信;
3、通过异步方式进行通信,而不需要进行时钟同步。
由于UART的通信方式是串行异步通信,所以就有其特定的通信方式以保证数据的准确性。具体为:UART在空闲时,保持信号为1;在通信时,首先发送1位开始位0,接着从低位开始发送各个数据位,数据位可设置为7位或8位,然后发送1位校验位,校验位可设置位奇校验、偶校验或无,若设置为无,则不发送此位,最后发送停止位1,停止位可设置为1位、1.5位或两位。其中,每一位的保持时间根据波特率计算出来。
本系统运用Actel公司提供的IP核CoreUARTapb,是基于APB总线的可直接与工业标准设计UART接口连接的集成IP核,可利用IP核CoreABC通过APB总线对其进行相应的配置,即可与具有相同配置的另一方进行串行通信。
具体通信过程:CoreABC将处理好的温度数据传输到配置好波特率等设置的CoreUARTapb的TX FIFO中,而CoreUARTapb与板上的串口连接的,所以当板上的串口与电脑的串口相连以后,CoreUARTapb将通过特定的波特率从板上的串口发送串行数据传输到电脑上,而在电脑端,同样对串口进行波特率等设置,与CoreUARTapb的设置相匹配,这样便可以实现串口通信,接收从板上传输过来的串行数据了。
3.4 LCD1602显示器显示原理介绍
在Actel ProAISC3 A3P250 PQ208 FPGA开发板上集成了一个LCD1602字符型液晶显示器,可用于字符型数据的显示。
LCD1602[4]采用标准的14脚接口。其中需要与FPGA引脚连接的接口分别是DB0~DB7,是LCD1602的数据接口;RS,是寄存器选择接口;EN,是使能接口;R/~W是读写切换接口;具体引脚连接请参照表3.7。
除了字符显示以外,每个过程都对应一个特定的指令,而字符显示则需要向LCD显示器传输需要显示的字符的ASCII码。具体指令如表3.10所示。
表3.10 LCD1602指令系统(部分)
指令
RS
R/~W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
清屏
0
0
0
0
0
0
0
0
0
1
光标归位
0
0
0
0
0
0
0
0
1
*
输入方式设置
0
0
0
0
0
0
0
1
I/D
S
显示开关控制
0
0
0
0
0
0
1
D
C
B
光标与字符移位
0
0
0
0
0
1
S/C
R/L
*
*
功能设置
0
0
0
0
1
DL
N
F
*
*
初显示地址设置
0
0
1
字符十六进制初显示地址
字符显示
1
0
字符对应十六进制ASCII码
其中,RS作为寄存器选择接口,0表示选择指令寄存器,1表示选择字符寄存器;R/~W作为读写切换接口,0表示向LCD写,1表示读LCD;DB0~7则为数据接口。
4 系统设计
4.1 系统总体设计
4.1.1 FPGA设计流程
FPGA总体设计流程分为IP核配置与设计、自定义模块设计、模块组合与引脚设计、综合布线与烧录四个阶段,如图4.1所示。
开始
IP核配置
与设计
综合布线
与烧录
自定义模块
设计
模块组合与
引脚设计
结束
图4.1 FPGA总体设计流程
1、IP核配置与设计
该设计阶段进行系统所需IP核的配置与设计工作,完成系统的主要设计,具体流程如图4.2所示。
开始
配置CoreABC
配置CoreAPB3
配置CoreSPI
配置CoreTimer
配置CoreUARTapb
在CoreABC中进行代码设计
阶段结束
图4.2 IP核配置与设计流程
2、自定义模块设计
自定义模块,包括缓冲器模块、双向控制端口模块、一路八路数据分配器模块、八选一数据选择器模块、FIFO模块、FIFO读时钟模块和FIFO写时钟模块。自定义模块使用Verilog HDL语言设计。
3、模块组合与引脚设计
该阶段进行对各个IP核与各个自定义模块间的电路连接,使其组合成一个整体系统,并对系统引脚进行设计,使其对应FPGA开发板的引脚。
4、综合布线与烧录
该阶段对以设计完成的系统进行综合、布线与烧录,让系统集成与FPGA开发板中,以完成FPGA设计,实现系统所需功能。
4.1.2 显示软件设计流程
显示软件基于C#语言设计,完成对FPGA系统中UART串口传输过来的温度数据通过电脑显示出来,并通过设计温度阈值,实现警报系统。具体设计流程如图4.3所示。
开始
界面设计
UART配置设计
温度数据显示设计
警报系统设计
结束
图4.3 显示软件设计流程
4.1.3 系统运转流程
本系统外部连接示意图如图4.4所示。
图4.4 系统外部连接图
本系统主要运转流程如图4.5所示。
图4.5 系统运转流程
4.2 FPGA详细设计
本设计运用了5个IP核:CoreABC、CoreAPB3、CoreSPI、CoreTimer、CoreUARTapb;4个缓冲器;8个自定义三态门组件;2个自定义一路八路数据分配器;1个八选一选择器;1个FIFO控制器;1个自定义3分频时钟;1个自定义65536分频时钟。
4.2.1 系统电路设计
系统各个模块内部的电路连接如图4.6所示。
图4.6 FPGA模块连接图
1、系统引脚设计说明
(1)输入端:
RESET:系统复位信号,高电平有效;
CLK:系统时钟信号,40MHZ时钟频率;
RX:串口接收端,用于接收从串口传输来的信号。
(2)输出端:
DB0~DB7:LCD数据线;
E:LCD使能线,下降沿使能;
RW:LCD读写控制线,低电平为写;
RS:LCD指令数据寄存器选择线;
TX:串口发送端,用于向串口发送信号。
(3)双向端口:
DQ0~DQ7:DS18B20数据线,分别连接8个DS18B20。
系统引脚与FPGA引脚的连接对应关系,如表4.1所示。
表4.1 系统引脚与FPGA引脚的连接表
系统引脚
FPGA引脚
系统引脚
FPGA引脚
RESET
56
CLK
55
DB0
127
DB1
129
DB2
132
DB3
131
DB4
134
DB5
133
DB6
136
DB7
135
RW
137
RS
138
E
128
—
—
RX
117
TX
118
DQ0
3
DQ1
4
DQ2
5
DQ3
6
DQ4
7
DQ5
8
DQ6
9
DQ7
10
2、CoreABC核部分引脚说明
(1)IO_OUT[2-0]:CoreABC输出端,与各个选择器的选择信号输入端连接,用于产生选择信号。
(2)IO_OUT[3]:CoreABC输出端,与一个一选八选择器的数据输入端连接,该选择器用于不同双向端口的读写选择。
(3)IO_OUT[13-4]:CoreABC输出端,与FIFO数据输入端连接,用于LCD数据的输入。
(4)IO_OUT[14]:CoreABC输出端,与FIFO的写使能端连接,用于FIFO的数据写入使能。
3、CoreSPI核部分引脚说明
(1)SPISDI:CoreSPI输入端,与双向端口连接,用于接收DS18B20的数据。
(2)SPISDO:CoreSPI输出端,与双向端口连接,用于向DS18B20发送数据。
4、CoreAPB3核引脚说明
(1)M0:主设备通信集合端口,与CoreABC相连。
(2)S0~S2:从设备通信集合端口,与其他IP核相连。
5、一路八路数据分配器引脚说明
(1)I:数据信号输入端。
(2)S0~S2:选择信号输入端。
(3)Y0~Y7:数据信号输出端,从I端口采集数据,通过S0~S2选择数据输出端,其他数据输出端口保持高电平。
6、FIFO部分引脚说明
(1)DATA[9:0]:数据输入端,接收LCD控制数据。
(2)Q[9:0]:数据输出端,发送LCD控制数据。
(3)WCLOCK:FIFO写时钟,需与CoreABC指令时序匹配。
(4)RCLOCK:FIFO读时钟,需与LCD指令时序匹配。
(5)WE:FIFO写使能。
4.2.2 系统模块设计
1、 CoreABC核
CoreABC[5]:作为整个系统的控制器,用于数据的处理。在CoreABC中,需要配置数据总线位宽、控制从机的个数、输入输出端的位数等参数,并且需要在CoreABC的Program项中编写数据处理代码,将从各个从设备模块中获得的数据加以处理,得到需要的结果,并传输到UART和FIFO中输出。
本系统所用CoreABC核为v3.5版本,CoreABC的配置如图4.7(a)、(b)所示。
(a) CoreABC配置图(1) (b) CoreABC配置图(2)
图4.7 CoreABC配置图
对CoreABC配置完毕后,需要在’Program’中进行指令代码编写,其中包括对DS18B20进行相关的指令控制和对LCD显示器进行相关的指令控制。
控制器每次对DS18B20进行相关指令控制,至少需要3个步骤:
(1)初始化DS18B20
初始化DS18B20需要控制器拉低DS18B20总线并保持480us以上,然后释放总线,形成复位脉冲;DS18B20检测到上升沿后等待15-60us,后发出一个保持60-240us的低电平。
(2)控制器向DS18B20发送ROM指令
(3)控制器向DS18B20发送功能指令
控制器对DS18B20进行以上3个步骤对DS18B20进行访问时,必要涉及对DS18B20总线的读和写。而需要注意的是,对DS18B20的读写操作需要特定时序要求,具体为:
写操作:写1位数据至少需要60us,同时要保证两次连续的写操作有1us以上的间隔。若写0,控制器拉低总线60us,然后释放,写0完成;若写1,控制器拉低总线并在1~15us内释放,然后等待60us,写1完成。
读操作:读1位数据至少需要60us,同时保证两次连续的读间隔1us以上。控制器首先拉低总线1us以上然后释放,在释放总线后的1~15us内主机对总线采样,采样45us以上,读1位完成。
而对LCD显示器进行的指令控制,其过程具体如图4.8所示。
LCD清屏
光标归位
位移方向
设置
功能设置
显示器开关
输入方式
设置
显示地址设置
字符显示
开始
结束
图4.8 字符型LCD显示器显示流程
2、CoreAPB3
CoreAPB3[6]:作为系统总线,用于控制器与从属设备间的数据传输。CoreAPB3的配置需要与CoreABC的某些配置相匹配,否则造成寻址出错等问题。
本系统所用CoreAPB3核为v4.0版本,CoreAPB3的配置如图4.9所示。
图4.9 CoreAPB3配置图
3、CoreSPI
CoreSPI[7]:作为串行外设接口,用于实现各个DS18B20温度传感器与控制器间的通信。SPI是一种高速的,全双工的、同步的通信总线,它是以主从方式工作,一个SPI总线可以连接多个主机和多个从机,但是在同一时刻只允许有一个主机操作总线。在本系统中CoreABC就作为SPI的主机,而DS18B20则作为SPI的从机。
本系统所用CoreSPI核为v4.2版本,主要需要配置数据帧大小、FIFO深度、系统时钟分频、数据接收和发送的相位和极性等,如图4.10所示。
图4.10 CoreSPI配置
在使用CoreSPI核的过程中,需要注意以下几点:
(1)由于是全双工传输模式,若需要读取SPI RX FIFO中的数据,则需要先向SPI TX FIFO 写入数据,并等待数据传输完成,方可读取。在数据传输过程获取RX端的数据存入RX FIFO
(2)图4.11为CoreSPI V4.2使用手册给出的相应设置的传输时序。
图4.11 CoreSPI数据传输时序
但是根据仿真实验得出,RX(即SPISDI)数据的获取在SPICLK的下降沿获取,与手册给出的时序并不相同。
(3)CoreSPI的数据寄存器若数据满,有新数据进入的时候,会直接忽略,不会覆盖原数据。而本系统中很多时候,不会读写同时进行,而是只写不读,或者只读不写。因此在大多情况下,在需要读取数据的时候,RX寄存器在很久之前的时候就已经满了。所以,要解决这个问题,就需要在需要读RX寄存器 数据前,把RX寄存器原有的数据清理掉。
(4)本系统在使用CoreSPI核时,需用到的CoreSPI内部寄存器如表4.2所示。其中控制寄存器用于激活SPI核;命令寄存器用于清除RX寄存器中的原有数据。
表4.2 CoreSPI内部部分寄存器说明
地址
寄存器名
类型
位宽
默认值
说明
0x00
CONTROL
读/写
8
0x02
控制寄存器
0x1C
COMMAND
只写
8
0x00
命令寄存器
0x08
RXDA
展开阅读全文