verilog中case使用问题

moduleyzb808(sel,a,b,c,d,y);input[1:0]sel;inputa,b,c,d;outputy;regy;always@(seloraorb... module yzb808(sel,a,b,c,d,y);
input[1:0] sel;
input a,b,c,d;
output y;
reg y;
always@(sel or a or b or c or d)
begin
case(sel)
2'b00:y=a;
2'b01:y=b;
2'b10:y=c;
2'b11:y=d;
endcase
end
endmodule
时序仿真时候如果a,b,c,d输入为高阻态,y不能输出高阻态
同样思路用if...else就米问题 各位强人 请教下
展开
 我来答
大宝妈谈教育
高粉答主

2020-05-02 · 关注我不会让你失望
知道小有建树答主
回答量:3306
采纳率:100%
帮助的人:50.3万
展开全部

CASE变成CASEX再加上default:y=1'b0就可以解决此问题,使用方法。

如下参考:

1.首先,右键单击项目并单击NewSource以创建一个新的代码文件。

2.选择用户文档创建一个自定义文档文档,文件名和后缀随意。

3.创建完成后,切换到文件面板底部,双击打开文件,根据自己喜欢的形式输入数据。

4.写完数据文件后,右键单击项目,单击NewSource,然后选择Verilog测试装置,输入文件名并继续,选择要测试的模块,然后创建文件。

5.双击打开文件,可以看到要测试的模块块的输入对应一些reg寄存器类型,输出对应一些wire类型。添加两个参数常量,然后为for循环添加计数变量J,并添加一个向量数组来保存文件读取的数据。

6.下面是程序生成的用于实例化和连接接收测试模块的代码。只需编写end之间的测试代码。

leehyfer
推荐于2017-09-07 · TA获得超过1517个赞
知道小有建树答主
回答量:576
采纳率:100%
帮助的人:221万
展开全部
always@(sel or a or b or c or d)
begin
case(sel)
2'b00:y=a;
2'b01:y=b;
2'b10:y=c;
2'b11:y=d;
default:y=1'bz; //这里给一个默认值就行了
endcase
end
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Bunny4288
2010-09-20 · TA获得超过182个赞
知道答主
回答量:45
采纳率:0%
帮助的人:32.2万
展开全部
把CASE 变成CASEX试试 再加上default:y=1'b0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式