基于PCIe和M-LVDS的数据传输系统设计与实现

2023-10-28 01:19路美娜宋茂新许智龙
仪表技术与传感器 2023年9期
关键词:机软件主控板上位

赵 雷,路美娜,宋茂新,吴 洋,王 凯,许智龙,洪 津

(1.中国科学院合肥物质科学研究院安徽光学精密机械研究所,安徽合肥 230031;2.中国科学技术大学,安徽合肥 230026)

0 引言

集成电路(IC)产业是现代信息社会的重要基石,而光刻机则是IC制造中的关键核心设备[1]。随着光刻技术的不断发展,光刻分辨率也越来越高。提升光刻分辨率的途径可由瑞利判据[2]得知:减小曝光波长λ;增大投影物镜的数值孔径NA;降低工艺因子k1。其中减小λ是提升光刻分辨率的主要研究方向,无论是减小λ还是增大NA,都会使得焦深变小[2-3]。随着光刻相关技术的不断发展,光刻机曝光波长从早期的435 nm(G线)减小到了目前的13.5 nm(EUV),数值孔径也已增大到近乎极限,焦深也随之来到了120 nm级别甚至100 nm以下[3-4]。在进行光刻时,为了保证IC产品的质量,硅片表面要保持在可用焦深范围内[4],随着焦深的不断减小,聚焦控制的难度也在不断增大。目前国际主流光刻机利用基于光学三角法的调焦调平测量系统来测量硅片表面高度,进而工件台控制单元会基于已获取的高度信息去进行硅片高度和水平倾斜度的调整,使得硅片待曝光面处在投影物镜的最佳焦面位置[4]。随着IC相关技术和产业的持续发展,不断改进和迭代调焦调平测量技术方案,以提升测量精度、测量速度和环境适应能力等[5]。

对于某光刻调焦调平测量系统预研项目,需要实现对包含硅片高度信息的光信号的采集、调理和A/D(模/数)转换,并需要把ADC器件输出的数字信号数据传输至计算机中,以便对数据进行处理和分析,同时还需要实现计算机对ADC等器件的控制。针对上述需求,并考虑到项目后续的一系列测试,设计了基于PCIe和M-LVDS(multipoint-low-voltage differential signaling)的数据传输系统。PCIe是一种高速串行总线,在现今计算机中应用十分普遍,该数据传输系统的PCIe接口规格为PCIe2.0×8,理论带宽达到4.0 GB/s[6-7];相比于LVDS,M-LVDS的差分输出电压更大、共模电压范围更广、极限传输距离更远[8],对于该数据传输系统,在源同步传输模式下,M-LVDS链路中的源时钟可稳定工作在100 MHz的频率。该系统基于PCIe和M-LVDS,实现了数据的高速稳定传输。

1 系统整体架构与关键器件选型

1.1 数据传输系统架构

图1为数据传输系统的基本架构图,基于M-LVDS链路实现了数据采集板和主控板的通信,基于PCIe链路实现了主控板和计算机的通信。在调焦调平测量系统实际工作时,硅片表面高度的变化会引起数据采集板上探测器模块(包含多个Si光电二极管)输出的多路光电流的变化[9],为了得到硅片高度信息,需要正确处理这些光电流信号。光电流信号的处理步骤为:IV转换—低通滤波—二级放大—低通滤波。信号经调理电路处理后接入ADC器件的模拟输入通道以进行A/D转换。利用FPGA驱动ADC芯片以获取转换后的数据,并将每次获取的所有通道数据进行封装,然后以一定的时序发送给M-LVDS芯片,进而数据会传输至主控板中。除了数据的发送,数据采集板还要实现控制指令的解析与应答。主控板安装在计算机主机的PCIe插槽里,由主机供电,用于实现与数据采集板和与计算机之间的数据信息交互。主控板由载板和子板组成,载板与子板之间使用FMC(FPGA mezzanine card)连接器进行连接,FMC子板上设计有M-LVDS电路。数据采集板采集的数据经M-LVDS链路传输至主控板后,需要经PCIe链路传输至计算机,以对数据进行处理和分析。计算机是系统的控制中心,所有的控制指令均由上位机软件发出。

图1 数据传输系统基本架构图

1.2 关键器件选型

