对于项目1而言,



1)传统网络与SDN的区别吧:



最核心的也就是上面的一张图!

传统网络中,主要有三层:数据层,控制层、管理层。尽管交换机、路由器设备对这些功能逻辑进行了较好地区分,但是路由器的设计和实现都变得异常复杂。

数据层:依据转发信息表进行报文解析、查表、过滤匹配和端口映射等报文转发功能;

控制层:各种报文转发控制功能,eg:支持IP路由协议更新路由表,根据用户配置和过滤功能静态或动态生成ACL等转发信息表

管理面:支持用户对网络设备的配置管理,eg:实现命令行接口(command and line interface, CLI)和简单网络管理协议(simple
network management function , SNMP)功能。

注:RIP协议的作用:

负责从网络系统的其它路由器接收路由信息,从而对本地IP层路由表作动态的维护,保证IP层发送报文时选择正确的路由。同时负责广播本路由器的路由信息,通知相邻路由器
作相应的修改。路由表由“局域网上能达到的IP地址”和“与该网络的距离”两部分组成。RIP用“路程段数”(即“跳数”)作为网络距离的尺度,跳数最高为15跳。

 

软件定义网络中,核心的思想就是:把交换/路由设备的控制面功能从硬件中剥离出来,由可以在PC(personal
computer,个人计算机)或服务器上自由编程的软件实现,再简化交换硬件设备,让它们成为可编程控制的“傻瓜型”交换设备。

转发层:Open Flow交换机由流表、安全通道和Open Flow协议三部分组成,Open Flow交换机接收到数据报文后,首先
查找流表,找到转发报文的匹配,并执行相关动作。若找不到匹配表项,则把报文转发给控制层,由控制器决定转发行为

控制层:更新Open Flow交换机中的流表,实现对整个网络流量的集中管控。为上层应用提供全局的网络抽象视图,并由软件实现,
摆脱硬件网络设备对网络控制功能的捆绑

应用层:对控制层提供的网络抽象进行编程,操控各种流量模型。

2)SDN中控制器架构示意图



 

水平架构:控制节点位于网络中的同一层,所处理的信息和接收的任务内容基本相同,相互之间没有优先级高低之分

垂直架构:垂直架构则在水平架构之上又添加了更高级的控制层。

3)控制器与交换机的连接模式



 

带外模式:控制器与其负责管理的所有交换机之间都有专用的控制流通道。

优点:控制流的传输路径清晰且速度快

缺点:单个控制器管理的域范围较广,网络设备的开销尤为巨大

 

带内模式:控制器仅与其域内的部分交换机之间建立控制流通道,其它的交换机则需要通过数据通道才能实现对控制器的请求和访问

优点:减轻了控制器部署的成本

缺点:当链路资源趋于紧张时,控制流与数据流甚至会产生竞争

4)单控制器控制单交换机下处理数据包的性能研究



如图4所示(从右往左理解)。将Open Flow架构抽象为一种面向反馈的排队系统模型,假设系统是马尔科夫型的,则模型可进一步简化为M/M/1的转发队列模型和
M/M/-S的反馈队列模型。交换机端的流到达过程,是数据分组以从线速卡中以速率为的到达过程和控制器反馈回来以安装流表项的分组到达过程二者之和。

注:M/M/1:First 'M' :描述的是一种到达过程的概率分布,M表示着到达过程满足泊松分布

Second 'M':描述的是一种服务/离开过程的概率分布,这里的M表示的是离开过程服从指数分布

1:表示server的数量在M/M/1模型中表示只有一个服务员

 

控制器处理的时延:包括由控制器处理后经过交换机转发的时延。

交换机端,交换机性能参数(即转发队列参数)如下:



控制器端,假设控制器的缓冲区队列大小为512,控制器系统的队列大小受限为,为了分析该系统在高负载情况下的丢包情况,

控制器性能参数如下:







