【发布时间】: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 之前将需要一些时间。书籍和课程可能更有效。