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

[复制链接]
3814|7
 楼主| xjcumt 发表于 2007-10-22 14:48 | 显示全部楼层 |阅读模式
遇到个问题解决不了,希望大家能帮我看看,问题如下:<br />&nbsp;顶层有两个模块A&nbsp;和B,A的输出接B的输入,如下图所示<br />A的DOUT{7..0]接B的DATAIN[7..0].<br />两个模块都用VHDL语言编写,分别编译都没有错<br />但接到一起后编译就&nbsp;有错误提示:”TRI&nbsp;OR&nbsp;OPNDRN&nbsp;buffer[A]&nbsp;can&nbsp;only&nbsp;drive&nbsp;logic&nbsp;if&nbsp;connected&nbsp;to&nbsp;a&nbsp;BIDIR&nbsp;pin“<br />这样的错误&nbsp;在双向口的情况下会出现,但DOUT[7..0]和DATAIN[7..0]并没有设置成双向口,而是常规的OUT&nbsp;和IN&nbsp;类型。<br />&nbsp;我怀疑是DOUT口的问题,因为在程序中&nbsp;它是个三态口(有高阻状态),<br />是不是三态输出不能接普通输入?<br />&nbsp;<br />以上是我遇到的问题,希望大家帮我分析下,下面是部分原理图<br />
liangzhitu 发表于 2007-10-22 21:00 | 显示全部楼层

回复

请给出A,B模块的源代码来看看。图形连接不能移植,最好用例化方法来实现连接!<br /><br />
liangzhitu 发表于 2007-10-23 10:44 | 显示全部楼层

回复

B模块没有实体?!所以不好分析。
 楼主| xjcumt 发表于 2007-10-23 16:21 | 显示全部楼层

B模块实体

ENTITY&nbsp;dataandaddressbuschange&nbsp;IS<br />&nbsp;&nbsp;PORT(DATAIN:IN&nbsp;STD_LOGIC_VECTOR(7&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATAOUT:OUT&nbsp;STD_LOGIC_VECTOR(7&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATAA:&nbsp;INOUT&nbsp;STD_LOGIC_VECTOR(7&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATAB:&nbsp;INOUT&nbsp;STD_LOGIC_VECTOR(7&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDRESSWR:&nbsp;IN&nbsp;STD_LOGIC_VECTOR(15&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDRESSRD:&nbsp;IN&nbsp;STD_LOGIC_VECTOR(15&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDRESSA:&nbsp;&nbsp;OUT&nbsp;STD_LOGIC_VECTOR(15&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDRESSB:&nbsp;&nbsp;OUT&nbsp;STD_LOGIC_VECTOR(15&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLK:IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SEL:IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WR:IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RD:IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRA:OUT&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRB:OUT&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RDA:OUT&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RDB:OUT&nbsp;STD_LOGIC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />END&nbsp;dataandaddressbuschange;<br />
liangzhitu 发表于 2007-10-23 19:15 | 显示全部楼层

回复

DATAA,DATAB信号传送方向定义为INOUT型,为IN&nbsp;时其值取自何方?与模块A有关系吗?<br />
 楼主| xjcumt 发表于 2007-10-24 08:49 | 显示全部楼层

答 liangzhitu

DATAA和DATAB&nbsp;连接的是两组外部SRAM,A组&nbsp;和B组,完成数据的读和写操作,和图中的A模块没有什么联系<br /><br />A模块通过DOUT口将需要存储的数据经由DATAIN送入B模块,通过B模块内的地址控制写入SRAM(A组或B组)。<br /><br /><br />
 楼主| xjcumt 发表于 2007-10-24 15:30 | 显示全部楼层

谢谢

谢了&nbsp;liangzhitu<br />问题解决了<br />但是有一点还是不太明白,为什么改成三态的口就不行呢!
liangzhitu 发表于 2007-10-24 17:00 | 显示全部楼层

回复

是从错误提示知到的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

58

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部