[VHDL] 求助帮忙看看程序,很短

[复制链接]
 楼主| TUee_1994 发表于 2016-7-8 13:59 | 显示全部楼层 |阅读模式
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
---------------------------
PACKAGE MY_PACKAGE IS
TYPE ROM IS ARRAY(0 TO 7) OF STD_LOGIC_VECTOR(3 DOWNTO 0);
END MY_PACKAGE;
---------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE WORK.MY_PACKAGE.ALL;
---------------------------
ENTITY ROMS IS
PORT(ADDR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
  DATA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END ROMS;
---------------------------
ARCHITECTURE ROMS OF ROMS IS
CONSTANT MY_ROM1:ROM:=("0000","0001","0010","0011","0100","0101","0110","0111");
CONSTANT MY_ROM2:ROM:=("1000","1001","1010","1011","1100","1101","1110","1111");
SIGNAL SEL: STD_LOGIC;
SIGNAL ADD: STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL AD : INTEGER;
BEGIN
SEL<=ADDR(3);
ADD<=ADDR(2 DOWNTO 0);
AD <=CONV_INTEGER(AD);

CASE SEL IS
  WHEN '0' => DATA<=MY_ROM1(AD);
  WHEN '1' => DATA<=MY_ROM2(AD);
  WHEN OTHERS => DATA<="ZZZZ";
END CASE;
END ROMS;

这是我练习的程序,就是模仿ROM,输入一个地址,输出对应处的数据。但是在case那里总是出错:
Error (10500): VHDL syntax error at ROMS.vhd(29) near text "CASE";  expecting "end", or "(", or an identifier ("case" is a reserved keyword), or a concurrent statement
Error (10500): VHDL syntax error at ROMS.vhd(31) near text "WHEN";  expecting "end", or "(", or an identifier ("when" is a reserved keyword), or a concurrent statement
类似这种错误。
我一开始用if语句,就一直出这种错,改了几次后,改成case,还是这样 expecting "end", or "(", or an identifier的错误。
求助!!谢谢!!
玄德 发表于 2016-7-8 16:50 | 显示全部楼层

不懂VHDL,
但是语法错误,怎么都好办吧?!



waiter 发表于 2016-7-9 14:43 | 显示全部楼层
WHEN '0' => DATA<=MY_ROM1(AD);
  WHEN '1' => DATA<=MY_ROM2(AD);
你改成:
WHEN 0 => DATA<=MY_ROM1(AD);
  WHEN 1 => DATA<=MY_ROM2(AD);
试试?
 楼主| TUee_1994 发表于 2016-7-9 20:01 | 显示全部楼层
waiter 发表于 2016-7-9 14:43
WHEN '0' => DATA DATA DATA DATA

这样不行。不是定义的是STD_LOGIC类型,就是要加单引号吗?
一直出这个错。本来是用if,也是这种错误。
戈卫东 发表于 2016-7-10 12:13 | 显示全部楼层
ENTITY ARCHITECTURE  用了同样的名字会不会有问题?
戈卫东 发表于 2016-7-10 12:29 | 显示全部楼层
case 语句是不是必须放到某个 process里面?
 楼主| TUee_1994 发表于 2016-7-10 16:07 来自手机 | 显示全部楼层
戈卫东 发表于 2016-7-10 12:29
case 语句是不是必须放到某个 process里面?

谢谢!的确是这样!问题解决了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部