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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1491|回复: 0

[求助] 求助,下面的verilog代码起了什么作用。看的时候没有明白

[复制链接]
发表于 2017-4-14 11:59:46 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 醉月含 于 2017-4-14 12:01 编辑

// leading one detector
module c_lod
  (data_in, data_out);


`include "D:/trunk/src/c_functions.v"


   // number of input ports
   parameter width = 32;


   // number of stages
   localparam depth = clogb(width);


   // vector of requests
   input [0:width-1] data_in;


   // vector of grants
   output [0:width-1] data_out;
   wire [0:width-1]   data_out;


   genvar
      level;


   wire [0:(depth+1)*width-1] a_int;
   wire [0:(depth+1)*width-1] b_int;


   assign a_int[0:width-1] = data_in;
   assign b_int[0:width-1] = data_in;


   generate


      for(level = 0; level < depth; level = level + 1)

begin:levels

   

   wire [0:width-1] a_in;

   assign a_in = a_int[level*width:(level+1)*width-1];

   

   wire [0:width-1] b_in;

   assign b_in = b_int[level*width:(level+1)*width-1];

   

   wire [0:width-1] a_shifted;

   assign a_shifted = {{(1<<level){1'b0}}, a_in[0:width-(1<<level)-1]};

   

   wire [0:width-1] a_out;

   assign a_out = a_in | a_shifted;

   

   wire [0:width-1] b_out;

   assign b_out = b_in & ~a_shifted;

   

   assign a_int[(level+1)*width:(level+2)*width-1] = a_out;

   assign b_int[(level+1)*width:(level+2)*width-1] = b_out;

   

end


   endgenerate


   assign data_out = b_int[depth*width:(depth+1)*width-1];


endmodule
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-20 09:28 , Processed in 0.014595 second(s), 8 queries , Gzip On, Redis On.

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