4)多控制器部署问题CPP问题

定义:对于大规模广域网来说,用单一控制器通常无法及时有效地处理来自所控交换机的所有请求,
对于一个给定的网络拓扑,要多少控制器并且这些控制器应该部署在哪些位置,才能实现控制器的合理部署,使得整个网络的目标性能达到最优。

多控制器部署的目标就是在特定的网络拓扑,得到需部署的控制器数目k以及将k台控制器最优地映射到M台交换机上。

 

 

常规最少控制数目的估算公式如下:

假设交换机i有li条新流到达,每台控制器的平均可处理负载是C



 

而在网络动态变化的情况下,随着网络负载的增加,可能会新增一个或多个控制器以处理新的流量负载,如果网络负载下降,当前活跃的某控制器可能关闭。

抽象化模型的建立:

动态添加删除控制器的过程可以用下式的最优化问题来说明:

交换机与控制器之间的映射关系:满足时延和使用率的约束



f:是控制器数目k及每台控制器部署代价c二者的非线性函数;

Ui是利用率系数(控制器端的处理器或者内存占用比例);

 与第i台控制器关联的在某时刻的服务时延(处理时延和路径时延之和(利用欧式距离计算));

I是当前网络中活跃控制器的集合。

 

常见的解决多个CPP放置问题的算法:

解决方案1:非零和博弈

基于博弈思想的控制器部署方案本质上也是一类优化问题,给出的是一种分布式的个体优化去逼近全局最优,是一种次优的选择。
因为网络流是不断变化的,难找到一种全局最优的部署方案(面试的时候别说出来)。

基于非零和博弈,每个活跃旳控制器认为是一个游戏参与者,根据相应的规则参与游戏,计算自身的收益。关于控制器利用率和延迟的收益函数定义如下:



Ux是控制器x的利用率,是与控制器x相关联的延迟, 代表和控制器利用率x有关的非线性函数或者一个常量, 用于计算与控制器x收益的非线性函数或者常量。

随着网络负载的改变,每个活跃控制器的使用率和时延也发生变化,因此不同时刻的控制器收益函数也在动态变化
。当控制器收益很高时,说明此时控制器的负载很轻,控制器可关闭以节约控制平面资源;当控制器收益很低时,说明此时控制器的负载很重,要向邻居控制器卸载部分负载,实现网络的负载均衡。

 

解决方案2:K-median

K-median算法通过列举所有可能的部署方案C,从中找出最佳的部署Cm,Cm对应的部署可以最小化节点和控制器之间的传输时延。

K-median首先确认网络中的最短链路d(i,j);并选择节点k作为控制器的候选节点。假设部署所要求的最大路径时延不得超过Dreq。接下来将所有满足 的节
点v全部加入候选节点k的管理域内,并以些节点建立一个集群。在后续步骤中,将会检查集群内所有的其他节点中是否存在平均时延低于A节点的情况。
如果存在,用对应的节点替换k并对集群进行更新,否则k节点就被正式选作控制器所在节点
。接下里,算法还会继续寻找与该集群相近的节点,并继续迭代执行前述步骤,直到所有的节点都纳入任意集群中。

 

解决方案3:K-center(min max f())

K-center算法的目标是使节点-控制器的最大距离保持在一个最小值。

算法开始阶段,会随机挑选一个节点作为控制器部署位置,并以此为核心建立一个集群,并将所有满足 的节点都包含进去。在集群内部进行捜索,直到找出延迟最小的节点
为止,将其作为控制器部署节点并更新集群信息。接下来挑选与该集群距离最远的节点作为下一个候选位置,执行与上述相似的步骤。循环往复,一直到所有的节点都被纳入集群中为止。

 

方案2和方案3的缺点:

不管是K-center还是K-median,都是从减小节点与控制器之间距离的角度出发,通过有限次数的迭代来获取最佳部署位置
。这些算法既没有考虑控制器的负载,也没有考虑多控制器之间的通信延迟,虽然在一些改进指施里加入了节点权重等因子,但仍然难以应对网络复杂性的影响。

 

