官方论坛
官方淘宝
官方博客
微信公众号
点击联系吴工 点击联系周老师
您的当前位置:主页 > 教程中心 > 问题解答 >

MDY专题课产品交流【汇总贴】

发布时间:2021-06-30   作者:admin 浏览量:
一、SDRAM和DDR专题课

【问题1.1】DDR3那个课程,一般线速率能跑到多少?
答:本课程的DDR3内容,是基于XILINX K7芯片,使用的是VIVADO平台。DDR3的时钟频率是800M。用户侧时钟是200M。

【问题1.2】SDRAM和DDR3课程,使用是什么平台?
答:SDRAM部分使用的是QUARTUS平台,着重于讲解SDRAM时序和SDRAM的接口设计。
      DDR3部分,使用的是VIVADO平台,着重于DDR3 IP的生成和上板验证流程。
      DDR3的理论部分,基本上不涉及,建议可以参考SDRAM的理论部分。

【问题1.3】 使用DDR3 IP一定需要读地址FIFO,读数据FIFO,写地址FIFO,写数据FIFO来先进行数据缓存吗?

答:这个理解是不对的。这里没有跨时间域的信号传输的。因为IP核会产生一个本地时钟,这个本地时钟是可以直接采集数据的,假设为clk_ddr_local。

用户可以直接使用clk_ddr_local来往IP核传输数据。

好了,接下来再考虑一个场景:我有一组数据A,产生于时钟域clk;A要写到DDR,DDR的时钟域是clk_ddr_local。

自然地,A要跟时钟域到clk_ddr_local,然后才能写到DDR中,这就需要用到FIFO。

接下来考虑另一个场景:我有一组数据B,产生于时钟域clk_ddr_local;B要写到DDR,DDR的时钟是clk_ddr_local。

由于两个时钟域相同,直接写就好了。(通常来说,这已经不属于DDR的知识了,而是属于跨时钟域处理的知识,是FPGA工程师都应该知道的概念)。


【问题1.4】用户逻辑控制DDR3读写的程序不是需要自己写吗?答:官方一般提供了DDR3的IP核。

用户可以通过DDR3 IP核来进行DDR3芯片的读写。

但是用户需要写逻辑来控制DDR3 IP核。



【问题1.5】课程里会讲如何通过DDR3 IP像写入图像吗?

答:课程中的SDRAM部分,会有例子讲如何写入图像到SDRAM中,DDR3/4也是类似的。

但由于每人的项目不同,所以需要学员根据自己情况来移植。



二、高手修炼专题课
【问题2.1】计数器练习的9.4节中,第二个计数器的代码为什么是计30个呀?我认为应该是3*(8+1)+2=29个。


答:数据位一共是27位,开始位1位,结束位1位,还要注意看上图中,第三字节x后还有1位的0,之后才是结束位,所以一共是30位。


三、实用调试技巧专题课


四、FIFO架构设计专题课

【问题4.1】关于FIFO的深度计算问题,可以看此贴:http://www.mdy-edu.com/jishuwenz/2020/0219/914.html
    此答案来自于明德扬的书籍《手把手教你学FPGA》,电子版可以在此贴下载:http://www.mdy-edu.com/wentijieda/20210410/1324.html


【问题4.2】fifo中,大于等于61时写使能为0,否则与输入信号有关,是下面代码,理解不了。


答:


五、综合项目实践课——温度检测工程




六、综合项目实践课——边缘检测工程

【问题6.1】点拨开发板,下载工程检测工程后,没有反应。
答:注意:下载后,需要按下矩阵键盘的按键0(即左上角第一个按键),才能显示!!!

【问题6.2】点拨开发板可以显示摄像头拍摄过来的图片吗?
答:由于点拨开发板的资源不足,所以无法显示摄像头的图片,如要显示,建议购买MP801开发板

【问题6.3】PCLK的时钟频率问题
答:FPGA提供XCLK给摄像头,摄像头利用XCLK产生PCLK。所以PCLK来源于XCLK,所以XCLK是多少,PCLK就是多少。
      也就是说PCLK和XCLK频率大小一样,只是说可能不同相

