需要了解如何使用选定信号分配并包含一个4位内部信号,称为WXYZ,通过将W与X连接,Y与Z连接,用于以下布尔代数表达式F(W,X,Y,Z)= Y'Z '+ W'X' + X'Y
ENTITY Part_2A IS
PORT(
W, X, Y, Z : IN STD_LOGIC;
G1 : OUT STD_LOGIC);
END Part_2A;
ARCHITECTURE sig OF Part_2A IS
SIGNAL inputs : STD_LOGIC_VECTOR(3 downto 0);
SIGNAL outputs: STD_LOGIC;
BEGIN
--Concatenate input ports into 4-bit signal
inputs <= W & X & Y & Z;
WITH inputs SELECT
outputs <= "1" when "0000",
"1" when "0001",
"1" when "0010",
"1" when "0011",
"1" when "0100",
"1" when "1000",
"1" when "1010",
"1" when "1011",
"1" when "1100",
"0" when others;
G1 <= outputs;
END sig;
答案 0 :(得分:1)
你不能提出比
更好的问题需要了解如何使用选定信号分配并包含一个4位内部信号,称为WXYZ,通过将W与X连接,Y与Z连接,用于以下布尔代数表达式F(W,X,Y,Z)= Y'#39; Z&#39 + W&#39; X&#39; + X&#39; Y
我甚至没有在那里看到问号。
添加了一个引用IEEE库std_logic_1164的上下文子句,并将字符串文字"1"
和"0"
转换为字符文字'1
&#39;和'0'
(字符文字是可接受的枚举文字,std_ulogic std_logic的基本类型是枚举标量类型),我们有类似的东西:
library ieee;
use ieee.std_logic_1164.all;
entity part_2a is
port (
w, x, y, z : in std_logic;
g1 : out std_logic
);
end entity part_2a;
architecture sig of part_2a is
signal inputs : std_logic_vector(3 downto 0);
signal outputs: std_logic;
begin
--concatenate input ports into 4-bit signal
inputs <= w & x & y & z;
with inputs select
outputs <= '1' when "0000",
'1' when "0001",
'1' when "0010",
'1' when "0011",
'1' when "0100",
'1' when "1000",
'1' when "1010",
'1' when "1011",
'1' when "1100",
'0' when others;
g1 <= outputs;
end architecture sig;
哪些分析没有错误。
您的VHDL工具可能误导了您。有一些VHDL实现专门抱怨类型不匹配。例如ghdl:
ghdl -a part_2a.vhdl
part_2a.vhdl:21:21:不能匹配字符串文字&#34; 1&#34;使用类型枚举子类型&#34; std_logic&#34;
part_2a.vhdl:22:21:不能匹配字符串文字&#34; 1&#34;使用类型枚举子类型&#34; std_logic&#34;
part_2a.vhdl:23:21:不能匹配字符串文字&#34; 1&#34;使用类型枚举子类型&#34; std_logic&#34;
part_2a.vhdl:24:21:不能匹配字符串文字&#34; 1&#34;使用类型枚举子类型&#34; std_logic&#34;
part_2a.vhdl:25:21:不能匹配字符串文字&#34; 1&#34;使用类型枚举子类型&#34; std_logic&#34;
part_2a.vhdl:26:21:不能匹配字符串文字&#34; 1&#34;使用类型枚举子类型&#34; std_logic&#34;
part_2a.vhdl:27:21:不能匹配字符串文字&#34; 1&#34;使用类型枚举子类型&#34; std_logic&#34;
part_2a.vhdl:28:21:不能匹配字符串文字&#34; 1&#34;使用类型枚举子类型&#34; std_logic&#34;
part_2a.vhdl:29:21:不能匹配字符串文字&#34; 1&#34;使用类型枚举子类型&#34; std_logic&#34;
part_2a.vhdl:30:21:不能匹配字符串文字&#34; 0&#34;使用类型枚举子类型&#34; std_logic&#34;
ghdl:编译错误
虽然有些人在第一次出错时退出:
nvc -a part_2a.vhdl
** Error: no one dimensional arrays of character type in context
File part_2a.vhdl, Line 21
outputs <= "1" when "0000",
^^^
如果你有一个只是指向声明的开头
WITH inputs SELECT
如果没有有用的信息,您可能会认为它是串联问题(取决于实际的错误消息所说的内容)。这解释了为什么Minimal, Complete, and Verifiable example可能有价值。
错误消息往往与特定供应商不同,并告诉您要执行的操作。