tag 标签: fpga

相关帖子
相关博文
  • 热度 9
    2019-9-4 22:10
    2756 次阅读|
    5 个评论
    小梅哥FPGA时序分析笔记(6.2)深入现象看本质——庖丁解牛之FPGA内数据传输模型
    通过上一节,我们了解了 FPGA 内部数据的传输形式,接下来我们就可以根据上一节的内容来总结一下 FPGA 内部的数据传输模型了。 时钟和数据传输路径 通过上一节内容中,我绘制的那个 FPGA 内部数据在逻辑单元间的传输模型,我们可以提取归纳出一个通用的 FPGA 内部信号传输模型,如下图所示: 根据上图,可以概括出以下几个关键点: 1、 数据总是从一个 D 触发器( REG1 )传到另一个 D 触发器( REG2 ),我们称数据发出 D 触发器为源寄存器,数据接收 D 触发器为目的寄存器 2、 数据在传输过程中,可能参与多次组合逻辑变换 3、 数据在传输过程中,需要经过可编程互联线传递 4、 分析信号在两个寄存器之间的传递时,需要保证这两个寄存器的时钟信号是同源时钟。 针对第四点,需要补充的是,虽然通过上图可以看到,源寄存器和目的寄存器的时钟为同一个,那为啥要说是同源时钟,不说同一个时钟呢。其实,相信很多人也都知道,在实际使用中,有可能两个寄存器的工作时钟信号并非同一个。典型的例如一个 PLL 输出的两个时钟分别作为目的寄存器和源寄存器的时钟,这种情况下看似时钟不同,但是实际上在分析时,起点都是从 PLL 的时钟输入端开始,而从时钟输入到 PLL 的两个输出时间会算入时钟路径,因此本质上还是同一个时钟,所以上面说的是要求两个时钟是同源即可。 D 触发器基本概念 好了,到此为止,我们已经引出了 FPGA 时序分析的基本模型,接下来,就有必要聊聊,这个模型里面的哪些内容和参数会影响到我们的设计质量。 在正式讲解这个模型之前,我们还是先来回顾一下什么是 D 触发器,下图为一个 D 触发器的典型符号图。 D 触发器概念: 1. D 触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。 2. D 触发器在数字系统和计算机中有着广泛的应用。触发器具有两个稳定状态,即 "0" 和 "1" ,在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。 3. D 触发器在 CP( 时钟脉冲 ) 的前沿(正跳变 0 → 1 )发生翻转,触发器的次态取决于 CK 的脉冲上升沿到来之前 D 端的状态,即次态 =D 。因此,它具有置 0 、置 1 两种功能。由于在 CK=1 期间电路具有维持阻塞作用,所以在 CK=1 期间, D 端的数据状态变化,不会影响触发器的输出状态。 在上面的介绍中,我们需要提取出以下几个关键信息: 1、 D 触发器具有 2 个稳定状态“ 0 ”和“ 1 ”,在时钟( CK )的上升沿, D 端的数据被更新到 Q 端。 2、 在时钟的高电平期间, D 端的数据变化。 Q 端的数据不会跟着变化。 针对第一条信息,我们可以知道 D 触发器在时钟的上升沿时将 D 端的数据存起来,所以,要想保证 D 端的数据能被正确的存起来,需要确保 D 端的数据在时钟上升沿时刻是稳定的,不能处于变化时期。假如在时钟上升沿的那个点,刚好 D 端的数据也在变化,那就真的不知道存储起来的究竟是 0 还是 1 和。而且,理想的 D 触发器,我们认为时钟信号从 0 到 1 的变化所需时间无限短,那么这个上升沿时间究竟是多长呢?理想的时钟上升沿可以被认为是从 0 到 1 这个变化的过程所需的时间是无限短的,但是实际在电路中,这个变化还是需要一定的时间的,不可能无限短。而且 D 触发器也不是真的就只需要在时钟上升沿的那一个时间点需要 D 端的数据是稳定即可,从实际的器件工作情况来看,任何一个 D 触发器要想在时钟的上升沿将 D 端的数据寄存并输出到 Q 端,有 2 个关键的时间参数需要保证。 建立时间,保持时间,输出延迟 为了更加直观的说明这个问题,还是先画一张图说明。 对于实际的 D 触发器来说,为了保证在时钟的上升沿能够正确的将 D 端的数据寄存并输出到 Q 端,需要满足以下两点: 1. D 端的数据必须在时钟上升沿到来之前的一定时间内就已经保持稳定,该时间被称为 D 触发器的建立时间 ( Tsu ) 2. D 端的数据必须在时钟上升沿到来之后的一定时间内继续保持稳定,该时间被称为 D 触发器的保持时间 ( Th ) 如果不能同时满足上述两个条件,那么 D 端的数据就可能无法正确的被寄存并输出至 Q 端。 同时,对于 D 触发器来说, D 端的数据也不可能会在时钟上升沿出现的那一刻就立即更新到 Q 端,从时钟的上升沿到 D 端的数据稳定出现在 Q 端,也有一个时间,该时间称为寄存器的时钟到输出延迟 ( Tco ) 为了防止有人钻牛角尖问为啥会是这样的情况,这里统一回复:这就是 D 触发器的实际电路结构决定的,你也可以认为是通过测量手段测量出来的经验值。而且,从更深次的来说,如果 D 触发器没有这个特性,而是真正理想的特性,那么 D 触发器将没有存在的意义。 FPGA 内数据传输典型时序 好了,通过上面的介绍,相信大家已经对 D 触发器的工作特性有了一个了解了。那么接下来,我们就继续来看,在 FPGA 中,信号从一个寄存器传到另一个寄存器时,其典型时序是哪样的。 下图就是 Altera 的手册中 FPGA 典型的数据从寄存器到寄存器的传输时序图。 按照惯例首先我们还是对该图进行分析,提取出几个我们应该关心的问题。 首先看时钟,上图中可以看到,两个寄存器的时钟脚都是连在一起的,且来自同一个外部 Pin ,只是,从外部 pin 到寄存器 1 ( REG1 )和寄存器 2 ( REG2 )的时钟端口,中间都是有一段路要走的。既然要走一段路,就必然需要花费时间,所以图中也可以看到,从外部 pin 到寄存器 1 ( REG1 )的时间被标记为了 Tclk1 ,同样的,从外部 pin 到寄存器 2 ( REG2 )的时间被标记为了 Tclk2 ,这两个时间都是真实存在的,且并不一定相等。 可能到这里,有些同学就要质疑了,不是说 FPGA 的时钟信号,如果走全局时钟网络,那么到达每一个寄存器的时间都是几乎一样的吗?其实,这种说法是不严谨的,全局时钟网络也不能保证该时钟到达每个寄存器的时钟脚的延迟都是严格一样的,只能保证到达各个寄存器的延迟都尽量的小,且时钟质量尽量的高。至于到达每个寄存器的延迟,肯定是存在,且没有任何一个地方能够保证是完全相同的,只是说可能差距不大。既然现在是在分析微观的信号传输,所以这些微小的差距也都是需要考虑的。 其次看数据传输路径,一开始,数据存在于 REG1 的 D 端口上,当时钟上升沿到达 REG1 时,经过 Tco 时间, D 端数据才会到达 REG1 的 Q 端。 最后, REG1 的 Q 端的数据还需要经过 FPGA 内部的可编程连线,还有可能需要参与各种逻辑运算,才能到达目标寄存器,也就是 REG2 的 D 端,在从 REG1 的 Q 端传到 REG2 的 D 端过程中经过的各种连线和组合逻辑功能,也都是需要耗费时间的,这些时间在分析时统称为组合逻辑延迟,标记为 Tdata 。 那么,在这样的传输模型中,这些参数又将怎样影响我们的设计呢?为了不让大家越看越迷糊,这里先按照笔者平常调试工程时候的感觉,使用典型值做一个假设的情形。 假设: a) CLK 信号的频率为 200MHz ,既周期为 5ns b) REG1 的 Tco 时间为 0.5ns c) REG1 的 Q 端到 REG2 的 D 端,组合路径延迟 Tdata 为 6ns d) REG2 的建立时间 Tsu 为 0.8ns 那么这个设计,能够保证 REG2 正确的接收 REG1 发出的数据吗? “ 不能 ” ,可能马上就会有人脱口喊出这个答案。理由为: 1. 从时钟到达 REG1 的时钟端口,到 REG1 的 D 端数据能够出现在 Q 端,首先要经过寄存器输出延迟 Tco , 2. 然后数据再从 REG1 的 Q 端传到 REG2 的 D 端需要经过组合逻辑延迟 Tdata , 3. 再然后,前面已经说了,要想 REG2 能够在时钟上升沿时寄存 D 端口上的数据,需要数据在时钟上升沿到来之前最少 Tsu 时间就稳定下来, 4. 而根据上述假设, Tco + Tdata + Tsu 的时间为 7.3ns ,已经远远超过了一个时钟周期 5ns ,也就是说,当时钟上升沿到达 REG2 的时钟端口时,数据还没有就绪,所以无法被正常接收 ” 。 上述回答有理有据,貌似很正确,不瞒大家说,我在很长一段时间内,也是这样认为的。但是,上述分析却忽略了关键的一点,那就是时钟信号传输也是有延时的。接下来,我们把上述假设完善一下:假设时钟信号从外部 pin 传输到 REG1 的时钟端需要 1ns ,而传输到 REG2 时钟端需要 3.5ns ,那么这个时候,这个设计能够保证 REG2 正确接收 REG1 发出的数据吗? 答案是肯定的,此种情况下, REG2 就能正确接收 REG1 发出的数据了,因为真实的传输路径中,不仅有数据传输延迟,还有时钟延迟,而时钟延迟,又是大家在分析时候非常容易忽略的一类。毕竟大家在刚开始学习 FPGA 的时候,一直潜移默化的认为,时钟信号到达所有寄存器的时间都是一样的。所以,在这里,通过这样一种打脸的方式,希望大家能够纠正这种错误的认识,在分析信号传输的时候,不仅要分析数据传输延迟,还要分析时钟传输延迟。 好了,借着强调时钟延迟重要性的便道,又凑了大半页篇幅。接下来,我们终于可以用最有说服力的波形说话了。 上图很好的展示了我们前面分析的模型中各个节点的时序波形。 l CLK 认为是时钟输入脚输入的时钟信号。 l REG1.CLK 为 CLK 到达 REG1 的波形,相对于 CLK ,有一个延迟,设为 Tclk1 。 l REG1.Q 为 REG1 的输出端数据值,从 REG1.CLK 上升沿到来,到其值更新并稳定下来,存在一定的延迟,该延迟值名为 Tco 。 l REG2.D 为 REG2 的输入端 D 端口上的数据波形,该信号由 REG1.Q 经过组合逻辑和内部连线传递后到达,因此 REG1.Q 到达 REG2.D 这个时间是数据传输时间,为 Tdata 。 l RERG2.CLK 是 CLK 到达 REG2 的波形,相对于 CLK ,有一个延迟,设为 Tclk2 。 好了,到此时,相信又有人要问了,嗯,不错,你说的我都明白了,那么,然后呢,你说的这一些,与我的设计和约束有什么关系呢?难道我需要用你这个图来指导我约束?我要约束什么呀?这个嘛,说来话长。欲知后事如何,且听下回扯淡。
  • 热度 12
    2019-9-1 21:28
    4107 次阅读|
    2 个评论
    小梅哥FPGA时序分析笔记(6.1)深入现象看本质——庖丁解牛之FPGA可编程原理
    上一次发博客,已经是2个月前了,这中间两个月,干了件很有意义的事情,尤其是对于自己来说,感觉学到了非常多的知识和经验,每天都很忙,忙到没时间逛网站博客,终于忙完闲下来了,连载的事情可不能忘,终于可以书接上回了。 经过前面的几节内容,相信大家已经对时序约束的魅力有了一个大致的印象,而且也都认同了时序约束对于保证一个系统能够可靠运行起着至关重要的作用。那么,为什么时序约束能够解决这些问题?时序约束的原理又是什么?我们又该如何正确的去进行时序约束,以达到想要的性能呢?接下来,我先把我学习时序约束的时候对于时序的理解笔记分享出来。 要把这些问题都研究清楚,不能急,我们首先得知道, FPGA 中是如何实现相应的逻辑功能的。 FPGA 可编程原理 FPGA 是如何实现现场可编程的?大家可能都知道, FPGA 是基于查找表原理实现任意组合逻辑的,那么时序逻辑呢?大家又都知道, FPGA 中有很多的 D 触发器,既然有了 D 触发器,加上时钟,就能实现时序逻辑了。那么不同的 D 触发器之间怎么连接起来呢?答案就是内部连线。 FPGA 内部有大量的长的短的连线,这些连线能够将不同的 LE 的输入和输出连接起来。这样,假设每个 LE 实现一个单独的功能,然后多个 LE 的输入输出按照一定的规则使用连线连接起来,就能实现复杂的功能了。光写文字估计大家越看越迷糊,那我就画图吧。 上图为一个最最基本的 FPGA 架构,且不包括 I/O 块。通过上图右半部分可以看到,一个 FPGA 中以阵列的形式分布着很多的小逻辑块,这个块就是我们熟知的逻辑单元( Logic Elements ,简称 LE ),这些所有的小块共同构成了 FPGA 的可编程逻辑门阵列,而为了把不同的逻辑单元连接起来, FPGA 中分布着大量的可编程互联资源,通过对这些可编程互联资源编程,就能够把各个不同的逻辑单元的输入输出连接起来,在上图的上半部分就演示了部分互联资源将多个逻辑单元按照一定的规则连接了起来。这样看起来,是不是和我们的电路板模型非常的相似,在电路板上有各种芯片,每个芯片都有很多的管脚,通过 PCB 板走线把这些管脚按照正确的方式连接到一起,就能够形成一个可以实现特定功能的电路板了。 那么,上面说到的逻辑单元又是什么呢?在上图的左半部分,绘制了一个逻辑单元的内部示意图(简化版),可以看到,一个逻辑单元由一个查找表( LUT )和 D 触发器( DFF )组成,当然,真实的逻辑单元里面可能还包含了很多其他辅助的电路,这里省略。 LUT 有 4 个输入端口( a 、 b 、 c 、 d ),一个输出端口( o )。 LUT 的输出 o 可以送给 D 触发器的数据输入端口 D ,也可以不经过 D 触发器直接输出。当然了,实际上 D 触发器的输入也可以不来自于 LUT 的输出,而来自于其他逻辑单元的输出。不经过 D 触发器输出,那这个 LE 实现的就是一个纯组合逻辑,经过 D 触发器输出,那这个 LE 实现的就是一个时序逻辑。 一个 LUT 里面可以实现各种组合逻辑,与门、或门、非门等等, LUT 里面实际有 16 个 1bit 的基于 SRAM 结构的存储器,能够对应 a 、 b 、 c 、 d 四个输入的逻辑组合的所有可能, Quartus 通过向这 16bit 的存储器里写入不同的初始值,就能使 a 、 b 、 c 、 d 四个输入在不同的状态下输出不同的逻辑结果,从而实现使用一个 LUT 实现各种组合逻辑的功能。 既然 FPGA 已经能够实现各种的基本逻辑门功能了,而且还有 D 触发器能够实现时序逻辑功能,那么,要实现复杂逻辑功能,无非就是把众多的基本逻辑功能联合起来,从而达到复杂逻辑功能的目的。所以,我们可以认为, FPGA 中实现复杂的逻辑功能,大概就是下面的样子(当然下图所示的逻辑远远算不上复杂逻辑,只是我自己简画的一个 FPGA 内部数据在逻辑单元间的传输模型图)。 我们先对上图进行一个简单的分析,从图中可以归纳出以下信息: l 整个设计有 6 个输入信号( a, b, c, d, e, clk )一个输出信号( out ) l 5 个输入信号 a, b, c, d, e 进入设计后先分别使用一个 LE ( LE0~LE4 )中的 D 触发器打了一拍(设经过 D 触发器后的信号分别为 r_a, r_b, r_c, r_d, r_e ) l D 触发器输出的 r_a, r_b, r_c, r_d 信号进入一个 LE ( LE-5 )中的 LUT 进行了相关的逻辑运算后直接输出,没有经过 LE 的 D 触发器 , 。设 LUT 的输出信号名称为( w_g ) l LE-5 的输出信号 w_g 与 LE-4 的输出信号 r_e 再送入一个 LE ( LE6 )中进行逻辑运算, LUT 的运算结果输出命名为 w_h l w_h 进入 LE6 的 D 触发器,经过该触发器寄存一拍后输出,输出信号命名为 r_o 所以,通过上图我们可以清楚的看到, FPGA 中各种复杂的逻辑,都是使用基本的逻辑单元( LE )构建各种特定的简单的组合逻辑或时序逻辑功能,然后使用片上的可编程互联线资源将这些独立的逻辑功能连接起来实现的。事实上,上图逻辑,可以对应下述使用 Verilog 描述的电路: module logic ( input clk , input a , input b , input c , input d , input e , output out ); // 定义 5 个内部寄存器 reg r_a , r_b , r_c , r_d , r_e ; wire w_g , w_h ; // 输出寄存器 reg r_o ; // 将 IO 输入信号首先使用 D 触发器寄存 always @( posedge clk ) begin r_a <= a ; r_b <= b ; r_c <= c ; r_d <= d ; r_e <= e ; end // 第一级组合逻辑 assign w_g = r_a & r_b | r_c | r_d ; // 第二级组合逻辑 assign w_h = r_e | w_g ; // 寄存器输出 always @( posedge clk ) r_o <= w_h ; // 将寄存器输出信号连接到输出端口 assign out = r_o ; endmodule 当然了,不是说上面的图只能对应这一段代码,毕竟 LUT 内部实现的组合逻辑功能是可以不同的,而组合逻辑功能不同,对应实现的功能也就不一样了。上述代码只是结构上符合上图。 好了, FPGA 的可编程原理讲到这里就 Over 了,这里所谓的 Over ,不是说知识点讲完了,而是有了这些内容,已经差不多可以辅助我们进行下一步的传输分析了,更多 FPGA 可编程原理性的知识,这里暂时没用到,也就不介绍了。 嗯哼,一本正经的敷衍完事了。下楼买泡面去罗。呲溜。
  • 热度 1
    2019-8-23 13:55
    672 次阅读|
    0 个评论
    MIPI DPHY接口的若干种实现方案概述
    MIPI DPHY 接口的若干种实现方案概述 一、 MIPI DPHY 接口简介 MIPI DPHY 是 MIPI 的一种物理层,其协议层有 CSI 和 DSI 两种,其中 CSI 主要用于图像接入,如图像传感器 Sensor ; DSI 主要用于图像输出,如手机屏幕等。 有关 MIPI DPHY 及 CSI 和 DSI 的技术背景可以 Google ,技术细节也可以参阅对应的标准文档(标准可扫描二维码添加公众号或 QQ 群获取)。这里主要介绍以下几个关键点: ( 1 ) MIPI DPHY 的是源同步系统,由发送端输出时钟; ( 2 ) MIPI DPHY 分为低速( LP )和全速( HS )两种传输状态,其中低速模式下不强制要求输出时钟且电平标准不一样; ( 3 ) MIPI DPHY 在 LP 状态下输出电平是 LVCMOS 1.2V ,在 HS 状态输出电平为 SLVS 。 MIPI DPHY 物理层的以上三个关键的特性,就意味着实现它具有一定特殊性,下面就实现方案一一道来。 二、 MIPI DPHY RX 实现 DPHY RX 包括 CSI 和 DSI 两种协议。 MIPI CSI 常用于图像传感器 Sensor 接入(实际上几乎所有的消费级 CMOS Sensor 的输出接口都是 MIPI ),其中最广泛的要数手机摄像头了。 MIPI DSI 主要用于显示,其中手机屏幕、 PAD 之类的消费级产品几乎都是,其中 DSI 的 RX 一般是在屏端,有专门的 ASIC 直接实现或转成 LVDS ,这样的芯片有 ICN6201 、 ZA7783 、 SSD2130 、 SSD2212 等专门芯片,这里不展开介绍。主要是对 MIPI DPHY CSI 接收的几种实现方案展开说明。 ( 1 )实现方案一 采用带 MIPI ( DPHY RX )接口的专门处理器( SoC )。 这方面手机就是典型的例子,无论是高通、华为还是三星,它的手机 SoC 一定支持 MIPI DPHY 接口,最新的还支持 CPHY (一种内嵌时钟的 3 线 /Tri 的传输方式)。使用专门处理的实现方式咱们不细说了,这个地球人都了解。 ( 2 )实现方案二 采用专门的接口转换芯片。 对不能直接支持 MIPI DPHY 接口的处理平台又必须接入 MIPI 的,往往会考虑采用专门的接口转换芯片,如 TOSHIBA 的 TC358746AXBG 和 TC358748XBG 系列,前者实现从 MIPI CSI 到 24bit 并行数据的转换,后者实现 24bit 并行数据到 MIPI CSI 的转换。这样,接口的实现方案就变成如下图 1 所示了。 图 1 MIPI CSI 和并口互转方案示例 ( 3 )实现方案三 使用 FPGA 。 在很多情况下,需要 FPGA 来实现一些定制化的需求。使用 FPGA 的方案,大约归纳起来有三种: a )采用带支持 MIPI_DPHY_DCI IO standard 的通用 FPGA 目前熊猫君了解到的可以直接支持 MIPI_DPHY_DCI 电平标准的 FPGA 仅有 Xilinx 的 UltraScale 系列和 UltraScale+ 系列的直接支持( HP BANK Only ), IO 结构如图 2 。不过呢,这两个系列的 FPGA 是 Xilinx 的最新的高端器件架构,价格可是不菲。 图 2 UltraScale(+) MIPI DPHY DCI IO 结构 b )采用低成本专用 FPGA 说起专用 MIPI 接口 FPGA , Lattice 应该是典范,他们家有一个专门的 CrossLink 系列支持 MIPI DPHY CSI 和 DSI ,请看下表 1 。 表 1 Lattice CrossLink 系列器件列表 从表 1 可以看出,该系列 FPGA 的逻辑量均为 5936 个 LUT ,支持 1~2 个 4Lane MIPI 通道,小封装低功耗,非常适合做 MIPI 到并口之间或 MIPI 到 LVDS 之间的接口转换,实现思路如图 3 所示。 图 3 CrossLink 器件实现架构 c )电平转换 LVDS 后接入 FPGA FPGA 接入的第三种方法就是通过将 SLVS 电平转换到 LVDS 接入 FPGA ,这种方案不挑 FPGA ,只要支持 LVDS 且 IO 速率够,逻辑量够用就行。针对不同的速率,一般有两种做法: 第一种做法: 采用电阻网络进行电平转换。 这种方法主要针对单 Lane 通道速率在 800Mbps 以下的情况,电阻匹配网络的设计如下图 4 所示。 图 4 MIPI DPHY 电阻匹配网络接收方案 第二种做法: 使用专门 ASSP 芯片转换到 LVDS 。 使用专门 ASSP 进行转换主要针对单 Lane 速率在 800Mbps 以上的情况,目的是为了确保信号完整性,确保在高速率下的眼图质量。当然,这种方法也不挑 FPGA ,用哪家的都行,只要支持 LVDS 且 IO 速率够,逻辑量够用就可以了。国外有一家公司专门做这种 MIPI DPHY 转 LVDS 的 ASSP 芯片( MC20001 ),实现方案如下图 5 所示,这种方案可以支持到 2Gbps/Lane 速率以上,只要 FPGA 的 IO 速率够用。 图 5 使用 MC20001 转换 ASSP 接收方案 以上就是对 MIPI CSI 几种实现办法的简单总结。 三、 MIPI DPHY TX 实现 MIPI DPHY TX 实现方案跟 MIPI DPHY RX 一样,也是分成三大类:① 采用带 MIPI ( DPHY TX )接口的专门处理器( SoC )、② 采用专门的接口转换芯片、③使用 FPGA 。第①项不再赘述,仅就②③项与 MIPI DPHY RX 的实现差异部分做描述。 ( 1 )采用专门的接口转换芯片 MIPI DPHY TX 专门的并口( DPI )转 MIPI 的片子很多,比如支持 DSI 协议的有晶门科技,就是专门从事此类显示相关桥片的设计(如 SSD2828 );还有前面提到的 TOSHIBA ,也提供并口到 MIPI CSI 的互转。 ( 2 )使用 FPGA 使用 FPGA 还是三种种选择,一种是使用支持 MIPI DPHY 标准的 UltraScale ( + )器件,一种是使用 Lattie 的专用 CrossLink 系列器件(参照前文),一种是使用通用 FPGA 。使用通用 FPGA 也是一样,可以使用电阻网络进行电平的转换或使用专用的 ASSP 芯片,对速率适配的条件也是一样,下图 6 是使用通用 FPGA 的实现方案。 图 6 使用通用 FPGA 实现 MIPI DPHY TX 方案。 以上是对实现 MIPI DPHY 的若干种方案描述,希望能对有需求的同行们起到抛转引玉的作用,其中有不对之处,请不吝赐教。有关技术方面的探讨,欢迎加入 QQ 群或微信公众号讨论交流。
  • 2019-7-19 00:32
    497 次阅读|
    0 个评论
    基于FPGA和万兆网的GigE Vison设计方案
    基于 FPGA 和万兆网的 GigE Vison 设计方案 作者: Hello , Panda 本文简要描述基于万兆网的 GigE Vison IP 设计方案。 一、 GigE Vsion 协议要点 GigE Vison 协议基于普通的以太网物理链路,运行在 UDP 协议层之上,包含控制协议 GVCP 和数据流协议 GVSP 两大部分,整个层次结构如下图 1 所示。 图 1 GigeVison 协议层次结构图 GigE Vison 协议的要点如下: ( 1 )上电或复位完成后必须先进行 IP 配置和设备枚举,必须支持 DHCP 和 LLA ( Auto IP )两种 IP 配置方式; ( 2 )在 UDP 层上建立应答握手机制以保证传输, GVCP 采用 3956 端口,数据长度必须以 32bit 为边界,数据不可分包传输; ( 3 )设备必须支持心跳功能以确认处于连接状态; ( 4 )支持控制( 1 个)、数据流( 1~512 个)和消息( 0~1 个)三种通道,每个通道分配不同的 UDP 端口,控制通道支持三种不同的访问权限; ( 5 )必须支持最小规模的 ICMP ( GigeVsion 要求必须支持 Ping 命令); ( 6 ) GVSP 的数据包以字节为边界,数据包的大小由第一个有效的 test packets 决定,支持错误恢复和流控制; ( 7 ) GVSP 数据传输的单位为 Block ,一个完整的 Block 由 Data Leader 、 Data Payload 和 Data Trailer 构成; ( 8 )所有的 Gige Vison 相机都必须在他们的 XML 描述文件中强制制定相机的参数信息。 ( 9 ) bootstrap 寄存器及 XML 文件需要非易失 Flash 硬件支持。 二、 IP 功能设计方案要点描述 GigE Vison 逻辑 IP 需要实现图 1 所示的所有协议层,方案中硬件平台基于 Xilinx 7 系列器件 XC7K325T/XC7K160T ,下图 2 是 GigE Vision IP 核的模块框架结构。 图 2 GigE Vision IP 核的框架结构 ( 1 )物理层 物理层使用 Xilinx 10G Ethernet Subsystem IP 核,版本 v3.1 。对外数据接口例化为 AXI4 Stream ,位宽 64bit ,数据时钟 156.25MHz ;配置接口例化为 AXI4-Lite ,位宽 32bit ,时钟频率 100MHz 。 IP 核配置通过 Microblaze 软核完成,并且使能 Jumbo 帧功能。功能、接口、配置和使用说明参见 Xilinx 官方文档 PG157 。 ( 2 ) IP/UDP 层 IP 层协议仅支持 IPv4 版本, IP 数据报头 Options 项为空;需要支持 DHCP 、 ARP 和 ICMP 协议,内部通信采用 64 位 AXI4 Steam 总线通信。 ( 3 ) GVCP/GVSP 协议 支持 GigE Vison Specification version 1.0 标准描述的所有必须支持的项, GVSP 数据包负载类型支持 Payload type = RawData/YUV422-8bit/RGB888 。为完整实现功能,部分控制放在处理器上完成(本设计实例使用 MicroBlaze ),需要掉电保存的项存储在外部 Flash 中,需要大量缓存的数据存储在片外 DDR 中。 RTL 描述语言使用 Verilog ,编译工具使用 Xilinx Vivado2016.4 ,仿真工具使用 ModelSim 10.2C 。 备注: ( 1 )为简化逻辑端的设计难度,可将 GVCP 协议放在 Microblaze 里面实现,使用 ZYNQ 系列器件的,可以直接在 PS 里运行; ( 2 )物理层使用千兆网的,本方案仍然可行,只需修改物理层接口即可;使用 ZYNQ 系列器件的,可以直接在 PS 里软件实现所有的 GVCP 和 GVSP 协议; 三、测试结果 在 Xilinx K7 325T 器件上实现完整的系统(包括 DDR Mig 、 Microblaze 等),占用 Slice 约 30K 。 与 PC 进行点对点数据传输测试,稳定传输速率约为 6.5Gbps ,可轻松传输 4K 无压缩原图或一些特殊图像数据如超声、 CT 、雷达、高速 ADC 采样结果等原始数据。
