Vhdl (实体程序的架构pcarch_计数器):错误:类型不匹配

Vhdl (实体程序的架构pcarch_计数器):错误:类型不匹配,vhdl,Vhdl,我在网上找到了一个简单处理器的以下代码。我正在尝试使用仓鼠在VHDL AMS中添加一些模拟组件。但它产生了一个错误:类型不匹配 library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity program_counter is port ( clk, en_A, ld, inc, reset: in STD_LOGIC; aBus: out STD_LOGIC_VECTOR(15 downt

我在网上找到了一个简单处理器的以下代码。我正在尝试使用仓鼠在VHDL AMS中添加一些模拟组件。但它产生了一个错误:类型不匹配

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

entity program_counter is
port (
   clk, en_A, ld, inc, reset: in STD_LOGIC;
   aBus: out STD_LOGIC_VECTOR(15 downto 0);
   dBus: in STD_LOGIC_VECTOR(15 downto 0)
);
end program_counter;
architecture pcArch of program_counter is
signal pcReg : STD_LOGIC_VECTOR(15 downto 0);
begin
process(clk) begin
   if clk'event and clk = '1' then 
         if reset = '1' then
               pcReg <= x"0000";
         elsif ld = '1' then
               pcReg <= dBus;
         elsif inc = '1' then
       pcReg <= pcReg + x"0001";
         end if;
   end if;
end process;
aBus <= pcReg when en_A = '1' else "ZZZZZZZZZZZZZZZZ";
end pcArch;

请帮助解决问题。

因为看到你只做了一半的工作太令人沮丧了。(仅更改库当然无法修复它…)

IEEE库;
使用IEEE.std_logic_1164.all;
实体程序_计数器为
港口(
clk,en_A,ld,inc,复位:标准逻辑;
dBus:标准逻辑向量(15到0);
aBus:out标准逻辑向量(15到0)
);
终端实体;
程序计数器的架构pcArch为
使用ieee.numeric_std.all;
信号pcReg:无符号(15到0):=(其他=>0');
开始
进程(clk)开始
如果上升沿(clk),则
如果重置='1',则
pcReg'0');
如果ld='1',则

pcReg请使用谷歌搜索为什么不应该使用
std\u logic\u unsigned
和/或使用
std\u logic\u vector
的算术。。。这一点在堆栈溢出问题上也已经解释了很多次。在您显示的代码中没有实体程序计数器的架构pcarch
行。请访问并阅读“询问”部分(特别是“如何创建一个最小、完整和可验证的示例”)。在上,VCS和Incisive详细阐述了代码,没有任何错误。当前状态似乎不足以重现问题。好的,我理解std_logic_unsigned library的问题。但即使有了新的图书馆:图书馆IEEE;使用IEEE.std_logic_1164.all;使用ieee.numeric_std.all;错误仍然存在。有什么想法吗?请展示你的最新代码+测试台,你用哪个程序来构建这个?我发布的代码用VHDL在Quartus 2中构建得很好。我需要添加一些模拟组件,这就是我现在在仓鼠中使用VHDL AMS的原因。这个错误只发生在仓鼠身上,你的代码比我发布的代码有更多的错误。错误:实体程序\u计数器的模拟对象因10个错误而未创建我最初发布的代码有错误:实体程序\u计数器的模拟对象因两个错误而未创建错误:发布的代码行上的类型不匹配。我尝试了下载的仓鼠版本,但我缺少许多ieee库。当错误出现时,我添加了ieee库。您的有错误:pcReg行上的未知标识符“unsigned”您是如何添加库的??如果缺少这些类型中的任何一个,则未包括IEEE官方库
pcReg <= pcReg + x"0001";
(ARCHITECTURE pcarch OF ENTITY program_counter) : Error : Type mismatch
library IEEE;
use IEEE.std_logic_1164.all;

entity program_counter is
    port (
        clk, en_A, ld, inc, reset: in STD_LOGIC;
        dBus: in STD_LOGIC_VECTOR(15 downto 0);
        aBus: out STD_LOGIC_VECTOR(15 downto 0)
    );
end entity;

architecture pcArch of program_counter is
    use ieee.numeric_std.all; 
    signal pcReg : unsigned(15 downto 0) := (others => '0');
begin
    process(clk) begin
        if rising_edge(clk) then 
            if reset = '1' then
                pcReg <= (others => '0');
            elsif ld = '1' then
                pcReg <= unsigned(dBus);
            elsif inc = '1' then
                pcReg <= pcReg + 1;
            end if;
        end if;
    end process;
    aBus <= std_logic_vector(pcReg) when en_A = '1' else (others => 'z');
end architecture;