嵌入式软件架构设计----中控机NIOS软件系统架构设计说明书

来源:互联网 发布:juniper network mac 编辑:程序博客网 时间:2024/05/17 07:26


下面文档系本人开发的流媒体数字会议系统中控机的软件架构,有写的不好的地方,欢迎拍砖

1 .引言

1.1编写目的和使用范围

1.1.1 编写目的

本文档用来确定Nios的软件架构,以便帮助软件工程师更好的完成中控机的业务逻辑功能。

1.1.2 使用范围

本文档适用于飞利信的流媒体总线有线数字会议系统,中控机和终端开发工程师,以及相关产品经理和项目经理。

 

1.2术语表

Nios  Nios嵌入式处理器ALTERA公司推出的采用哈佛结构、具有32位指令集的第二代片上可编程的软核处理器,其最大优势和特点是模块化的硬件结构,以及由此带来的灵活性和可裁减性。

 

SOPC : System-on-a-Programmable-Chip,即可编程片上系统用可编程逻辑技术把整个系统放到一块硅片上,称作SOPC。可编程片上系统(SOPC)是一种特殊的嵌入式系统:首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。

 

FPGA : FPGAFieldProgrammable Gate Array),即现场可编程门阵列,它是在PALGALCPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

 

TDM TDM就是时分复用模式。时分复用是指一种通过不同信道或时隙中的交叉位脉冲,同时在同一个通信媒体上传输多个数字化数据、语音和视频信号等的技术。

 

 

 

 

 

 

 

2 .中控机

2.1中控机功能需求

1) 实现脱机或联机流程下,会议系统的报到、表决、发言、摄像头追踪等功能;

2) 联机流程下,实现对FPGA、终端、前面板等模块的在线升级功能;

3) 连接终端的六路通道实现独立并行工作,互不干扰;

4) 通过网口或者串口与上位机进行通信;

5) 实现十六路语音数据的混音输出(不需要Nios 软件进行干预)。

 

2.2整体方案简介

中控机的整体设计方案中,依据硬件和功能划分如下

1. FPGA芯片为ALTERAS3C55,芯片的功能可以分为三个部分:

a. FPGA :实现Nios 与外界(PC机的网口,串口,终端,前面板)通信的基本功能,不做业务逻辑控制

b. SOPC : 搭建一个可裁剪定制的CPU+RAM+存储接口+外围电路 硬件平台;

c. Nios软件 :在SOPC搭建的嵌入式处理器上运行的软件,负责各种业务逻辑的实现。

2. DSP芯片为TI5509,用来实现混音算法;

3. 音频AD/DA芯片,用于语音的输入和输出。

2.3 对外接口定义

2.3.1与前面板接口

    FPGA与前面板通过串口通信,NIOSFPGA通过轮询管脚电平方式读取数据。

2.3.2PC接口

    FPGA与上位机有两个接口,一个为串口通信,一个为网口通信。NIOSFPGA之间通过轮询管脚电平方式读取数据。

   2.3.3与终端接口

    FPGA与终端通过网口通信。下行时,NIOSFPGA通过2ms定时中断(FPGA提供)发送数据;上行时,通过轮询管脚电平方式读取数据。

 

2.4 FPGA系统功能框图


上图蓝色部分为FPGA编程实现的电路部分,NIOS II部分为SOPC创建的CPU内核以及其上运行的软件。

1.上位机 中控机的通信接口为 UART和 网口,串口和网口的通信功能由FPGA来实现,Nios 来实现对业务逻辑的控制;

2.终端 中控机的通信接口为 PRSM Bus,PRSM的通信功能由FPGA来完成,Nios 来实现对业务逻辑的控制;

3.前面板 中控机主板的通信接口为串口,通信功能由FPGA来完成,Nios 来实现对业务逻辑的控制;

4.中控机音频增益部分控制的通信接口为IO控制,通信功能和逻辑控制由Nios 来实现。

2.5软件系统框图


