打印
[VHDL]

求助帮忙看看程序,很短

[复制链接]
1216|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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,也是这种错误。

使用特权

评论回复
5
戈卫东| | 2016-7-10 12:13 | 只看该作者
ENTITY ARCHITECTURE  用了同样的名字会不会有问题?

使用特权

评论回复
6
戈卫东| | 2016-7-10 12:29 | 只看该作者
case 语句是不是必须放到某个 process里面?

使用特权

评论回复
7
TUee_1994|  楼主 | 2016-7-10 16:07 | 只看该作者
戈卫东 发表于 2016-7-10 12:29
case 语句是不是必须放到某个 process里面?

谢谢!的确是这样!问题解决了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