开篇:润墨网以专业的文秘视角,为您筛选了一篇基于SoPC的光电吊舱通信控制设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要: 实现了基于Nios Ⅱ软核处理器的通信控制的设计,以Nios Ⅱ软核作为中央处理器,利用FPGA的逻辑资源构成片上可编程系统(sopc)来实现光电设备的通信控制功能。设计实现了通过RS 422串口和通用IO口来实现对光电设备中各传感器的通信控制和信息传递功能。该设计已成功应用于某光电侦察设备,试验证明,该通信控制性能稳定,功能完善,在光电设备多传感器的控制领域有着广泛的应用前景。
关键词: 光电设备; 通信; Nios Ⅱ; RS 422; SoPC
中图分类号: TN911.7?34 文献标识码: A 文章编号: 1004?373X(2013)21?0021?02
机载光电侦察设备已经成为直升机、无人机获得精确全面的现场和目标信息的核心装备。目前机载光电设备主要装载红外和可见光传感器,实现全天时图像侦察,配合激光测距仪、伺服控制以及视频跟踪器实现对目标的定位和自动跟踪功能。而对整个系统而言,通信控制部分主要实现各传感器和控制组件之间的信息传递。
1 通信控制系统设计
本设计构建一个片上可编程系统(SoPC)来实现通信控制功能,采用SoPC实现通信系统与以往型号通信控制系统相比可以支持更多串口,能够满足多传感器和控制需求。通信系统通过串口完成与可见光、红外、激光、记录仪、控制系统等之间的通信。
1.1 SoPC硬件开发
采用SoPC Builder GUI来定义硬件系统结构,配置部件以及如何指定部件相互连接,并生成系统。在本设计中,为实现系统通信需求,除配置Nios ⅡCPU外,还需配置的外设有RS 232、SRAM和PIO等。硬件开发环境可以创建高度定制的SoPC。图1为开发生成的分组件Avalon总线连接图。
1.2 CPU设置、RS 232设置
本控制系统中Nios Ⅱ处理器为标准型内核(Nios Ⅱ/s),需要开发六个标准RS 232串口,来分别实现对操纵杆、红外、可见光、激光和记录仪等传感器组件的通信控制。系统采用中断响应的方式来同时实现六个串口,表1为六个串口的中断优先级。
1.3 JTAG_UART设置
Nios Ⅱ处理器的JTAG调试模块也是可配置的,根据系统需求,为Nios Ⅱ处理器配置适当的软件调试功能。JTAG调试模块对处理器的控制是非屏蔽的,而且在调试程序时也不需要软件调试(Software Stub)来链接测试中的软件程序。JTAG调试模块收集的跟踪数据存放在调试探针或片内的存储器中。该模块主要提供以下功能:
将程序下载至存储器;开始和停止执行程序;设置断点;硬件触发;捕获跟踪数据。
该模块可以在软件调试时通过,形成产品时去掉。
系统CPU和外设单元按上述步骤配置完成后,为每个外设分配一个惟一的基地址。最后,为 CPU设置复位和异常地址,本设计中,把复位和异常地址均设置为on_chip_memory,创建和编译生成系统。编译生成的顶层文件图如图2所示。
2 NiosⅡ IDE软件设计
系统生成后,可直接使用NiosⅡIDE设计C应用代码,借助Altera提供的外设驱动程序和硬件抽象层,能够快速、方便实现各项功能。
2.1 串口软件编程
在本系统设计中,采用了软件中断的方式来响应串口通信。设计六个外部中断来实现对各分组件的控制。每一个中断都有一个相应的中断服务函数(ISR)与之对应。中断发生时,软件中断会根据检测到有效中断级别,调用相应的中断服务函数。
ISR函数自行定义,不是HAL系统提供,函数与普通函数定义一样,只是对ISR的函数原型有特定要求。ISR函数声明如下:
void ISR_handler(void* context,alt_u32 id);
context:传递给ISR的形参;id:中断优先级别。
本设计中对六个硬串口中断的ISR定义如下:
上位机ISR函数:
void UartSW_interrupt(void *context,alt_u32 id);
红外ISR函数:
void UartIR_interrupt(void *context,alt_u32 id);
可见光ISR函数:
void UartVL_interrupt(void *context,alt_u32 id);
激光ISR函数:
void UartLA_interrupt(void *context,alt_u32 id);
记录仪ISR函数:
void UartJL_interrupt(void *context,alt_u32 id);
伺服(备份)ISR函数:
void UartSF_interrupt(void *context,alt_u32 id)。
在各分组件ISR函数中,主要实现相应各串口软件中断,接受各分组件的串口数据,按通信协议完成对命令信息的解释。其中在上位机中断服务函数中,除完成对上位机发送命令的解释外还同时完成对各串口数据的发送。
任何满足ISR函数原型的函数都可以用做ISR,但不是任何满足ISR函数原型的函数都是ISR,只用通过中断注册的函数才是ISR。
通过alt_irq_register ()函数实现中断注册,其函数原型如下所示:
int alt_irq_register(alt_u32 id,void* context,void(*handler)( void *context,alt_u32 id ));
id:中断优先级,表明所注册的ISR是为哪个中断优先级的中断服务的,中断优先级在SoPC Builder中分配;
context:为所注册的ISR传递参数,可以是NULL;
handler: 中断服务函数ISR的指针。
本设计中对六个串口中断的注册函数分别为:
alt_irq_register(UART_SW_IRQ,NULL,UartSW_interrupt);
alt_irq_register(UART_OP_IRQ,NULL,UartVL_interrupt);
alt_irq_register(UART_IR_IRQ,NULL,UartIR_ interrupt);
alt_irq_register(UART_LA_IRQ,NULL,UartLA_interrupt);
alt_irq_register(UART_LA_IRQ,NULL, UartSF_interrupt);
2.2 PIO接口的软件编程
对于升降机构的IO控制相对比较简单,采用API函数IOWR_ALTERA_AVALON_PIO_DATA()来实现高低电平的输出,程序如下:
IOWR_ALTERA_AVALON_PIO_DATA(LOAD_BASE,0X0);
IOWR_ALTERA_AVALON_PIO_DATA(LOAD _BASE, 0X1)
LOAD_BASE为升降机构IO口地址。
3 结 论
本通信控制设计已在某型号光电侦察设备上成功应用,其对各分组件的控制功能、信息传递功能均达到设备技术需求。通过该通信控制器的设计,有效地提高了光电侦察设备中的通信控制能力,解决了以往型号中串口RS 422数量对分组件控制的限制。使得通信控制系统得到了大幅度的提高。
参考文献
[1] 王刚.基于FPGA的SoPC嵌入式系统设计与典型实例[M].北京:电子工业出版社,2009.
[2] 蔡伟.Nios Ⅱ软件架构解析[M].西安:西安电子科技大学出版社,2007.
[3] 舒芳.基于SoPC的光纤通道控制器仿真验证研究[D].武汉:华中科技大学,2007.
[4] 李晋.基于SoPC的远程图像监控系统的设计与实现[D].成都:电子科技大学,2008.
[5] 于海,姚启桂,虞跃,等.基于SoPC的状态监测装置的嵌入式软硬件协同设计[J].现代电子技术,2012,35(22):1?3.
[6] 张君,吴巨红.基于SoPC的宽带雷达侦察信号分选[J].现代电子技术,2011,34(22):20?23.