相关资源
  • 所需E币: 2
    时间: 2020-1-17 18:36
    大小: 21.13MB
    上传者: wfengyin
    一个学习了很多年FPGA人写的书,从接触到精通,写的很中肯。希望对所有刚刚踏入FPGA大门的人,有所帮助!这本所谓的书,恐怕不一定能够带还没入门的菜鸟杀进FPGA开发的大门,当然也肯定不能达到进阶的目的。但是,姑且应了Bingo老弟所谓的对“图像的直觉”,确实图文并茂的从某一个山寨面把FPGA开发赤裸裸的展现给了大家。本书条理清晰,资源丰富,适合入门学习和参考,我会推荐给所有的FPGA爱好者。送大家一句毛主席的词:雄关漫道真如铁,而今迈步从头越。
  • 所需E币: 4
    时间: 2019-12-24 14:10
    大小: 2.07MB
    上传者: quw431979_163.com
    北京邮电大学的研究生田耘先生和赛灵思公司上海办事处的苏同麒先生等人都参与了电子书的编写,他们是有丰富设计经验的高手,在大家的共同努力下,这本凝结着智慧的FPGA电子书终于和大家见面了。希望这本电子书可以成为对FPGA有兴趣或正在使用FPGA进行开发的工程师的手头设计宝典之一,也希望这个电子书可以对工程师们学习FPGA开发和进阶有实用的帮助。……
  • 所需E币: 5
    时间: 2020-1-4 12:41
    大小: 4.4MB
    上传者: 二不过三
    FPGA开发全攻略-技巧篇《电子工程师创新设计必备宝典系列之FPGA开发全攻略》FPGA开发全攻略―工程师创新设计宝典下册技巧篇2009年2月1.0版FPGA开发全攻略―工程师创新设计宝典下册技巧篇前言张国斌电子书主编2009年2月25日2008年,我参加了几次可编程器件供应商举办的技术研讨会,让我留下深刻印象的是参加这些研讨会的工程师人数之多,简直可以用爆满来形容,很多工程师聚精会神地全天听讲,很少出现吃完午饭就闪人的现象,而且工程师们对研讨会上展出的基于可编程器件的通信、消费电子、医疗电子、工业等解决方案也有浓厚的兴趣,这和其他器件研讨会形成了鲜明的对比。Garnter和iSuppli公布的数据显示:2008年,全球半导体整体销售出现25年以来首次萎缩现象,但是,可编程器件却还在保持了增长,预计2008年可编程逻辑器件(PLD)市场销售额增长7.6%,可编程器件的领头羊美国供应商赛灵思公司2008年营业收入预计升6.5%!在全球经济危机的背景下,这是非常骄人的业绩!也足见可编程器件在应用领域的热度没有受到经济危机的影响!这可能也解释了为什么那么多工程师对可编程器件感兴趣吧。在与工程师的交……
  • 所需E币: 4
    时间: 2020-1-4 12:41
    大小: 6.72MB
    上传者: 2iot
    FPGA开发全攻略-基础篇《电子工程师创新设计必备宝典系列之FPGA开发全攻略》FPGA开发全攻略―工程师创新设计宝典上册基础篇2009年2月1.0版FPGA开发全攻略―工程师创新设计宝典上册基础篇前言张国斌电子书主编2009年2月25日2008年,我参加了几次可编程器件供应商举办的技术研讨会,让我留下深刻印象的是参加这些研讨会的工程师人数之多,简直可以用爆满来形容,很多工程师聚精会神地全天听讲,很少出现吃完午饭就闪人的现象,而且工程师们对研讨会上展出的基于可编程器件的通信、消费电子、医疗电子、工业等解决方案也有浓厚的兴趣,这和其他器件研讨会形成了鲜明的对比。Garnter和iSuppli公布的数据显示:2008年,全球半导体整体销售出现25年以来首次萎缩现象,但是,可编程器件却还在保持了增长,预计2008年可编程逻辑器件(PLD)市场销售额增长7.6%,可编程器件的领头羊美国供应商赛灵思公司2008年营业收入预计升6.5%!在全球经济危机的背景下,这是非常骄人的业绩!也足见可编程器件在应用领域的热度没有受到经济危机的影响!这可能也解释了为什么那么多工程师对可编程器件感兴趣吧。在与工程师的交……
  • 所需E币: 3
    时间: 2020-1-5 00:29
    大小: 921.52KB
    上传者: 978461154_qq
    《ISE4.1i快速入门》……
  • 所需E币: 4
    时间: 2020-1-5 21:44
    大小: 103.65KB
    上传者: 16245458_qq.com
    全套中文《FPGA入门及提高教程》从入门到高手之路!因为本论坛无法上传如此巨大的资料,所以请大家去“Altera中文论坛”下载。http://www.alteraforum.com.cn/showtopic-365.aspx1.[Altera.FPGA入门及提高教程]Altera产品和资源入门指南.zip24.6MB2.[Altera.FPGA入门及提高教程]如何建立一个简单的工程.zip83.8MB3.[Altera.FPGA入门及提高教程]配置软件方法.zip88.6MB4.[Altera.FPGA入门及提高教程]Cyclone.IV.FPGA:特性和功能.zip16.5MB5.[Altera.FPGA入门及提高教程]使用Quartus.II.软件:简介.zip58MB6.[Altera.FPGA入门及提高教程]Verilog.HDL基础.0.5小时.zip17.7MB7.[Altera.FPGA入门及提高教程]VHDL.基础.zip40.4MB8.[Altera.FPGA入门及提高教程]可编程逻辑基础.zip63.2MB9.1[Altera.FPGA入门及提高教程]使用Quartus.II.软件:基础.zip189M……
  • 所需E币: 3
    时间: 2019-12-25 02:27
    大小: 2.94MB
    上传者: givh79_163.com
    XilinxFPGA华为高级技巧文档编号产品版本密级深圳市华为技术有限公司V1.0内部公开研究管理部文档中心产品名称FPGA设计高级技巧共62页FPGA设计高级技巧Xilinx篇(仅供内部使用)拟制周志坚中研基础日期2001/09/15审核日期yyyy/mm/dd批准日期yyyy/mm/dd深圳市华为技术有限公司版权所有不得复制内部公开FPGA设计高级技巧Xilinx篇请输入文档编号……
  • 所需E币: 3
    时间: 2019-12-25 03:06
    大小: 6.91MB
    上传者: 微风DS
    华为FPGA设计全套……
  • 所需E币: 5
    时间: 2019-12-24 19:49
    大小: 28.5KB
    上传者: 978461154_qq
    FPGA多年学习总结一个FPGA高手的总结思想:设计方面:总体方案主要是涉及模块划分,一级模块和二级模块的接口信号和时序验证方面:采用总线功能模型的验证方式。目的,实现验证的自动化很早之前就想对这几个月工作经历写的东西,一是作为自己的总结,二是自己也很想将自己这段时间的一些经历和大家分享一下,希望对初学者而言能使得他们能少走一些弯路。只是公司里的事情很多,最近经常加班,所以一直拖到现在。能来到这家公司应该是一种缘份--缘起NIOS。当初三月份altera来我们学校建立SOPC实验室的时候自己还不知道NIOS是什么东西,只是想在altera的FAE讲完NIOS后多问他几个时序约束的问题,然后拷一份PPT回去。但是想不到因为那一份NIOS的培训资料,我认识了edacn上的cawan,他给我讲了很多NIOS的东西,之后是丁哥在SOC版帖了位NIOS大赛的通知,然后我和队友就去报了名,并去川大参加了NIOS的培训,认识了峻龙的FAE----也是我现在的boss。在这里要谢谢cawan、丁哥、和我一起参加NIOS竞赛的队友刘科以及我的BOSS,是他们让我有了这一段的经历。在公司里的几个月,做的项目其实不多,但是收获还是有一些,我觉得收获最大的是设计理念的改变,这也是我这段时间最想总结的,我会在后面逐渐阐述。时序是设计出来的我的boss有在华为及峻龙工作的背景,自然就给我们讲了一些华为及altera做逻辑的一些东西,而我们的项目规范,也基本上是按华为的那一套去做。在工作这几个月中,给我感触最深的是华为的那句话:时序是设计出来的,不是仿出来的,更不是湊出来的。在我们公司,每一个项目都有很严格的评审,只有评审通过了,才能做下一步的工作。以做逻辑为例,并不是一上来就开始写代码,而是要先写总体设计方案和逻辑详细设计方案,要等这些方案评审通……
  • 所需E币: 3
    时间: 2019-12-25 04:10
    大小: 9.5KB
    上传者: 978461154_qq
    包括华清远见培训视频,verlog视频,中嵌fpga高级培训华为fpga设计资料……
  • 所需E币: 4
    时间: 2019-12-25 06:03
    大小: 2.94MB
    上传者: givh79_163.com
    FPGA设计高级技巧Xilinx篇文档编号产品版本密级深圳市华为技术有限公司V1.0内部公开研究管理部文档中心产品名称FPGA设计高级技巧共62页FPGA设计高级技巧Xilinx篇(仅供内部使用)拟制周志坚中研基础日期2001/09/15审核日期yyyy/mm/dd批准日期yyyy/mm/dd深圳市华为技术有限公司版权所有不得复制内部公开FPGA设计高级技巧Xilinx篇请输入文档编号……
  • 所需E币: 5
    时间: 2019-12-25 16:03
    大小: 518.28KB
    上传者: wsu_w_hotmail.com
    Synplify工具使用指南_华为文档……
  • 所需E币: 3
    时间: 2019-12-25 06:03
    大小: 280.97KB
    上传者: 微风DS
    VerilogHDL华为入门教程文档编号版本密级文档中心1.0内部公开资源类别:HDL语言共41页VerilogHDL入门教程(仅供内部使用)拟制:中研基础日期:2004.8.3批准:中研基础日期:批准:日期:yyyy/mm/dd版权所有不得复制绝密VerilogHDL入门教程请输入文档编号修订记录日期修订版本描述作者2004.8.31.00初稿完成2004-08-16第2页,共41页版权所有,……
  • 所需E币: 5
    时间: 2019-12-25 16:06
    大小: 31.35KB
    上传者: 16245458_qq.com
    华为FPGA设计流程指南……
  • 所需E币: 5
    时间: 2020-1-4 12:15
    大小: 130.5KB
    上传者: 978461154_qq
    华为FPGA设计规范FPGA设计流程指南前言本部门所承担的FPGA设计任务主要是两方面的作用:系统的原型实现和ASIC的原型验证。编写本流程的目的是:•在于规范整个设计流程,实现开发的合理性、一致性、高效性。•形成风格良好和完整的文档。•实现在FPGA不同厂家之间以及从FPGA到ASIC的顺利移植。•便于新员工快速掌握本部门FPGA的设计流程。由于目前所用到的FPGA器件以Altera的为主,所以下面的例子也以Altera为例,工具组合为modelsim+LeonardoSpectrum/FPGACompilerII+Quartus,但原则和方法对于其他厂家和工具也是基本适用的。目录1.基于HDL的FPGA设计流程概述11.1设计流程图11.2关键步骤的实现21.2.1功能仿真21.2.2逻辑综合21.2.3前仿真31.2.4布局布线31.2.5后仿真(时序仿真)42.VerilogHDL设计42.1编程风格(CodingStyle)要求42.1.1文件42.1.2大小写52.1.3标识符52.1.4参数化设计52.1.5空行和空格52.1.6对齐和缩进52.1.7注释……
  • 所需E币: 4
    时间: 2020-1-6 12:04
    大小: 874.96KB
    上传者: 16245458_qq.com
    华为硬件工程师手册目前最全版本(159页)对FPGA/ICdesgin都是有裨益的,免费开放,希望大家大力支持!!说明:目前网上的华为硬件工程师手册通常是不全版本(73页),希望大家下载时千万要注意。……
  • 所需E币: 5
    时间: 2020-1-5 21:45
    大小: 41.35KB
    上传者: 238112554_qq
    FPGA设计管脚分配注意点FPGA管脚分配需要考虑的因素在芯片的研发环节,FPGA验证是其中的重要的组成部分,如何有效的利用FPGA的资源,管脚分配也是必须考虑的一个重要问题。一般较好的方法是在综合过程中通过时序的一些约束让对应的工具自动分配,但是从研发的时间段上来考虑这种方法往往是不可取的,RTL验证与验证板设计必须是同步进行的,在验证代码出来时验证的单板也必须设计完毕,也就是管脚的分配也必须在设计代码出来之前完成。所以,管脚的分配更多的将是依赖人,而非工具,这个时候就更需要考虑各方面的因素。综合起来主要考虑以下的几个方面:1、FPGA所承载逻辑的信号流向。IC验证中所选用的FPGA一般逻辑容量都非常大,外部的管脚数量也相当的丰富,这个时候就必须考虑到PCB设计时的布线的难度,如果管脚的分配不合理,那么有可能在PCB设计时出现大量的交叉的信号线,这给布线带来很大的困难,甚至走不通,或者是即便是布线走通了,也有可能由于外部的延时过大而不满足时序方面的要求。所以在管脚分配前对FPGA工作的环境要相当的熟悉,要对其中的信号来自哪里去向何方非常的清楚,这就按照连线最短的原则将对应的信号分配到与外部器件连线最近的BANK中,2、掌握FPGA内部BANK的分配的情况。现在FPGA内部都分成几个区域,每个区域中可用的I/O管脚数量各不相同。在IC验证中都是采用了ALTERA与XILINX系列的FPGA,这两个厂商的FPGA中内部BANK的分配有一定的差异,这可以在设计中查阅相关的手册。下面与ALTERA中StratixII系列的FPGA内部BANK的分……
  • 所需E币: 4
    时间: 2020-1-4 12:53
    大小: 274.66KB
    上传者: 16245458_qq.com
    设计了一个基于DAC5687的宽带数字中频系统,并针对数字中频系统的特点和要求给出了DAC5687在本系统中的参数设计和使用方法.基于DAC5687的宽带数字中频系统设计潘琦,张福洪,李骏(杭州电子科技大学,浙江杭州310018)摘要:设计了一个基于DAC5687的宽带数字中频系统,并针对数字中频系统的特点和要求给出了DAC5687在本系统中的参数设计和使用方法。关键词:宽带数字中频数字上变频DAC5687DAC5687是美国r11公司推出的一款高速、高性能、能强大、灵活的优势,处理数字化的模拟信号,减少模拟双通道16位的D,A转换芯片,其最高采样速率可达环节;同时,为了减轻DSP的处理压力,数字中频还起500MSPS。DAC5687专用于3G基站信道传输、3G直放到采样速率变换的作用。系统先利用A/D带通采样将站、数字卫星等对功耗、价格、体积要求比较严格的通信输入信号变成低中频信号,经FPGA滤波处理后,再通系统中。其内部基本结构如图1所示,主要有6个信号过DAC5687实现上变频和D/A转换,整体系统硬件电处理模块:固定插值滤波器FIRl、FIR2、FIR3和带有32路如图2所示。本文采用WCDMA测试模式1frestmod-位数控振荡器的精混频器、正交调制校正模块和粗混频e11)作为输入测试信号,码片速率为3.84Mchip,s,单信道带器。DAC5687可以通过微控制器进行灵活的配置,是一……
  • 所需E币: 3
    时间: 2020-1-4 12:55
    大小: 207KB
    上传者: givh79_163.com
    在对传统CORDIC算法进行改进的基础上,讨论了一种基于改进型CORDIC算法的NCO实现方法,该设计占用资源少、运算速度快、易于扩展.仿真结果证明该设计具有较高的性价比.集成电路应用AppIicatjOnofIntegratedc.rcuns一种基于改进型CORDIC算法的数控振荡器朱冰莲,罗正岳,陈禧(重庆大学通信工程学院,重庆400030)摘要:在对传统CORDIC算法进行改进的基础上,讨论了一种基于改进型CORDIC算法的NCO实现方法,该设计占用资源少、运算速度快、易于扩展。仿真结果证明该设计具有较高的性价比。关键词:CORDIC算法数控振荡器FPGA(FG)两部分组成,如图1所示。其中相位累加器的设计较向量确切・旋转角度口到向量娩0弛:篓姜擞姿篙萼篓鸶茎装蒜筹拿兰皋箸蓉蓑薯::=实现函数发生器的方法为查表法(LUT),对于一个相位位数为n,输出信号幅度位数为肘的NCO,所需查找表的。弛2门‘co鲥+物。舢咿……
  • 所需E币: 4
    时间: 2020-1-6 12:50
    大小: 115.41KB
    上传者: 16245458_qq.com
    StratixIIIntroduction……
广告