考虑到硬件可编程性和后续版本迭代,数据采集板FPGA选用XC7K325T-2FFG900型号器件,该型号FPGA具有十分丰富的可编程逻辑资源;主控板的载板选用成品板卡,该板卡主控芯片的型号是XC7Z100-2FFG900,是Zynq-7000 SoC系列中片上资源极其丰富的器件,与赛灵思7系列FPGA相比,Zynq-7000 SoC还拥有PS(programmable system)部分[10]。M-LVDS芯片采用SN65MLVD040器件,该型号M-LVDS芯片支持4通道半双工通信,信号收发速率可达250 Mbps[11];M-LVDS链路的线缆采用自定义线序的差分线缆,接口接插件采用CameraLink SDR连接器,保证了线缆的可靠连接。为了实现多路信号的同步采样,数据采集板的ADC采用AD7608器件,AD7608可实现8路信号的同步采样,具有18位分辨率,所有通道采样速率均可达200 kSPS[12],其量程在本系统中被配置为±5 V。跨阻放大器采用ADA4530-1型号放大器,该型号放大器的输入偏置电流可低至±20 fA,并具有较低的失调电压和失调电压漂移[13]。

2 硬件功能模块设计

2.1 主控板Zynq系统开发

基于Vitis和Vivado完成了主控板Zynq系统的PS和PL(programmable logic)两部分的开发,如图2所示,Zynq系统的主要功能由PL端实现,PS端主要实现Q-SPI Flash、PS DDR3、UART外设的控制以及与PL的数据信息交互。为了更直观、简洁地表示,图2中的部分模块是多个实际功能模块的集合。基于XDMA(DMA/bridge subsystem for PCI express)搭建了Zynq的PCIe子系统,用于实现与上位机的通信。上位机下发的指令经传输后到达交互控制模块,该模块依据已定义好的协议进行指令的解析和处理[14];指令处理模块用于实现指令内容的获取和与数据采集板的串行通信功能,基于两路M-LVDS通道实现了全双工串行通信;数据处理模块实现有效数据的解析、封装和缓存等,包含FIFO(first-in first-out)、BRAM(block RAM)、AXI(advanced extensible interface)互联等组件;基于2个AXI GPIO IP实现了PS与PL之间的信息通知,PS和PL通过对同一BRAM进行读写来实现两部分之间的数据传输[15-16];板卡配置模块包括时钟芯片配置模块和电源芯片配置模块,时钟芯片可提供不同频率的差分时钟,通过配置可调电源芯片,可改变Zynq部分BANK的供电电压,2个芯片均通过I2C总线与Zynq进行通信。

图2 主控板Zynq系统简化架构图

2.1.1 数据接收与缓存模块设计

如图3所示,数据接收模块会对来自M-LVDS芯片的数据信号进行解析,在检测到数据有效信号的上升沿后,开始接收数据,并在接收完一帧数据后对数据帧头进行校验,如果校验错误,则丢弃此帧数据,如果校验成功,则对数据进行封装以便上位机解析,然后将封装后的数据进行缓存。可以看到数据有2个流向,在数据缓存量较大时可选择PS DDR作为存储空间,数据缓存量较小时则可直接将数据存储到PL BRAM中。Zynq-7000 SoC芯片的PS侧提供了4个高性能AXI从接口,基于其中一个高性能AXI从接口实现了对PS DDR的读写。为了利用AXI协议的突发写特性以及实现数据的异步传输,需将数据先存入异步FIFO中,因此相比于选择PS DDR作为存储区,将数据存储到PL BRAM可得到更低的时延。图4为BRAM数据缓存模块的仿真波形图,该模块将有效数据按照相应地址写入到BRAM中。图5为DDR数据缓存模块部分信号的仿真波形图,当异步FIFO已缓存一定大小的数据时,会启动一次AXI突发写事务以将数据传输给从机,在一次写事务完成后,从机会进行响应,可以看到,写响应有效信号M_AXI_BVALID成功拉高且响应信号M_AXI_BRESP的值为0,表明此次写数据成功。

图3 数据缓存路径

图4 BRAM数据缓存模块仿真波形

2.1.2 串行收发模块设计

为了增强控制的灵活性,并方便后续协议更新,设计了一种数据长度可变的串行协议,并进行了Verilog实现。图6为串行发送过程的状态转移图,在TRANS_IDLE状态时,若检测到发送有效信号cmd_tx_valid为高电平后,会寄存指令内容和长度信息,并且状态机会跳转到CMD_TRANS状态;在CMD_TRANS状态时,会完成辅助字节和指令内容的发送,当发送完尾字节0x7b并等待一定时钟周期后,状态机会跳转到TRANS_END状态以拉高发送完成标志信号;在TRANS_END状态停留1个时钟周期后,状态机会跳回到TRANS_IDLE状态以等待下一次的发送。图7为串行接收过程的状态转移图,在RECV_IDLE状态时,当检测到协议首字节0x7a的首个下降沿后,start_flag信号会拉高1个周期,随后状态机会跳转到START状态;在START状态时,会对首字节进行校验,如果校验错误,则放弃此次接收,并跳回至RECV_IDLE,如果校验正确,在长度信息寄存完成后状态机会跳转到RECV状态;在RECV状态时,进行指令内容和尾字节0x7b的接收,并进行校验数据的解析和寄存,在对尾字节校验成功后,状态机会跳转至RECV_END状态;在RECV_END状态时,会对指令内容进行校验和分析,同时状态机跳回至RECV_IDLE状态以等待start_flag信号再次有效。

