随着技术发展,8bit (0-255)灰阶的空间光调制器产品会逐步被10bit(0-1023)阶产品代替,而传统8bit产品将被逐步淘汰,沦为二线产品。虽然很多用户思维习惯依然停留在8bit年代,同时现存程序代码也面临数据不兼容问题,但基于10bit位深的优势已经被众多课题组证明。因此,掌握10bit甚至更高位深的SLM编程技巧尤为必要。
位深
位深是指控制相位/振幅的最大精度范围,也是寻址函数的寻址步长,映射到电路器件的基本参数就是DAC精度。传统产品DAC芯片为8bit或10bit,新产品采用12bit或16bit甚至更高精度的DAC芯片。电寻址SLM的控制电压值V是个基本量,DAC芯片位深越大,V被细分的精度就越高,即步长精度为V/灰阶。例如,同样1个波长的相位调制量,如果灰阶256,则电压细分为V/256,调制步长为1/256个波长相位周期,如果灰阶1024,则V/1024,步长精细度提升了4倍,为1/1024个波长相位周期,这在高精度控制场景下,可以极大提高分辨精度。
对用户交互而言,位深对应到算法计算中的归一化取值范围。由于理论计算中采用浮点数,计算机的浮点数通常为32位或64位,在归一化时取整时,就需要考虑实际位深。8bit的产品,取整范围是按0-255,10bit产品,取整范围按0-1023。这个差别将带来数据格式的差异。
HDMI数据格式
空间光调制器产品大部分采用视频接口,比如HDMI或DVI,因此,其数据格式为视频图像格式。常见的RGB图像为24bit,按RGB三个通道,每个通道8bit;这种数据格式兼容所有主流图像数据处理芯片。因此,空间光调制器数据传输接口沿用了24bit的数据编码格式。如下图:
针对8bit的空间光调制器,用户只需输入8bit的数据,利用HDMI中单个通道即可完成寻址交互。采用时序控制的空间光调制器,则RGB三通道时序变化,可以将24bit数据输入到空间光调制器,然后由驱动器按RGB时序控制LCoS芯片。
如果LCoS驱动电路采用10bit的工作模式,用户为了通过可视化图像的数据格式输出给驱动电路寻址数据,就必须在PC电脑和SLM控制器之间定义数据格式协议。由于硬件传输接口为HDMI,HDMI的数据格式中标准的RGB三通道数据流最为常见,且跟主流图像处理软件、算法等非常兼容,因此在10bit的LCoS驱动电路和用户数据之间需要基于HDMI协议约定一个数据格式。
比如上图的334,就是将10bit的数据,按R通道存放3位、G通道存放三位,B通道存放4位的格式,低位补零,实现上位机编程模型。这个在编程时通过移位操作,可非常简便实现。当然,SLM生产厂家也可以定义为442,235…. 该格式由厂家在Firmware中定义,本身只是一个数据协议约定,HDSLM80R Plus选择了334的模式。
HDSLM80R Plus的编程技巧
理解了上述基本概念和背景,我们下面针对应用场景详细描述编程思路。
1、必须兼容8bit的控制场景
因为特定历史原因,部分用户会死死抱住8bit算法不松手,坚持只使用8bit的数据算法。那么,此时该如何向下兼容?
方法一,通过串口配置,将10bit的HDSLM改为8bit工作模式,此时,电路处理数据时,直接按8bit数据模式进行寻址。此时,相位精度也变为了256灰阶。该方法将硬件降为8bit,以兼容用户数据。
方法二,利用Matlab算法增加数据转码函数,将原有8bit(0-255)映射到调制深度的控制关系,修改为0-1023的映射关系。软件参考图如下,算法编码(Matlab -- SLM80R_8Turn10bit.m)
数据对比:Tvortex -- 8bit转10bit ;vortex -- 直接算出的10bit数据
参考两组数据,Tvortex数据与vortex数据比较,Tvortex数据差为4,丢失部分细节。
2、直接操控10bit数据场景
针对没有历史包袱的用户,则可以直接开始10bit的算法模式。
保存10bit图片软件参考图如下(Matlab -- SLM80R_10bit.m)
以上希望帮助大家理解1024灰阶编程的差异点。
-
HDMI
+关注
关注
32文章
1694浏览量
151858 -
编程
+关注
关注
88文章
3614浏览量
93685 -
空间光调制器
+关注
关注
1文章
66浏览量
8708
原文标题:空间光调制器编程技巧之1024灰阶
文章出处:【微信号:UPOLabs,微信公众号:UPOLabs】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论