我是VHDL和硬件编程的新手,我对端口映射和信号有疑问。
我想读写当前项目中的一个特定信号,但我的讲师告诉我,我不应该使用“ inout”,但是当我问他为什么不详细说明时。有人可以告诉我为什么我不应该使用它而不是定义“输入”或“输出”信号吗?
很抱歉,如果这是一个愚蠢的问题,或者以前曾有人问过。
谢谢!
这是特定于VHDL的。当你使用模式定义端口时,你将为该端口提供某些架构属性。数据从端口进入模式为IN的实体。数据仅从实体流出,用于模式为OUT的端口。因此,你无法读取实体内部的OUT端口。假设你有一个foo:out std_logic; 你不能编写一个表示fi <= foo的表达式;编译时这会导致错误。
我没有提出使foo的情况:inout std_logic; 但这也许是一种合理的做法。输入允许进行分配和阅读。
如果我不需要将该端口作为实体上的输入,则可以亲自将其分配为OUT。我本可以使用内部信号进行分配和读取,并从信号驱动输出端口。
仅供参考:VHDL 2008允许读取输出端口
-2008中的模式输出端口与模式缓冲区的行为匹配,该模式缓冲区可与依赖该标准较早版本的实现一起使用。