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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2199|回复: 3

[求助] 关于if-else语句结构的优化 以提高时序性能

[复制链接]
发表于 2021-1-24 10:09:21 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 come_on_sn 于 2021-1-24 10:19 编辑




  1. <span style="background-color: rgb(255, 255, 255);">process(clk_sample)</span>
  2. <span style="background-color: rgb(255, 255, 255);">    begin</span>
  3. <span style="background-color: rgb(255, 255, 255);">        if(rising_edge(clk_sample)) then</span>
  4. <span style="background-color: rgb(255, 255, 255);">            if(src_type = '0') then</span>
  5. <span style="background-color: rgb(255, 255, 255);">                a <= cosine_1; </span>


复制代码

请教下大家,这段条件选择电路有没有可以优化的点,以提高时序性能呢?考虑过不使用else 只采用if但涉及两个信号,不太懂怎么编写
谢谢大佬了!
 楼主| 发表于 2021-1-24 10:20:00 | 显示全部楼层
代码似乎格式有问题,直接发在这好了
process(clk_sample)
    begin
        if(rising_edge(clk_sample)) then
            if(src_type = '0') then
                a <= cosine_1;
                b <= a;
            elsif(is_testing = '0')then
                a <= c;
                b <= a;
            else
                a <= c(8 downto 0) & "0000000";
                 -- cut low 2 bits
                b<= a(15) & a(15) & a(15 downto 2);
            end if;                       
        end if;
end process;

发表于 2021-1-24 10:39:19 | 显示全部楼层
逻辑上没什么可以提高的了,但是有一个关键点,就是if else 语句总是把关键路径的放在较前的位置,而把非关键路径往后,这样总会有些帮助,这里你需要衡量的就是cosine_1与 c这两条路径,哪一条更长,就可以放到更前的位置
 楼主| 发表于 2021-1-25 09:59:39 | 显示全部楼层


phoenixson 发表于 2021-1-24 10:39
逻辑上没什么可以提高的了,但是有一个关键点,就是if else 语句总是把关键路径的放在较前的位置,而把非关 ...


谢谢回复,这两个信号路径似乎差不多,关键路径与别的模块有关
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-7-19 07:03 , Processed in 0.016157 second(s), 7 queries , Gzip On, MemCached On.

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