tag 标签: 原创奖励

相关博文
  • 2024-12-3 12:20
    70 次阅读|
    0 个评论
    比较器检测模拟脉冲说明(四)
    概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。 前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功能,解决下降沿检出问题,但是使能滞回(Hysteresis)后,无法确保比较器参考阈值电平设置到足够低的水平,这样导致测试系统无法获取足够好的CTR结果。 而导致上述参考阈值电压设置问题的原因,就是MAX9601EUP器件的迟滞范围过大。借着说明(三)中的迟滞示意图,如图1,图中中间“滞回带”(实际应用中需要尽可能减小“滞回带”),对于MAX9601EUP来说最小只能配置到5mV左右。 图1:迟滞工作原理示意图 如图2所示,MAX9601EUP器件手册给出了该器件其迟滞参数可配置的范围,大致是从60mV到5mV左右。也就是为何在说明(三)中给出了,实际测试的时候,在开通迟滞功能后,比较器的参考阈值电压,最小只能设置到7mV,在6mV的时候,比较器输出就会丢失所有输入脉冲信号。所以,开通迟滞虽然可以解决让人头疼的比较器输出下降沿“台阶”和震荡问题,但是却带来另外的问题,即参考阈值电平设置受到了迟滞范围的影响。 图2:迟滞参数配置范围 除了上述指标缺陷外,在选择比较器的时候,还有一个容易忽视的指标,即输入偏移电压指标(input offset voltage)。MAX9601EUP的该指标在稳定室温情况下,最差是正负5mV,而在完整的工作温度范围内,该指标最差值是正负9mV。所以该指标也是导致系统CTR测量结果不理想原因。 总结 所以SiPM读出测试系统第四次迭代的结果,对于时间之路的研究并未得到理想的结果,需要更进一步迭代。需要选择更佳合适的比较器来替换当前使用的MAX9601EUP,目标选择的主要指标要求除了最初选择MAX9601EUP的要求外,着重关注滞回(Hysteresis)功能和输入偏移电压指标。比如,Hysteresis参数可以设置低至1mV左右,输入偏移电压最大值不超过1mV等。 参考 Development of Multi-Channel Fast SiPM Readout Electronics for Clinical TOF PET Detector MAXIM, Dual ECL and Dual/Quad PECL, 500ps, Ultra-High-Speed Comparators
  • 热度 7
    2024-11-18 19:39
    373 次阅读|
    3 个评论
    为什么我要起一个这么奇怪的话题?其实这是我之前困惑的事,进一些知名的高科技企业总能遇到HR关卡 —— 人才测评,让填一个问卷,HR用计算机的结论看看我是否适岗。 在我刚毕业时,在我单纯只做技术工作时,那东西测出来的结果,看起来好像还是那么回事儿,确实结果还可以。但随着我渐渐发展到公司管理层,工作中有越来越多的人和事要平衡,还要承担和发愁部门KPI指标之后,遇到的人才测评结果却总会“爆表”、“异常”、“看不懂”,有的公司通过猎头找到的我,但最后面试官会认为,我是在故意乱填(甚至有的公司夸张到,以为我是同行派来捣乱的)。 后来实在是太好奇这个事了!因为它真的是让我错过了进名企的好机会,有一次虽然面试都到了最后一关完成,在跟各部门领导开茶话会了,但依旧因为人才测评不对劲,那位管入职的领导冲进来质问我,为什么我的思考那项完全不像技术人?现场瞬间鸦雀无声(本来人们是来跟我认脸熟的)。 到底是计算机的算法有问题?还是我自己发展起来的路径有问题? 刚好有幸在我们公司的一个海外研发项目中,接触并学习了组织测量模型的设计原理,还考了个国际测评分析师的证。 于是谜底解开! 原来人才测评工具在设计时都有一个应用范围,不同的应用有对应的不同的算法和指标。但中国国内这方面的市场不太规范,HR也不具备模型的鉴别能力,他们在采购时只能看第三方服务过的企业logo(很多是假的)来判断模型是否专业。而且国内人才测评模型“套壳”的现象非常多,其模型主要来源于两个门类,好点儿的是国外专利到期的医学应用模型、心理学开源模型(用于测量心理有障碍的人群),差点儿的干脆就是类似于FBTI这类娱乐型模型改的(FBTI被美国学术界称为上世纪的骗局)。 我用了我们国际项目中的海外模型测了一下我自己,嗯!真像我的风格:技术型+策略型,本性还有点儿内向,还测出在项目中有53%的负压力(焦虑来源),来源是因为缺乏必要的支持(确实我英语不太好,数据基础也有点儿跟不上)。 总结:国内有的人才测评是用在医学上,测量精神和心理问题的。 写出来可能会被怼,但我只希望高科技企业理智点儿判断你们要的复合型人才,因为技术人员发展到管理层,那些业绩非常好的人,真的会有更契合实际的商业视角与思维,因为他们懂技术能看得更远更实用。 -------- 本文由 姚晶磊(我) 原创,并仅在EET发布,另: 做了跨界内容的微信公众号【牛言喵语】,推动跨界思维与职场经验,欢迎关注!
  • 热度 2
    2024-11-16 13:54
    334 次阅读|
    0 个评论
    不同ADC采样同一前端模拟信号时转换用时差异分析
    概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。 系统数字化简介 项目前端的模拟信号是由PMT或者SiPM加上LYSO探测器产生的整形脉冲波,同时随路产生时间脉冲,这个两个脉冲到达数字化板的时间保持不变,所以可以以时间脉冲为参考检测数字化后的整形模拟脉冲。即数字化脉冲上升沿触发后,固定周期后就可以得到对应的整形脉冲位置。如图1所示,在逻辑上,t1与t2之间的时间间隔在硬件确定后,即已确定,宏观上的差异不会存在纳秒级以上。 图1:模拟信号数字化框图及逻辑时序关系 数字化转换时差展示 这里需要首先明确一个前提,即大转换时差仅存在于AD采样电路中使用了不同型号的ADC。如果使用相同的AD采样电路,虽然存在采样时差,但是差异很小,这时候讨论的不是宏观的时差,而应该是通道之间的skew。 另外,本系统早期使用了AD9288 ADC,中期修改为AD9218,当前升级为AD9633。这里比较的是AD9218与AD9633之间的转换时间差异。如图2所示,即为早期AD9218采集PMT整形脉冲的实际时序关系。 图2:AD9218采集PMT产生的整形脉冲结果 如图2所示,SignalTapII的触发脉冲是时间脉冲信号,时间脉冲触动后,大概10个系统时钟后,整形脉冲被数字化完成并送到了FPGA。SiPM系统的时间关系大致如此,这个时间关系与硬件电路上的布线延时以及线缆连接造成的延时关系不大,因为这里关注的是基于系统时钟(100MHz)周期上的差异。硬件布线、连接等造成的延时基本上达不到时钟周期级别,故可忽略。图3则展示了AD9633采集SiPM后得到的时间脉冲与整形之间的时序关系。 图3:AD9633采集SiPM产生的整形脉冲结果 如上图所示及之前分析,PMT与SiPM硬件电路上产生的时间脉冲与整形脉冲之间时间间隔差异并不大,这个也使用AD9218采样后验证过。而上图使用AD9633采集后得到的这个时间间隔在30个时钟周期,大于图2中的10个时钟周期,差异在20个时钟周期。 数字化转换时差原因分析 通过查看两个ADC的数据手册,发现在流水延迟这个参数上,二者有着很大的不同。AD9218给出的数字输出流水延迟是5个时钟周期,如图3所示中箭头所指。 图3:AD9218正常工作的通道时序 而同样的参数,AD9633给出的是16个时钟周期,所以这里的差异在11个时钟周期。但是,还有9个左右的时钟差异在哪儿呢? 剩下的9个时钟差异应该来自于FPGA内部,因为AD9218是并行输出,FPGA直接获取AD的输出数字码,而AD9633是LVDS串行输出,FPGA收到后首先需要进行解串,解串LVDS逻辑模块运行周期目前还不明确,需要查看资料确认。 参考 LVDS SERDES Intel FPGA IP User Guide: Intel Arria 10 and Intel Cyclone 10 Devvices. AD9218手册 AD9633手册
  • 热度 1
    2024-11-10 13:04
    373 次阅读|
    0 个评论
    ALTERA Cyclone 10器件的使用-7:FPGA片内RAM资源利用率思考
    概述 项目使用的FPGA目标器件为Cyclone 10 GX系列规模最大一颗料,由于功能升级增加了功能模块更多,发现器件片内RAM不够使用了。为了探索片内RAM使用的利用率问题,从代码RTL级与编译软件的优化选项方面进行了思考。表1是器件手册中给出的C10GX器件片内RAM颗粒,即M20K,可配置模式。 表1:Intel Cyclone 10 GX器件单端口片内存储器配置 对于MLAB来说,一个MLAB大小是640bit,是由双功能逻辑阵列模块(LAB)配置而成。MLAB是宽而浅型存储阵列的最佳选择,每个MLAB由10个自适应逻辑模块(ALM)组成,在Intel Cyclone 10 GX器件中,这些ALM可配置成10个32x2模块,这样的每个MLAB可实现32x20的简单双端口SRAM模块,Cyclone 10 GX系列器件中片内存储器性能及分布如表2所示。 表2:Intel Cyclone 10 GX器件中片内存储器性能及分布 项目遭遇片内RAM不够问题 升级的项目,在之前逻辑设计的基础上增加了两个模块,理论上存储器消耗要增加一倍。逻辑修改后,工程全编译时,在Fit阶段报错,提示目标器件无法提供足够的RAM来完成布局,如图1所示。 图1:因RAM不足,导致布局失败 Info ( 170034 ) : Selected device has 587 memory locations of type M20K block. The current design requires 626 memory locations of type M20K block to successfully fit. Info ( 170033 ) : Memory usage required for the design in the current device: 107 % M20K block memory block locations required Info ( 170043 ) : The Fitter setting for Equivalent RAM and MLAB Paused Read Capabilities is currently set to Care. More RAMs may be placed in MLAB locations if a different paused read behavior is allowed. 从编译消息列表中摘出上述3条有关出错的消息,第一条提示器件总共587个M20K颗粒,当前设计需要626个来完成布局。第二条给出当前设计完成布局需要消耗器件片内RAM颗粒数量是目标器件能提供的107%。第三条消息提示Fitter的关于“Equivalent RAM and MLAB Paused Read Capabilities”当前设置是“Care”,如果允许更改该设置,则可以将更多的RAM消耗替换为MLAB消耗。 在Quartus的Settings设置中,找到编译器设置页面,并在该页面中找到属于Fitter的Settings高级设置按钮,如图2所示,并点击此按钮进入高级Fitter设置页面。 图2:编译器设置页面 如图3所示,为Fitter的高级设置页面,找到“Equivalent RAM and MLAB Paused Read Capabilities”设置选项,可以将默认设置“Care”修改为“Don’t Care”,如此再重新编译后则可以解决上述报错问题,如图4。 如图4所示,虽然经过上述修改解决该报错问题,但是整个RAM消耗已经达到了100%。100%的RAM消耗率,如果设计功能已经达到目标要求,则是可以作为最终设计提交,但是这仅仅这是项目的预先编译评估,所以并不能就此停止。比如,在后期调试时需要添加SignalTap功能的时候,就可能面临无RAM可用的情况。同时,还需要了解上述设置修改对逻辑设计是否产生负面影响进行评估,即需要对该设置进行深入了解,否则不要轻易修改默认设置。 如果需要进一步减小RAM消耗,那么就需要针对当前设计进行深度优化,这是下一节的内容。 图3:高级Fitter设置页面 片内RAM耗尽后,优化思考 Cyclone 10 GX最大型号器件,总共有587颗片内M20K颗粒,如图4所示,按照图3所示对Fitter高级设置进行修改后,对工程再编译,全编译无报错通过,编译报告提示所有M20K颗粒已经100%耗尽。 图4:M20K颗粒耗尽统计报告信息 如果查看Fitter给出的各个M20K颗粒使用详尽信息,可以发现,各个颗粒容量的使用率不尽相同,有些颗粒甚至使用了不到1%,如图5所示,这些颗粒有12个。 图5:Cyclone 10 GX系列最大器件中M20K颗粒使用情况信息 上述不到1%利用率的M20K颗粒很大可能是为了与其它颗粒“凑整”过程中被消耗的,一旦被占据,该M20K颗粒空余空间就无法开放给其它逻辑使用了。如此大大降低了RAM颗粒的利用率,在进行逻辑设计的初始阶段就应该核算RAM、FIFO或ROM的大小与实际片内RAM颗粒的尺寸来进行规划,提高资源的利用效率。 举个简单的例子说明RAM被“奢侈”利用,AD9633分解为8个LVDS接收器通道,解串后得到了48-bit的并行数据,这时创建了一个FIFO来缓冲该数字转换数据,所以FIFO的位宽48-bit,深度选择为8。所以一个FIFO实际消耗384-bit的RAM,但是经过编译,该FIFO必须要使用2个M20K颗粒(共40960-bit)来实现,RAM利用率不到1%。是不是很奢侈,很浪费?! 这个FIFO的读写时钟不一样,所以属于异步FIFO,修改图3所示的高级设置选项也无法将FIFO转换为MLAB来实现。在例化FIFO的时候倒是可以强制指定使用MLAB来实现它。 参考 Intel Cyclone 10 Devvices Overview.
  • 热度 2
    2024-11-9 10:26
    319 次阅读|
    0 个评论
    AD9633默认情况下调试记录(二)
    概述 所谓默认情况,即如器件手册中图2所标示那样。对应AD9633的调试,除了涉及到ADC自身,还需要兼顾前端驱动器,系统中AD9633驱动器使用了差分运算放大器,这里不在赘述,笔者已有相关文章论述。 此外,默认情况下的调试,还有一文已经谈及了与FPGA联调时如何让逻辑进行“字”对齐,参考《AD9633在旁路SPI接口时如何出在FPGA逻辑中确认字边界》一文(已更名:AD9633默认情况下调试记录(一))。故本文属于默认调试记录(二)。 AD9633默认工作设置 AD9633是4通道、12位、80/105/125 MSPS高速串行LVDS模数转换器(SST使用100MHz采样率,故选购的芯片为105MSPS即可)。该ADC会自动倍乘采样速率时钟,以便产生合适的LVDS串行数据速率。它提供一个数据时钟输出(DCO)用于在输出端捕获数据,以及一个帧时钟输出(FCO)用于发送新输出字节信号。每一个通道都拥有两组LVDS差分数据线,在默认模式下分别串行传输低数位和高数位数据。图1是AD9633在默认工作模式下的时序图(截取手册中Figure 2): 图1:AD9633默认工作时序图,DDR/SDR,12-bit,双道,x1帧模式 尽管ADI的这类ADC支持单道输出,但是由于采样频率比较高,单道输出串行数据率会超过1Gbps的限制。退而求其次使用双道,这样就需要消耗双倍的FPGA接收LVDS引脚数量。 而ADC的输出双道数据流又有两种模式,如图1所示,分别为BITWISE MODE和BYTEWISE MODE。BITWISE MODE下,双道分别串行传输偶数位和奇数位数据。BYTEWISE MODE下,双道分别串行传输高6-bit和低6-bit。如图2所示,AD9633数据手册中,表21提供片内寄存器21对于串行输出的设定,默认情况下为双道BYTEWISE。用户如果不喜欢这种模式,可以打通器件的SPI通信接口,进行修改配置。 图2:手册表格21显示了AD9633默认输出设定 AD9633默认配置调试遇到的问题 上面介绍了AD9633串行输出的具体模式,到此笔者在调试的时候一开始认为已经认清了该ADC输出的一切面目,然而在FPGA侧对接收数据进行分析时还是遇到了问题,除了上文提到的另一文中,即《默认情况调试记录一》,讨论到的字边界未对齐问题外,还出现了如图3所示的问题。 图3:SignalTap II观测ADC采样后的数字输出 如图3所示,信号源提供了正弦波信号,而AD9633采样出来的只是得到了上半周期。这个问题困扰了我们一段时间,从怀疑信号源输出幅度不够,到怀疑前端驱动器的直流偏置不对等等。把所有想到的可能检查个遍都未能找到问题根源。如图4所示,更改信号源正弦波各种参数,使用单极性、双极性不同频率、幅度,得到不同的正弦波,采样结果都类似。如图5所示,在调整正弦波幅度后,尽管SignalTap II里可以得到完整的正弦波形,但这是在牺牲ADC一半动态范围的情况下得到的。也即ADC仅利用到了图示中上半部分动态范围,下半部分依然被忽视了。 图4:信号源为AD9633提供不同正弦波 图5:调整正弦波幅度后,虽然能观察到完整的波形,但是ADC只有上半部分动态范围 这个问题最终得到解决,只是因为SignalTap II显示问题。因为AD9633默认输出模式是 2的补码 模式,所以正常采样的时候,如果SignalTap II选择的是无符号线显示就会显示如图3或图5那样,如果选择有符号线,则如图6所示。 图6:显示设置成“Signed Line”模式后,ADC完整动态范围可以显现出正弦波完整波形 参考 Quad, 12-Bit, 80 MSPS/105 MSPS/125 MSPS, Serial LVDS 1.8 V ADC Datasheet LVDS SERDES Intel FPGA IP User Guide: Intel Arria 10 and Intel Cyclone 10 Devices.