首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VHDL:使用inout端口是不好的做法吗?

VHDL:使用inout端口是不好的做法吗?
EN

Stack Overflow用户
提问于 2012-12-12 22:21:13
回答 1查看 9.8K关注 0票数 7

我有一个使用inout端口的程序,方法如下:

代码语言:javascript
复制
port : inout unsigned(9 downto 0);
...
if port > 10 then
   port <= port + 1
end if;

我使用inout端口,以便读取输出(以实现反馈)。

要么我和我的老师之间有分歧,要么我的老师强烈反对使用inout端口

我已经习惯了高级编程,所以写这样的代码对我来说并不奇怪。我知道FPGA上的inout端口没有太多的电路,但我并不经常使用它,这与我将inout端口拆分为输入和输出的感觉背道而驰,只是为了获得我想要的功能,采用不同的方式。

我很高兴您的对使用inout端口的第二个意见。

EN

回答 1

Stack Overflow用户

发布于 2012-12-12 22:42:49

如果您正在实现双向端口,那么当然使用inout是正确的!

BUt用于读取输出到端口的值,您的老师是对的,这是非常糟糕的实践。(如果其他东西也在驱动该端口,您将看到已解析的值,而不是所需的值)。

这就是“缓冲区”端口的用途。

不幸的是,对于缓冲区端口存在着许多奇怪的偏见,一些工具在使用它们时发出不必要的警告(尽管它们通常实现得很好!)还有一些不必要的奇怪规则将缓冲区端口连接到外部模块中的端口。

我不记得确切的细节,但我相信缓冲区端口不能直接连接到下一个级别的输出端口--尽管VHDL-2002和更新版本删除了这条规则。尽管“缓冲区”端口现在更容易使用,但仍然有些不愿使用它们。

因此,最常见的解决方案是使用内部信号(例如可以读取的port_int )和一个简单的赋值语句将其复制到实际端口。

因此,VHDL-2008取消了禁止读取被驱动到"out“端口的值的限制,使得"out”端口与“缓冲器”端口无法区分。

我的偏好是:使用缓冲端口。

如果有某种原因阻止这一点(例如代码风格指南或当地主流意见),那么(a)如果您的工具支持VHDL-2008或(b)使用内部信号,则使用"out“端口。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13849725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档