图6 串行发送过程状态转移图

图7 串行接收过程状态转移图

2.1.3 基于XMDA和AXI的PCIe子系统设计

XDMA是赛灵思提供的一种PCIe IP,提供了多个AXI接口,在主控板Zynq系统的设计中,利用XDMA的DMA AXI接口、AXI旁路接口、AXI_Lite接口以及中断请求接口实现了与相应模块的灵活可靠的数据信息交互[17]。图8所示为主控板Zynq PCIe子系统基本框架图[17-18],在Zynq系统中,数据存储空间可配置为PL BRAM或PS DDR,XDMA基于AXI主接口可实现对BRAM或PS DDR的数据读写;交互控制模块负责所有上位机指令信息的解析和处理,是主控板与上位机之间进行数据信息交互的核心模块;指令请求模块基于AXI协议可以实现数据的突发读写,用于指令内容的获取;AXI Connect左侧连接了2个BRAM,其中一个用于指令信息和指令内容的存储,另一个作为预留空间。

图8 PCIe子系统基本框架图

2.2 数据采集板FPGA逻辑设计

图9为数据采集板FPGA的功能模块框图。

图9 数据采集板FPGA功能框图

采集板作为控制目标设备,在指令解析模块接收到正确的指令内容时,会将有效信息传输给控制中心模块,然后控制中心模块会根据指令码和指令信息对ADC芯片或温度传感器芯片等执行相应的控制操作,并通知指令反馈模块回复相应的内容;温度采集模块负责驱动数字温度传感器以获取转换的温度数据;ADC驱动模块负责驱动AD7608进行多路模拟量的同步采集并获取ADC芯片的转换数据;数据处理模块将来自4个ADC驱动模块的数据封装成数据帧,进而数据发送模块会将数据帧按照一定时序发送给M-LVDS芯片。

对于ADC同步采集,虽然可以同时给出ADC的有效转换信号,但是4个ADC的转换时间不一定完全一致,因此需要对各个ADC驱动模块的有效数据信号和数据标志信号进行同步处理。图10为4个ADC数据标志信号同步处理逻辑的RTL原理图,依据数据标志信号的同步来对数据进行合并,并输出总数据标志信号和总数据信号。

图10 ADC数据标志信号同步处理逻辑RTL原理图

3 上位机软件设计

基于Qt Creator开发了上位机软件,主要功能包括PCIe设备的打开与关闭、指令下发与状态指示、数据获取与存储以及XDMA测试,上位机软件界面如图11所示。主控板在收到上位机软件下发的指令内容后,会取出指令内容并转发给目标设备,目标设备在接收到指令内容并校验成功后会返回给主控板相应的信息,主控板收到正确的反馈内容后会生成中断请求信号给XDMA,进而XDMA将向计算机申请中断[19],在一定时间内,如果上位机软件未检测到相应中断则表明系统存在问题或下发的指令内容有误,软件会提示发送失败;如果检测到相应中断则说明此指令已安全到达目标设备,并且软件会提示发送成功。上位机软件的指令机制如图12所示,该种机制保证了控制的可靠性与安全性,并且便于用户操作。可以利用多个中断去实现各种自定义机制,以拓展系统的功能。上位机软件能够稳定可靠地从主控板中获取数据,并可输出为bin或csv格式的文件,还可实现对XDMA的测试,以确保其工作正常。

图11 上位机软件界面

图12 上位机软件指令机制

4 系统测试

4.1 数据传输测试

为了验证数据传输链路的正确性和数据传输机制的合理性,设计了数据传输测试系统,测试基本原理如图13所示,在数据采集板成功解析到测试开始指令后,会在FPGA中每隔一定时间生成一次所有ADC通道的模拟数据,并按照正常工作时的数据格式和时序发送给主控板,进而上位机可从主控板中获取测试数据。改变不同的模拟数据生成频率,并进行多次长时间测试,经分析,上位机所获取的所有数据帧的帧头、帧计数、ADC数据、校验和填充数据均正确,表明了数据链路的正确性和数据传输机制的合理性。

