NOIP1SN025K芯片整体使用方法,与NOIP1SN1300A相似:
- 需要提供必要的电源
- 需要提供时钟
- 需要控制复位
- 需要进行SPI配置内部寄存器
- 需要对32路LVDS图像数据进行解串。
两者的区别也是有的:
- NOIP1SN025K的图像输出分辨率更大,全分辨率为5120*5120;
- NOIP1SN025K的LVDS输出通道增加到了32路。加上时钟和同步,总共需要处理33路高速LVDS信 。对FPGA的性能要求也更高。
- NOIP1SN025K取消了CMOS_PLL时钟输入,只有一路LVDS_CLK输入。频率为输出数据率的一半。
- NOIP1SN025K需要的电源种类更多了,总共需要控制5路电源分布上电。
- APS-H 光学成像尺寸,对镜头的要求也更高,普通的C口镜头很难胜任了,我手里只有一个C口1英寸的镜头,勉强能够用于测试,但是图像会有暗角。
- 探测器的功耗大了, 4.6W左右,对电路设计要求也更高了。
新设计的NOIP1SN025K要求能够实现4096*4096分辨率输出,输出帧率达到100fps。具有DDR存储,能够从USB口输出图像数据。FPGA与探测器之间全部采用LVDS传输线,需要将TTL类型的信 转换为LVDS。
从全分辨率的5120*5120,到4096*4096的输出分辨率,这里采用开窗口的方法,配置探测器的内部寄存器,将窗口开到探测器中心区域,上下左右四周的像素不输出。
探测器的时钟输入采用300MHz,由FPGA提供,sensor输出的LVDS数据率达到了600MHz,可以满足100fps的帧率输出要求。
DDR存储使用了DDR4-2666U(MT40A1G16NR-075),运行频率1.2GHz。采用4片DDR4并行挂接在FPGA上,FPGA使用intel DDR4 ip core,用户接口为avalon-MM接口,扩展数据线宽度为512bit,与32路LVDS数据位宽匹配,大大提高数据存取速度。
FPGA芯片使用stratix10系列1SG280LU2F50,使用SERDES IP Core,对32路LVDS数据进行解串,LVDS数据率为600MHz,每个像素10bit位宽,转换后的并行像素数据率为60MHz。
SERDES IP采用内部PLL模式,手动修改相位的配置方式,例化2个SERDES分布于FPGA的两个bank上,每个SERDES具有17个通道,对32路数据和1路SYNC数据进行串并转换。使用bitslip功能循环检测转换后的数据是否与Training Pattern值匹配,达到匹配后,则转换正常的像素数据。
按照datasheet上的时序要求,首先给探测器提供供电,然后提供时钟,然后提供复位信 ,最后是寄存器的初始化配置。配置完毕,sensor即可输出正常的像素数据了。
32路高速LVDS数据经串并转换后,得到32路并行的像素数据。而sensor输出是以kernel为单位的,一个kernel包含32个有效像素,每行像素分奇数kernel输出和偶数kernel输出,奇数kernel和偶数kernel的像素排序方式是不一样的,以ch0-ch7通道的数据为例,像素输出方式如下:
以第一个kernel为例,程序里面连续接收两个时钟周期的像素数据,也就是64个像素数据,然后对这64个像素数据进行重新排列组合,按照pixel0-pixel1-pixel2……pixel63的顺序格式,存储到DDR4中,像素数据与DDR4之间例化2个fifo分奇偶行进行乒乓操作,将整幅图像数据进行存储。
图像上传采用USB2.0接口,由于USB2.0相对于像素输出速度来说,上传速度较慢,不可能达到实时显示,所以USB2.0传图的目的,只是为了便于调试、观测、调焦等等。
例化了一个FIFO,每次从DDR4中读出一行的图像数据,存储到FIFO中,然后通过USB2.0推送到上位机。
上位机端编写了一个图像采集显示软件,可以显示sensor输出的图像数据,也可以配置sensor的任意寄存器,例如曝光、增益等等。
在帧率100fps条件下,使用默认的曝光和增益设置,采集的目标图像效果如下:
测试条件(配置1英寸C口镜头)
实际目标成像效果
实际目标成像效果
实际目标成像效果
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树人工智能机器学习工具包Scikit-learn211745 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!