搜索
bottom↓
回复: 15

第一次用selectIO,有几个问题咨询一下有经验的大虾。

[复制链接]

出0入22汤圆

发表于 2024-5-25 08:36:04 | 显示全部楼层 |阅读模式
使用的是selectIO实现LVDS,连接一个ADC。
ADC的引脚如下图:


配置来使用DA和DB均传递数据。

主控使用的是ZYNQ,selectIO的配置如下:


这个配置是否正确?

配置之后的模块原理图如下:


其中标注的
1.是否这个diff_clk_in,接ADC的时钟输出(DCO)?
2.这两个data_in_from_pins_p[1:0],是不是ADC的两个数据通道(DA,DB)?这两个差分的引脚模型跟diff_clk_in的模型样子不一样,是正确的吗?
3.这两组引脚clk_div_out,data_in_to_device是不是接fpga的数据接收逻辑?如果是的话,ADC是18bit的,这里的位宽只有16bit,是不是需要2个word才能接收一次ADC数据?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981

出0入91汤圆

发表于 2024-5-25 09:18:47 | 显示全部楼层
本帖最后由 ackyee 于 2024-5-25 09:22 编辑

我记得  select io 进来的数据是没有对位过的, 他只是把 进来8个时钟的数据 合并成一个8bit位宽的数据,这样输出时钟只有 原先的1/8, 对处理能力的要求大大降低。 剩下的对位工作是你自己的事情。

比方说你要采集  8bit 的数据,但是实际这个8bit的数据可能是横跨两个select io 的字节的

之前用 select io 来接收mipi的时候 是这样的, 其他场景我没遇到过。 想必你的18bit应该也是如此


我有点不记得了 好像 bitslip 就是负责这个工作的,发现数据不对的情况下  给bitslip 信号,然后再去检查位是否对齐,直到数据的bit和 adc输出的bit对齐为止

出0入442汤圆

发表于 2024-5-25 09:22:56 | 显示全部楼层
(1)adc输入时钟是外面单独给的,具体你要看手册。
(2)还是看adc手册输出数据格式。
(3)selectio应该有个data io delay,需要设为1ns,否则可能会出问题。。
(4)如果adc是18位数据,selectio是8位,则你需要自己做拼接,每2.25个周期出1个数据。

出0入22汤圆

 楼主| 发表于 2024-5-25 11:22:12 | 显示全部楼层
wye11083 发表于 2024-5-25 09:22
(1)adc输入时钟是外面单独给的,具体你要看手册。
(2)还是看adc手册输出数据格式。
(3)selectio应该 ...
(引用自3楼)

您是说的看这个图吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入22汤圆

 楼主| 发表于 2024-5-25 11:29:36 | 显示全部楼层
ackyee 发表于 2024-5-25 09:18
我记得  select io 进来的数据是没有对位过的, 他只是把 进来8个时钟的数据 合并成一个8bit位宽的数据,这 ...
(引用自2楼)

请问一下如何检查是否对齐了呢?

出0入442汤圆

发表于 2024-5-25 12:16:17 | 显示全部楼层
zxq6 发表于 2024-5-25 11:22
您是说的看这个图吗?
(引用自4楼)

你这张图选10bit,然后边沿对齐,延迟不选

出0入91汤圆

发表于 2024-5-25 13:48:43 | 显示全部楼层
zxq6 发表于 2024-5-25 11:29
请问一下如何检查是否对齐了呢?
(引用自5楼)

我看wye11083 也提到了对位的问题 ,

原先mipi 是有一个SOT 0x8b的,只要读到SOT 就认为 对位成功了。

当然实际写程序的时候 可以前后 把3个周期的 8BIT 拼接成一个24bit ,然后直接做个窗口去拟合你的数据,对准后就可以不用管他了,窗口出来的数据就是对位过的, 另一种方式不断的调整SLIP的信号,直到数据正确为止

但是你的手册里好像没有看到类似mipi的sot这样的同步信号,所以你要自己尝试看看了。   

另外 还有我发现你的数据和数据之间会有很长的间隔。  我不确定在这种间隔下,select io 是否会自动把位对准,如果是的话,你就不需要做任何处理了。 你可以实际采集试试看

出0入22汤圆

 楼主| 发表于 2024-5-26 08:50:21 | 显示全部楼层
wye11083 发表于 2024-5-25 12:16
你这张图选10bit,然后边沿对齐,延迟不选
(引用自6楼)

再请教一下,ADC的规格书上说。

DCO–/DCO+ (Pins 19/20): LVDS Data Clock Output. This
is an echoed version of CLK–/CLK+ that can be used to
latch the data outputs.

