1.一种基于FPGA的自适应光学SPGD控制算法的实现方法,其特征在于,其步骤如下:(1)生成随机扰动电压模块:产生多组伪随机序列,在FPGA中将每一组序列乘以扰动电压并添加相应的符号,生成正扰动和负扰动;
(2)性能指标的计算:选取远场光斑的平均半径MR‑Mean Radius作为性能指标函数,其中(x0,y0)是光斑的质心; I(x,y)表示对应坐标(x,y)处的像素灰度值;光斑的ROI区域是N×N,所以x,y∈[1,N];
(n+1) (n) (n) (n)(3)计算变形镜电压控制模块:根据公式u =u ‑γΔu ΔJ 计算控制电压,性能指标函数MR往极小值方向优化,γ取正值;
采用以下步骤实现SPGD控制算法:(一)生成随机扰动电压模块:
1.1.预处理部分,借助Matlab软件,利用rand函数生成若干组若干路伪随机序列,由0,
1组合而成;将生成的若干组97路伪随机序列存储备用;
1.2.以其中一组伪随机序列为例计算正负扰动,将这组伪随机序列读取并存储到FPGA的ROM核中;设置计数器cnt,并将cnt作为地址位读取保存在ROM里面的伪随机序列,cnt等于0时,对应的是若干路伪随机序列的第1个值,依次类推;
1.3.计数器cnt的数值与若干路伪随机序列的对应关系中设Q表示从ROM里面读取的随机序列,cnt等于0时,对应的Q会在cnt等于2的时候输出;
1.4.Q等于0时,对应的扰动为1,Q等于1时对应的扰动为‑1,有多少路伪随机序列就有多少个1,‑1的随机组合;由于要先判断Q的值,所以对应的d值会延迟,借助一定的辅助信号,确定两个点划线之间的d为所需要的所有若干路随机扰动,扰动幅度为1;
1.5.在步骤1.4的基础上,将d乘以200,得到dv1即正扰动;200就是扰动幅度,扰动幅度定义为后10位是小数位的二进制定点小数,所以200对应的实际扰动幅度为0.1953;
1.6.在dv1的基础上每个扰动加上负号得到数据dv2即负扰动;
(二)性能指标的计算:
2.1.采集图像数据,光斑图像的灰度值,ROI区域为N×N,由于图像数据是串行传输到FPGA内部的,所以计算之前需要进行矩阵恢复;以地址位作为判断条件将图像数据恢复成N×N的矩阵形式;
2.2.计算质心,质心的公式是 根据公式质心的计算按以下步骤进行计算:
(2.2.1)按照公式(2)(3)计算坐标值与之对应的灰度值的乘积:式中向量X1表示的是横坐标1与矩阵第1行的所有元素即图像灰度值的乘积,依次类推,向量X2~XN表示的都是横坐标与其对应的所有元素的乘积;向量Y1表示纵坐标1与矩阵第1列的所有元素的乘积,依次类推,向量Y2~YN表示的都是纵坐标与其对应的所有元素的乘积;
(2.2.2)将向量X1~XN内的所有元素相加得到公式∑x,yxI(x,y)的计算结果为sun_Xi,将向量Y1~YN内的所有元素相加得到公式∑x,yyI(x,y)的计算结果为sun_Yi;
(2.2.3)将矩阵所有元素相加得到公式∑x,yI(x,y)的计算结果为sun_q;
(2.2.4)利用除法IP核进行两次除法运算,被除数为sun_Xi,除数为sun_q得到质心坐标x0,被除数为sun_Yi,除数为sun_q得到质心坐标y0;
2.3.计算MR的分子 式中I(x,y)表示的坐标为(x,y)的灰度值,性能指标函数MR分子分步计算的具体计算过程如下:(2.3.1)根据时钟Clk生成另一个时钟SCLK,SCLK是时钟Clk的N分频,SCLK时钟的1个周期包含N个Clk时钟周期;
(2.3.2)以Clk为时序,设计y_cnt计数器,计数器从0开始计数,Clk的上升沿触发,计数器加1,当计数到N时,y_cnt从0开始重新计数;以SCLK为时序,设计x_cnt计数器,计数器从0开始计数,当计数到N时,停止计数;两个计数器主要是为了对矩阵元素即图像灰度值进行定位,x_cnt定位横坐标,y_cnt定位纵坐标,矩阵的横坐标x等于x_cnt的数值加上1,矩阵的纵坐标y等于y_cnt的数值加上1;
2 2
(2.3.3)计算(x‑x0)‑(y‑y0) ,先计算x‑x0,y‑y0,然后按照公式(x‑x0)×(x‑x0)‑(y‑y0)×(y‑y0)计算,运算结果会延迟1个时钟周期输出;
(2.3.4)计算 将(3)计算出的结果输入开方IP核,延迟一个时钟周期输出运算结果sqr_q;综合(2.3.3)和(2.3.4)计算过程,时钟共延迟了2个时钟周期;
(2.3.5)按照时钟Clk的时序,设置计数器address,开始计数的使能信号和y_cnt计数器保持一致,address计数器的功能是从ROM核中读取图像灰度值;从地址位address的发出,到输出数据有两个时钟周期的延迟,address等0的图像灰度值,会在address等于2的位置被读出;由于address计数器和y_cnt计数器的关系,address等0的位置定位是x_cnt等于
0,y_cnt等于0,输出的灰度值定位在x_cnt等于0,y_cnt等于2;
(2.3.6)公式 的计算结果和坐标为(x,y)的灰度值是两个完全同步的信号,可以直接将两个结果相乘,完成公式 的计算过程;
得到的结果记为向量sqr_x1;(2.3.7)按照上述的计算过程可以算出第2行至第N行的所有的结果sqr_x2~sqr_xN,然后所有向量里面的元素结果相加得出的结果是MR的分子;
2.4.将步骤(2.3.7)计算的结果与矩阵所有元素即图像灰度值的和相除,计算得到MR;
(三)变形镜控制电压的计算:
(n+1) (n) (n) (n) (n) (n)变形镜控制电压的计算公式为:u =u ‑γΔu ΔJ ,式中γΔu ΔJ 为梯度(n) (n)
估计,γ为增益系数,Δu 为随机扰动,ΔJ 为性能指标的变化量 性能(n) (n)
指标函数MR是往极小值方向寻找最优解,所以当Δu 与ΔJ 的符号一致时,减梯度估计(n) (n)
结果,当Δu 与ΔJ 的符号相反时,加梯度估计结果;
按照公式(4)实现变形镜控制电压的计算:(n+1) (n) (n) (n)u =u ‑γΔu ΔJ (4)式中:γ为增益系数取正值;
具体步骤如下:
3.1.正扰动施加至变形镜后,采集图像数据,利用性能指标函数计算模块计算性能指标函数MR,记为MR1;负扰动施加至变形镜后,采集图像数据,利用性能指标函数计算模块计算性能指标函数MR2;
3.2.计算性能指标函数的变化量ΔMR=MR1‑MR2;
3.3.计算梯度;
(n+1) (n) (n) (n)
3.4.按照公式(4),计算控制电压,将公式转化为u =u ‑Asign(Δu )ΔJ ,其中(n)
A表示的是增益系数和随机扰动幅度的乘积,sign(Δu )等于正负1;
3.5.计算完成控制电压后,加上第n+1次的随机扰动电压,然后再将控制电压输出至变形镜,采集图像数据;减去第n+1次的随机扰动电压,然后再将控制电压输出至变形镜,再次采集图像数据。