verilog中可以直接用*运算符吗?有什么弊端吗

时间:2024-04-11 11:17:53

答案:可以用,但是,,,

硬件乘法器的意义何在?乘法直接乘不就可以了吗。我verilog里编写a*b即可,为什么要移位相加去乘?

你要知道,数字电路中的逻辑是由最基本的与、或、非等基本逻辑组合而成的,并不能直接生成乘除等复杂运算。
乘法运算是由与、或、非等基本逻辑组合而成的,如下图所示是乘法器内部结构图:

verilog中可以直接用*运算符吗?有什么弊端吗

 


那为什么直接在verilog里编写a*b即可实现乘法呢?这是因为EDA工具对你的Verilog代码进行编译,编译后将a*b变成了如上图所示的电路图。

那另外一个问题,为什么大家不直接用EDA工具默认生成的乘法器电路,而要自己配置特定的乘法器呢?这是因为乘法器有多种实现方式,每种都有自己的优缺点,所以在设计时可以根据自己的需要配置最适合的乘法器,让系统性能最优。
另外,乘法器这种组合逻辑可以加流水线(pipeline),自己设计时就可以根据系统需要设置最优的流水线级数,让吞吐量,延时与cost平衡。添加流水线后的乘法器如下图所示:

verilog中可以直接用*运算符吗?有什么弊端吗 

.写Verilog硬件代码时不能以纯软件的方式思考,而要知道Verilog最终是要生成硬件电路的,要带着硬件思维方式去写Verilog。要多思考