当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于NIOSⅡ的声纳主机与显控台之间的RS232通信协议

  声纳设备一般由换能器(信号转换、收发设备)、信号处理主机(DSP等)和显示控制分机(简称显控台)三部分构成。显控台和主机之间的通信非常重要[1]。
    显控台和主机之间的通信距离较远,对通信的可靠性和安全性要求高,但是对通信速度要求不高。所以通信方式可以选择串口通信协议RS232[2]。
    显控台上诸多的旋钮、开关以及指示灯、数码管等设备需要丰富的外围接口。这些接口之间具有复杂的逻辑关系。选用FPGA作为显控台主芯片可以满足这些要求。以ALTERA公司的CycloneⅡ开发板为例,其主芯片EP2C8Q208C最多可提供182个用户I/O口,可以满足外围接口要求[3]。在ALTERA公司提供的硬件开发环境Quartus和片上系统开发环境SoPC下,可以非常方便地进行控制模块的开发。也可以构建NIOSⅡ处理器,以及配置NIOS系统自带的硬核,如串口通信模块UART、储存模块Serial Flash等[4]。
    本文利用FPGA芯片设计了一套显示控制分机系统,并且以声纳训练靶为应用背景编制了串口通信协议。
1 利用SoPC Builder构建显控台的片上系统
    SoPC Builder是ALTERA公司提供的片上系统(SoC)开发工具,它可以配合QuartusII完成FPGA芯片的CPU以及外围设备的配置工作。
1.1 片上系统的构建
    在SoPC Builder的开发环境下,选择ALTERA公司开发的32位RISC 处理器NIOSⅡ。标准型的处理器NIOSⅡ/s可以运行在100 MHz的系统时钟下,运算速度超过50 DMIPS[2]。再构建配套的数据存储器SDRAM、程序存储器Serial Flash、系统地址管理器(System ID Peripheral)、编程调试接口(JTAG_UART)以及数码管(SEG)、显示和旋钮(KNOB)、按键(KEYS)等PIO接口。
1.2 RS232 Serial Port的结构
    对UART的控制主要通过编程寄存器来实现[2]。根据UART的寄存器结构,在SoPC对应的软件开发环境NIOSⅡIDE下建立C语言的结构体UART_ST,代码如下:
/*--------------UART------------*/
typedef struct
{
    union{
        struct{
            volatile unsigned long int RECEIVE_DATA :8;
            volatile unsigned long int NC:24;
        }BITS;
        volatile unsigned long int WORD;
    }RXDATA;
    union{
        struct{
            volatile unsigned long int TRANSMIT_DATA:8;
            volatile unsigned long int NC:24;           
        }BITS;
        volatile unsigned long int WORD;
    }TXDATA;
    union{
        struct{
            volatile unsigned long int PE:1;
            …其他状态寄存器
        } BITS;
        volatile unsigned long int WORD;
    }STATUS;
    union{
        struct{
            volatile unsigned long int IFE:1;
                 …其他控制寄存器
            }BITS;
            volatile unsigned long int WORD;
    }CONTROL;
    union{
        struct{
volatile unsigned long int BAUDRATE_DIVISOR:16;
volatile unsigned long int NC:16;           
        }BITS;
        volatile unsigned  int WORD;
    }DIVISOR;
}UART_ST;
 

 

2 显控台与主机之间的通信
    声纳设备有两种工作状态——设置和工作。在这两种状态下,显控台与主机的通信方式有三种,分别如图1~3所示。

[!--empirenews.page--]


    在声纳设备工作之前,操作员在显控台要完成开机与参数设置等动作。此时,开关等外围设备会触发处理器的中断处理程序,完成参数设置和显示。这些参数不仅要在显控台显示,还得通过UART发送到主机(DSP),作为主机信号处理运算的某些参数。因为是通过串口发送,所以这些数据要进行适当的分割与编码,并加上地址信息等。
    在主机(DSP)接收到开始工作的指令后,主机会把处理过程中或者处理后的数据通过UART发送到显控台,方便操作员实时了解设备的工作状态和工作结果。
3 在NIOSⅡIDE上实现串口通信协议
    NIOSⅡIDE是ALTERA公司开发套件中用来进行嵌入式开发的平台。所有软件开发任务都可以在NIOSⅡIDE下完成,包括编辑、编译和调试程序。它支持C/C++语言编程,可以根据SoPC建立的SoC,生成相应makefile,在编译时,又可以根据makefile生成系统头文件system.h,从而把软硬件隔离开来[5]。
