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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6994|回复: 10

[求助] case语句分支太多如何优化?

[复制链接]
发表于 2016-8-3 16:08:21 | 显示全部楼层 |阅读模式

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

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

x
如下面所示,一共有2000多个分支,请问如何优化以减少资源消耗?


begin
     case(index)
          12'd0 :cmd_data = {1'b1, 10'h000, 8'h42};
          12'd1 :cmd_data = {1'b1, 10'h3DF, 8'h01};     
          12'd2 :cmd_data = {1'b1, 10'h2A6, 8'h0E};     
          12'd3 :cmd_data = {1'b1, 10'h2A8, 8'h0E};     
          12'd4 :cmd_data = {1'b1, 10'h292, 8'h08};     
          12'd5 :cmd_data = {1'b1, 10'h293, 8'h80};     
          12'd6 :cmd_data = {1'b1, 10'h294, 8'h00};     
          12'd7 :cmd_data = {1'b1, 10'h2AB, 8'h06};     
          12'd8 :cmd_data = {1'b1, 10'h2AC, 8'h73};     
          12'd9 :cmd_data = {1'b1, 10'h009, 8'h07};
          ……
          12'd2566 :cmd_data = {1'b1, 10'h050, vco_data[23:16]};
          12'd2567 :cmd_data = {1'b1, 10'h057, vco_data[15:8]};
          12'd2568 :cmd_data = {1'b1, 10'h261, vco_data[7:0]};     
     endcase
end
发表于 2016-8-3 16:11:26 | 显示全部楼层
使用Block RAM吧,将所有数据写到BRAM中,然后根据INDEX读出。
发表于 2016-8-3 16:37:30 | 显示全部楼层
可以这样吗
case(index[11:8])
     4'd0: case(index[7:4])
              4'd0:case(index[3:0])
                     4'd0:
                     4'd1:
                     ……
                     endcase
              4'd1:
              ……
             endcase              
     4'd1:
     ……
endcase
发表于 2016-8-3 16:58:31 | 显示全部楼层
回复 3# haimo


   我觉得这个本质上和一个case没有太大区别,仍然都是遍历0~2047,使用LUT和FF资源。
发表于 2016-8-3 18:04:07 | 显示全部楼层
去掉高位固定的1,不就是1块BRAM的事情吗
 楼主| 发表于 2016-8-3 19:40:14 | 显示全部楼层
回复 5# huster


   高位的1貌似是寄存器读写使能,1表示写,0表示读
发表于 2016-8-3 20:09:50 | 显示全部楼层
首先要把ROM和MUX_OP部分区分开来。就你上面的例子,最后三个index的低8位就是MUX_OP,其他的就是ROM
发表于 2016-8-3 20:19:06 | 显示全部楼层
猜測應該是某IC的register設定
然後透過SPI之類的介面去讀寫吧
把所有command存到ROM就行了
发表于 2016-8-3 20:38:39 | 显示全部楼层
LUT貌似可以
发表于 2016-8-3 23:02:08 | 显示全部楼层
看起来你的输出可能是常量,也可能是某个变量输入,常量部分可以用ROM,变量部分要用MUX,具体怎么简化取决于地址空间和输出的对应情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-1-3 23:02 , Processed in 0.023742 second(s), 9 queries , Gzip On, Redis On.

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