gpt4 book ai didi

vhdl - inout 参数是如何实现的?

转载 作者:行者123 更新时间:2023-12-03 12:16:27 28 4
gpt4 key购买 nike

我知道 inout 参数是什么以及如何使用它们。假设我们有一个 inout 参数 io并希望创建一个双向静态 RAM,例如以下代码:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY sram IS
port(
clk : IN std_logic;
wr : IN std_logic;
io : INOUT std_logic;
addr : IN INTEGER RANGE 0 TO 7
);
END sram;

ARCHITECTURE behavioral OF sram IS
TYPE matrix IS ARRAY (0 TO 7) OF std_logic;
SIGNAL mem : matrix;
BEGIN
PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
IF wr = '1' THEN
mem(addr) <= io;
END IF;
END IF;
END PROCESS;
io <= mem(addr) WHEN wr = '0' ELSE 'Z';
END behavioral;

我们可以创建一个 sram 实例并在其上编写如下代码:
io <= '1' WHEN wr = '1' ELSE 'Z';

问题:综合工具如何控制多个驱动程序之间的多个分配和判断?实现了什么硬件来做到这一点?

感谢您的评论和回答...

最佳答案

对于典型的 FPGA 和 ASIC 器件,三态功能的实现仅在 IO 上可用,例如在 Altera Arria 10 FPGA 中:

enter image description here

因此,对于此类设备,内部 RAM 始终使用专用输入和输出端口实现,因此不使用任何内部三态功能。

即使 RAM 连接到支持三态的外部 IO,内部 RAM 块通常仍然使用专用的输入和输出端口创建,因此与设备上支持三态的引脚的连接是通过输入输出缓冲区处理的输出使能和三态能力。

如果内部设计在器件不支持时尝试使用三态功能或多个驱动程序,则综合工具将生成并出错,通常表示同一网络不支持多个驱动程序。

关于vhdl - inout 参数是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27739856/

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