为什么我不应该使用 'inout' 而不是 'in' 或 'out'?

Why shouldn't I be using 'inout' rather than 'in' or 'out'?

我对 VHDL 和硬件编程比较陌生,我对端口映射和信号有疑问。

我想在我当前的项目中读取和写入一个特定的信号,但我的讲师告诉我我不应该使用 'inout' 但当我问他为什么不详细说明时。有人能告诉我为什么我不应该使用它而不是定义 'in' 或 'out' 信号吗?

如果这是一个愚蠢的问题或者之前有人问过,我很抱歉。

谢谢!

这是 VHDL 特有的。当您使用一种模式定义端口时,您就是在为该端口提供某些架构属性。数据从模式为 IN 的端口流入实体。数据仅流出模式为 OUT 的端口的实体。因此,您无法读取实体内部的 OUT 端口。假设你有一个 foo: out std_logic;你不能写一个表达式 fi <= foo;这应该会导致编译时出错。

我不是在做 foo: inout std_logic;但也许这样做是合理的。 inout 允许赋值和读取。

如果我不需要将端口作为实体的输入,我会亲自将其指定为 OUT。我会使用内部信号进行分配和读取,并从信号驱动输出端口。