项目中我们采取的研究方案:

任务1:对于一个特定的网络,根据需求找到最优的控制器节点数,设计静态部署算法划分网络,满足网络所需优化目标

任务1.1:选择最优控制器节点数,满足规定约束条件

图的最小覆盖集问题,再来处理它,图的最小覆盖是通过图中最少的顶点控制全部相邻边,过最少的控制器节点控制全部交换机。对关联矩阵进行改进,把
能控制最多的边的顶点作为最小覆盖集合中的元素,在确定满足约束条件下,从不能被控制的边的顶点中重复上述过程,直到所有边均被控制。



任务1.2:并行建立改进最小生成树子树,结合纳什均衡理论确定共同覆盖节点

节点的度可以反映节点的重要程度以及经过该节点的流的数量;

控制器节点与交换机节点之间的距离大小可以反映其进行信息交换的难度;

在满足最大允许传输距离及单个控制器所能处理最大负载
之内,我们以控制器节点为根节点,采用Prim算法、Kruskal算法或者Sollin算法选择若干交换机作为子节点加入树中,并行生成棵最小生成树子树,并对子树间重叠节点进行标记,统计重叠叶子节点个数为


对于重叠节点,通过纳什均衡理论考虑节点流量大小及控制器传输时延,也就是在原最小生成树子树中删除节点,在目的最小生成树子树中插入节点。

任务2:采用动态预测模型预测网络流量变化,动态调整控制器资源池中控制器个数及交换机

任务2.1:基于ARIMA模型的网络流量数据预测

我们建立了一种融合时间序列和回归分析的优化时间序列的差分自回归移动平均模型(Autoregressive Integrated Moving Average
Model, ARIMA),



ARIMA网络流量预测模型依据采集的已知网络流量状态,预测将来网络中流量时间序列变化情况

首先,首先输入需要预测处理的时间序列, 然后对时间序列进行周期性判断,如果具有周期性, 则对时间序列进行一次以周期为时间长度的差分处理, 如果不具有周期性,
则直接进入到平稳性检测阶段,如果序列不平稳, 则差分,然后再检测,直至平稳为止,到此, 数据的预处理阶段完成。

接下来启动ARIMA 算法, 利用AIC准则来判断ARMA 模型的阶, 通过两重循环可以判断出最适合的模型的阶p 和q,然后利用得到的模型进行预测,
最后再把预测出来的结果进行逆差分还原处理,从而得到最终需要预测的结果。

确定能够拟合网络流量时间序列的拟合模型。对于不同参数模拟计算的结果也可以采用样本采集数据对其相似系数和拟合度分析,如果相似系数和拟合度最大
,则该模型就是最优模型。

下面是预测模型总结:

https://blog.csdn.net/yijiantao/article/details/51142953
<https://blog.csdn.net/yijiantao/article/details/51142953>

https://blog.csdn.net/qq_27848507/article/details/52160863
<https://blog.csdn.net/qq_27848507/article/details/52160863>

回归分析法:根据历史数据的变化规律,寻找自变量与因变量之间的回归方程式,确定模型参数,据此预测。回归问题分为一元和多元回归、线性和非线性回归。

时间序列预测法:根据客观事物发展的这种连续规律性,运用过去的历史数据,通过统计分析,进一步推测市场未来的发展趋势

马尔科夫预测法:适用于随机现象的数学模型,系统未来时刻的情况只与现在有关,而与过去的历史无直接关系

BP神经网络法:用大量样本对神经元网络进行训练,调整其连接权值和闭值,然后可以利用已确定的模型进行预测)

 

任务3:建立全新的负载均衡机制,最小化调整控制器的管理域或增加控制器数量以适应网络规模扩张。

