端口映射到VHDL接地

时间:2015-09-06 22:47:20

标签: mapping port 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'。双引号不能解决此错误。将其移入内部开始并不能解决错误。在开始设置中,我得到了一个“意外收视”并且在开始设置之外我得到了一个“意想不到的标识符”。它真的不想让我决定某事物的价值。

1 个答案:

答案 0 :(得分:1)

更改您的代码:

-- 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。他们的使用条款是多余的。