本节将使用VHDL和Verilog HDL描述有符号和无符号整数的减法运算。整数减法运算块的符号描述如图3.4所示。
图3.4 整数减法运算块的符号描述
本小节将使用HDL语言描述无符号数的减法运算。在描述无符号数的减法运算时,需要考虑借位标志和减法运算的范围。
本部分给出了无符号数减法运算的VHDL描述,如代码清单3-5所示。
代码清单3-5 top.vhd
注 :读者可以定位到本书所提供资料的\intel_dsp_example\example_3_5路径中,用Quartus P rime P ro 2019.4集成开发环境打开该设计。
本部分给出了无符号数减法运算的Verilog HDL描述,如代码清单3-6所示。
代码清单3-6 top.v
注 :读者可以定位到本书所提供资料的\intel_dsp_example\example_3_6路径中,用Quartus P rime P ro 19.4集成开发环境打开该设计。
使用ModelSim-INTEL FPGA STARTER EDITION 2019.2仿真工具对无符号数的减法运算进行仿真,其结果如图3.5所示。
图3.5 无符号数减法运算的仿真结果(反色显示)
思考与练习3-5 :对无符号数减法运算的仿真结果进行分析。
思考与练习3-6 :在Quartus Prime Pro 2019.4集成开发环境下,分别对无符号数减法运算的VHDL和Verilog HDL设计进行Analysis Synthesis,然后用RTL Viewer打开生成的网表结构,并对该结构进行分析。
与无符号数的减法运算相比,有符号数的减法运算要复杂一些,在实现上需要考虑下面4种情况。
(1)一个负数和一个负数相减,不会产生溢出。
(2)一个正数和一个正数相减,不会产生溢出。
(3)一个正数和一个负数相减,如果结果为负数,则产生溢出。
(4)一个负数和一个正数相减,如果结果为正数,则产生溢出。
本部分给出了有符号数减法运算的VHDL描述,如代码清单3-7所示。
代码清单3-7 top.vhd
注 :读者可以定位到本书所提供资料的\intel_dsp_example\example_3_7路径中,用Quartus P rime P ro 19.4集成开发环境打开该设计。
本部分给出了有符号数减法运算的Verilog HDL描述,如代码清单3-8所示。
代码清单3-8 top.v
注 :读者可以定位到本书所提供资料的\intel_dsp_example\example_3_8路径中,用Quartus P rime P ro 19.4集成开发环境打开该设计。
使用ModelSim-INTEL FPGA STARTER EDITION 2019.2仿真工具对有符号数的减法运算进行仿真,其结果如图3.6所示。
图3.6 有符号数减法运算的仿真结果(反色显示)
思考与练习3-7 :对有符号数减法运算的仿真结果进行分析。
思考与练习3-8 :在Quartus Prime Pro 2019.4集成开发环境下,分别对有符号数减法运算的VHDL和Verilog HDL设计进行Analysis Synthesis,然后用RTL Viewer打开所生成的网表结构,并对该结构进行分析。