如何将VHDL std_logic_vector初始化为“0001”

时间:2017-04-29 17:01:51

标签: vhdl fpga

我想从“0001”而不是“0000”初始化我的向量默认因为我正在做一个“自动”4位乘法器而且(x * 0)没用,所以 我想跳过“0000”值。 这是我的实体:

ENTITY multiplier IS
PORT (
    clk, rst : IN std_logic;
    q, r : INOUT std_logic_vector (3 DOWNTO 0)  := "0001"; -- this not work
    f : OUT std_logic_vector(7 DOWNTO 0)
); 
END multiplier;

1 个答案:

答案 0 :(得分:1)

使用中间信号

library ieee;
use ieee.std_logic_1164.all;

entity multiplier IS
    port (
        clk : in std_logic;
        rst : in std_logic;
        q : out std_logic_vector(3 downto 0);
        r : out std_logic_vector(3 downto 0);
        f : out std_logic_vector(7 downto 0)
    ); 
end entity;

architecture rtl of multiplier is
    use ieee.numeric_std.all;
    signal q_temp: unsigned(3 downto 0) := "0001"; -- or signed
    signal r_temp: unsigned(3 downto 0) := "0001"; -- or signed
begin
    [...your code...]
    q <= std_logic_vector(q_temp);
    r <= std_logic_vector(r_temp);
end architecture;