FPGA学习-优化逻辑时序的几个办法

本文探讨了优化数字逻辑设计的几种方法,包括将逻辑条件判断转换为位操作,避免复杂运算在条件语句中,使用中间变量缓存计算结果,减少位宽以降低运算延迟,以及优化状态机设计以改善逻辑时序。作者通过实践验证了这些策略的有效性,例如将减法转换为加法并未带来性能提升,反而可能导致时序恶化。此外,还强调了位宽管理和状态机设计对逻辑时序的影响。
部署运行你感兴趣的模型镜像

494bde72260b1a87b5253ce709e59f57.png

1)逻辑条件判断“A==B”和“A!=B”全部换成“!(A^B)”和“A^B”

2)复杂的逻辑条件判断全部单独用一个时钟去判断,如:

if(A>1000 && A<=1000000 && B>1000 && B<=10000)

改为如下:

reg Flag;

Flag <= A>1000 && A<=1000000 && B>1000 && B<=10000;

if(Flag)

这种大小判断略微还好一些,对于减法等运算一定不能在if条件中直接计算,否则会导致很差的逻辑时序;

3)如果给IP核的数是经过较为复杂的运算得到的,尽量经过一级缓存后再传给IP核,如:

a39127c0227ea3fa2685da6213d8f7be.png

如上所示,即32bit位宽的Res_reg要经过累加运算后作为除法IP核的输入,当然这也许不算是十分复杂的计算,但对于速度较低和时钟工作较高的场合,也会对逻辑时序造成影响,因些改为如下运算:

b0c43bfbcea6be2a002de475780c15d4.png

8a517e7e3217d70ff54f0887d1562e1c.png

如上所示,即将计算结果进行一级缓存后再给除法IP核,这样时序会好一些……

当然有些IP核会自带缓存,那就另当别论了

4)根据我自己亲自验证,将减法运算改为等效的加法运算并不能优化逻辑时序,如下所示:

以下变量均为32位reg型,即reg [31:0]

将以下运算:

diff1 <= LocDataD2 - SlvDataD2;

diff2 <= LocDataD2 - SlvDataD1;

diff3 <= LocDataD1 - SlvDataD2;

修改为等效的以下运算:

diff1 <= (LocDataD2 + 1) + (~SlvDataD2);

diff2 <= (LocDataD2 + 1) + (~SlvDataD1);

diff3 <= (LocDataD1 + 1) + (~SlvDataD2);

最后的仿真结果会更坏,因此不建议这么做。

5)位宽越多,做运算如加、减、比较大小等耗时越大,这个可以自己用数电里学到的知识将对应的电路画出来,看看要经过多少级逻辑延时才可以得到结果,因此能用较少的位数表示时就用较少的位数吧。

6)对于HDL代码,一般都需要有一个状态机程序,即会用一个case语句控制整个程序的的流程,举个例子来说吧:

假如需要五个状态来表示:

reg [2:0] State

case(State)

 3'b000:

3'b001:

3'b010:

3'b011:

3'b100:

default:

endcase

这样的判断个人认为逻辑时序会比较差,因为基本闲置了最高位,只有最后一个状态才用到了最高位,我认为按如下方式写比较好:

reg [2:0] State

case(State)

 3'b111:

3'b110:

3'b101:

3'b100:

3'b011:

default:

endcase

这个我没有太多的理论依据,同样可以画出实现电路图去论证一下,反正我在仿真的时候使用后者得到了较好的逻辑时序,大家可以试一下哦。

7)对于运算级数的优化,如:

A<= A1 + A2 + A3 + A3;

优化为:

A<= (A1 + A2) + (A3 +A4);

3d40da818172af7c88cc849396cba158.png

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值