基于FPGA的片上系统和嵌入式系统的远程监控系统

[09-12 18:34:46]   来源:http://www.88dzw.com  EDA/PLD   阅读:8563

文章摘要:总量计数IP核是网络平台FPGA中子板接口的一部分,其结构如图3所示。α辐射总量测量与γ辐射总量测量原理类似,下面以α测量为例介绍其工作原理。时钟源模块通过对主时钟分频产生一个O.1秒的脉冲信号,作为定时器计时的基准源。定时器则按照命令寄存器传过来的采集时间产生所需的定时信息。根据定时器的定时信息和命令寄存器的命令,控制计数器对α测量模块传过来的脉冲信号进行计数,从而获得辐射总量的计数值,该计数值被存进FIFO中;而在另一侧,NiosIICPU通过Avalon总线向IP核的命令寄存器写入相应的命令字实现对各通道的控制,例如启动总量计数、关闭总量计数、设置采集时间及清空FIFO等。值得注意的是,

基于FPGA的片上系统和嵌入式系统的远程监控系统,标签:eda技术,eda技术实用教程,http://www.88dzw.com

  总量计数IP核是网络平台FPGA中子板接口的一部分,其结构如图3所示。α辐射总量测量与γ辐射总量测量原理类似,下面以α测量为例介绍其工作原理。时钟源模块通过对主时钟分频产生一个O.1秒的脉冲信号,作为定时器计时的基准源。定时器则按照命令寄存器传过来的采集时间产生所需的定时信息。


  根据定时器的定时信息和命令寄存器的命令,控制计数器对α测量模块传过来的脉冲信号进行计数,从而获得辐射总量的计数值,该计数值被存进FIFO中;而在另一侧,NiosIICPU通过Avalon总线向IP核的命令寄存器写入相应的命令字实现对各通道的控制,例如启动总量计数、关闭总量计数、设置采集时间及清空FIFO等。

  值得注意的是,来自甄别电路的α或γ计数脉冲是与本IP核工作时钟异步的信号,而计数器的值最终是需要存人。FIF0的,因此对α或γ计数脉冲都以主时钟进行二次锁存并整形,使每个异步计数脉冲产生一个只持续一个主时钟周期的同步脉冲。以该脉冲进行计数,不仅解决了异步信号同步的问题,而且有效地滤除了干扰脉冲,使计敦值准确。

  3 系统的软件结构

  为了实现利用Intemet进行远程数据传输,本系统在NiosII上移植了MicroC/OS2实时操作系统和LWIP(轻量级IP协议栈)进而在其上开发信息采集软件。

  3.1 MicroC/OS2及LWIP的移植

  此部分工作主要是针对本系统的特定硬件进行移植并编写如温湿度传感器SHT75、总量计数IP核等所需的各种驱动,因此深入了解软件的各层结构和细节是移植成功的关键。

  HAL即硬件抽象层,是NiosII开发套件的一部分,由ALTERA公司提供,它封装了系统中硬件操作的相关细节,驱动程序也作为它的一部分。HAL共抽象了六种器件模型,包括字符模式器件、定时器件、文件子系统、以太网器件、DMA器件和Flash器件,并为每一类器件提供一系列的统一的初始化函数和访问函数接口,通过这种方式,HAL向上一层提供了一个类POSIX的API接口,即硬件抽象层应用编程界面。

  针对NiosII的软件开发,其实是建立在HAL之上,而非直接面向NiosII硬件本身。本系统测量模块所对应的各个接口IP核均属于字符模式器件,因此驱动程序需按HAL中字符模式器件模型来进行编写。

  MicroC/OS2是一个适合于小型、微控制器的可剥夺实时操作系统。它支持56个用户任务,其内核为占先式,支持信号量、邮箱、消息队列等多种常用的进程间通信机制,通过它为应用程序提供所需的多任务环境。由于MicroC/OS2自身并没带有协议栈,因此需要移植一个TCP/IP协议栈LWIP,从而向上层提供了一个类似UNIX套接字的接口。LWIP支持以下一些网络协议:IP、ARP、ICMF、UDP、TCP。该协议栈需要20KB的代码存储空间及4KB的数据存储空问,同时在构建系统时还需要添加一个专供其使用的定时器。


  图4为分析得到的系统软件的启动流程。在该流程图中,alt_sys_init()用于初始化系统中的设备,在这个过程中会调用设备驱动程序提供的初始化程序。Lwip_stack_init()用于初始化TCP/IP协议栈。而tcpip_init_done()是一个在协议栈初始化后被调用的函数,通信服务器的任务也在其中创建。有一点需要注意的是。所有基于LWIP的任务,都应该使用sys_thread_new()函数来创建,而不是直接使用OSTaskCreate()。最后,所有的初始化都准备好后,即调用OSStart()来启动RTOS进行任务调度。

  3.2 信息采集程序的设计

  本模块作为一个任务,运行于MicroC/OS2实时操作系统之上,完成对各个探测子系统基于策略或远程指令的测量控制,获取的信息被保存到指定的内存缓冲区,并根据要求将结果返回到远程主机上。对于温湿度测量,由于SHT75传感器的湿度输出呈一定的非线性,为了获取准确数据,需要根据给定的公式对所获得的数据进行修正,而温度输出则不需进行补偿,将数字输出转换为实际温度值即可,详见SHT75数据手册。对于总量计数的处理,本模块只是简单地将数据打包后交给通信服务器传回远程主机。

上一页  [1] [2] [3]  下一页


Tag:EDA/PLDeda技术,eda技术实用教程EDA/PLD
分类导航
最新更新
热门排行