在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4601|回复: 12

[求助] 用Verilog的case语法做multiplexer出的问题

[复制链接]
发表于 2016-3-11 16:41:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 zhang_peng 于 2016-3-13 08:38 编辑

用case语法,想做一个选择器, 16选1

wire [15:0]match;
wire [11:0]a;
wire [11:0]b[15:0];


always @(match)
    case(match)
    16'h0001:a=b[0];
    16'h0002:a=b[1];
    16'h0004:a=b[2];
    16'h0008:a=b[3];


    16'h0010:a=b[4];
    16'h0020:a=b[5];
    16'h0040:a=b[6];
    16'h0080:a=b[7];


    16'h0100:a=b[8];
    16'h0200:a=b[9];
    16'h0400:a=b[10];
    16'h0800:a=b[11];


    16'h1000:a=b[12];
    16'h2000:a=b[13];
    16'h4000:a=b[14];
    16'h8000:a=b[15];


    default:a=12'hxxx;
    endcase



simulator或者合成,都报错,但是不显示是什么错误!
是因为b被设置为数组的原因,不能用一个变量来做索引吗?
求助
发表于 2016-3-12 09:36:58 | 显示全部楼层
你的always的敏感电平列表有问题
发表于 2016-3-12 10:08:38 | 显示全部楼层
always @(match)有问题,应该改成 always @(position)否则无法触发always工作
 楼主| 发表于 2016-3-13 08:37:23 | 显示全部楼层
回复 3# yuanlwjt

哎呀,不好意思, 笔误,笔误, 应该是match,不是position, 已经修改了, 仍然有问题呢
发表于 2016-3-13 16:13:48 | 显示全部楼层
a要定义为reg,b也 要定义为reg,不能是wire类型
发表于 2016-3-13 16:26:29 | 显示全部楼层
回复 5# yuanlwjt


    为什么b也要定义为reg型,不是只对赋值左边有要求吗?
发表于 2016-3-13 20:27:09 | 显示全部楼层
三个问题:
1)敏感列表应该是always @(match or b)
2)a必须是reg型
3)b的定义方法需要verilog2005的支持,请检查工具是否支持。
 楼主| 发表于 2016-3-14 14:51:44 | 显示全部楼层
回复 7# orlye


   为什么a必须是reg型呢?
发表于 2016-3-14 16:48:32 | 显示全部楼层
回复 8# zhang_peng


   1.a 必须是reg;b可以是wire   2. always@(match or b)

   Enjoy.
发表于 2016-3-15 15:02:22 | 显示全部楼层
回复 8# zhang_peng

这是最基本的语法啊。
wire只能连线或者assign,不能放了always里赋值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 20:05 , Processed in 0.028101 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表