我是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'。双引号不能解决此错误。将其移入内部开始并不能解决错误。在开始设置中,我得到了一个“意外收视”并且在开始设置之外我得到了一个“意想不到的标识符”。它真的不想让我决定某事物的价值。
答案 0 :(得分:1)
更改您的代码:
-- w4 <= '0';
-- w3 <= '0000';
begin
w4 <= '0';
w3 <= "0000";
允许成功分析,注意w4
或w3
没有其他驱动程序。
或者,您可以在声明中提供默认值:
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。他们的使用条款是多余的。