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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1699|回复: 6

[求助] 使用FOR例化多个ELSE IF语法报错,请问哪里写错了?

[复制链接]
发表于 2022-2-24 14:23:20 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 guidoahead 于 2022-2-24 14:33 编辑

1.png 2.jpg 错误代码:
           READ:begin
              if(ahb_ready_i & grant_out[0] & (wr_addr_o == dest_block_size_i[31:0])) begin
                   if(dest_auto_reload_i[0])
                        next_state = AUTO_DONE;
                   else
                        next_state = NOM_DONE;
              end

              for (i=1;i<CHANNEL_NUMBER;i=i+1) begin
              else if(ahb_ready_i & grant_out & (wr_addr_o == dest_block_size_i[32*i+31:32*i])) begin: loop
                   if(dest_auto_reload_i)
                        next_state = AUTO_DONE;
                   else
                        next_state = NOM_DONE;
              end
              end


正确代码:
image.png


我想通过FOR语句实现上述功能,,但是报语法第111行有错误,请问各位前辈哪里写错了?





发表于 2022-2-25 09:39:12 | 显示全部楼层
if else if 要配对
 楼主| 发表于 2022-2-25 10:52:13 | 显示全部楼层


A1985 发表于 2022-2-25 09:39
if else if 要配对


没理解 能写个代码举个例子吗
想实现这个功能
比如定义一个parameter CHAN_NUM = 5.
if(chan == 0)
num <= 0;
else if(chan == 1)
num <= 1;
else if(chan == 2)
num <= 2;
else if(chan == 3)
num <= 3;
else if(chan == 4)
num <= 4;




根据CHAN_NUM的个数 自动例化出来多个else if
genvar i ;
if(chan == 0)
num <= 0;
for(i = 1 ; i<CHAN_NUM ; i++) begin
else if(chan == i)
num <= i;
end

但是这样写说语法错误  我该怎么写才能实现我想要个功能






发表于 2022-2-25 11:07:15 | 显示全部楼层
你这种写法相当于for循环上面隐含了else,就变成了:
if(xxx)
    xxxx;
else
    else if(xxx)
        xxxx;
这种显然不符合语法要求。
发表于 2022-2-25 11:21:20 | 显示全部楼层
本帖最后由 Love24 于 2022-2-25 11:24 编辑


guidoahead 发表于 2022-2-25 10:52
没理解 能写个代码举个例子吗
想实现这个功能
比如定义一个parameter CHAN_NUM = 5.


你举的这个例子不就是:
num<=chan;吗?

使用generate的话,试试这样行不行
genvar i ;
if(chan == 0)
    num <= 0;generate
for(i = 1 ; i<CHAN_NUM ; i++) begin:chan_num   else if(chan == i)
    num <= i;end
endgenerate











 楼主| 发表于 2022-2-25 12:15:33 | 显示全部楼层


Love24 发表于 2022-2-25 11:21
你举的这个例子不就是:
num


这个不行
generate 只能例化一个语块  以ALWAYS  ASSIGN MODULE开头 不能例化内部一块句子
发表于 2022-3-18 11:23:34 | 显示全部楼层
for循环不能单独作为语句块,要么放always块,要么放generate块
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 12:18 , Processed in 0.020368 second(s), 7 queries , Gzip On, Redis On.

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