tag 标签: input

相关博文
  • 热度 22
    2015-8-29 16:00
    1087 次阅读|
    0 个评论
    有感于之前IIC通信中第一次使用verilog的inout端口,早就想写点什么。有些人可能会认为所谓的inout端 口FPGA会自己处理,你要它做INPUT的 时候从它读数据,你要它OUTPUT的时候给它赋值就行。问题可不是这么简单! 我先送上一个表格吧,正好今天在一本书上看到了。这个表格表示 的是在同等驱动强度下,两个驱动源驱动的wire型和tri型 变量的真值表。         发现问题了吧!如果某时刻inout口有输入,此时你又正好要拿这个inout口 做输出那么冲突是在所难免的,会出现什么样的结果可以参考上面的表。另外看这个表,你就应该明白双向口该怎么处理了吧。下面是一种典型的用法:   inout io_data; //inout口   reg out_data; //需要输出的数据   reg io_link; //inout口方向控制   assign io_data = io_link ? out_data:1'bz;//这个是关键   当inout的 口要做输入时,记得一定要把它置为高阻态z,此时你就可以把inout口 当作平常的input口用了。 转自畅学电子网。
  • 热度 23
    2014-4-13 20:26
    2246 次阅读|
    0 个评论
           有很多学习 FPGA 的童鞋对时序约束和分析都处于懵懂的状态,笔者也是经历了漫长的过程才对时序有了一定的认识,现在写 Timing Constraints in Vivado 系列博文也是抱着能系统学习的态度才开始的。        后续的博文,笔者准备理论讲解结合多个实例介绍的方式展开,这样有利于加深一下大家对理论的理解。可能实例中有理解及计算的纰漏,还望大家及时指正。        在《 6. Input Delay Constraints实例一 》中分享了一个实例,如图 1 所示,对 RX 接口进行了约束。另外 MII 管理接口,其中 MDIO 是双向数据接口,肯定需要 input delay 的约束,由于笔者开始不确定此接口属于系统同步输入还是源同步输入,没有做进一步介绍,那就在此篇博文深入分析一下。 图 1        最初以为 MII 接口属于源同步输入,但是仔细查看后发现不对劲儿,时钟 MDC 并不是由 PHY 提供的,而是 FPGA 输出给 PHY 的,这与源同步接口的定义矛盾,源同步需要时钟和数据来自同一个源。因此只能划分到系统同步输入范畴了,仔细一想还是能说得通的,系统同步中只要求 source clock 和 destination clock 来自同一个时钟网络即可,不管是在 FPGA 外部还是内部,如图 2 所示, 图 2        《 5. Constraining Input Delay 》系统同步输入的 input delay value 计算公式如下:        max input delay = T clkd_ext_max + T co_max + T bd_max – T clkd_int_min         min input delay = T clkd_ext_min + T co_min + T bd_min – T clkd_int_max        此例的情况,时钟源到 FPGA 输入端口的延时 T clkd_int 等于 0 ,时钟源到外部芯片的延时为 TCD ,因此得到变化后的公式如下:        max input delay = T CD_max + T CO_max + T BD_max          min input delay = T CD_min + T CO_min + T BD_min        各时间参数的计算如下:        T CD :时钟线 MDC 在板上的长度 L MDC =489mil , T CD_max = T CD_min =489mil*166ps/inch= 0.081174ns        T BD :数据线 MDIO 在板上的长度 LMDIO=634mil , T BD_max = T BD_min =634mil*166ps/inch= 0.105244ns        T CO :参考 PHY ( DP83849ID )的手册,如图 3 所示, T CO 等于时间参数 T2.3.1 ,得到 T CO_max =30ns , T CO_min =0ns 。   图 3        得到 input delay 值如下:        max input delay = T CD_max + T CO_max +T BD_max    =0.081174ns+30ns+0.105244ns = 30.186418ns               min input delay = T CD_min + T CO_min + T BD_min =0.081174ns+0ns+0.105244ns=0.186418ns        综上, MII 管理接口的约束如下: create_clock –name MDC –period 400 –waveform {0 200} set_input_delay -clock -max 30.186418 set_input_delay -clock -min 0.186418        在 Vivado 中的约束如图 4,5 所示: 图 4 图 5
  • 热度 21
    2014-4-13 12:53
    2934 次阅读|
    0 个评论
           在《 5. Constraining Input Delay 》博文中,深入讲解了如何分析输入端口到 FPGA 内部时序单元的路径,并且对 input delay 进行约束。这一节介绍 input delay 约束实例,加深一下对上节中理论的理解。        如图 1 所示系统,以太网 PHY 芯片与 FPGA 相连,分为三组接口:        RX 接口:时钟 RXCK 和数据 RXD ;        TX 接口:时钟 TXCK 和数据 TXD ;        MII 管理接口:时钟 MDC 和数据 MDIO 。 图 1        其中 RX 接口属于源同步输入接口,以下就以 RX 接口为例讲解一下约束 input delay : Clock Constraints :        首先约束时钟,如图 2 所示为 PHY ( DP83849ID )在 100Mb/s 模式下的时序图,时钟和数据为 Center Aligned 关系,因此时钟在 FPGA 中无需再移相,可直接使用 RXCK 采集数据,时钟约束如下: create_clock –name RXCK –period 40 –waveform {0 20} 图 2 Input Delay Value:        根据上节中源同步输入计算 Input Delay 的公式:        max_input_delay = T bd_max + T co_max - T cd_min        min_input_delay = T bd_min + T co_min - T cd_max          T bd 为数据线 RXD 在板上的延时,也就是信号在电路板上的传播时间。查找了网上的一些资料: “ 信号速度还与不同材料的介电常数相关,具体计算公式是    V=C/Er 0.5     ,其中 Er 是信号线周围材料的相对介电常数。我们常见的 PCB 材料 Fr4 的介电常数在 4.2-4.5 左右,为了计算方便我们取 4 。带入公式可以算出, Fr4 材料制作的 PCB 板上面信号的传输速度是光速的二分之一。光速大约等于 12inch/ns, 计算得出 Fr4 板上信号速度大约是 6inch/ns 。换算成延时,也就是 166ps/inch 。这就是我们经常说的 PCB 板上信号延时大约是 166ps/inch 。 ”        在此例中,通过 PCB 设计软件计算得到 RXD 的走线长度,分别是 L RXD =426mil , L RXD =451mil , L RXD =502mil , L RXD =406mil ,因此可以计算得到:        T bd_max = 502mil * 166ps/inch = 0.083332ns        T bd_min = 406mil * 166ps/inch = 0.067396ns          T cd 为时钟线 RXCK 在板上的延时,走线长度 L RXCK =399mil ,因此可以计算得到:        T cd_max =T cd_min =399mil * 166ps/inch = 0.066234ns               T co 为 RX 接口 clock_to_output 时间,如图 2 中,等于 T2.5.2 时间参数,因此可得到:        T co_max = 30ns        T co_min = 10ns          综上:        max_input_delay = T bd_max + T co_max - T cd_min = 0.083332ns + 30ns - 0.066234ns = 30.017098ns        min_input_delay = T bd_min + T co_min - T cd_max = 0.067396ns + 10ns - 0.066234ns = 10.001162ns   Constraints :        很显然, RX 接口为 SDR ,时钟约束和 input delay 值的计算后,可以对 input delay 进行约束,命令如下: set_input_delay -clock -max 30.017098 RXD RXD RXD }] set_input_delay -clock -min 10.001162 RXD RXD RXD }]          在 Vivado 的 GUI 界面中也可以进行约束,设计经过综合实现后,打开编辑约束文件,如图 3 所示 图 3        选择 Set Input Delay ,在右侧双击,可弹出 Input Delay 设置窗口,如图 4 所示 图 4        在弹出的 Input Delay 窗口中设置参数,如图 5 , 6 所示, Input Delay 约束完成。 图 5 图 6
  • 热度 27
    2012-11-12 22:52
    2417 次阅读|
    0 个评论
相关资源