您好,欢迎访问一九零五行业门户网

基于Avalon总线SHT11温湿度传感器自定义IP核开发流程

引言
sopc(system ona programmable hip,可编程芯片系统)就是在一个可编程芯片上实现一个电子系统的技术。sopc是可编程逻辑器件技术和soc(systemon chip)技术发展与融合的产物。
sopc的关键技术之一就是ip核,也就是知识产权核。所谓的ip核就是指将一些比较复杂的功能模块,如音频编/解码、sdram等,设计成可以修改参数的模块,可以直接调用。实际的sopc设计过程,用户常常有特殊的需求,而eda厂商未提供该ip核。所以,在设计中添加用户自定义组件显得特别重要。
1、avalon总线
sopc组件通过avalon交换架构或者avalon总线连接在一起,sopc系统的可定制特性要求avalon总线也具备灵活的可定制特性。avalon总线是一种协议较为简单的同步总线,有其规范及传输模式。
avalon总线是由altera公司开发的一种的用于连接sopc系统组件及从组件的内部连线技术,它是由sopc builder自动生成,是一种理想的用于系统处理器和外设之间的内连总线。一般使用的是avalon从端口。一个典型从端口包含的信号如表1所列。
表1avalon从端口信号
avalon总线使用很少的逻辑资源支持数据总线复用、地址译码、产生等待周期和交换式总线传输。该总线为用户提供非常友好的接口,屏蔽搭建系统的细节,减轻了系统搭建的工作量。
2、sht11自定义ip核的开发
2.1sht11温湿度传感器
sht11是瑞士sensirion公司推出的shtxx系列数字温湿度传感器。它是基于先进的cmosens数字传感技术,具有*的可靠性和长期稳定性。全量程标定,两线数字接口,大大缩短研发时间,简化外围电路并降低费用。此外,具有体积小、响应迅速、能耗低、可浸没、抗*力强、温湿一体的特点,兼有露点测量,性价比高,使该产品能够适于多种场合的应用。sht11的功能是通过状态寄存器来实现的[3]。
图1为系统结构图。由图可知,系统主要分为接口模块和行为模块,行为模块实现芯片的驱动逻辑功能,接口模块通过内部总线和avalon总线相连,实现了对行为模块的控制。利用sopcbuilder建立系统,通过数据线和时钟线来控制sht11。其中要加上10kω的上拉电阻。
图1系统结构图
采用自定义ip核的方式,也就是把sht11看成外部存储器或者是i/o设备,将其作为从设备连接到niosii嵌入式处理器的avalon总线上,系统用访问i/o设备或者是读写寄存器的方式对其进行控制。所以,编写自定义ip核的时候,根据实体sht11的时序要求,编写驱动、接口等,灵活地控制并实现复杂的时序。其中可以按照自己的需求灵活地定义状态、标志位、控制位等。设计完成后,独立添加到sopcbuilder,用户可以直接使用。该方法比单纯利用pio内核更加节省处理器的开销,充分发挥了处理器的能力。
2.2接口模块的设计
根据sht11的描述,确定该模块与avalon所需要的接口信号。通过使用较少的信号来处理读写。系统通过时钟线、数据线和sht11相连,根据时钟的时序向数据线写命令,sht11通过数据线输出数据。设计模块的输入信号为:clk,sysclk,n_rest,data_i,data_o,wr,rd,addr。输出信号为:sck,data(data是双向数据线)。端口信号的部分说明如下:
modulesht11(
clk,//系统时钟
n_rest,//系统复位
data_i,//avalon写数据总线
data_o,//avalon读数据总线
wr,//avalon写请求
rd,//avalon读请求
sysclk,//系统时钟
addr,//avalon地址总线
sck,//时钟线输出
data,//数据输入输出(双向)
);
2.3行为模块的实现
行为模块实现的是sht11的功能。该部分是整个设计的核心,实现对sht11的控制。设计时必须根据驱动控制的规范以及时序的要求来编写。设计的过程中,信号的控制较为复杂,但在时序逻辑中,这又十分重要。可以设定一系列的寄存器,作为访问硬件的通道[78]。
根据其驱动规范,不同的命令实现相应的功能。传输开始时,应该发出启动信号。启动信号包括时钟线为高,数据线由高变低,并在下一个时钟线为高的时候将数据线变高。当启动信号开始后,输入相应指令(包含3位地址和5位命令),通过数据线,确定接收到ack信号后,表示sht11已经正确接收命令。待一定的时间后,当数据线由高拉低后开始信号的传输。系统通过确认数据线上的ack来确定每个字节的传输。数据传输完毕,进行crc校验。校验完毕后,ack为高,结束传输。
在进行设计时,采用嵌套状态机来实现驱动逻辑。根据驱动控制器的读写命令及读写时序,采取不同状态机来实现,如图2所示。输入命令之后,根据不同的读写请求,进入不同的状态机。
图2状态机
通过rd和wr以及地址addr控制数据线的读写。当addr=1&&wr,则向数据线写数据(data_i),data_i的输入格式是crc(1位)wr_data(16位)command(2位),当addr=0&&wr,进入状态机;当addr=2&&rd,从数据线读取数据data_o。
设内部寄存器command,根据不同的命令,进入不同的状态机循环:若command为01,通过数据线向寄存器写数据;若command为10,通过数据线从寄存器读数据;若command为其他,则读取数据。当传送8位数据后,需判断双向数据线data的ack信号的高低,当接收到ack信号时,再根据相应的命令,进行数据的传输。当数据传输完毕后,需要经行crc校验。图3是仿真时序图,实现向寄存器写数据的功能。
2.4软件设计
该部分可以直接在sopcbuilder中添加设计好的ip核和veriloghdl语言描述的文件,并根据avalon总线传输规范设置好相关的信号线,如图4所示。这里要注意,使用的是从端口。完成后,将ip核添加至sopc中,建立内嵌系统,并编译下载到fpga器件中。
图3时序仿真图
图4avalon接口信号
由于在niosiiide环境下可直接编写用户程序,所以可以不用编写驱动程序。在niosiiide环境下,可直接调用函数iowr(base,offset,data)和iord(base,offset)对内部寄存器进行读写。avalon总线在wr和rd的控制下进行读写。
3、测试
农业智能大棚(该花卉的适宜温度是18℃,适宜湿度是58rh),也就是棚内维持在作物适宜生长的温度、湿度等。若有变化,其将会调节相应的外围设备,来保持*环境。在大棚中,在测试节点上,sht11监测实时的温度和湿度,将数据送到nrf24l01,数据通过基站zui终到达终端虚拟控制中心。其所获得的数据变化曲线如图5、图6所示。
图5温度随时间的变化曲线图图6湿度随时间的变化曲线图
4、结语
本文介绍了基于avalon总线sht11温湿度传感器自定义ip核的开发流程,利用有限状态机设计了驱动硬件逻辑,并且基于niosii嵌入式处理器构建了一个用户定制的嵌入式系统。在sopc中,设计人员可以灵活添加ip核,减轻设计负担,避免重复工作。
其它类似信息

推荐信息