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输入不是全局静态的 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

我试图在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.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;