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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

帮忙看这句语句怎么优化(verilog)

[复制链接]
发表于 2007-9-12 17:23:19 | 显示全部楼层 |阅读模式

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

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

x
always @ (posedge clk or negedge rstn)
begin
     if(!rstn)
         CbCr_out        <= 8'b0;
   else
      CbCr_out <= CbCr_pre[10]? 8'h00 : (CbCr_pre[9]| CbCr_pre[8]) ? 8'hff : CbCr_pre[7:0]; ////就是这个语句
end

编译后发现程序中 CbCr_out 严重影响了fmax导致达不到要求,
想把这个语句优化下以减少内部延时,请知道怎么改写比较好啊??
发表于 2007-9-12 20:28:43 | 显示全部楼层
如果这条路径确实是critical path的话,在中间插个dff吧.
把(CbCr_pre[9]| CbCr_pre[8]) ? 8'hff : CbCr_pre[7:0]用一个reg变量寄存一下.
不过要注意满足时序.
发表于 2007-9-13 10:13:20 | 显示全部楼层

尝试这样写

always @ (posedge clk or negedge rstn)
begin
     if(!rstn)                                                     //
异步清零
         CbCr_out  <= 8'b0;

else if( CbCr_pre[10] )                            //同步清零
CbCr_out  <= 8'b0;
else if( CbCr_pre[9]| CbCr_pre[8] )       //同步置位
CbCr_out  <= 8'hff;
    else
        CbCr_out <= CbCr_pre[7:0];

end
如果你的综合库中包含了带同步清零和置位的触发器,那么综合出来的结果要比你的写法性能要好,如果没有的话,那就要考虑其他方法了

发表于 2007-9-24 21:16:16 | 显示全部楼层
也乡了解一下 谢谢
发表于 2007-9-29 10:22:22 | 显示全部楼层
我觉得这段代码应该可以达到时钟要求的吧
请教问下karnizhu,你的写法相比有什么好处
发表于 2007-9-29 16:07:04 | 显示全部楼层
CbCr_out <= {8{CbCr_pre[10]}} && ({8{CbCr_pre[9] | CbCr_pre[8]}} ||  CbCr_pre[7:0]);
发表于 2007-9-30 11:02:55 | 显示全部楼层

我认为

个人意见!
  你用香农公式展开或用面积转化成速度的方法!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-26 03:33 , Processed in 0.019274 second(s), 8 queries , Gzip On, Redis On.

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