如VHDL代码3-43所示。代码第3行表明需要使用定点包fixed_pkg,这样才能使用ufixed(无符号定点数)和sfixed(有符号定点数)。代码第7行定义了输入数据整数部分的位宽为4,第8行定义了其小数部分的位宽4,代码第12行确定了输出和的整数部分的位宽为5,小数部分位宽为4。
VHDL代码3-43
进行电路设计时,我们可以充分利用ufixed和sfixed数据类型在执行加/减运算时的位宽自动扩展以防止溢出的功能。以VHDL代码3-44为例,将4个定点数相加。这4个定点数均为ufixed(3 downto-2)。若采用代码第4行的描述方式,则是加法器级联,从输入到输出位宽会增加3位,如图3-42所示。若采用代码第5行的描述方式,则是加法树结构,从输入到输出位宽会增加2位,如图3-43所示。但两者相比,加法器级联结构会消耗18个LUT,而加法树结构会消耗19个LUT。
VHDL代码3-44