gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:20:07 24 4
gpt4 key购买 nike

我有一个程序,我按照以下方式使用 inout 端口:

port : inout unsigned(9 downto 0);
...
if port > 10 then
port <= port + 1
end if;

我正在使用 inout 端口,所以我可以 读取输出 ( 实现反馈)。

要么我和老师之间有误会,要么我的 老师强烈反对使用输入端口 .

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

我会很高兴你的 关于使用 inout 端口的第二意见 .

最佳答案

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

但是要读取您输出到端口的值,您的老师是对的;这是非常糟糕的做法。 (如果其他东西也在驱动该端口,您将看到解析的值而不是您想要的值)。

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

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

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

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

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

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

如果有某种原因阻止了这一点(比如代码风格指南或本地普遍的意见),那么
(a) 如果您的工具支持 VHDL-2008 或
(b) 使用内部信号。

关于port - VHDL:使用 inout 端口是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13849725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com