• Xilinx inout端口使用详解


    首先可以看特权同学的这篇文章http://www.eefocus.com/ilove314/blog/11-09/231507_10e01.html作个初步了解。

    下面我们用三种方法去实现inout,先说明一下,第一种方法的结果与其他两种方法不一样,估计有问题,不推荐使用。

    第一种方法和第二种方法的区别是inout作输入时的写法不一样。第三种方法针对Xilinx FPGA,直接使用原语IOBUF。

    代码如下,综合工具Vivado 2015.3,器件选择k7325tffg900-2。

    module inout_def(
    input clk,
    input z,
    inout dinout,
    input z2,
    inout dinout2,
    input z3,
    inout dinout3,
    output  reg  led_r1,
    output  reg  led_r2,
    output  reg  led_r3
        );
        
    reg dout = 0;
    wire din;
    assign dinout = z?1'bz:dout;
    assign din = z?dinout:1'bz;
    
     always @(posedge clk)
    begin
       if(din)
           led_r1 <= 1;
       else
           led_r1 <= 0;
    end 
    
    reg dout2 = 0;
    wire din2;
    assign dinout2 = z2?1'bz:dout2;
    assign din2 = dinout2;
    
     always @(posedge clk)
     begin
        if(din2)
            led_r2 <= 1;
        else
            led_r2 <= 0;
     end 
    
    reg dout3 = 0;
    wire din3;
    
    IOBUF IOBUF(
    .I(dout3),
    .O(din3),
    .T(z3),
    .IO(dinout3)
    );
    
     always @(posedge clk)
     begin
        if(din3)
            led_r3 <= 1;
        else
            led_r3 <= 0;
     end 
     
    endmodule

    对代码进行综合,结果如下图所示,可以看到,第二种方法和第三种方法综合出来的结果是相同的,第一种方法的结果与其他两种不同。所以inout作输入时直接assign就行了。

     放大IOBUF可以看到,IOBUF实际上由一个OBUFT和一个IBUF组成。

    IBUF是输入缓冲器,这个不多说。OBUFT是三态输出缓冲器,其结构和真值表如下图所示,可以看到,当T为1时,输出是高阻态。当T为0时,输出与输入结果相同。

    所谓高阻态,百度百科是这样说的:电路分析时高阻态可做开路理解。你可以把它看作输出(输入)电阻非常大。它的极限状态可以认为悬空(开路)。也就是说理论上高阻态不是悬空,它是对地或对电源电阻极大的状态。而实际应用上与引脚的悬空几乎是一样的。

    我们想象一下,OBUFT为高阻态时相当于开路,那dinout3和IBUF组成的通路和一般的输入通路岂不是完全相同,所以此时可以当Input来用。

    下面进行implementation,我们看dinout3实现的结果,可以看到IOBUF的IBUF和OBUFT以及相应的联结关系。OBUFT的TRI对应的是z3。IBUF的OUT对应的是led_r3_reg。

    最后,考虑到代码的通用性,在使用inout端口的时候还是推荐用第二种方法。

    一切有为法,如梦幻泡影,如露亦如电,应作如是观。
  • 相关阅读:
    js_闭包
    js_函数参数的相关问题
    js_浏览器控制台打印引用数据是打印的原始数据
    js_递归函数在严格模式下的调用方法
    js_执行环境及作用域
    js_关于为什么'函数的参数都是按值传递'的理解
    (项目)爬取安居客二手房房屋信息
    (项目)爬取自如租房链接的价格
    识别验证码之百度通用识别接口
    (项目)使用selenium的截屏功能实现自动登陆滴滴打码网
  • 原文地址:https://www.cnblogs.com/fimwest/p/7860465.html
Copyright © 2020-2023  润新知