购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.4 整数乘法运算的HDL描述

本节将使用VHDL和Verilog HDL描述有符号和无符号整数的乘法运算。整数乘法运算块的符号描述如图3.7所示。

图3.7 整数乘法运算块的符号描述

3.4.1 无符号数乘法运算的HDL描述

4位无符号的整数(1011) 2 =(11) 10 和(1001) 2 =(9) 10 乘法的实现原理如图3.8所示。本质上,乘法运算就是加法和移位操作的组合。本小节将使用HDL语言描述无符号数的乘法运算。

图3.8 无符号数乘法运算的实现原理

1.无符号数乘法运算的VHDL描述

本部分给出了无符号数乘法运算的VHDL描述,如代码清单3-9所示。

代码清单3-9 top.vhd

:读者可以定位到本书所提供资料的\intel_dsp_example\example_3_9路径中,用Quartus P rime P ro 2019.4集成开发环境打开该设计。

2.无符号数乘法运算的Verilog HDL描述

本部分给出了无符号数乘法运算的Verilog HDL描述,如代码清单3-10所示。

代码清单3-10 top.v

:读者可以定位到本书所提供资料的\intel_dsp_example\example_3_10路径中,用Quartus P rime P ro 2019.4集成开发环境打开该设计。

使用ModelSim-INTEL FPGA STARTER EDITION 2019.2仿真工具对无符号数的乘法运算进行仿真,其结果如图3.9所示。

图3.9 无符号数乘法运算的仿真结果(反色显示)

思考与练习3-9 :对无符号数乘法运算的仿真结果进行分析。

思考与练习3-10 :在Quartus Prime Pro 2019.4集成开发环境下,分别对无符号数乘法运算的VHDL和Verilog HDL设计进行Analysis Synthesis,然后用Technology Map Viewer(Post-Mapping)打开所生成的网表结构,并对该结构进行分析(提示,乘法运算使用了FPGA内的乘法器硬核资源)。

3.4.2 有符号数乘法运算的HDL描述

对于有符号数的乘法运算而言,情况比较复杂,下面分别进行讨论。

1.对于操作数为一个正数和一个负数的相乘

一个正数和一个负数的乘法运算如图3.10所示。对于一个正数和一个负数相乘的情况而言,只需要进行符号扩展。

2.对于操作数均为两个负数的相乘

图3.10 一个正数和一个负数的乘法运算

两个负数的乘法运算如图3.11所示。从图中可知,减去最后一部分积。在具体实现时,可以将最后一个部分积转成补码,然后进行相加运算。

:(1)很明显,两个操作数都为负数时,本质上它等效于两个无符号数的乘法运算。

(2)在使用HDL描述有符号数的乘法运算时并不需要考虑上面的实现细节。

图3.11 两个负数的乘法运算

本小节将使用HDL描述有符号数乘法运算的实现过程。

1.有符号数乘法运算的VHDL描述

本部分给出了有符号数乘法运算的VHDL描述,如代码清单3-11所示。

代码清单3-11 top.vhd

:读者可以定位到本书所提供资料的\intel_dsp_example\example_3_11路径中,用Quartus P rime P ro 19.4集成开发环境打开该设计。

2.有符号数乘法运算的Verilog HDL描述

本部分给出了有符号数乘法运算的Verilog HDL描述,如代码清单3-12所示。

代码清单3-12 top.v

:读者可以定位到本书所提供资料的\intel_dsp_example\example_3_12路径中,用Quartus P rime P ro 2019.4集成开发环境打开该设计。

使用ModelSim-INTEL FPGA STARTER EDITION 2019.2仿真工具对有符号数的乘法运算进行仿真,其结果如图3.12所示。

图3.12 有符号数乘法运算的仿真结果(反色显示)

思考与练习3-11 :对有符号数乘法运算的仿真结果进行分析。

思考与练习3-12 :在Quartus Prime Pro 2019.4集成开发环境下,分别对有符号数乘法运算的VHDL和Verilog HDL设计进行Analysis Synthesis,然后用Technology Map Viewer(Post-Mapping)打开所生成的网表结构,并对该结构进行分析(提示,乘法运算使用了FPGA内的乘法器硬核资源)。 ASoM27a+jFoorTqnnSliAHNoTNHCJX6im5rCGg6Ch0JC2wEhN+OrUMPnc545liNq

点击中间区域
呼出菜单
上一章
目录
下一章
×