任务3.1:新增交换机节点,造成网络局部过载,最小化调整域间交换机。

从而将该问题转化为背包问题,即有可以调整的交换机集合,每个交换机集合对应的负载为,每个交换机都有一定的调整时间,调整该集合需要花费的时间代价为
,每个集合只有两种状态,在调整过程中,应让调整时间最小化,即。

任务3.2:新增交换机节点,造成全网过载,最小化部署新交换机节点。

为缓解这些控制器的负载,需要在内部恰当的位置,多放置一个或多个控制器,进而可以将该问题转换为应急系统选址问题。

 

 

对项目2而言



整体概述:本课题设计的数字微镜器件 DMD(Digital Micromirror Device)控制系统是单光子时间分辨成像光谱仪
的关键部件,构成仪器所需压缩感知模块的关键要素测量矩阵。自行设计硬件平台来控制 DMD,实现二值图像在 DMD 上高速显示,提高 DMD 显示刷新率,
显示频率最高能达到 5KHz,以提升压缩感知的测量速度。

 

单光子时间分辨成像光谱仪是干嘛的:

当入射光(极弱的光图象)通过光路处理照射在 DMD上,经 DMD 随机投影,将光线反射到光栅分光(很多光路),利用单光子探测器进行探测,得到随机矩阵,并利用
压缩感知算法恢复出完整的光谱图像



而我们项目研究的是 DMD 控制模块,功能只有一个,那就是:

 

DMD控制系统的整体框架:

作用:负责接收上位机成像控制软件的指令配置,将系统设置为内同步方式或外同步方式工作模式,在相应工作模式下将随机测量矩阵的数据传送至 DMD 芯片,实现
DMD 芯片的翻转控制,完成光路调制,并将系统的翻转状态等状态参数反馈至上位机成像控制软件



USB 通信模块:接收上位机下载的矩阵数据,将数据写入到存储模块

RS232 通信模块: 接收上位机下载的控制指令,写入 DMD 显示控制模块,将系统的状态参数发送至上位机

DDR3 缓存模块:写矩阵数据有效的情况下按照 DDR3 接口协议将写入 USB模块内的测量矩阵数据写入至 DDR3,读有效的状态下按照 DDR3
接口协议从DDR3 高速读取矩阵数据到 DMD 模块。

D4100 模块(DLP4100):根据控制指令配置系统工作模式、进行显示等控制。DLPA 控制器由 Xilinx
Virtex5FPGA(型号:XC5VLX30FF676)和配置芯片 EPROM(型号 XCF16P)组成;DLPA驱动芯片是 DAD2000,给 DMD
提供电压和复位驱动,完成微镜复位和时序信息.

 

DMD控制系统硬件设计



Virtex-6 芯片的用户管脚可以分为普通 IO 和高速 GTX/GTP IO ,普通 IO 和 GTX/GTP IO 都是以 Bank
为单位分布在芯片内,

普通 IO 每个 Bank 包含 40 个管脚,FPGA 中的管脚都是以差分对的形式存在的。

1.给FPGA V6进行配置电路

Xilinx FPGA 常用配置模式有三类:主模式、从模式、以及 JTAG 模式。

主模式: 

FPGA 作为主设备,能够主动加载配置数据。配置所需的时钟信号CCLK 由 FPGA 内部晶振电路产生,且 FPGA 控制整个配置过程;

根据传输的位宽分为几类:主串行模式(Master Serial)、主 SPI 模式(Master SPI)、主 BPI 模式(Master
BPI)以及主并模式(Master SlectMAP);

从模式:

下载时钟 CCLK 由外部时钟源或外部控制信号产生,

从模式分为:从串行模式(Slave Serial)、JTAG 模式和从并行模式(Slave SelectMAP)。

在 JTAG 模式:

PC 和 FPGA 通信的时钟为 JTAG 接口的 TCLK,数据直接从 TDI 进入 FPGA,完成相应功能的配置

 