【问题6.4】是否不使用PLL,而是用PCLK来作为采集模块的时钟?

答:PCLK经过插件连到FPGA,这其中可能会不稳定。为解决此问题,将PCLK连到PLL,产生一个同频同相的时钟,

使用这个时钟作为采集模块的工作时钟。

      这样,即使PCLK缺少或者不稳定,但产生的时钟也会保持稳定。

【问题6.5】摄像头寄存器配置模块中,配置的是04对应RGB,但是数据手册中RGB应该是01,这是为什么?
答:这里的Bayer RAW本质上是RAW RGB格式,也是RGB格式。
       RAW RGB:在摄像头里没有经过任何处理的数据。
       RGB:在摄像头里经过了ISP等算法处理的数据。

        如果想要最原始的数据,就使用RAW格式;如果要摄像头先美化一下,就使用RGB格式。想要哪种格式,

取决于您的需求。


【问题6.6】边缘检测寄存器是怎么样配置的呢?
答:边缘检测中,ov7670_cfg模块和sccb模块,就是用来配置的,可以参考



七、综合项目实践课——千兆网项目专题课

【问题7.1】千兆网课程里的udp和百兆网通用的吗?

答:本课程讲述的是千兆网,对于百兆网来说,UDP IP MAC和ARP协议都是相同的,

不同的是MAC IP核、FPGA和PHY芯片的接口不同。

      本课程提供的是千兆网的工程,如果要使用百兆网,需要根据上面的内容来修改。

【问题7.2】千兆网课程有实现TCP协议吗?
答:本千兆网课程实现的是UDP协议,没有TCP协议。

【问题7.3】请问下,三速以太网IP核配置时,32bit对齐选项的意义在哪里?

答:在接口为32bit时,每个VLD有效时的数量是4个字节。由于MAC头是14字节,不是4的整数倍,

在发送方向,在补上MAC头后,

必须调整数据(拿出2字节与MAC头最后2字节凑成一个4字节的有效数据),这样处理比较麻烦。  

同时道理,接收方向,去掉14字节MAC头后,

会有一个VLD多出2字节的有效数据,这样调整也麻烦。为此,MAC IP核里有一个功能,

就是32位对齐功能。该功能决定,在SOP位置时,

最高2字节是否为无效数据。 当是无效数据模式时,发送方向插入2字节无效数据+14字节MAC头;

在接收方向,删除前16字节MAC头,

剩下就是效数据。这样处理就方便很多了。



【问题7.4】 只要勾选了32bit对齐功能,IP核自动添加2字节的无效数据?

答:勾选对齐后,接收方向将删除无效数据,直接输出数据,即SOP位置的高2字节也是有效的,

一直到EOP位置。发送方向,

认为从SOP到EOP的位置都是有效的。

 不勾选的话,接收方向,IP核输出、SOP位置的高2字节是无效数据。发送方向,进到IP核的数据里,

将SOP位置的高2字节视为无效数据。



【问题7.5】如下图所示,当使用了PAD_EN功能时,接收方向,会将PAD去掉,但实际上没有去除,

是怎么回事?

 

答:请看下面描述:第一段,当值小于600,该域反映的是长度,才会继续检查PAYLOAD长度,

进而才会有REMOVAL。

当值大于600时,该域反映的是类型而已,则不会REMOVAL。


【问题7.6】课程里会包含TCP协议吗?

答:TCP协议使用逻辑实现非常复杂,所以本课程不会包含此部分内容。


【问题7.7】RGMII支持10M/100M/1000M三种模式吗?

答:RGMII是"吉比特介质独立接口"的含义,即1000M的传输接口。其他几种接口包括GMII、MII等。

注意一下,10M/100M/1000M三种模式,指的是该“芯片”支持这三种接口,不是说RGMII支持。

当芯片采用了RGMII或GMII时,就传输1000M;当采用了MII 100M时,就是传输100M。

注意的是,RGMII和MII的部分管脚是可以复用的。



八、时序约束专题课

