中易网

Verilog语言 if 语句

答案:3  悬赏:30  
解决时间 2021-01-14 07:27
  • 提问者网友:练爱
  • 2021-01-14 04:05
Verilog语言 if 语句
最佳答案
  • 二级知识专家网友:鸠书
  • 2021-01-14 04:14
三种形式的if语句:
1)if(表达式)语句。如
if(a>b)
out1 = int1;
2)if(表达式)
语句;
else
语句;如
if(a>b)
out1 = int1;
else
out1 = int2;
3)if(表达式1)
语句1;
else if(表达式2) 语句2;
else if(表达式3) 语句3;
…………………...
else if(表达式m) 语句m;
else 语句n;
条件语句必须在过程块语句中是用(initial和always语句),除了这两个语句引导的bedin end块中可以编写条件语句外,模块中的其他地方都不能编写。
全部回答
  • 1楼网友:独钓一江月
  • 2021-01-14 05:55
if(rxd_state[8:0] = 9'd0)应该是 if(rxd_state[8:0] == 9'd0)吧,还有是否是需要用阻塞式呢追问恩,少写一个=,能不能具体点追答把你实际编的程序贴出来吧,阻塞和非阻塞的区别应该了解下追问贴出一点,if(rxd_state[8:0] == 9'd0) 是不行的,但一个的话就可以,比如:if(rxd_state[2] == 0),都是可以的。费解中……追答程序用的是非阻塞式的,你的这段代码是应该在alwayes模块下的吧,敏感信号是否是时钟信号呢?还有,你仿真是用什么软件?
如果用if---else嵌套代码估计很长了追问所有if语句肯定是在always模块下的,敏感信号肯定是时钟信号,仿真软件是Quartus自带的,下载在板子上结果也是一样的追答敏感信号是时钟信号那不要用阻塞式的,就是说uart_re[8:0] = 9'd0;应该写成
uart_re[8:0] <= 9'd0;
你是写串口?看不出来程序用意是什么?追问其实这样还是不行的。追答不知道你的用意是什么,这可能也会和其他语句相关的,uart_re总共9位么?可以换其它写法试试看追问这个和uart_re没有关系,和rxd_state有关系,rxd_state[8:0]是9位,因为9个接收口,把它们一个一个的并起来也是不行的。并2个还是可以,但3个以上就可能有问题。rxd_state = 0 ,说明这个端口空闲可以使用; = 1说明这个口在接收数据。只能9个口都空闲时才能从RAM里取出数据发送。接收的数据先暂放在各自的RAM里。追答看错了,if(rxd_state[8:0] == 9'd0)) 写成if(!(rxd_state|9'h0))试试
  • 2楼网友:第幾種人
  • 2021-01-14 04:59
这4种情况表达方式是:
if(a>0)
if(b>0) ....... //对应的是a>0,b>0;
else ....... // 对应的是a>0,b<=0;
else
if(b>0)........//对应的是a<0,b>0;
else .........//对应的是a<0,b<0;
不知道你能不能看懂,是使用多重if..else...嵌套用法
追问能看懂呀,这个是经常用到的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息