VHDL编程,错误在哪里?

VHDL编程,错误在哪里?,vhdl,decode,Vhdl,Decode,我正试图在Quartus上编写一个程序来合成一个74hc138解码器 LIBRARY IEEE; USE IEEE.std_logic_1164.all; use ieee.STD_LOGIC_ARITH.ALL; use ieee.STD_LOGIC_UNSIGNED.ALL; use IEEE.STD_LOGIC_SIGNED; ENTITY demux IS PORT ( a: IN INTEGER RANGE 0 TO 4; --bus 3 bits e: IN BIT_VECTOR

我正试图在Quartus上编写一个程序来合成一个74hc138解码器

LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
use ieee.STD_LOGIC_ARITH.ALL;
use ieee.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_SIGNED;

ENTITY demux IS
PORT (
a: IN INTEGER RANGE 0 TO 4; --bus 3 bits 
e: IN BIT_VECTOR (2 DOWNTO 0 ); --bus de 3 bits
y: OUT BIT_VECTOR(7 DOWNTO 0);
v: IN BIT_VECTOR(2 DOWNTO 0)
);
END demux;

ARCHITECTURE Archi of demux IS
BEGIN
PROCESS (a)
BEGIN
if v /= '001' THEN y <= '11111111 ; THE PROBLEM IS HERE
ELSE
CASE  a is
    when 0 => y <= y(0);
    when 1 => y <= y(1);
    when 2 => y <= y(2);
    when 3 => y <= y(3);
    when 4 => y <= y(4);
    when 5 => y <= y(5);
    when 6 => y <= y(6);
    when 7 => y <= y(7);
END CASE;
END IF;
END PROCESS;
END Archi; -->
IEEE库;
使用IEEE.std_logic_1164.all;
使用ieee.STD_LOGIC_ARITH.ALL;
使用ieee.STD_LOGIC_UNSIGNED.ALL;
使用IEEE.STD逻辑签名;
实体demux是
港口(
a:在0到4的整数范围内;--总线3位
e:位向量(2到0);--总线数据3位
y:输出位_向量(7到0);
v:在位_向量中(2到0)
);
终端解复用;
demux的架构架构是
开始
过程(a)
开始
如果v/='001',则y


(c) 无论如何,不要将上述软件包用于新代码,使用ieee.NUMERIC_STD.all

尤其是+1用于ieee.NUMERIC_STD.all此外,
v
应该在该过程的敏感度列表中。此外,案例语句列出了选项0到7,而选择器(
a
)是
整数范围0到4
,不使用输入
e
,向量
y
被分配单个位(并且被读取,这在2008年之前的VHDL版本中是不允许的)。。。在这种情况下,我建议使用
std\u ulogic
,而不是
std\u logic
。可能重复的。标签中有几个已回答的问题,错误为10500,字符串文字使用单引号。在寻找新的之前先考虑一下。模拟器通常比合成器提供更好的错误信息,合成器通常需要功能代码。此代码几乎没有缩进。当您希望我们阅读和理解代码时,您应该缩进代码。
if v /= '001' THEN y <= '11111111 ;
if v /= "001" THEN y <= "11111111";
use ieee.STD_LOGIC_ARITH.ALL;
use ieee.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_SIGNED;