打印

咨询个VHDL CASE语句公共分支的问题

[复制链接]
1596|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xdwumin|  楼主 | 2012-2-22 12:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
像这样写:

case state is
when x"0" =>
when x"1" =>
when x"2" =>
  a <= '1';
when x"3" =>
  a <= '0';
when others =>
  a <= '0';
end case;

和下面的是等价的吗?

case state is
when x"0" =>
  a <= '1';
when x"1" =>
  a <= '1';
when x"2" =>
  a <= '1';
when x"3" =>
  a <= '0';
when others =>
  a <= '0';
end case;

相关帖子

沙发
GoldSunMonkey| | 2012-2-22 13:18 | 只看该作者
明显第一种是错误的表达方式

因为case的语法是:
CASE语句的语法结构如下:

CASE 表达式 IS

       WHEN 条件表达式 => 顺序执行语句;

       WHEN 条件表达式 => 顺序执行语句;

       ……

END CASE

使用特权

评论回复
板凳
GoldSunMonkey| | 2012-2-22 13:22 | 只看该作者
你想写的方式是:
PROCESS(stemp) BEGIN
CASE stemp IS
WHEN "0000" => c <= "100";
--4
WHEN "0001"|"0010"|"0100"|"1000" => c <= "011";
--3
WHEN "0011"|"0101"|"1001"|"0110"|"1010"|"1100" => c <= "010"; --2
WHEN "0111"|"1011"|"1101"|"1110" => c <= "001"; --1
WHEN "1111" => c <= "000"; -- 0;
WHEN OTHERS => c <= "000";
END CASE;

使用特权

评论回复
地板
bityoung| | 2012-2-22 15:33 | 只看该作者
我觉得两种写法语法上应该没错误吧?但是,第一种写法当state=X"0"时,会导致a得到一个不确定值!而第二种写法不会有这种情况吧。

使用特权

评论回复
5
GoldSunMonkey| | 2012-2-22 17:33 | 只看该作者
第一种写法明显有错。

顺序执行语句在哪里?

使用特权

评论回复
6
bityoung| | 2012-2-22 19:41 | 只看该作者
但是第一种我试过了,综合不出错啊!不知道猴哥说的错误是不是除语法之外的错误呢?

使用特权

评论回复
7
bityoung| | 2012-2-22 21:44 | 只看该作者
7# Backkom80 怎么?我说的哪里不对了啊?请指教!呵呵

使用特权

评论回复
8
lirfv| | 2012-3-25 12:37 | 只看该作者
路过               
学习额

使用特权

评论回复
9
明空| | 2012-3-25 23:09 | 只看该作者
第一种写法when x"0" =>相当执行空操作,也就是a保持原值,不一定是等于1

使用特权

评论回复
10
coco11| | 2012-3-26 12:47 | 只看该作者
慢慢看。

使用特权

评论回复
11
diny| | 2012-3-26 22:48 | 只看该作者
:handshake

使用特权

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

本版积分规则

16

主题

71

帖子

0

粉丝