基于NIOSⅡ的聲納主機與顯控臺之間的RS232通信協(xié)議
聲納設備一般由換能器(信號轉換、收發(fā)設備)、信號處理主機(DSP等)和顯示控制分機(簡稱顯控臺)三部分構成。顯控臺和主機之間的通信非常重要[1]。
顯控臺和主機之間的通信距離較遠,對通信的可靠性和安全性要求高,但是對通信速度要求不高。所以通信方式可以選擇串口通信協(xié)議RS232[2]。
顯控臺上諸多的旋鈕、開關以及指示燈、數(shù)碼管等設備需要豐富的外圍接口。這些接口之間具有復雜的邏輯關系。選用FPGA作為顯控臺主芯片可以滿足這些要求。以ALTERA公司的CycloneⅡ開發(fā)板為例,其主芯片EP2C8Q208C最多可提供182個用戶I/O口,可以滿足外圍接口要求[3]。在ALTERA公司提供的硬件開發(fā)環(huán)境Quartus和片上系統(tǒng)開發(fā)環(huán)境SoPC下,可以非常方便地進行控制模塊的開發(fā)。也可以構建NIOSⅡ處理器,以及配置NIOS系統(tǒng)自帶的硬核,如串口通信模塊UART、儲存模塊Serial Flash等[4]。
本文利用FPGA芯片設計了一套顯示控制分機系統(tǒng),并且以聲納訓練靶為應用背景編制了串口通信協(xié)議。
1 利用SoPC Builder構建顯控臺的片上系統(tǒng)
SoPC Builder是ALTERA公司提供的片上系統(tǒng)(SoC)開發(fā)工具,它可以配合QuartusII完成FPGA芯片的CPU以及外圍設備的配置工作。
1.1 片上系統(tǒng)的構建
在SoPC Builder的開發(fā)環(huán)境下,選擇ALTERA公司開發(fā)的32位RISC 處理器NIOSⅡ。標準型的處理器NIOSⅡ/s可以運行在100 MHz的系統(tǒng)時鐘下,運算速度超過50 DMIPS[2]。再構建配套的數(shù)據(jù)存儲器SDRAM、程序存儲器Serial Flash、系統(tǒng)地址管理器(System ID Peripheral)、編程調試接口(JTAG_UART)以及數(shù)碼管(SEG)、顯示和旋鈕(KNOB)、按鍵(KEYS)等PIO接口。
1.2 RS232 Serial Port的結構
對UART的控制主要通過編程寄存器來實現(xiàn)[2]。根據(jù)UART的寄存器結構,在SoPC對應的軟件開發(fā)環(huán)境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;
…其他狀態(tài)寄存器
} 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 顯控臺與主機之間的通信
聲納設備有兩種工作狀態(tài)——設置和工作。在這兩種狀態(tài)下,顯控臺與主機的通信方式有三種,分別如圖1~3所示。
評論