图13 数据传输测试基本原理图

除了数据传输正确性测试,还对M-LVDS链路的速率进行了测试。在数据采集板FPGA中生成数据并以源同步模式发送至M-LVDS芯片。主控板Zynq对收到的数据进行实时校验,并对校验出错的次数进行计数。如表1所示,改变源时钟频率和测试时间,错误计数信号数值均一直为0,源时钟能够在100 MHz下长时间稳定工作,可以实现数据在M-LVDS链路中的高速可靠传输。

表1 M-LVDS链路测试结果

4.2 ADC采集测试

如图14所示,为利用ILA(integrated logic analyzer)抓取到的ADC驱动模块的部分信号波形,可以看到,在输出给ADC的转换信号ad_convst拉高后,ADC忙信号ad_busy很快从低电平变为高电平并持续了一段时间,在ad_busy信号变为低电平后,ad_data_valid信号拉高1个驱动时钟周期,状态机从S_WAITD状态跳到了S_REQD状态,开始进行ADC转换数据的获取,sclk_en信号用于控制ADC串行时钟信号ad_sclk的生成,在空闲状态时该信号为低电平;在把所有数据位分别寄存到data_a和data_b信号后,状态机又跳回了S_IDLE状态,表明此次数据获取已经完成;ad_os、ad_reset_p信号分别为输出给ADC的过采样率信号和复位信号;ad_cs_n信号为输出给ADC的片选信号,可以看到该信号有一段时间为低电平。经多次测试,4个ADC器件均能实现正常的模数转换,并且FPGA所获取的转换数据与利用示波器所抓取的数据信号一致。

图14 ADC驱动模块部分信号波形

在实际应用中,光电流经调理电路处理后会输出为放大的电压,该电压理论值可由设计参数计算得到。如图15所示,利用数字源表给光电流通道输入微安级别的电流信号,并对输入电流对应的调理电路理论输出电压绝对值与ADC实际采集的电压绝对值进行线性拟合,可以看到,光电流调理与采样电路具有良好的线性。

图15 光电流调理与采样电路线性测试拟合图

4.3 指令机制测试

可靠的控制是后续测试的重要基础,因此对数据传输系统的指令机制进行了测试。上位机软件下发的指令信息和指令内容经PCIe链路会传输至主控板Zynq中。图16为Zynq接收指令信息过程的波形图,图17为Zynq根据指令信息获取指令内容过程的波形图,Zynq基于AXI接口可以实现指令内容的突发读取。在获取到指令内容后,Zynq会根据指令长度和控制目标转发指令内容,图18为数据采集板FPGA捕获到的指令接收过程的波形图,rx_valid_data信号用于寄存所接收到的指令内容,可以看到指令内容的各部分都能被成功解析出来,错误信号error为低电平,表明此次指令有效,并且上位机软件界面提示发送成功。

图16 指令信息接收过程波形

图17 指令内容获取过程波形

图18 数据采集板的指令接收过程波形

4.4 中断测试

中断在计算机和主控板之间的数据信息交互中具有很重要的作用,因此对中断也进行了测试。在中断测试系统中,主控板Zynq在收到上位机发送的测试指令后会每间隔一段时间发送1次中断请求信号,直至总次数达到指令所设置的测试次数为止,上位机软件在检测到中断后会进行计数。如表2所示,改变不同的测试次数,中断丢失个数为0,所有的中断请求均能被上位机获取到并处理,表明系统的中断机制稳定可靠。

表2 中断测试结果

5 结束语

针对某光刻调焦调平测量系统研究项目的数据采集和测试需求,设计了基于PCIe和M-LVDS的数据传输系统。系统选用了资源丰富的Zynq和FPGA器件分别作为主控板和数据采集板的主控芯片,具有较强的灵活性和可拓展性。对系统各部分进行了实际测试,测试结果显示,数据采集板能够正常实现ADC数据的获取和发送以及指令的解析与应答;主控板能够正常实现与上位机以及与数据采集板之间的数据交互;上位机软件能够实现正常的数据获取、文件输出、指令下发以及指令状态提示;系统各部分工作稳定可靠,可以满足实际应用需求。

猜你喜欢
机软件主控板上位
一种快速可靠的主控冗余及切换机制的设计与实现
升级双主控板交换机ISO
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
变频器检测台的设计、制作及主控板的维修
道岔监测系统上位机软件设计
基于正交试验法的北斗用户机软件测试用例设计
PCI-e高速数据采集卡的驱动与上位机软件设计
以新思路促推现代农业上位