当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于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.

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

随着环保意识的增强和对可持续能源的追求,电动汽车(EV)作为一种清洁能源交通工具,正逐渐成为汽车行业发展的主流趋势。电动汽车的核心部件之一是充电机,它负责将外部电能转化为电池可存储的能量。而 CAN(Controller...

关键字: 电动汽车 通信协议 充电机

在工业自动化、汽车电子等领域,CAN(Controller Area Network)总线凭借其高可靠性、多主通信、高速传输以及连接节点众多等优势,成为了应用极为广泛的通信协议。然而,实际应用环境往往十分复杂,存在诸如电...

关键字: 总线 通信协议 隔离技术

随着物联网(IoT)技术的飞速发展,万物互联的时代已经到来。然而,地面网络的覆盖范围和稳定性在某些极端环境下仍存在局限性。为了克服这些挑战,卫星物联网(NTN,Non-Terrestrial Network)技术应运而生...

关键字: 卫星物联网 NTN 通信协议

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)通信协议是嵌入式系统中广泛应用的通信协议之一。它以其简单、可靠和灵活的特性,成为连接微控制器、传感器、...

关键字: 嵌入式系统 UART 通信协议

在数字通信领域,二进制通信协议扮演着至关重要的角色。它们不仅决定了数据如何在不同系统或设备间高效、准确地传输,还直接影响到通信的实时性、可靠性和资源利用率。本文将深入探讨二进制通信协议的序列化与解析过程,并通过实例代码展...

关键字: 二进制 通信协议 序列化

控制器局域网 (CAN) 总线由博世于 20 世纪 80 年代开发,是工业和汽车应用中常用的通信协议。它的开发是为了改善电子控制单元 (ECU) 之间的数据交换,从而提高车辆的系统效率。

关键字: CAN总线 通信协议

在现代汽车电子、工业自动化等领域,CAN(Controller Area Network)总线作为一种高效、可靠的通信协议,扮演着至关重要的角色。它以多主、去中心化的方式连接各个设备,实现了数据的高速、实时传输。然而,当...

关键字: CAN总线 通信协议

在通信技术日益发展的今天,AT命令作为一种古老但依旧强大的通信协议,依然广泛应用于调制解调器、移动通信设备、蓝牙模块、GPS模块等多种设备中。AT命令(Attention Command)源于早期调制解调器制造商的引入,...

关键字: AT命令 通信技术 通信协议

随着汽车电子技术的快速发展,汽车内部通信协议的选择变得尤为重要。在众多的通信协议中,容错CAN(Controller Area Network)和高速CAN(High-Speed CAN)作为两种常见的协议,被广泛应用于...

关键字: 汽车电子 容错CAN 通信协议

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

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