在这里提到我之前的问题,我一直在利用三态与公共总线一起工作。我似乎仍然有一些实施问题。
三态使用这种类型的代码:
分配 io [width-1:0] = (re)?rd_out [width-1:0]:{width{1'bz}};
合成和翻译进展顺利。没有我没想到的警告或错误(我期待一些,因为这只是一次试运行,大多数组件没有做任何事情,因此将保持未连接状态)。但是当我真正尝试实现它时,所有总线(共有三个)输出一个 1111111111111111 或 -1,由我的二进制到 BCD 转换器转换。如果总线上接收到的指令为-1,我通过指示控制矩阵停止来检查是否确实如此,并且它确实停止了。
我收到的关于将三态转换为逻辑的警告是:
Xst:2040 - Unit Neptune_I: 16 个多源信号被逻辑替换(上拉是)
Xst:2042 - 单元 alu:16 个内部三态被逻辑替换(上拉是):
等等。Neptune_I 是顶级模块,我相信它所指的多源信号是总线。
我怀疑上拉是不是这个问题的根源。它只是简单地把所有东西都拉起来,导致它一直是-1吗?但这对我来说没有意义,因为当三态被激活时,信号应该由它应该被控制的任何实体控制。
我想花时间用逻辑而不是三态替换代码,但我不确定如何继续。
任何帮助,将不胜感激。