VHDL输入不是全局静态的 ieee库; 使用ieee.std_logic_1164.all; 实体alu_1bit是 港口( i_操作:在标准逻辑向量(1到0)中--entrada de operaão(controle de operaão) i_INV_位:标准逻辑中; i_进位:标准逻辑; i_A:标准逻辑; i_B:标准逻辑; i_LESS:在标准逻辑中; o_结果:输出标准_逻辑; o_执行:执行标准逻辑); 结束alu_1bit; alu_1bit的建筑拱门1是 元件全加器 港口( i_CIN:标准逻辑; i_DIN0:标准逻辑; i_DIN1:标准逻辑; 输出:输出标准逻辑; 输出:输出标准逻辑); 端部元件; 组件mux4为 端口(i_选择:标准逻辑向量中(1到0); i_DIN0:标准逻辑; i_DIN1:标准逻辑; i_DIN2:标准逻辑; i_DIN3:标准逻辑; 输出:输出标准逻辑); 端部元件; 信号w_B:标准逻辑; 信号w_C:标准逻辑; 信号w_D:标准逻辑; 信号w_OUPA:标准逻辑; 开始 w_B w_B, o_DOUT=>w_outpa, o_COUT=>o_执行); u_2:mux4端口映射(i_SEL=>i_操作, i_DIN0=>w_C, i_DIN1=>w_D, i_DIN2=>w_outpa, i_DIN3=>i_LESS, o_DOUT=>o_结果); 端弓1;
我试图在Quartus ModelSim上模拟这一点,但在ModelSim上给出了以下错误 错误:…/alu_1bit_msb.vhd(53):(vcom-1436)形式“i_DIN0”的实际表达式(中缀表达式)不是全局静态的 错误:…/alu_1bit_msb.vhd(54):(vcom-1436)形式“i_DIN1”的实际表达式(中缀表达式)不是全局静态的 我已经从mux4的端口映射中删除了逻辑表达式,我使用了一个信号来执行此操作 完整地址代码:VHDL输入不是全局静态的 ieee库; 使用ieee.std_logic_1164.all; 实体alu_1bit是 港口( i_操作:在标准逻辑向量(1到0)中--entrada de operaão(controle de operaão) i_INV_位:标准逻辑中; i_进位:标准逻辑; i_A:标准逻辑; i_B:标准逻辑; i_LESS:在标准逻辑中; o_结果:输出标准_逻辑; o_执行:执行标准逻辑); 结束alu_1bit; alu_1bit的建筑拱门1是 元件全加器 港口( i_CIN:标准逻辑; i_DIN0:标准逻辑; i_DIN1:标准逻辑; 输出:输出标准逻辑; 输出:输出标准逻辑); 端部元件; 组件mux4为 端口(i_选择:标准逻辑向量中(1到0); i_DIN0:标准逻辑; i_DIN1:标准逻辑; i_DIN2:标准逻辑; i_DIN3:标准逻辑; 输出:输出标准逻辑); 端部元件; 信号w_B:标准逻辑; 信号w_C:标准逻辑; 信号w_D:标准逻辑; 信号w_OUPA:标准逻辑; 开始 w_B w_B, o_DOUT=>w_outpa, o_COUT=>o_执行); u_2:mux4端口映射(i_SEL=>i_操作, i_DIN0=>w_C, i_DIN1=>w_D, i_DIN2=>w_outpa, i_DIN3=>i_LESS, o_DOUT=>o_结果); 端弓1;,vhdl,Vhdl,我试图在Quartus ModelSim上模拟这一点,但在ModelSim上给出了以下错误 错误:…/alu_1bit_msb.vhd(53):(vcom-1436)形式“i_DIN0”的实际表达式(中缀表达式)不是全局静态的 错误:…/alu_1bit_msb.vhd(54):(vcom-1436)形式“i_DIN1”的实际表达式(中缀表达式)不是全局静态的 我已经从mux4的端口映射中删除了逻辑表达式,我使用了一个信号来执行此操作 完整地址代码: library ieee; use ieee
library ieee;
use ieee.std_logic_1164.all;
entity alu_1bit is
port (
i_OPERATION : in std_logic_vector(1 downto 0); -- entrada de operação (controle de operação)
i_INV_BIT : in std_logic;
i_CARRY_IN : in std_logic;
i_A : in std_logic;
i_B : in std_logic;
i_LESS : in std_logic;
o_RESULT : out std_logic;
o_CARRY_OUT : out std_logic);
end alu_1bit;
architecture arch_1 of alu_1bit is
component full_adder is
port (
i_CIN : in std_logic;
i_DIN0 : in std_logic;
i_DIN1 : in std_logic;
o_DOUT : out std_logic;
o_COUT : out std_logic);
end component;
component mux4 is
port(i_SEL : in std_logic_vector(1 downto 0);
i_DIN0 : in std_logic;
i_DIN1 : in std_logic;
i_DIN2 : in std_logic;
i_DIN3 : in std_logic;
o_DOUT : out std_logic);
end component;
signal w_B : std_logic;
signal w_C : std_logic;
signal w_D : std_logic;
signal w_OUTFA : std_logic;
begin
w_B <= i_INV_BIT xor i_B;
w_C <= i_A and i_B;
w_D <= i_A or i_B;
u_1 : full_adder port map (i_CIN => i_CARRY_IN,
i_DIN0 => i_A,
i_DIN1 => w_B,
o_DOUT => w_OUTFA,
o_COUT => o_CARRY_OUT);
u_2 : mux4 port map(i_SEL => i_OPERATION,
i_DIN0 => w_C,
i_DIN1 => w_D,
i_DIN2 => w_OUTFA,
i_DIN3 => i_LESS,
o_DOUT => o_RESULT);
end arch_1;
ieee库;
使用ieee.std_logic_1164.all;
实体全加器是
港口(
i_CIN:标准逻辑;
i_DIN0:标准逻辑;
i_DIN1:标准逻辑;
输出:输出标准逻辑;
输出:输出标准逻辑);
端部全加器;
全加器的架构arch_1是
开始
o_DOUT i_B(0),
i_LESS=>w_集,
o_结果=>w_结果(0),
o_进位输出=>w_进位(0));
f_0:1中的i到(30)生成
u_1:alu_1位端口映射(i_操作=>i_操作,
i_INV_位=>i_INV_位,
i_进位=>w_进位(i-1),
i_A=>i_A(i),
i_B=>i_B(i),
i_LESS=>“0”,
o_结果=>w_结果(i),
o_进位=>w_进位(i));
结束生成f_0;
u_2:alu_1bit_msb端口映射(i_操作=>i_操作,
i_INV_位=>i_INV_位,
i_进位=>w_进位(30),
i_A=>i_A(31),
i_B=>i_B(31),
i_LESS=>“0”,
o_结果=>w_结果(31),
o_集=>w_集,
o_溢出=>o_溢出);
端弓1;
alu_1bit_msb代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
entity alu_32bit is
port (
i_OPERATION : in std_logic_vector(1 downto 0);
i_INV_BIT : in std_logic;
i_A : in std_logic_vector(31 downto 0);
i_B : in std_logic_vector(31 downto 0);
o_RESULT : out std_logic_vector(31 downto 0);
o_ZERO : out std_logic;
o_OVERFLOW : out std_logic);
end alu_32bit;
architecture arch_1 of alu_32bit is
component alu_1bit is
port (
i_OPERATION : in std_logic_vector(1 downto 0);
i_INV_BIT : in std_logic;
i_CARRY_IN : in std_logic;
i_A : in std_logic;
i_B : in std_logic;
i_LESS : in std_logic;
o_RESULT : out std_logic;
o_CARRY_OUT : out std_logic);
end component;
component alu_1bit_msb is
port (
i_OPERATION : in std_logic_vector(1 downto 0); -- entrada de operação (controle de operação)
i_INV_BIT : in std_logic;
i_CARRY_IN : in std_logic;
i_A : in std_logic;
i_B : in std_logic;
i_LESS : in std_logic;
o_RESULT : out std_logic;
o_SET : out std_logic;
o_OVERFLOW : out std_logic);
end component;
signal w_RESULT : std_logic_vector(31 downto 0);
signal w_CARRY : std_logic_vector(30 downto 0);
signal w_SET : std_logic;
begin
o_RESULT <= w_RESULT;
o_ZERO <= NOT (or_reduce(w_RESULT));
u_0: alu_1bit port map (i_OPERATION => i_OPERATION,
i_INV_BIT => i_INV_BIT,
i_CARRY_IN => i_INV_BIT,
i_A => i_A(0),
i_B => i_B(0),
i_LESS => w_SET,
o_RESULT => w_RESULT(0),
o_CARRY_OUT => w_CARRY(0));
f_0: for i in 1 to (30) generate
u_1: alu_1bit port map (i_OPERATION => i_OPERATION,
i_INV_BIT => i_INV_BIT,
i_CARRY_IN => w_CARRY(i-1),
i_A => i_A(i),
i_B => i_B(i),
i_LESS => '0',
o_RESULT => w_RESULT(i),
o_CARRY_OUT => w_CARRY(i));
end generate f_0;
u_2: alu_1bit_msb port map (i_OPERATION => i_OPERATION,
i_INV_BIT => i_INV_BIT,
i_CARRY_IN => w_CARRY(30),
i_A => i_A(31),
i_B => i_B(31),
i_LESS => '0',
o_RESULT => w_RESULT(31),
o_SET => w_SET,
o_OVERFLOW => o_OVERFLOW);
end arch_1;
ieee库;
使用ieee.std_logic_1164.all;
实体alu_1bit_msb为
港口(
i_操作:在标准逻辑向量中(1到0);
i_INV_位:标准逻辑中;
i_进位:标准逻辑;
i_A:标准逻辑;
i_B:标准逻辑;
i_LESS:在标准逻辑中;
o_结果:输出标准_逻辑;
o_设置:输出标准逻辑;
o_溢出:输出标准_逻辑);
末端alu_1bit_msb;
alu_1bit_msb的建筑拱门1为
元件全加器
港口(
i_CIN:标准逻辑;
i_DIN0:标准逻辑;
i_DIN1:标准逻辑;
输出:输出标准逻辑;
输出:输出标准逻辑);
端部元件;
组件mux4为
端口(i_选择:标准逻辑向量中(1到0);
i_DIN0:标准逻辑;
i_DIN1:标准逻辑;
i_DIN2:标准逻辑;
i_DIN3:标准逻辑;
输出:输出标准逻辑);
端部元件;
信号w_B:标准逻辑;
信号w_OUPA:标准逻辑;
信号输出:标准逻辑;
开始
w_B w_B,
o_DOUT=>w_outpa,
o_COUT=>w_COUT);
u_2:mux4端口映射(
i_SEL=>i_操作,
i_DIN0=>i_A和i_B,
i_DIN1=>i_A或i_B,
i_DIN2=>w_outpa,
i_DIN3=>i_LESS,
o_DOUT=>o_结果);
端弓1;
您是否意识到,在向我们显示问题的错误消息时,您最初没有在问题中发布alu_1bit_msb.vhd?听众的困惑是可以原谅的。文件名不需要与中的声明有任何关系
在任何情况下,您放入ALU1bit的修复程序也应放入ALU1bit_msb:
library ieee;
use ieee.std_logic_1164.all;
entity alu_1bit_msb is
port (
i_OPERATION : in std_logic_vector(1 downto 0);
i_INV_BIT : in std_logic;
i_CARRY_IN : in std_logic;
i_A : in std_logic;
i_B : in std_logic;
i_LESS : in std_logic;
o_RESULT : out std_logic;
o_SET : out std_logic;
o_OVERFLOW : out std_logic);
end alu_1bit_msb;
architecture arch_1 of alu_1bit_msb is
component full_adder is
port (
i_CIN : in std_logic;
i_DIN0 : in std_logic;
i_DIN1 : in std_logic;
o_DOUT : out std_logic;
o_COUT : out std_logic);
end component;
component mux4 is
port(i_SEL : in std_logic_vector(1 downto 0);
i_DIN0 : in std_logic;
i_DIN1 : in std_logic;
i_DIN2 : in std_logic;
i_DIN3 : in std_logic;
o_DOUT : out std_logic);
end component;
signal w_B : std_logic;
signal w_OUTFA : std_logic;
signal w_COUT : std_logic;
begin
w_B <= i_INV_BIT XOR i_B;
o_SET <= w_OUTFA;
o_OVERFLOW <= (w_COUT XOR i_CARRY_IN) AND i_OPERATION(1);
u_1: full_adder port map (i_CIN => i_CARRY_IN,
i_DIN0 => i_A,
i_DIN1 => w_B,
o_DOUT => w_OUTFA,
o_COUT => w_COUT);
u_2: mux4 port map(
i_SEL => i_OPERATION,
i_DIN0 => i_A AND i_B,
i_DIN1 => i_A OR i_B,
i_DIN2 => w_OUTFA,
i_DIN3 => i_LESS,
o_DOUT => o_RESULT);
end arch_1;
alu 1bit msb的架构拱门1为
元件全加器
港口(
i_CIN:标准逻辑;
i_DIN0:标准逻辑;
i_DIN1:标准逻辑;
输出:输出标准逻辑;
输出:输出标准逻辑);
端部元件;
组件mux4为
端口(i_选择:标准逻辑向量中(1向下
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
entity alu_32bit is
port (
i_OPERATION : in std_logic_vector(1 downto 0);
i_INV_BIT : in std_logic;
i_A : in std_logic_vector(31 downto 0);
i_B : in std_logic_vector(31 downto 0);
o_RESULT : out std_logic_vector(31 downto 0);
o_ZERO : out std_logic;
o_OVERFLOW : out std_logic);
end alu_32bit;
architecture arch_1 of alu_32bit is
component alu_1bit is
port (
i_OPERATION : in std_logic_vector(1 downto 0);
i_INV_BIT : in std_logic;
i_CARRY_IN : in std_logic;
i_A : in std_logic;
i_B : in std_logic;
i_LESS : in std_logic;
o_RESULT : out std_logic;
o_CARRY_OUT : out std_logic);
end component;
component alu_1bit_msb is
port (
i_OPERATION : in std_logic_vector(1 downto 0); -- entrada de operação (controle de operação)
i_INV_BIT : in std_logic;
i_CARRY_IN : in std_logic;
i_A : in std_logic;
i_B : in std_logic;
i_LESS : in std_logic;
o_RESULT : out std_logic;
o_SET : out std_logic;
o_OVERFLOW : out std_logic);
end component;
signal w_RESULT : std_logic_vector(31 downto 0);
signal w_CARRY : std_logic_vector(30 downto 0);
signal w_SET : std_logic;
begin
o_RESULT <= w_RESULT;
o_ZERO <= NOT (or_reduce(w_RESULT));
u_0: alu_1bit port map (i_OPERATION => i_OPERATION,
i_INV_BIT => i_INV_BIT,
i_CARRY_IN => i_INV_BIT,
i_A => i_A(0),
i_B => i_B(0),
i_LESS => w_SET,
o_RESULT => w_RESULT(0),
o_CARRY_OUT => w_CARRY(0));
f_0: for i in 1 to (30) generate
u_1: alu_1bit port map (i_OPERATION => i_OPERATION,
i_INV_BIT => i_INV_BIT,
i_CARRY_IN => w_CARRY(i-1),
i_A => i_A(i),
i_B => i_B(i),
i_LESS => '0',
o_RESULT => w_RESULT(i),
o_CARRY_OUT => w_CARRY(i));
end generate f_0;
u_2: alu_1bit_msb port map (i_OPERATION => i_OPERATION,
i_INV_BIT => i_INV_BIT,
i_CARRY_IN => w_CARRY(30),
i_A => i_A(31),
i_B => i_B(31),
i_LESS => '0',
o_RESULT => w_RESULT(31),
o_SET => w_SET,
o_OVERFLOW => o_OVERFLOW);
end arch_1;
library ieee;
use ieee.std_logic_1164.all;
entity alu_1bit_msb is
port (
i_OPERATION : in std_logic_vector(1 downto 0);
i_INV_BIT : in std_logic;
i_CARRY_IN : in std_logic;
i_A : in std_logic;
i_B : in std_logic;
i_LESS : in std_logic;
o_RESULT : out std_logic;
o_SET : out std_logic;
o_OVERFLOW : out std_logic);
end alu_1bit_msb;
architecture arch_1 of alu_1bit_msb is
component full_adder is
port (
i_CIN : in std_logic;
i_DIN0 : in std_logic;
i_DIN1 : in std_logic;
o_DOUT : out std_logic;
o_COUT : out std_logic);
end component;
component mux4 is
port(i_SEL : in std_logic_vector(1 downto 0);
i_DIN0 : in std_logic;
i_DIN1 : in std_logic;
i_DIN2 : in std_logic;
i_DIN3 : in std_logic;
o_DOUT : out std_logic);
end component;
signal w_B : std_logic;
signal w_OUTFA : std_logic;
signal w_COUT : std_logic;
begin
w_B <= i_INV_BIT XOR i_B;
o_SET <= w_OUTFA;
o_OVERFLOW <= (w_COUT XOR i_CARRY_IN) AND i_OPERATION(1);
u_1: full_adder port map (i_CIN => i_CARRY_IN,
i_DIN0 => i_A,
i_DIN1 => w_B,
o_DOUT => w_OUTFA,
o_COUT => w_COUT);
u_2: mux4 port map(
i_SEL => i_OPERATION,
i_DIN0 => i_A AND i_B,
i_DIN1 => i_A OR i_B,
i_DIN2 => w_OUTFA,
i_DIN3 => i_LESS,
o_DOUT => o_RESULT);
end arch_1;
architecture arch_1 of alu_1bit_msb is
component full_adder is
port (
i_CIN : in std_logic;
i_DIN0 : in std_logic;
i_DIN1 : in std_logic;
o_DOUT : out std_logic;
o_COUT : out std_logic);
end component;
component mux4 is
port(i_SEL : in std_logic_vector(1 downto 0);
i_DIN0 : in std_logic;
i_DIN1 : in std_logic;
i_DIN2 : in std_logic;
i_DIN3 : in std_logic;
o_DOUT : out std_logic);
end component;
signal w_B : std_logic;
signal w_C: std_logic; -- added
signal w_D: std_logic; -- added
signal w_OUTFA : std_logic;
signal w_COUT : std_logic;
begin
w_B <= i_INV_BIT XOR i_B;
o_SET <= w_OUTFA;
w_C <= i_A and i_B; -- added
w_D <= i_A or i_B; -- added
o_OVERFLOW <= (w_COUT XOR i_CARRY_IN) AND i_OPERATION(1);
u_1: full_adder port map (i_CIN => i_CARRY_IN,
i_DIN0 => i_A,
i_DIN1 => w_B,
o_DOUT => w_OUTFA,
o_COUT => w_COUT);
u_2: mux4 port map(
i_SEL => i_OPERATION,
i_DIN0 => w_C, -- was i_A AND i_B,
i_DIN1 => w_D, -- was i_A OR i_B,
i_DIN2 => w_OUTFA,
i_DIN3 => i_LESS,
o_DOUT => o_RESULT);
end arch_1;