3.2 FPGA 中数的运算
3.2.1 加/减法运算
如3.1节所述,FPGA中的二进制数可以分为定点数和浮点数两种格式,虽然浮点数据的加减法运算相对于定点数而言在运算步聚和实现难度上都要复杂得多,但基本的运算仍然是通过分解为定点数运算,以及移位等运算步骤来实现的。因此本节只针对定点数运算进行分析讲解。
进行FPGA实现的设计输入语言主要有Veril0gHDL和VHDL 两种。由于本书使用VHDL语言讲解,这里只介绍 VHDL语言中对定数的运算及处理方法。VHDL设计文件中最常用的数据类型是单bit二进制变量 STD LOGIC,以及 bit 的向量形式 STDLOGIC VECTOR。当需要进行数据运算时,VHDL 如何判断二进制数据的小数位、表示形式等信息呢?在VHDL 程序中,所有二进制数均当做整数处理,也就是说小数点均在最低位的右边。如果要在程序中表示带小数的二进制运算,该如何处理呢?其实,进行VHDL程序设计时,定点数据的小数点位可由程序设计者隐性标定。例如,对于两个二进制数 00101和00110,当进行加法运算时,VHDL的编译器按二进制规则逐位相加,结果为01011。如果设计者将数据均看成无符号整数,则表示5+6=11,将数据的小数点位均看成在最高位与次高位之间,即00101、00110、0A10