在 VHDL 中端口映射到地面

Port Map-ing to ground in VHDL

我是 VHDL 的新手,在尝试将地图移植到地面时遇到问题。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity msPC4 is
    Port ( b : in  STD_LOGIC_VECTOR (3 downto 0);
           clk : in  STD_LOGIC;
           reset : in  STD_LOGIC;
           a : out  STD_LOGIC_VECTOR (3 downto 0);
              co : out STD_LOGIC);
end msPC4;

architecture Structure of msPC4 is

    component msdff4
        Port ( d : in  STD_LOGIC_VECTOR (3 downto 0);
                 clk : in  STD_LOGIC;
                 q : out  STD_LOGIC_VECTOR (3 downto 0));
    end component;

    component msFA4bit
    Port ( a : in  STD_LOGIC_VECTOR (3 downto 0);
           b : in  STD_LOGIC_VECTOR (3 downto 0);
           ci : in  STD_LOGIC;
           s : out  STD_LOGIC_VECTOR (3 downto 0);
           co : out  STD_LOGIC);
    end component;

    component ms21mux4
    Port ( d1 : in  STD_LOGIC_VECTOR (3 downto 0);
           d0 : in  STD_LOGIC_VECTOR (3 downto 0);
           s : in  STD_LOGIC;
           z : out  STD_LOGIC_VECTOR (3 downto 0));
    end component;

    signal w0, w1, w2, w3: STD_LOGIC_VECTOR (3 downto 0);
    signal w4 : STD_LOGIC;


w4 <= '0';
w3 <= '0000';

begin
gmsPC4g1: msdff4 port map (w1,clk,w2);
gmsPC4g2: msFA4bit port map (w2,b,w4,w0,co);
gmsPC4g3: ms21mux4 port map (w0,w3,clk,w1);
a <= w2;

end Structure;

所以如果你注意到的话,我有 3 个组件,几个信号来连接所有东西等等。

我真正想要的是将信号 w3 和 w4 接地(可以说是逻辑低电平),但无论出于何种原因,我这辈子都无法弄清楚我应该怎么做这样做。

FWIW 我是一名 EE,所以我更习惯从硬件端看到这一点。此外,这个项目特别 必须 使用端口映射而不是行为方面的东西来完成。抱歉。

编辑:错误在 w3 设置为“0”、w4 设置为“0000”的行抛出。双引号不能修复此错误。将它移到 begin 中并不能修复错误。在开始集内,我得到一个 "UNEXPECTED TICK",在开始集外,我得到一个 "UNEXPECTED IDENTIFIER"。就是真的不想让我决定东西的价值。

更改代码:

-- w4 <= '0';
-- w3 <= '0000';

begin
    w4 <= '0';
    w3 <= "0000";

允许成功分析,注意没有来自 w4w3 的其他驱动程序。

或者您可以在声明中提供默认值:

    signal w0, w1, w2: STD_LOGIC_VECTOR (3 downto 0);
    signal w3: STD_LOGIC_VECTOR (3 downto 0) := "0000";
    signal w4 : STD_LOGIC := '0';


-- w4 <= '0';
-- w3 <= '0000';

这也分析。

默认值表示信号分配前的信号值。

您也可以直接提供值:

gmsPC4g1: msdff4 port map (w1,clk,w2);
gmsPC4g2: msFA4bit port map (w2,b,'0',w0,co);   -- w4
gmsPC4g3: ms21mux4 port map (w0,"0000",clk,w1); -- w3

此分析。

或提供常量值:

    signal w0, w1, w2: STD_LOGIC_VECTOR (3 downto 0);
    constant w3: std_logic_vector(3 downto 0) := "0000";
    constant w4 : STD_LOGIC := '0';


-- w4 <= '0';
-- w3 <= '0000';

begin

gmsPC4g1: msdff4 port map (w1,clk,w2);
gmsPC4g2: msFA4bit port map (w2,b,w4,w0,co);
gmsPC4g3: ms21mux4 port map (w0,w3,clk,w1);

这也分析。

注意字符串文字值中使用的双引号 ("0000")。单引号(刻度)用于具有图形表示的字符文字。

您既没有使用软件包 std_logic_arith 也没有使用 std_logic_unisigned。他们的使用条款是多余的。