本系统采用的是 SPI  flash的配置方式

配置芯片选用的是 Atmel 公司的 AT45DB642D,配置芯片的容量为 64M,工作电压为 2.7V-3.6V,SPI 总线通过四根线来完成和
FPGA 之间的通信



2.DDR3接口电路

DDR3 SDRAM:DDR 则是一个时钟周期内传输两次数据,在时钟的上升沿和下降沿各传输一次数据 

DDR3 工作电压为 1.5V,本系统中由于FPGA 本身速度限制,最高速率可达 400M。

DDR3 带宽计算:带宽=核心频率*总线位数*倍增系数

核心频率即为内存的工作频率,DDR3 是一次从存储单元预取 8Bit
的数据(核心频率的读取数据),在上升沿和下降沿能同时传输,因此有效的数据传输频率是核心频率的 8 倍。

本课题中,DDR3 内存条接口工作的频率是 400M,即时钟频率为 400M,实际的运行带宽则是 400M*2*64=51200Mbit=50Gbit

 

3.USB3.0接口设计

USB3.0 模块主要用来实现上位机用户界面和 FPGA 之间的通信;

本课题选用的USB3.0外设控制器是Cypress公司的CYUSB3014EZ-USB FX3,该控制器既可用做主模式,也可做从模式,最多可以提供 256
个可编程的状态。本课题中控制器用的是从模式,即 Slave 模式,Slave FIFO 接口优点是传输数据速度快,数据传输率可以达 320MB/s。

1)CYUSB3014 时钟设计

CYUSB3014 FX3芯片可以在 XTALIN 和 XTALOUT 引脚之间连接晶振,也可以在CLKIN 引脚上连接外部时钟。器件可以使用
19.2MHz 的晶振或频率为 26MHz、38.4MHz 或 52MHz 的时钟作为时钟源。

CYUSB3014FX3 包含一个看门狗定时器,看门狗定时器使用一个 32.768KHz 的有源晶振提供,用来防止内部时序紊乱。

2)CYUSB3014 芯片电压说明

CYUSB3014 内部集成了 ARM 处理器和多种外设,因此用到的电源系统相对比较复杂,各个电压域所用到的电压档也相对较多,典型值为
1.2V、1.8V、2.5V、3.3V。

在电源电路设计时,要注意的是去耦电容的摆放。必须将去耦电容放在离电源引脚最近的位置

电源去耦的重要作用是能够确保在供电过程中,不让系统噪声传输给器件。去耦电容应该是稳定的、非传导性的陶瓷电容。

 

4. 电源模块设计

FPGA 的电压可以分为三类:核心电压(V CCINT )、I/O 电压、辅助电压(V CCAUX )。

核心电压是 FPGA 内部各种逻辑电路正常工作运行所需的基本电压,该电压用于保证 FPGA 芯片的正常工作

I/O 电压是指 FPGA 芯片 I/O 引脚工作所需的电压,不同的 Bank IO 可以分配不同的电平标准,但同一个 Bank
只能接相同的电平。本系统选用的Virtex-6 系列的 IO 电压支持的范围为 1.14V~2.65V,目前常用的max3232、SPI Flash
电压标准一般为 3.3V。

Vccaux 辅助电压:内部也包含一些模拟组件,如 Xilinx 的 MMCM
混合时钟管理模块,这些模拟类的组件对电源的电源抑制比(PSRR)和电源纹波非常敏感,所以通常会用一个独立的供电电源

 

5.开关式 DC-DC 电源

目前常见的电源解决方案主要分两种:低压差(LDO)线性稳压器和开关式DC-DC 稳压器

LDO 优点在于电路板对输出噪声要求较高,对输入电压变化和负载瞬变做出快速响应,缺点是效率低,输入输出的电压差不能太大,负载不能太大

开关式 DC-DC 稳压器:注重的是效率,并且输出电流较高,缺点是:开关电路会增加输出噪声

 

