Vhdl (实体程序的架构pcarch_计数器):错误:类型不匹配
我在网上找到了一个简单处理器的以下代码。我正在尝试使用仓鼠在VHDL AMS中添加一些模拟组件。但它产生了一个错误:类型不匹配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
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;