本节将使用VHDL和Verilog HDL语言描述有符号整数和无符号整数的减法运算。整数减法运算块的符号如图3.4所示。
图3.4 整数减法运算块的符号
本节将使用HDL语言描述无符号整数的减法运算。在描述无符号整数的减法运算时,需要考虑借位标志位和减法运算的范围。
1.无符号整数减法运算的VHDL描述
无符号整数减法运算的VHDL描述如代码清单3-5所示。
代码清单3-5 无符号整数减法运算的VHDL描述
注 :读者可以定位到本书所提供资料的\fpga_dsp_example\integer_sub_vhdl\unsigned_sub路径中,打开该设计。
2.无符号整数减法运算的Verilog HDL描述
无符号整数减法运算的Verilog HDL描述如代码清单3-6所示。
代码清单3-6 无符号整数减法运算的Verilog HDL描述
注 :读者可以定位到本书所提供资料的\fpga_dsp_example\integer_sub_verilog\unsigned_sub路径中,打开该设计。
无符号整数减法运算的仿真结果如图3.5所示。
图3.5 无符号整数减法运算的仿真结果
思考与练习3-5 :对无符号整数减法运算的仿真结果进行分析。
思考与练习3-6 :在Vivado 2017.2环境下,打开对无符号整数减法运算的HDL描述综合后的Schematic,查看所生成的逻辑结构,并对该结构进行分析(要注意LUT的作用)。
与无符号整数的减法运算相比,有符号整数的减法运算复杂一些,在实现上需要考虑下面4种情况:
(1)一个负数和一个负数相减,不会产生溢出。
(2)一个正数和一个正数相减,不会产生溢出。
(2)一个正数和一个负数相减,如果结果为负数,则产生溢出。
(3)一个负数和一个正数相减,如果结果为正数,则产生溢出。
1.有符号整数减法运算的VHDL描述
有符号整数减法运算的VHDL描述如代码清单3-7所示。
代码清单3-7 有符号整数减法运算的VHDL描述
注 :读者可以定位到本书所提供资料的\fpga_dsp_example\integer_sub_vhdl\signed_sub路径中,打开该设计。
2.有符号整数减法运算的Verilog HDL描述
有符号整数减法运算的Verilog HDL描述如代码清单3-8所示。
代码清单3-8 有符号整数减法运算的Verilog HDL描述
注 :读者可以定位到本书所提供资料的\fpga_dsp_example\integer_sub_verilog\signed_sub路径中,打开该设计。
有符号整数减法运算的仿真结果如图3.6所示。
图3.6 有符号整数减法运算的仿真结果
思考与练习3-7 :对有符号整数减法运算的仿真结果进行分析。
思考与练习3-8 :在Vivado 2017.2环境下,打开对有符号整数减法运算的HDL描述综合后的Schematic,查看所生成的逻辑结构,并对该结构进行分析(要注意LUT的作用)。