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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2482|回复: 4

[求助] 多位优先级编码器中如何使用for 循环精简代码?

[复制链接]
发表于 2014-12-7 18:28:40 | 显示全部楼层 |阅读模式
300资产
本帖最后由 JoyShockley 于 2014-12-7 19:11 编辑

优先级编码器代码如下:
if (in[0])       out = 0;
else if (in[1]) out = 1;
else if (in[2]) out = 2;
...
else if (in[63]) out = 63;

else out = 0;

上述代码,如何用for 精简代码?下面的代码可以吗?

(第一段for)
integer i;
for(i=0; i<64; i=i+1) begin
  if(in[0]) out=0;
  else if(in【i】) out = i;
  else out = 0;
end

或者这样?(第二段for)
if(in[0]) out=0;
for(i=0; i<64; i=i+1) begin
  else if(in 【i】) out = i;
end
else out = 0;

但第二段for代码语法错误,第一段for代码语法没问题,
请问第一段for代码会被展开成我们需要的形式么??

最佳答案

查看完整内容

case也可以,将非优先级的那些项目设为x,如 case(in) 2'b1x: out
发表于 2014-12-7 18:28:41 | 显示全部楼层
case也可以,将非优先级的那些项目设为x,如
case(in)
2'b1x: out <= 0;
2'bx1: out<=1;
endcase
我记得在一本外文书上有写的,当两项有冲突是,第一项为优先级,不过,我没这样做过,我是菜鸟一个
 楼主| 发表于 2014-12-7 19:08:29 | 显示全部楼层
本帖最后由 JoyShockley 于 2014-12-7 19:11 编辑

回复 1# JoyShockley


    还是说第一段会unroll 为

    if (in[0]) out = 0;
    else if (in[1]) out =1;
    else out = 0;

   if (in[0]) out = 0;
    else if (in[2]) out =1;
    else out = 0;

      if (in[0]) out = 0;
    else if (in[2]) out =1;
    else out = 0;

   if (in[0]) out = 0;
    else if (in[3]) out =1;
    else out = 0;
.....
?
发表于 2014-12-7 19:20:19 | 显示全部楼层
我认为第一段代码会展开成除in[0]外,其他无优先级的编码器,也就是二楼的代码
 楼主| 发表于 2014-12-7 19:24:12 | 显示全部楼层
回复 3# qqiummo


    如何才能实现多位的 优先级编码器的代码呢? 除了一直写 if else 语句
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-25 16:03 , Processed in 0.032783 second(s), 8 queries , Gzip On, Redis On.

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