3.1 串口通信协议
    在NIOSⅡIDE下用C语言开发通信协议较为方便。由于RS232每帧数据有效数据位为8 bit,所以将unsigned char 作为协议中的基本数据类型。在库文件中,这种数据类型被定义为alt_u8。指令的前4位为0,后4位为指令内容。数据前4位为数据的地址信息,后4位为数据内容。
    显控台与主机所有通信数据和指令分为三种:(1)显控台处理器发送到主机(DSP)的指令,取值范围为0x00~0x0f。典型的如0x00为开始工作指令,0x0f为停止工作指令,0x01~0x07为通信检查指令。(2)显控台处理器发送到主机(DSP)的数据,取值范围为0x1x~0xfx。典型的如0x9x和0xax,分别为多普勒频移的低4位数据和高4位数据。(3)主机(DSP)发送到显控台处理器的数据,取值范围为0x0x~0xfx。典型的如0x5x噪声级别。
3.2 程序设计
    根据以上分析,以声纳训练靶为例,设计C语言程序。框图如图4所示。

    NIOSⅡ嵌入式编程可以直接调用ALTERA的库函数进行操作。例如对PIO的操作函数:IOWR_ALTERA_AVALON_PIO_DATA(BASE,DATA)(写IO函数),IOWR_
ALTERA_AVALON_PIO_DATA(BASE,DATA)(读IO函数)。也可以构建硬件寄存器的结构,例如UART_ST这样的结构,通过对结构实例化的操作,同样可以方便地编程。本设计中结合了这两种编程的优势,对于结构复杂,操作要求简单的硬件,采用库函数的操作方法,如Flash;对结构较为简单、操作较为细化的硬件,采用寄存器结构化的操作方法,如UART。
    本文利用FPGA芯片构建了声纳设备的显示控制分机。基于ALTERA公司的 NIOSⅡ嵌入式处理器,建立了片上系统,实现了显示控制分机和主机(DSP)之间的RS232通信协议。在以EP2C8Q208C为主芯片的FPGA开发板上,实现了硬件系统的构建和软件编程以及下载。此显示控制分机应用在一体化声靶中,工作稳定可靠。由于片上系统构建的灵活性,所以这种显示控制方案在声纳设备中具有很好的可扩展性,便于维护和升级。
参考文献
[1] 蒋均齐.鱼雷声靶技术研究[D].长沙:国防科技大学,2006:8-9.
[2] 李金力,刘文怡,彭旭峰.基于FPGA的RS232异步串行口IP核设计[J].电子设计工程,2009,17(8):31-35.
[3] Altera Corporation.Cyclone II Device Handbook[S].2007(1):12-34.
[4] 张新喜,许军,杨雨迎,等.基于SoPC技术的战车综合显控终端设计[J].火力与指挥控制,2008,33(增刊):109-112.
[5] 洪胜峰.基于嵌入式技术的军用车辆车载显控终端的研制[D].青岛:中国海洋大学,2007:25-26.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

随着电子技术的飞速发展,串行RapidIO(SRIO)作为一种高效、灵活的通信协议,在嵌入式系统、数据中心和通信网络中得到了广泛应用。SRIO 2.0作为SRIO协议的新一代标准,对阻抗要求有着更为严格的规定。本文详细论...

关键字: 串行RapidIO 通信协议 通信网络

网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。常见的网络通信协议有TCP/IP协议、IPX/SPX协议、NetBEUI协议等。

关键字: 通信协议 TCP/IP

单片机通信协议是指单片机之间进行数据传输时所遵循的规则和标准。常见的单片机通信协议包括UART、SPI、I2C、CAN和Modbus等。这些协议各有特点,适用于不同的应用场景。

关键字: 单片机 通信协议

物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。

关键字: 物联网 通信协议 互联网

船载通信系统是现代船舶中不可或缺的重要组成部分,它为船舶提供了与外界通信和数据传输的渠道。船载通信系统行业设计方案涵盖了多个方面,包括系统架构、硬件设备、软件系统、通信协议等。本文将详细介绍船载通信系统的行业设计方案。

关键字: 船载通信 数据传输 通信协议

SPI,Serial Peripheral Interface,串行外围设备接口,是一种同步通信协议,通常用于芯片间进行数据交互。

关键字: SPI 通信协议 外围设备

RS-485是一种常用的数据通信协议,广泛应用于工业控制系统、楼宇自动化、安防系统等领域。在某些应用中,为了防止电气噪声干扰或电气冲击,需要对RS-485接口进行隔离。

关键字: RS485 通信协议 工业控制

目前,智能家居领域使用了多种通信协议,如主流的NB-IoT、ZigBee、Z-Wave、WiFi、蓝牙等。 我们在选择智能家居设备时,应该如何选择通讯协议呢?

关键字: 智能家居 通信协议 NB-IoT

物联网终端的种类非常多,包括物联网网关、通信模块以及大量的行业终端,其中尤以行业终端的种类最为丰富。

关键字: 物联网 通信协议 网关

计算机网络在人们的日常生活和工作中的作用越来越大,与此同时网络的安全性也受到了冲击。

关键字: 通信协议 通信 网络
关闭
关闭