打印

请教一个VHDL的问题(关于三态口的)

[复制链接]
3156|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xjcumt|  楼主 | 2007-10-22 14:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
遇到个问题解决不了,希望大家能帮我看看,问题如下:
 顶层有两个模块A 和B,A的输出接B的输入,如下图所示
A的DOUT{7..0]接B的DATAIN[7..0].
两个模块都用VHDL语言编写,分别编译都没有错
但接到一起后编译就 有错误提示:”TRI OR OPNDRN buffer[A] can only drive logic if connected to a BIDIR pin“
这样的错误 在双向口的情况下会出现,但DOUT[7..0]和DATAIN[7..0]并没有设置成双向口,而是常规的OUT 和IN 类型。
 我怀疑是DOUT口的问题,因为在程序中 它是个三态口(有高阻状态),
是不是三态输出不能接普通输入?
 
以上是我遇到的问题,希望大家帮我分析下,下面是部分原理图

相关帖子

沙发
liangzhitu| | 2007-10-22 21:00 | 只看该作者

回复

请给出A,B模块的源代码来看看。图形连接不能移植,最好用例化方法来实现连接!

使用特权

评论回复
板凳
liangzhitu| | 2007-10-23 10:44 | 只看该作者

回复

B模块没有实体?!所以不好分析。

使用特权

评论回复
地板
xjcumt|  楼主 | 2007-10-23 16:21 | 只看该作者

B模块实体

ENTITY dataandaddressbuschange IS
  PORT(DATAIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
       DATAOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
       DATAA: INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
       DATAB: INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
       ADDRESSWR: IN STD_LOGIC_VECTOR(15 DOWNTO 0);
       ADDRESSRD: IN STD_LOGIC_VECTOR(15 DOWNTO 0);
       ADDRESSA:  OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
       ADDRESSB:  OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
       CLK:IN STD_LOGIC;
       SEL:IN STD_LOGIC;
       WR:IN STD_LOGIC;
       RD:IN STD_LOGIC;
       WRA:OUT STD_LOGIC;
       WRB:OUT STD_LOGIC;
       RDA:OUT STD_LOGIC;
       RDB:OUT STD_LOGIC
      );
END dataandaddressbuschange;

使用特权

评论回复
5
liangzhitu| | 2007-10-23 19:15 | 只看该作者

回复

DATAA,DATAB信号传送方向定义为INOUT型,为IN 时其值取自何方?与模块A有关系吗?

使用特权

评论回复
6
xjcumt|  楼主 | 2007-10-24 08:49 | 只看该作者

答 liangzhitu

DATAA和DATAB 连接的是两组外部SRAM,A组 和B组,完成数据的读和写操作,和图中的A模块没有什么联系

A模块通过DOUT口将需要存储的数据经由DATAIN送入B模块,通过B模块内的地址控制写入SRAM(A组或B组)。


使用特权

评论回复
7
xjcumt|  楼主 | 2007-10-24 15:30 | 只看该作者

谢谢

谢了 liangzhitu
问题解决了
但是有一点还是不太明白,为什么改成三态的口就不行呢!

使用特权

评论回复
8
liangzhitu| | 2007-10-24 17:00 | 只看该作者

回复

是从错误提示知到的!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

58

帖子

0

粉丝