VHDL输出在模拟中未定义,但编译通过
我是一名新生,作业是用测试台构建3个组件,然后将它们安排到一个结构中。我构建的所有3个组件都工作得很好,但当我将它们放在一起时,其中一个输出保持未定义。我试图跟踪名为VHDL输出在模拟中未定义,但编译通过,vhdl,modelsim,Vhdl,Modelsim,我是一名新生,作业是用测试台构建3个组件,然后将它们安排到一个结构中。我构建的所有3个组件都工作得很好,但当我将它们放在一起时,其中一个输出保持未定义。我试图跟踪名为dat的信号,这很好,但可能我没有使用正确的语法将dat信号分配给data\u out。id\u led\u ind是第二个输出,工作正常,但data\u out未定义 下面是代码(我想问题出在21号车道-“数据输出dat由dff的q驱动。这不是连接组件的方式。端口映射应用于连接不同组件/实体的端口,而不是将任何实体的信号连接到另一
dat
的信号,这很好,但可能我没有使用正确的语法将dat
信号分配给data\u out
。id\u led\u ind
是第二个输出,工作正常,但data\u out
未定义
下面是代码(我想问题出在21号车道-“数据输出
dat
由dff
的q
驱动。这不是连接组件的方式。端口映射应用于连接不同组件/实体的端口,而不是将任何实体的信号连接到另一实体的端口。对于有两种体系结构,似乎存在混淆。”(数据流和结构)用于实体peak_detect。这两种架构是互斥的,在没有其他配置直接指定其中一种架构的情况下,最后一种架构是默认的
为了评估组件如何互连以及它们的端口映射连接与peak_detect的端口声明之间的关系,可以注释掉第一个体系结构(数据流)
当您忽略架构数据流时,我们发现架构结构中没有数据输出的驱动程序
使用dat作为体系结构结构中的源(如体系结构数据流中所示)缺少对数据的赋值。复制或复制数据流体系结构中的并发信号赋值语句data out,是什么驱动了“dat”?禁用架构的命令行规范,如果没有配置规范,将选择最后分析的架构,在这种情况下,这将是peak_detect的架构结构。如果数据流不符合要求,请将其注释掉。dat是peak_detect架构结构中的声明信号。它是pe当信号类型相同且范围相同(子类型匹配)时,完全可以在端口映射中将信号作为实际信号连接到形式信号。在实体峰值检测的端口声明中,从dat到数据输出的连接缺少什么。这可能是“完全可以”的对于编译器/模拟器而言,但对于试图阅读、理解和调试的人来说,这还远远不够完美。那么为什么不将所有逻辑放在一个实体中呢?工具将可以满足这一要求。看来,您正试图强制执行样式,而不是指定符合VHDL标准。样式不一定排除符合性。在least mine没有。该标准没有按照要求采用您的风格。请注意“您不能简单地将数据输出连接到dff端口图中的q,因为dff的输出也被用作id_sense的输入。”参见IEEE Std 1076-2008,6.5.2接口对象声明,第18段“-out。允许更新接口对象的值,如果该值不是信号参数,则读取该值。”peak_detect port signal data_out声明为mode out,不能用作实际的in-comp8bit关联列表正式端口B mode in-信号参数data_out不能读取(第15段)。另见-1993,4.3.2第12/10段。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity peak_detect is
port(
input : in std_logic_vector (7 downto 0);
data_out : out std_logic_vector (7 downto 0);
reset : in std_logic;
clock : in std_logic;
enable : in std_logic;
id_led_ind : out std_logic);
end peak_detect;
architecture dataflow of peak_detect is
signal a_big_b : std_logic;
signal en : std_logic;
signal dat : std_logic_vector (7 downto 0);
begin
en <= (enable or a_big_b);
data_out <= dat;
end dataflow;
architecture structure of peak_detect is
signal a_big_b : std_logic;
signal en : std_logic;
signal dat : std_logic_vector (7 downto 0);
component comp_8bit is
port(
A : in std_logic_vector (7 downto 0);
B : in std_logic_vector (7 downto 0);
res : out std_logic);
end component;
component dff is
port (
data : in std_logic_vector (7 downto 0);
q : out std_logic_vector (7 downto 0);
clk : in std_logic;
reset : in std_logic;
en : in std_logic);
end component;
component id_sens is
port(
data_in : in std_logic_vector (7 downto 0);
led : out std_logic);
end component;
begin
reg : dff port map (data => input, q => dat, clk => clock, reset => reset, en => enable);
comp : comp_8bit port map (A => input, B => dat, res => a_big_b);
sens : id_sens port map (data_in => dat, led => id_led_ind);
end structure;