Board logo

标题: [讨论]如何用VHDL实现两个双向端口直通? [打印本页]

作者: eric    时间: 2006-2-22 09:38     标题: [讨论]如何用VHDL实现两个双向端口直通?

FPGA分别连接了2个16位的双向端口,定义如下:
ENTITY VHDL1 IS
  ORT (
        a,b:INOUT STD_LOGIC_VECTOR (15 DOWNTO 0);
        SEL:IN BIT
        );
END VHDL1;
我想实现当选择信号SEL=0时,a与b直通,可以进行双向数据流动.
请各位大侠指教!


小弟谢谢了!


作者: lacumbre    时间: 2006-2-22 09:48

我也有过同样的问题,经常写INOUT时总会出现想不到的效果
有过这种情况的大家进来讨论一下吧!
作者: ecmecm    时间: 2006-2-23 21:33     标题: VHDL

在FPGA中,所有的门都不具有双向传输能力
所有的双向传输都是通过数据选择实现的,包括三态门(IO引脚除外)
所以双向驱动的实现一般是通过数据选择来实现的:
当双向总线的每一端都可以是总线的源端,即可以驱动总线。当某一端需要驱动总线时,将此端设置为源端,否则设置为目的端(处于接收状态)。
当总线两端都不驱动总线时,总线上是没有数据,总线处于空闲状态;
当总线一端驱动总线,而另一端接收时,总线是正常数据传送;
当两端都驱动总线,就会发生总线冲突,需要总线仲裁,简单应用时,应避免这种情况使 得设计简单许多。

当两个双向总线连接时,需要两个总线之间的驱动总线时相互协调(如果复杂的话需要总线仲裁),不能同时驱动总线。这就类似于两个CPU的总线互连。

eg:
d_inout <= d_tmp when drive_en = '1' else
"ZZZZZZZZ" ;

din <= d_inout when drive_en = '0' ;

当两个双向总线互连时,只要做好时序匹配就可以了。

作者: eric    时间: 2006-2-24 09:33

太感谢几位了!!
俺现在就去试试
作者: chenzf    时间: 2006-2-24 13:49

解释的真好!感谢!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0