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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: lyz5432

[求助] 关于case的问题

[复制链接]
发表于 2012-3-21 09:07:58 | 显示全部楼层
回复 10# lucien_1986

如果值为64'h7fff_0000_0000_0000就不对了,按照原电路DEFAULT值应为0, 而不是1,9楼细心~我提供的方法也有这个问题,编码数据不是ONE-HOT的
发表于 2012-3-24 13:24:24 | 显示全部楼层
感觉可以做移位计算,然后设置一个counter。64‘hFFFFFFFFFFFFFFFF向右移位,每移位一次,counter加1,如果等于intermediate8,则out=counter
发表于 2012-4-3 23:22:40 | 显示全部楼层
向左移位,最后一位移进去1 ;如果移位到第一位是1,其余的  &【62:0】= 1就根据这时的计数器值输出 ,这个方法可能需要较多的周期
另一种就类似二分法,可以运算快些
发表于 2012-4-4 17:06:55 | 显示全部楼层
谢谢分享!!!
发表于 2012-4-16 22:48:35 | 显示全部楼层
回复 1# lyz5432


   基于二分法的vongy的代码已经很接近了




  1. input   [63:0]  data_in;
  2. output  [5:0]   data_out;

  3. wire    [31:0]  Temp_32bits;
  4. wire    [15:0]  Temp_16bits;
  5. wire    [7:0]   Temp_8bits;
  6. wire    [3:0]   Temp_4bits;
  7. wire    [1:0]   Temp_2bits;

  8. wire  W32_n, W16_n, W8_n, W4_n, W2_n, W1_n; // negtive of weigh bit of output
  9. wire  RA_32, RA_16, RA_8, RA_4, RA_2, RA_1; // reduction and of down half bits of each bisection operation
  10. wire  G32, G16, G8, G4, G2, G1;   //
  11. wire  AT_4, AT_3, AT_2, AT_1, AT_0;   // And tree

  12. assign RA_32 = & data_in[31:0];
  13. assign RA_16 = & Temp_32bits[15:0];
  14. assign RA_8  = & Temp_16bits[7:0];
  15. assign RA_4  = & Temp_8bits[3:0];
  16. assign RA_2  = & Temp_4bits[1:0];
  17. assign RA_1  = Temp_2bits[0];

  18. assign W32_n = | data_in[63:32];
  19. assign W16_n = | Temp_32bits[31:16];
  20. assign W8_n = | Temp_16bits[15:8];
  21. assign W4_n = | Temp_8bits[7:4];
  22. assign W2_n = | Temp_4bits[3:2];
  23. assign W1_n = Temp_2bits[1];

  24. assign Temp_32bits = W32_n ? data_in[63:32] : data_in[31:0];
  25. assign G32 = W32_n ? RA_32 : 1'b1;
  26. assign Temp_16bits = W16_n ? Temp_32bits[31:16] : Temp_32bits[15:0];
  27. assign G16 = W16_n ? RA_16 : 1'b1;
  28. assign Temp_8bits = W8_n ? Temp_16bits[15:8] : Temp_16bits[7:0];
  29. assign G8 = W8_n ? RA_8 : 1'b1;
  30. assign Temp_4bits = W4_n ? Temp_8bits[7:4] : Temp_8bits[3:0];
  31. assign G4 = W4_n ? RA_4 : 1'b1;
  32. assign Temp_2bits = W2_n ? Temp_4bits[3:2] : Temp_4bits[1:0];
  33. assign G2 = W2_n ? RA_2 : 1'b1;
  34. assign G1 = RA_1;

  35. assign AT_4 = G32 & G16;
  36. assign AT_3 = AT_4 & G8;
  37. assign AT_2 = AT_3 & G4;
  38. assign AT_1 = AT_2 & G2;
  39. assign AT_0 = AT_1 & G1;

  40. assign data_out[5] = (~W32_n) & AT_0;
  41. assign data_out[4] = (~W16_n) & AT_0;
  42. assign data_out[3] = (~W8_n) & AT_0;
  43. assign data_out[2] = (~W4_n) & AT_0;
  44. assign data_out[1] = (~W2_n) & AT_0;
  45. assign data_out[0] = (~W1_n) & AT_0;


复制代码
发表于 2012-4-17 00:05:25 | 显示全部楼层
你的这段程序是用来计算intermediate8中0的个数的吧?
你可以这样:
out0=~intermediate8[63]+~intermediate8[62]+....+~intermediate8[48];
out1=~intermediate8[47]+~intermediate8[46]+....+~intermediate8[32];
out2=~intermediate8[31]+~intermediate8[30]+....+~intermediate8[16];
out3=~intermediate8[15]+~intermediate8[14]+....+~intermediate8[0];
out = out0+out1+out2+out3;
速度不够还可以再拆,注意位数。
2楼做的是对的。9#在装B。
发表于 2012-4-17 11:33:32 | 显示全部楼层
是否可以考虑下看“1”的个数。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-15 09:09 , Processed in 0.018411 second(s), 6 queries , Gzip On, Redis On.

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