fgpa 如何实现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
