Uestc.Auto6.Dso.Hardware 1、开机调用顺序为:Open,Initialize,AutoCaliPowerOn。程序退出时,要调用Close. 2、硬件响应及要数,必须在同一个线程中。 3、本DLL是基于 非独立PCIE模式。整个工程FPGA分为Acquire FPGA,Process FPGA[K7],PCIE[K7] FPGA 。共3个FPGA工程块。 4、采集的流程为 A、Execute(如果有硬件改变,将自动执行初始化Fifo,否则不执行。为慢时基、单次、正常触发而设计); B、AcqWave(返回是否读到数据,Fifo满,将数据读到软件端。长存储的数据采用乒乓方式); C、特殊的数据读取(主要是长存储下的) 5、本DLL适用于XXXX 型号工程。 打开硬件 PCIE通信没有用到,为Usb等通信预留。目前没有使用,可填任意值 使用真实硬件还是模拟硬件。模拟硬件只能产生模拟波形,其他的读入数皆为0.缺省为true 目前没有使用,缺省为false 退出程序前,必须调用。 硬件系统基本初始化。执行此操作后,硬件处于缺省的正确的工作状态。系统上电时执行一次 执行上电后的自动校准。是否执行由调用者决定。 硬件响应。 系统参数 是否执行过新的硬件命令 只要主要的FIFO满,就返回true;是否真实存在数据,需要相应的采集器的读取函数确定 ` 频率计 波形获取器 温度传感器 解码器 测试用的函数,在正式代码中应该删除,同时,测试通过后需要正式使用的,要移除此函数,并写入正式代码。因为该函数可能不被调用。 上电缺省初始化,与系统的环境变量无关 开启下一次新的采集 读取采集到的数据 采集数据的后处理 模拟通道波形采集 正在采集的采集参数 已经采集的数据的采集参数。在读回数据后赋值 频率计 闸门时间可选列表 复位 读取以Hz为单位的频率数。 如果存在多个频率计,则读取指定通道的频率计。-1表示触发通道 如果读取失败,返回Double.NaN。以Hz为单位 根据系统的设置参数而进行的配置 供Core调用的对外接口函数 正在采集的采集参数 已经采集的数据的采集参数。在读回数据后赋值 供Core调用的对外接口函数 模拟模拟通道波形数据 读取以摄氏度为单位的温度传感器数据。 第几个传感器,目前只有一个。 存储模式:长存储,普通存储 只对长存储有用 最高采样率(合并后的)下,单一抽取器来计算的。 在硬件端存储数据的采样率 读取回来的数据的采样率。对长存储来说,是读回来的数据。因为在读取的过程中好,可能存在二次抽取。 送给对外接口时的采样率。可能存在软件端的插值处理。如果没有软件端的插值,就是PerDataByfs 设置的触发时间 长存储读回的触发点地址 模拟通道 Offset,Bias,Trigger Volt等DAC控制 采集Fifo阶段的深度 配置数字触发相关参数。如丢点数,搜索宽度等。 开关数字触发 界面上的通道基线自动校准功能。 站位值;bit0=channel1,bit1=channel2,bit=channel3,....位值=1表示有错误,位值=0表示没有错误,校准成功。 完成基本配置 板内测试 完成基本配置 板内测试 完成基本配置 板内测试 共有[76]个寄存器,其中写寄存器[38]个,读寄存器[38个]. FPGA中还有[4]个定义的寄存器在软件中没有使用。 在本文件中出现[todo...]字样的地方需要注意使用,并尽量与硬件人员一起完善。 共有[38]个. ADC配置SPI片选[write] 同时控制两片ADC,状态有效,1选中,0不选中。bit1=ADC1,0=ADC0 ADC配置SPI使能[write] 同时控制两片ADC。先发送数据,然后对应位拉高。见原有代码SendCmdToLMX2595 ADC5200掉电模式[write] 同时控制两片ADC,每片占1位,1=掉电,0=上电 jesd204b数据接收核复位[write] 同时控制所有jesd核复位,1有效 边沿触发边沿选择[write] 1位,1=上升沿,0=下降沿 比较电平-上限[write] 以12Bit之4096为基准 比较电平-下限[write] 以12Bit之4096为基准 预触发深度[write] 以XXXXXXXXXXXXXXX 采集板串行FIFO深度[write] 数字触发找点范围[write] 数字触发自动触发开关[write] 2级数字触发开关[write] 2级数字触发源选择[write] 7044_SPI_Data低16位[write] 7044_SPI_Data高8位[write] 7044_SPI_写使能[write] 7044写使能,写0-1触发一次读写 7044_控制_同步[write] 7044 sync同步引脚 写0-1-0触发一次锁相环同步 7044_控制_复位[write] 044复位 写0-1-0 进行一次复位,初始化前复位一次 时钟一驱多lmk00304_1[write] lmk00304配置(电路中U21)只写一次 。写9 时钟一驱多lmk00304_2[write] lmk00304配置(电路中U21)只写一次 。写1 硬抽抽取比高16bit[write] 抽取数低16位 插值倍数选择sample_mode[write] 4位控。其中高位标志是否打开插值。后三位位控表示插值倍率,取值为:000:2倍,001:4倍,010:5倍,011:10倍,100:20倍,101:25倍,110:50倍,111:100倍 系数地址[write] 连续自然数,10位 系数低16位[write] 系数值的高位(1位)[write] 发送RAM系数前复位[write] 高有效:等于1时复位 IO_RESET[write] ACQ_IDELAY_CTRL_RST[write] fifo_cnt回读使能[write] 写0-1触发一次回读 fifo编程满标志[write] 采样模式设置[write] 00: GROUP A(double ch 10G),10: GROUP B(single ch1 20G),11: GROUP C(single ch2 20G) 传输处理板模块复位CLK_RESET[write] 传输处理板模块复位Data_Tx_IO_RESET[write] 上电OK 判断写入寄存器16bit数据[write] 16位数据,由此寄存器写入,由PowerOK_Readback读出,两者数据一致,表明上电OK。避免使用0x0000或0xffff数据。 共有[38]个. ADC_SPI_回读数据[read] 锁相环HMC7044回读数据[read] {LMX2595A_SPI_read}[read] {LMX2595B_SPI_read}[read] fpga_pll_locked[read] 1:表示fpga主时钟锁定 硬抽抽取比低16bit[read] 硬抽抽取比高16bit[read] idelay_locked[read] bit0=锁定 idelay_RST_CNTVALUEOUT[read] idelay_REN_CNTVALUEOUT[read] idelay_WEN_CNTVALUEOUT[read] fifo_block数据量回读数据[read] 编译时间 L16[read] 与H16一起构成32位的整数,其含义是从1970.1.1 0.0.0开始的格林威治地点的秒数。需要做北京时间转换(时区) 编译时间 H16[read] 版本号 L16[read] 与H16一起构成32位的整数。分割为Major_Version_Number[1byte].$Minor_Version_Number[1byte].$Revision[2byte] 版本号 H16[read] 设计者 Word1[read] 共8个字节,有效字符居左。字节为ASCII码 备注 Word1[read] 共32个字节。有效字符居左,也就是高位。 字节为ASCII码。 上电OK回读[read] 正确的情况下,读回的值是PowerOK_WriteIn写入的数据 共有[35]个寄存器,其中写寄存器[33]个,读寄存器[2个]. FPGA中还有[33]个定义的寄存器在软件中没有使用。 在本文件中出现[todo...]字样的地方需要注意使用,并尽量与硬件人员一起完善。 共有[33]个. PLL 7044 设置数据[write] PLL 7044设置数据使能[write] 先设置0,传输数据,然后拉高 拉高,数据生效。[todo....需要多长的时间] PLL 7043 设置数据[write] PLL 7043设置数据使能[write] 先设置0,传输数据,然后拉高 拉高,数据生效。[todo....需要多长的时间] PLL 同步[write] 上升沿有效 PLL 7044 复位[write] 上升沿有效 PLL 7043 复位[write] 上升沿有效 PLL 保留控制[write] 3位,位控。[todo....值怎么设置] DMA读数长度。[write] 在每次DMA读之前,先发送,因为其他地方可能修改了此值。 字节数,需为XXX的整数倍。需要根据业务情况而设置。 DMA写数长度[write] 在每次DMA写之前,先发送,因为其他地方可能修改了此值。 字节数,需为XXX的整数倍。需要根据业务情况而设置。 DMA读数据的来源控制。[write] 在每次DMA读之前,先发送,因为其他地方可能修改了此值。 需要根据业务情况而设置。目前只有0和1选择,其中0表示读采集板的数据,1表示读DPO的数据 4094传输开始[write] 使能后将传给4094的40位数据传递给通道板的单片机 延时要满足通过SPI将40位的数据传输完毕,与传输该数据的SPI的Clock有关。 先发送40位的数据给FPGA,然后拉高,延时足够的时间,然后拉低。为上升沿有效。 4094数据低32位[write] 使能后将传给4094的44位数据 之低32位 位控,请参照通道相关文档。 4094数据高12位[write] 使能后将传给4094的40位数据 之高12位 位控,请参照通道相关文档。 DAC选择[write] 不同DAC的选择,同时还需要配置不同的端口,参见原SendDataTo5668函数 偏值电压、基线移动、参考电平、等模拟触发电平需要选择不同的DAC。 0: DAC数据传输开始[write] 启动从FPGA到通道单片机的DAC数据传输。使用SPI传输。 上升沿开始传输。然后根据SPI的传输速度传输32位数据等待狙狗的时间,然后拉低。需要与DAC_Enable_CS一起联动。 DAC片选[write] DAC片选。由于有多片DAC,故传输数据时,需要片选,该控制是确定片选使能。 在启动FPGA端数据传输到通道单片机之前,片选使能拉高。传输完成后拉低。 粗调控制字通道选择[write] 粗调增益控制字发送的控制。按位表示哪个通道。0表示没有通道。 先发送粗调增益控制字的值(VGA_Data),然后通过该寄存器发送哪个通道。延时。最后置0. 粗调控制字值[write] 粗调增益控制字发送的控制。按位表示哪个通道。0表示没有通道。 先发送粗调增益控制字的值(VGA_Data),然后通过该寄存器发送哪个通道。延时。最后置0. 0=无通道,1=通道1,2=通道2,4=通道3,8=通道4.以0开始的通道0,1左移。 温度传感器读数复位[write] 目前看起来是温度传感器复位用 。 上升沿有效。在读取温度数据前,先做复位处理。 DPO的顶层通道和激活通道设置 高3位表示显示在最上层的通道,001 CH1 010 CH2 011 CH3 100 CH4 000:显示优先级CH1-CH4依次降低 低4位表示激活的通道 0001:CH1 0010:CH2 0100 CH3 1000 CH4 DPX使能[write] 只有1位的状态控制。 是否使用DPX测试波形[write] 只有1位的状态控制。 FIFO读数据量[write] 软件读处理板每个FIFO的数据量 需要根据不同的FIFO深度配置,其含义应该为。。。。 PRO FIFO可编程满(发送至处理板)[write] [todo....什么用途,该如何取值] Reset[write] 处理板上电[write] 处理板上电 上电后可能需要一定的时间。所以,可以读取处理板上的一个固定寄存器,上电后返回固定的值。据此判断已经上电,就不需要再等待时间了。 0x55上电。上电后可能需要一定的时间。 PCIE数据源选择[write] PCIE数据源选择,测试用。 0=正常数据,1:PCIE测试数据 系统复位[write] 从PCIE板发出的系统复位 上升沿有效 PCIE_Channel_Mode[write] [todo....什么用途,该如何取值] 共有[2]个. 温度传感器读数[read] 右移8位后的值表示十分之一摄氏为单位的个数。 DMA FIFO是否满[read] 只有1位的状态。 共有[62]个寄存器,其中写寄存器[34]个,读寄存器[28个]. FPGA中还有[6]个定义的寄存器在软件中没有使用。 在本文件中出现[todo...]字样的地方需要注意使用,并尽量与硬件人员一起完善。 共有[34]个. 触发控制[write] [todo....值含义] 触发模式设置[write] 设置 自动、正常、单次触发 1=Auto,0=normal,2=oneShot 预触发深度设置低16位[write] 最大44位表示的数。 其值得含义为 预触发深度设置中16位[write] 预触发深度设置高剩余位[write] 强制触发[write] 置1强制触发一次。之后应该置0 触发释抑的低16位数[write] 参见现有的代码,并补齐说明 后触发深度之低16位[write] 后触发时间以3.2ns为单位的个数 后触发深度之中16位[write] 后触发时间以3.2ns为单位的个数 后触发深度之高16位[write] 后触发时间以3.2ns为单位的个数 触发时钟源选择[write] 参照12bit源代码中的AdjSource()函数,看起来还不完整 触发位置修正数[write] [todo...该寄存器似乎是不理想设计的。是否有存在的必要。] 其值如何确定 触发位置修正_使能[write] [todo...该寄存器似乎是不理想设计的。是否有存在的必要。] 什么情况下使能。 触发释抑的高16位数[write] 参见现有的代码,并补齐说明 DCM其他复位[write] 0 ->0xFB 时复位 处理板软件Fifo深度[write] [todo...值的含义是什么,怎么确定值的多少] ACQ FIFO写使能[write] 0->1 上升沿 复位 处理板FIFO复位[write] 0 ->0x1 时复位 10M时钟选择[write] [todo...值如何确定] PLL设置数据使能[write] 先设置0,传输数据,然后拉高 拉高,数据生效。[todo....需要多长的时间] PLL设置数据之低16位[write] [todo...值怎么取] PLL源选择[write] [todo....值怎么确定] 数据接收延迟数设置生效[write] 拉高生效.先设置数据,然后拉高生效。[todo...需要多少时间?] IDDR复位[write] 拉高复位 采集板上电[write] "00" 断电, 16'hff 上电 ACQ FIFO复位[write] 0 -> 0x04 时复位 源同步数据接收IO复位[write] [todo...从现有的代码来看,只在上电时做一次,有意义吗?] PRO 发送数据IO复位[write] [todo...该寄存器的用途是什么?] 上电OK 判断写入寄存器16bit数据[write] 16位数据,由此寄存器写入,由PowerOK_Readback读出,两者数据一致,表明上电OK。避免使用0x0000或0xffff数据。 共有[28]个. 读取触发状态[read] bit3,bit0=ready,bit1=trigged,bit2=auto 编译时间 L16[read] 编译时间 H16[read] 版本号 L16[read] 版本号 H16[read] 设计者 Word1[read] 备注 Word1[read] 读取FPGA内部pll(主时钟)锁定[read] 1:locked 读取FPGA内部pll(CRYSTAL_CLK)锁定[read] 1:locked 上电OK回读[read]