微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > fgpa 如何实现inout 互联

fgpa 如何实现inout 互联

时间:10-02 整理:3721RD 点击:
想弄利用fpga芯片的两个引脚实现inout   如果只是一个inout实现比较简单 但是要把两个在内连接 好像有问题
现在的问题是 :假如我定义fpga端口a,b为inout类型 ,内部应该如何连接才能使a和b在功能上类似于  实际中用导线直接把两个端口连接在一起呢   
高手指点一下!

需求描述不是很清楚

数据由A传向B:   B<=A;
数据由B传向A:   A<=B;
分情况处理

xilinx有这样的pad

加输出使能控制



    就是说我想让fpga的A、B两个管脚是互通的, A、B都定义为inout端口   ,数据可以A-->B ,或者B-->A。
如果直接定义为wire 把他们连接起来  综合时好像会加入buffer 失去双向的能力



    比如:fpga 的B端口是定死在板子的一个i2c slave上,A端口和电脑模拟的i2c master相连。
我想通过电脑上的i2c master 去操作 板子上的slave ,所以想把A和B连同。(A和B不便于直接焊接去连接,想从FPGA内部穿过去)
有什么好的办法吗?



   内部 有直接可以互联的pad吗   是不是这种pad 综合时会不被加入buffer

如果只是两个inout的端口连接,可以直接连,不需要做什么处理,处理都是在你的内部做。



    我现在是想把fpga的A、B两个管脚定义为inout 类型。在FPGA内不知如何连接  ,才能相当于两根普通的导线一样,可以双向通讯

你既然都知道一个inout如何实现,那你应该知道在内部其实它是被转化为三根线吧?另一个inout同样处理,然后相互的输入给输出,应该就可以了吧,在内部就直接对单独的输入和输出作处理即可。我是这么理解的。



    程序定义A、B为inout
    数据由主到从时,B为输出,A为输入,B<=A;
    数据由从到主时,A为输出,B为输入,A<=B;



    关键的是fpga内部布线后会在线上加入buf ,所以直接在内部不好连接,      而我们普通的inout端口都是和外部连接的,一般都是三态结构 ,内部in 和out是分开的  ,没有遇到过inout直接内部互联的情况。



    我也这么理解,但是仿真时 加入到我们的project后发现行不通

不能直接互相赋值,内部需要分别增加一个OE使能(即方向控制),例如,当OE_A=1时,A=B,否则A=‘Z’,B反过来

你的双向输出没有三态么?
inout  a,b;
wire   inner_a,inner_b ;
assign  inner_a = a ;
assign  inner_b = b;
assogn  a = (a_tri_buf_control) inner_b ?  1'bz ;
assogn  b = (b_tri_buf_control) inner_a ?  1'bz ;

我也在做这个事情,也不知怎么做。
自已设想了一下,想做个模块把两个引脚连起来,但感觉对数据流的方向
要做了判断,但其中只定要有一个bit数据的时间延时,有点麻烦.

小编您好,请问这个问题您解决了吗?小弟初涉FPGA,也遇到了跟您一样的问题,也是关于IIC的控制的,需要内部直连,还比较着急,如果您已经解决了的话麻烦赐教,不胜感激!小弟邮箱:chenboworkhard@163.com,再次表示感谢!



   懂你的意思,不过我还没找到合适的办法,关注中

感觉16楼是正解,关键在于需要额外引出三态使能信号,在FPGA中把inout信号拆开,再处理。
一个可能的解决方案:http://hi.baidu.com/barrypp/item/aa1217a79a0e0f9e14107367

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top