DMD所用到的所有电源:



 

 

DMD 控制系统软件设计



 

整个DMD控制系统的工作流程如下:FPGA作为主设备一直判断CYUSB3014的片内 FIFO 是否有数据,如果有数据,则判断是命令还是图像数据。如果是命令
,则写入命令寄存器,如果是图像数据,则写入到 DDR3 内存中。这时候 FPGA 等待触发信号(内同步信号或者外同步信号或者命令触发信号),当收到一帧的触发信号
,就从 DDR3 中读出一帧数据写入到 DDC4100 中,再控制 DMD 翻转,即可显示图像

DMD控制系统的所有外部时钟有哪些?

系统时钟:100MHz

DDR3接口时钟模块:200MHz

USB 通信模块:24MHz

控制上电顺序: 350KHz 

信号的竞争冒险怎么避免?

系统复位信号和局部的软复位信号通过异步复位同步释放处理

 

1.USB 通信模块接口设计

USB 通信模块的功能是在写矩阵数据有效的情况下,接收上位机下载的矩阵数据,将位宽为 32bit 的数据写入到 USB FIFO 中,转换成位宽 256bit
(根据存储设备的位宽来设定,DDR3 中是 256bit)的数据,并存储的大容量存储设备中。



上面的图,应该从右往左看,下面两句把最关键的点概括了,就这么简单

串流输入数据传输:通过同步从设备 FIFO 将数据不断地写入 FX3 中。

串流输出数据传输:通过同步从设备 FIFO 从 FX3 中不断地读取数据

 

2.RS232串口模块

RS232 通信协议接收上位机的指令内容,并将指令内容写入寄存器控制模块进行指令解析,解析后的指令写入 DMD 显示控制模块。

3.D4100



通过对外接 FPGA 实现对 DDC4100 的控制。输出数据驱动 DMD 是由 DDC4100 来实现的.

系统初始化完成,用户可以向 DDC4100 中写入数据或控制信息。对输入总线而言,写信号有效后,DDC4100 开始采样 LVDS 数据输入,同时
根据地址控制信息把采样到的数据发送到 DMD 中。

DDC4100 模块的状态机工作过程如下表所示:
1)判断到触发信号(外触发、内触发或者命令触发);
2)从 FIFO 读数据;
3)根据 DDC4100 的协议向 DDC4100 写图像数据;
4)写完一帧,写控制线,告知 DDC4100 驱动 DMD 显示。

注意:1G内存最大可存储3880帧

4.DDR3缓存模块

数据缓存模块的主要功能是在写矩阵数据有效的情况下按照 DDR3 接口协议将测量矩阵数据写入至 DDR3,读有效的状态下按照 DDR3 接口协议从 DDR3
高速读取矩阵数据传输给 DMD 模块。

5. DDR3 模块设计

写入FIFO存储模块,读取FIFO存储模块,DDR3 接口控制模块

写入 FIFO 存储模块:在 DDR3 写有效的情况下,将矩阵数据按照 DDR3 协议写入到 DDR3 模块

读取 FIFO 存储模块:在 DDR3 读有效的情况下,并将读取到的矩阵数据写入 DMD 显示控制模块

DDR3 用户接口控制模块:在 DDR3 写有效的情况下,将矩阵数据写入 DDR3,在读有效的情况下,从 DDR3 中读取矩阵数据

 

项目3 



 




定时用的是PIT定时中断来开发的,远程用的是记录电机脉冲开发的,这样做的原因是:刚开始的时候,用的一杆式推动电机(丝杆传动),有些电机因卡不上位置,导致不能读取响应的脉冲信号,所以同时开发两个版本,加快进度,这些脉冲信号来自电机的霍尔原件。同时利用wify模块和APP通信,来控制电机姿态的翻转等等,用的是TCP协议,写的是简单的字符串。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信