【问题标题】:Port Map-ing to ground in VHDLVHDL 中的端口映射到地
【发布时间】:2015-09-06 22:47:19
【问题描述】:

我是 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”。它只是真的不想让我决定某物的价值。

【问题讨论】:

  • 他们不再教导声明和陈述之间的区别了吗?
  • 你不能在架构和开始之间赋值。
  • 意外的记号,因为矢量文字必须用双引号括起来,而不是记号("0000",而不是'0000')。意外标识符,因为这两个分配必须进入架构主体(begin 之后),而不是架构声明(begin 之前)。您随机尝试了几种解决方案,但不是全部:您在开始后忘记了组合双引号 +。如果您尝试使用这种随机策略解决所有问题,那么在学习 VHDL 之前将需要一些时间。书籍和课程可能更有效。

标签: mapping port vhdl


【解决方案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。它们的使用条款是多余的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多