CLK–/CLK+ (Pins 23/24): LVDS Clock Input. This is an
externally applied clock that serially shifts out the conversion result.

是不是可以这么理解,
1.DCO是作为数据输出(DA,DB)的同步时钟,接到selectIO的diff_clk_in上?
2.CLK也可以作为数据输出(DA,DB)的同步时钟的功能?
3.CLK是从fpga输出,那么需要使用PLL生成这个时钟吗?还是普通的ip的系统提供的clk即可?

出0入22汤圆

 楼主| 发表于 2024-5-26 08:51:28 | 显示全部楼层
ackyee 发表于 2024-5-25 13:48
我看wye11083 也提到了对位的问题 ,

原先mipi 是有一个SOT 0x8b的,只要读到SOT 就认为 对位成功了。
(引用自7楼)

好的,感谢提醒。现在还在原理论证阶段,手里还没有实物。所以暂时没有验证渠道。

出0入442汤圆

发表于 2024-5-26 08:52:21 | 显示全部楼层
你bing翻译成中文就明白了。

clk按手册要求接。可以是差分晶振,也可以是pll->lvds

出0入0汤圆

发表于 2024-5-26 13:22:18 | 显示全部楼层
本帖最后由 jarodzz 于 2024-5-26 13:29 编辑
zxq6 发表于 2024-5-26 08:50
再请教一下,ADC的规格书上说。

DCO–/DCO+ (Pins 19/20): LVDS Data Clock Output. This
(引用自8楼)


1.DCO是作为数据输出(DA,DB)的同步时钟,接到selectIO的diff_clk_in上?
   是的
2.CLK也可以作为数据输出(DA,DB)的同步时钟的功能?
   最好不要這要用,因為 CLK -> DCO 的 phase 差是不知道的,最好是用 DCO 去敲 DA, DB,看 timing diagram , DCO 的行為很像是 DDR 中的 DQS ,不是一直有 pulse 輸出,是有data才有 pulse。
3.CLK是从fpga输出,那么需要使用PLL生成这个时钟吗?还是普通的ip的系统提供的clk即可?
   可以用FPGA內置 PLL 產生 ADC 可以接收的頻率範圍內的 clock,但是看 timing diagram,輸出給ADC的CLK也不是連續的clock,而是有幾個 bit data, 就產生對應的 pulse 數。這樣作可以少使用一對 pixel/data clock(Video介面用的 lvds 訊號會需有另外一對訊號是用告知對方pixel clock rate 和 pixel data 的 boundry在哪裡)。

出0入22汤圆

 楼主| 发表于 2024-6-2 09:01:52 | 显示全部楼层
jarodzz 发表于 2024-5-26 13:22
1.DCO是作为数据输出(DA,DB)的同步时钟,接到selectIO的diff_clk_in上?
   是的
2.CLK也可以作为数据 ...
(引用自11楼)

好的,非常感谢,已经做板,回来看看效果如何。

出0入22汤圆

 楼主| 发表于 2024-7-17 09:55:12 | 显示全部楼层
jarodzz 发表于 2024-5-26 13:22
1.DCO是作为数据输出(DA,DB)的同步时钟,接到selectIO的diff_clk_in上?
   是的
2.CLK也可以作为数据 ...
(引用自11楼)

请问一下,以上的ADC,我使用selectio,配置如下:



配置上选择的ADC发送固定值



硬件配置的也是2lanes。
所以,正常情况下收到的数据应该是0x330fc。
但是,我实际收到的数据却是 0x1d068

不管怎么移位,也和官方标注的0x330fc对应不起来。

请问一下,我需要如何入手排查这个问题呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入22汤圆

 楼主| 发表于 2024-7-17 09:56:41 | 显示全部楼层
wye11083 发表于 2024-5-26 08:52
你bing翻译成中文就明白了。

clk按手册要求接。可以是差分晶振,也可以是pll->lvds ...
(引用自10楼)

根据时序图,clk并不是连续的时钟,PLL出来似乎不行把?

出0入22汤圆

 楼主| 发表于 2024-7-17 09:57:21 | 显示全部楼层
wye11083 发表于 2024-5-25 12:16
你这张图选10bit,然后边沿对齐,延迟不选
(引用自6楼)

selectio里面选择边沿对齐吗?我似乎没有找到哪个位置可以设置这个参数?

出0入442汤圆

发表于 2024-7-17 11:13:53 | 显示全部楼层
zxq6 发表于 2024-7-17 09:56
根据时序图,clk并不是连续的时钟,PLL出来似乎不行把?
(引用自14楼)

clk不连续就比较麻烦了。你接bufio->bufr,还是/5,x10,然后把data加个1ns左右的idelaye2(眼中心对齐),就可以用源同步接收了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-1 07:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表