PRSM Bus 会议系统按照MVC架构划分如上图所示,最核心的中控机承担MODEL的角色

 

 

 

 

 

 

 

 

 

3 .Nios 软件系统架构

3.1软件预期

除中控机本身业务需求(报到,表决,发言等)外,还需注意如下几点:

 

首先PRSM Bus 会议系统是一个TDM在同一条线路中实现通信,两毫秒的时钟为一个节拍,所以Nios 软件与终端间的通信就要按两毫秒的节拍来;

 

其次,中控机有六个独立的通道,每个通道连接的最大设备为254台,六个通道相互独立,可以并行工作;

 

第三,在一个物理通道内,同一个两毫秒节拍内中控机只能下发一条通信数据,所以中控机下发任务是抢占式的,其中上位机下行的消息优先级最高,其次是前面板的消息,第三位的是终端的应答消息,最后是中控机的正常轮询任务;

 

第四,01号地址是特殊地址,可以用于连接唯一的主席机,脱机状态主席机可以进行简单的会议控制;

 

第五,上位机接口(网口,串口)以及前面板的串口都接收数据的时候都采用流式解析方式,即每收到一个字节都进入解析程序进行判断数据合法性;

3.2总体架构

Nios 软件整体上采用面向对象的思想,自顶向下各个类依次如下图:

 

Nios 软件分为三层,自底向上依次为:

a. 驱动层: 跟硬件BSP 直接相关,基于BSP层函数实现硬件驱动层接口;

b. 硬件抽象层:用于隔离业务层和驱动层,该层代码的功能是对硬件的操作,但是隐藏了硬件相关的细节;

c. 业务层: 主要用于实现 PRSM Bus 协议。

3.3数据结构

按照面向对象的思想进行代码编写,所以数据结构类似于上面的总体架构图,下面列举几个主要的数据结构:

1) 主结构体 FLX_CCU 

 

2) FLX_CCU_CAMERA

 

3) FLX_CCU_LCD

 

4) FLX_CCU_PC

 

5) FLX_CCU_TERMINAL

 

6) FLX_CCU_MANAGE

 

7) FLX_CCU_MANAGE_REGISTE

 

8) FLX_CCU_MANAGE_SPEAK

 

 

 

9) FLX_CCU_MANAGE_TERMINAL

 

10) FLX_CCU_MANAGE_VOTE 

3.4模块设计

3.4.1模块划分依据面向对象的思想,对象FLX_CCU ,包含五个对象

a. FLX_CCU_CAMERA,负责与集控主机进行通信,完成摄像联动;

b. FLX_CCU_LCD,负责与前面板进行通信,完成显示信息和设置参数;

c. FLX_CCU_PC,负责与上位机进行通信,完成会议相关的控制功能;

d. FLX_CCU_TERMINAL,负责与终端设备进行通信;

e. FLX_CCU_MANAGE,负责对系统(除上位机)的整体状态,功能进行管理;

这些子模块只完成基本的功能,例如 FLX_CCU_LCD ,完成基本收发数据功能,并且完成收发数据的基本处理(接收数据的包格式合法性判别,发送的数据按包格式打包),不处理业务,也就是不判断收发数据的内容。

 

注意,上图中的函数指针为对象的方法,需要向对待接口一样,将这些方法功能一一实现,否则会出现空指针的非法访问。

结构如下图:


3.4.2模块间通信

各个模块完成自己模块的功能,模块间通信(实际就是业务的处理)在子模块的上一层来完成,这样就保证了模块内部内聚性和模块间的低耦合性。

如图3.4.1的结构图,所有模块间的通信都是发生在业务层的最顶层对象内FLX_CCU,所以业务逻辑可以作为FLX_CCU 对象的方法。

 

如上图所示,共需要四个数据处理的方法:

1) 解析并响应上位机串口接收的数据;

2) 解析并响应上位机网口接收的数据;

3) 解析并响应前面板串口接收的数据;

4) 解析并响应终端设备PRSM Bus口接收的数据.

 

 

原创粉丝点击