这是VHDL中6位数字串行加法器的代码。出现编译错误;canot读取输出q“;,请帮我解决这个问题

这是VHDL中6位数字串行加法器的代码。出现编译错误;canot读取输出q“;,请帮我解决这个问题,vhdl,Vhdl,这是两个6位串行加法器的代码。它就像记分板一样。我遇到一个编译错误“无法读取输出q”。请帮我解决这个问题 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity board IS port ( C: in std_logic; h : in std_logic_vector(5 downto 0); q : out std_logic_vector(5 downto 0) -- s,cout : o

这是两个6位串行加法器的代码。它就像记分板一样。我遇到一个编译错误“无法读取输出q”。请帮我解决这个问题

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity board IS
port
(
C: in std_logic;
h : in std_logic_vector(5 downto 0);
q : out std_logic_vector(5 downto 0)
-- s,cout : out std_logic
);
end board;

architecture archi of board is
signal tmp: std_logic_vector(5 downto 0);
begin
process(C)
begin
  if(C'event and C='1') then
    tmp<= std_logic_vector (unsigned(q) + unsigned(h));
  end if;

end process;
q<=tmp;
end archi;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
实体董事会是
港口
(
C:标准逻辑;
h:标准逻辑向量(5到0);
q:输出标准逻辑向量(5到0)
--输出标准逻辑
);
端板;
电路板的架构架构是
信号tmp:std_逻辑_向量(5到0);
开始
过程(C)
开始
如果(C'event和C='1'),则

tmp您应该使用数字\u标准,而不是标准逻辑\u无符号。std_logic_unsigned不是ieee支持的官方软件包。在文件顶部执行此操作,您的问题就会消失:

use ieee.numeric_std.all;

也不要将信号h放在过程灵敏度列表中。该过程是一个时钟过程,除了您的时钟和灵敏度列表中的异步重置之外,您不应该有任何信号(如果您使用的是异步重置)。这里根本不需要重置。

您应该使用数字标准,而不是无符号标准逻辑。std_logic_unsigned不是ieee支持的官方软件包。在文件顶部执行此操作,您的问题就会消失:

use ieee.numeric_std.all;

也不要将信号h放在过程灵敏度列表中。该过程是一个时钟过程,除了您的时钟和灵敏度列表中的异步重置之外,您不应该有任何信号(如果您使用的是异步重置)。这里根本不需要重置。

您应该使用数字标准,而不是无符号标准逻辑。std_logic_unsigned不是ieee支持的官方软件包。在文件顶部执行此操作,您的问题就会消失:

use ieee.numeric_std.all;

也不要将信号h放在过程灵敏度列表中。该过程是一个时钟过程,除了您的时钟和灵敏度列表中的异步重置之外,您不应该有任何信号(如果您使用的是异步重置)。这里根本不需要重置。

您应该使用数字标准,而不是无符号标准逻辑。std_logic_unsigned不是ieee支持的官方软件包。在文件顶部执行此操作,您的问题就会消失:

use ieee.numeric_std.all;

也不要将信号h放在过程灵敏度列表中。该过程是一个时钟过程,除了您的时钟和灵敏度列表中的异步重置之外,您不应该有任何信号(如果您使用的是异步重置)。这里根本不需要重置。

由于某些原因(为什么?),无法直接从输出端口读取数据。创建一个内部信号,例如
q_i
,将所有
q
替换为
q_i
,并将内部信号分配给输出端口,即
q由于某种原因(为什么?)无法直接从输出端口读取。创建一个内部信号,例如
q_i
,将所有
q
替换为
q_i
,并将内部信号分配给输出端口,即
q由于某种原因(为什么?)无法直接从输出端口读取。创建一个内部信号,例如
q_i
,将所有
q
替换为
q_i
,并将内部信号分配给输出端口,即
q由于某种原因(为什么?)无法直接从输出端口读取。创建内部信号,例如
q_i
,用
q_i
替换所有
q
,并将内部信号分配给输出端口,即
q为什么标题称其为串行加法器?为什么标题称其为串行加法器?为什么标题称其为串行加法器?为什么标题称其为串行加法器?为什么标题称其为串行加法器?为什么?(a)。。。因为它是一个输出端口。在这个单元内,你不知道它将解决什么问题:据你所知,它可能在这个单元外对“111111”短路。缓冲区允许您读取该值,而不管外部条件如何。或为什么?(b)因为您没有使用VHDL-2008。经过21年关于“缓冲区”的糟糕教育,工具供应商放弃了,并在VHDL-2008中将“缓冲区”语法添加到“out”中。感谢您澄清原因?(a)。。。因为它是一个输出端口。在这个单元内,你不知道它将解决什么问题:据你所知,它可能在这个单元外对“111111”短路。缓冲区允许您读取该值,而不管外部条件如何。或为什么?(b)因为您没有使用VHDL-2008。经过21年关于“缓冲区”的糟糕教育,工具供应商放弃了,并在VHDL-2008中将“缓冲区”语法添加到“out”中。感谢您澄清原因?(a)。。。因为它是一个输出端口。在这个单元内,你不知道它将解决什么问题:据你所知,它可能在这个单元外对“111111”短路。缓冲区允许您读取该值,而不管外部条件如何。或为什么?(b)因为您没有使用VHDL-2008。经过21年关于“缓冲区”的糟糕教育,工具供应商放弃了,并在VHDL-2008中将“缓冲区”语法添加到“out”中。感谢您澄清原因?(a)。。。因为它是一个输出端口。在这个单元内,你不知道它将解决什么问题:据你所知,它可能在这个单元外对“111111”短路。缓冲区允许您读取该值,而不管外部条件如何。或为什么?(b)因为您没有使用VHDL-2008。在经历了21年关于“缓冲区”的糟糕教育后,工具供应商放弃了,在VHDL-2008中将“缓冲区”语法添加到了“out”中。感谢您的澄清