无法使用 VHDL 2008 Quartus Prime 进行编译
Can't compile with VHDL 2008 Quartus Prime
我正在使用 Quartus Prime Lite Edition,我想像这样在 std_logic_vector 上使用一元运算符 nand
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity example1 is
port(
BIN : in std_logic_vector (7 downto 0);
result : out std_logic
);
end;
architecture Beh of example1 is
begin
result <= nand BIN;
end Beh;
我尝试按照 this 说明进行操作,在 编译器设置中的 VHDL 输入 下更改了 VHDL 版本 。仍然没有效果并得到:
错误 (10500):lab2.vhd(16) 文本“nand”附近的 VHDL 语法错误;期望“(”,或标识符(“nand”是保留关键字),或一元运算符
出现此错误是因为“nand”需要两个输入。
从你的问题来看,我觉得你想对输入执行按位与非运算。
如果是,您可以按如下方式替换架构。我假设您熟悉“生成”语法!
architecture Beh of example1 is
--Signals for Storing Intermediate Bitwise Values
signal temp1:std_logic_vector(3 downto 0);
signal temp2:std_logic_vector(1 downto 0);
begin
-- First level of NAND Operations
label_1: for i in 0 to 3 generate
temp1(i)<=BIN(2*i) nand BIN(2*i+1);
end generate label_1;
-- Second level of NAND Operations
label_2: for j in 0 to 1 generate
temp2(j)<= temp1(2*j) nand temp1(2*j+1);
end generate label_2;
-- Getting the Final Output
result<= temp2(1) nand temp2(0);
end Beh;
谢谢,
雷博士
Quartus Prime Lite 不支持 VHDL 2008。
我正在使用 Quartus Prime Lite Edition,我想像这样在 std_logic_vector 上使用一元运算符 nand
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity example1 is
port(
BIN : in std_logic_vector (7 downto 0);
result : out std_logic
);
end;
architecture Beh of example1 is
begin
result <= nand BIN;
end Beh;
我尝试按照 this 说明进行操作,在 编译器设置中的 VHDL 输入 下更改了 VHDL 版本 。仍然没有效果并得到: 错误 (10500):lab2.vhd(16) 文本“nand”附近的 VHDL 语法错误;期望“(”,或标识符(“nand”是保留关键字),或一元运算符
出现此错误是因为“nand”需要两个输入。
从你的问题来看,我觉得你想对输入执行按位与非运算。
如果是,您可以按如下方式替换架构。我假设您熟悉“生成”语法!
architecture Beh of example1 is
--Signals for Storing Intermediate Bitwise Values
signal temp1:std_logic_vector(3 downto 0);
signal temp2:std_logic_vector(1 downto 0);
begin
-- First level of NAND Operations
label_1: for i in 0 to 3 generate
temp1(i)<=BIN(2*i) nand BIN(2*i+1);
end generate label_1;
-- Second level of NAND Operations
label_2: for j in 0 to 1 generate
temp2(j)<= temp1(2*j) nand temp1(2*j+1);
end generate label_2;
-- Getting the Final Output
result<= temp2(1) nand temp2(0);
end Beh;
谢谢, 雷博士
Quartus Prime Lite 不支持 VHDL 2008。