基于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所示。
在声纳设备工作之前,操作员在显控台要完成开机与参数设置等动作。此时,开关等外围设备会触发处理器的中断处理程序,完成参数设置和显示。这些参数不仅要在显控台显示,还得通过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噪声级别。
RS232 通信 协议 之间 主机 NIOS 声纳 基于 相关文章:
- RS232/RS422/RS485接口通讯特点及比较(03-06)
- 单片机RS485通信接口、控制线、原理图及程序实例(12-26)
- 基于STM32的无线通讯终端系统设计(07-02)
- 基于嵌入式系统的USB to UART通信设计方案(06-27)
- RS232转USB接口的通讯模块设计(01-10)
- CAN转RS232接口卡的设计方案(12-30)