(全部内容时序约束的问题,请看如下帖子:http://www.mdy-edu.com/wentijieda/20210410/1294.html)




九、PCIE专题课

【问题9.1】 PCIE视频教程是否有讲简单的pio数据交互?
答:有此方面的内容。

【问题9.2】多少通道都可以吗?
答: 是的,都可以。


十、就业班项目-光纤项目

【问题10.1】光纤项目主要是培训内容是哪些接口?答:主要是培训DDR3/GTX接口

(着重培训的是用户接口逻辑设计,也就是接口代码,而非单纯的IP核使用),

本项目的工程也包括PCIE接口内容,但不会详细教授。


【问题10.2】GTX接口使用的是什么协议?

答:本项目是点对点通信,所以MDY使用GTX IP核后,封装了一层用户协议,

这个用户协议是自定义的,参考了UDP协议的思想。


【问题10.3】本项目的工程和资料可以分享吗?

答:本项目是来自于企业项目,签订了保密协议,只可以培训,不可以外传分享。所以学习本项目,

需要在本人电脑安装加密软件,并在授权后阅读和使用工程以及其他资料。

对于加密软件,需要注意以下几点

1. 本项目提供的资料,只有在安装了加密软件并获得授权后,可以阅读和使用。

卸载后则不能观看和使用。

2. 安装了加密软件后,您电脑新增或者修改的office文档、fpga代码等,都会自动加密。

如果是您私人的文件,可以申请解密。

3. 学习完后,将要求卸载加密软件,本项目工程和资料不能再看,请尽快学习。

4. 项目的视频,可以永远观看,与加密软件无关。


【问题10.4】光纤项目包含PCIE吗?

答:本项目的工程包括PCIE代码,但注意的是,虽然有PCIE代码,但文档资料以及教学内容都不包含此部分,

即不教授PCIE的内容。

如果需要PCIE的学习内容,可以参考MDY的PCIE教程(注意,PCIE教程与光纤项目是完全独立的,

内容没有任何相关性)。


【问题10.5】光纤ip 核的输入时钟是156.25M hz,输出时钟是多少呢?

答:光纤的IP核,有一个从外部时钟芯片过来的时钟,本项目中使用的是156.25M。通过该时钟,IP核产生给“用户侧”的时钟gtx_tx_clk,频率为156.25M。

       同时,IP核会从LANE中恢复出接收时钟gtx_rx_clk,频率为156.25M。

       注意,LANE那边是没有时钟线的。


【问题10.6】pcie(pcie_usr_clk) 用户侧的输出时钟是多少呢?

答:该时钟是150Hhz。


【问题10.7】ddr3(ui_clk )用户侧的输出时钟是多少呢?

答:该时钟是200M。


【问题10.8】光纤最大可以跑多少G?

答:单独从光纤接口来说,光纤接口最多可以跑10G。但如果是4条光纤都跑10G的话,总带宽是40G,PCIE则只能跑20G,即进来的数量多,送给PC的少,这样是不行的。


【问题10.9】现在这个光纤是跑2.5G 吗?是按16bit 数据乘以156.25Mhz 得来的吗?

答:首先是项目需要2.5G的速率,所以光纤要跑2.5G。

       其次,根据2.5G,从而推算出你的用户侧时钟和数据位宽,位宽*时钟频率=2.5G。例如,位宽为1,则意味着用户侧时钟2.5G,这不现实。

       位宽为16位,则时钟频率是156.25M,这是比较正常的时钟;当然,你可以选位宽为32位,时钟频率则为78.125M,也是可以。



十一、就业班项目-精密仪器项目(JESD204B)
【问题11.1】JESD204B专题课有交流群吗?答:购买此课后,均加入MDY的专题课交流群。

【问题11.2】交流群会解答哪方面的内容?
答:购买此课程的同学,需要有一定的FPGA基础,如一定的设计能力、验证能力和调试能力。

       本课程的交流群,将不会详细解答基础问题,例如VERILOG语法;自己修改的代码,如果出错,

请自行定位。

       对于协议、架构等,如有问题,MDY都会详细解答。

【问题11.3】本项目的工程和资料可以分享吗?

答:可以的。视频是加密的,仅限一台电脑使用。


【问题11.4】FPGA的JESD204B参考文档是PG066吗?
答:是的。

【问题11.5】 AD9144的同步信号已经拉高了,这说明已经配置成功了?

答:要使用AD9144成功,可以依次检查以下AD9144的几个寄存器。

      地址OX470:该寄存器用于表示LANE有没有检测到K28.5同步字。如果说FPGA管脚配置错误、时钟有问题、LANE速率有问题(例如双方配置的LANE速率不同,一端为2G,另一端为2.5G;或者信号质量不高,传输有误码等),则读到的值将不正确。

      地址OX471:检查是否所有的LANE都已经同步。如果地址0X470正确,本寄存器不正确,则可能是速率、时钟有问题。

      地址OX472:检查checksum,即校验和是否正确。如果说FPGA和AD9144的参数不同,或者是传递有错误,则此寄存器值不正确。

     地址OX473: 检查ILAS。如果说此正确,基本上都正确了。


【问题11.6】顶层模块jest204b_test中,下面的代码是什么含义?


答:本工程有一个功能,通过按下按键,可以改变信号的频率。工程一共支持6种频率,cnt1值为0~5,分别用来表示6种频率。

       上面代码中的cnt0控制频率的,其是通过控制同一值重复的次数来达到控制频率的目的,例如假设某信号值为01234为100M信号频率,让每个点重复一次,即0011223344,信号频率就变为50M。

        cnt0的值根据cnt1来改变,例如当cnt1为0时,cnt0的值为0~31,当cnt1为1时,cnt0的值为0~15,当cnt2为2时,cnt0的值为0~7。


【问题11.7】如果要实现与工程中不同的分辨率和不同的采样率(即输出波形的频率不同、分辨率不同),要怎么做?

答:如果要改变波形的频率,需要涉及到整个系统不同参数的调整,包括用于通信的lane的个数、时钟频率、IP核的寄存器配置和AD9144的寄存器配置等等。

       具体可以参考视频中,具体应该按下图的步骤来分析:

     

上图中,依次是确定需求,即您希望的信号频率、采样率DAC个数分别是多少,然后据此确定需要多少条LANE;进而确定AD9144的配置;lane的

速率;sample时钟等等。本课程有对应的视频讲解,可以详细理解。请理解视频中介绍的思想,从而应用到您自己的项目中。

实用建议:建议您在我们提供的案例基础上,每次改动一点点,看到正确效果后,再做下一下,最终完成最终的目标。


【问题11.8】案例中,插值为2的意义?为什么要插值?

答:插值,顾名思义,就是在两个数据中间自动插入数据。例如要产生一个波形012345,不插值的情况下,FPGA必须要发送数据012345这几个

数据给AD9144;而在插值为2时,FPGA只需要发送0246数据,然后AD9144自动补充135。

本案例中,为什么要使用插值为2,是假设的一种需求情况。


【问题11.9】在文档《JESD204B协议》中,第52页的下面两个图,为什么这两者的CF不一致?CS又是什么?





答:CS是指一个SAMPLE中的控制位比特数,上面两种情况,每个SAMPLE都加了2位的控制比特,即图中的C1和C0。

注意,图中的“Cr0:3[C1:C0]”,是指Cr0的[C1:C0]+Cr1的[C1:C0]+Cr2的[C1:C0]+Cr3的[C1:C0]。

CF是指一个FRAME CLK中的控制字个数,单位为字节。注意,这里的CF的限定条件是一个“FRAME CLK”。一个FRAME CLK,即上图中的一列数据。

从第一个图可以看出,第一列控制字是Cr0:3[C1:C0],共8比特,所以为CF=1。

从第二个图可以看出,第一列控制字是Cr0:3[C1:C0]和Cr8:11[C1:C0],一列共有16比特,所以CF=2


【问题11.10】在讲解需求时,下面的16是什么含义?


答:这里的16,是我们假设一个正弦波由16个采样点组成,所以由信号频率*16=采样频率。

当然,这里的16假设值,当您的正弦波是由32或者64,或者更大数组成时,当然就不同。我们这里是先确定需求。


【问题11.11】204b配置完了才正常工作还是不配置也能工作,配置完之后会改变工作方式?

答:都是需要配置完才能正常工作的。


【问题11.12】是否应该补充IP核的配置,为什么要那样配?

答:1. 关于各个参数,如CS F M N等参数,在讲解确定需求的视频中,已经逐个分析出来。

          总的来说,是看AD9144文档,看MODE后,根据MODE所推荐的参数来配置。

      2. 得到上面参数后,请阅读一下FPGA IP核的寄存器手册,很简单的,基本上是各个参数配上去就行了。

     3. 配置代码,可以看代码解释视频,后面补充了。



【问题11.13】204b配置文件里面有一个寄存器有疑惑,手册里面写的最小是1,但coe配置成0 。

答:寄存器中,“parameter range 1-256”,是指F这个参数的范围是1-256。但后面有描述,此寄存值的值 = F-1,所以才填为0。

       这里描述有些歧义,但可以用这种方法排除:假设寄存器是1-256,那该寄存器是8位的,无法表示256,矛盾。


【问题11.14】在AD9144的0X308~0X30B这几个寄存器,是用来选择serdin和lan的关系的,这是如何对应的?

答:下面是这几个寄存器的相关描述。


首先,明确概念,SERDIN0~7指的是AD9144芯片上定义的管脚,是物理的,可以去看管脚图。LANE0~7,是指内部表示的LANE编号。

估计是为了灵活性,LANE0~7不是与SDRDIN0~7不是一个一个对应的,其对应关系是可以配置的,上面几个寄存器就是起这种作用。

例如,LANE0可以与SERDIN0对应,这个时候的0X308[2:0]=0,也可以和SERDIN4对应起来,这个时候0X308[2:0]=4。

其次,理解了上面关系后。你可以根据实际情况来配置,例如,本案例中的AD9144子板,它的SERDIN0~3是没有用的,只使用了SERDIN4~7,这是

固定死的。然后内部的配置,您可以使用LANE4~7来对应SERDIN4~7,也可以使用LANE0~3来对应SERDIN4~7,这由您来决定,都是可以实现的。

最后,再强调一下工程思维:芯片提供了很多功能,您用也可以,不用也可以,您会怎么做?你就选择最简单的来做,甚至就是忽视它存在,也就是使用默认值。


【问题11.15】JESD204B课程里包括AD和DA吗?还是只是其中一个?

答:本课程只包括AD部分,并且是以AD9144为例来说明。注意不同AD和DA芯片,其使用方法都是不同的。本课程只讲述一般思路,需要学员举一反三使用。


【问题11.16】要得到16个点,插2,所以实际传8个点;学习笔记里面生成的正弦波,由于插2了,实际是32个点,这么理解对么?

答:在DA输出端如果16个点组成一个正弦波,插值为2的情况下,FPGA只需要传输8个点/正弦波。如果FPGA传输16个点/正弦波,插值为2的情况下,DA输出端实际是32个点/正弦波。


【问题11.17】为什么v5版本是6.4Glane速率,而v7就是3.2Glane速率了,都是10~40M的正弦波啊?

答:LANE的速率,可以大于等于“需要的速率”,只要能保证传输即可。


【问题11.18】专题课实现的最高采样率是多少?

答:专题课里有多个工程案例,实现的最高采样率是1Gbps。

     理论上,AD9144是可以实现2.8G的,但课程没有提供。


【问题11.19】JESD204B的licensing在哪里获取?

答:请去官网获取临时licensing,链接如下:https://www.xilinx.com/products/intellectual-property/ef-di-jesd204.html

      选择:Evaluate ip选项,按提示操作即可。

      临时licensing,获取后,可以不联网,然后正常生成bit文件。

      正式的licensing,需要购买,如果需要请向官方购买,MDY不提供正式licensing。

      至于临时和正式的区分,暂时未知,目前来说不影响学习用途。


【问题11.20】用户用破解的Vivado能不能使用 JESD204B的Ip?

答:可以使用。但注意,JESD204B的IP是临时licensing,具体请看问题11.19。


【问题11.21】案例中的AXI时钟必须是100M吗?

答:不一定,满足范围即可。在设置IP核时,有提示范围的。


   拓展阅读