如何使用numeric_std添加std_logic

spi*_*nt0 4 vhdl

使用numeric_std和vhdl93,我似乎无法弄清楚如何将std_logic信号添加到std_logic_vector.

library ieee;
use ieee.numeric_std.all;

signal in_a, out1: std_logic_vector(3 downto 0);
signal s1 : std_logic;

out1 <= std_logic_vector(signed(in_a) + s1);
Run Code Online (Sandbox Code Playgroud)

use*_*120 5

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

entity add_std_logic is
end entity;

architecture foo of add_std_logic is
   signal in_a, out1: std_logic_vector(3 downto 0);
   signal s1 : std_logic;
   signal s1v:  std_logic_vector(0 to 0);
begin

    s1v <= (others => s1);

    out1 <= std_logic_vector(signed(in_a) + signed(s1v));

end architecture;

architecture fum of add_std_logic is
   signal in_a, out1: std_logic_vector(3 downto 0);
   signal s1 : std_logic;
   subtype s1v is  std_logic_vector(0 to 0);
begin

    out1 <= std_logic_vector(signed(in_a) + ( s1 & ""));

end architecture;
Run Code Online (Sandbox Code Playgroud)

当然,您可以将in_a,s1和out1移动到端口.

  • 谢谢:我看到诀窍是创建一个长度为1的向量:`(s1&"")` (2认同)