温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
Gold
Schmid
方根
运算
单元
VLSI
实现
刘明
技术应用 论点 ARGUMENT73基金课题:深圳市科技计划项目(JCYJ20180307123857045);深圳信息职业技术学院科技项目(SZIIT2019KJ026);深圳信息职业技术学院科技项目(LHPY-2021005)。基于 Gold-Schmidt 算法的高精度低延迟浮点平方根运算单元的 VLSI 实现文/刘明,佳沐,许志良,傅文佳,张霆廷一、平方根算法简述目前常见的开方算法有以下几类。(1)数字递归法。该方法操作简单,易于实现,但延迟较长,这点在精度较大的浮点数运算过程中表现得尤为明显。(2)函数迭代法。如NewtonRaphson法、Householders法和Gold-Schmidt 迭代算法,此类算法需要更多的硬件成本,却不能保证运算结果的完全准确,此类算法的优点是快速、可扩展、易于流水线化。(3)高基数运算法。该方法运算速度快,但实现起来较为复杂,且通常需要消耗相当大的硬件面积。(4)查表法。该方法简单、快速,但硬件成本较高,可扩展性较差。基于此,本文采用 Gold-Schmidt 法来设计并实现高精度、低时延的浮点平方根运算单元。Gold-Schmidt 法的迭代公式如下:11111.5iiiiiiiiirxhxxrhhr=|=|=(1)式(1)中,ri表 示 平 方根变量;xi表示调变因子 x 变量;hi表示调变因子 h 变量。初始值设置如式(2)所示:基于 Gold-Schmidt 迭代算法,笔者采用 IEEE-754(2008)标准中的 128 位浮点标准数据格式,模块化地实现了浮点平方根运算单元的 VLSI 电路设计。随后,笔者对实现的 128 位浮点平方根运算单元进行了仿真测试,结果表明,本文设计的硬件运算单元满足全浮点域的精度要求。接着,笔者使用 TSMC 65nm 标准工艺库对该硬件运算单元做了逻辑综合,结果表明,本文设计的硬件运算单元工作频率可达 800MHz,完成一次完整的 128 位浮点计算需要 4 个时钟周期,最大计算误差小于 1 比特位,硬件电路面积为 0.8216mm2,硬件功耗为 13.87MW。论点 ARGUMENT 技术应用74 0000010.5rXxXrhr|=|=|(2)其 中,r0 1/X1/2是 1/X1/2的近似值(查表获取)。经过 n 次迭代,笔者得到 xn=X1/2。此时,笔者结合式(1),得到 Gold-Schmidt 法的迭代示意图,如图 1 所示。二、浮点平方根运算单元的VLSI 实现基于 Gold-Schmidt 法的浮点平方根运算单元的结构如图 2所示。如图2所示,sqrt_preconfig模块主要负责对输入的 128 位浮点数 data 进行异常检测与预处理。首先,该模块会将输入的 data分解为符号 data_in_sign、指数data_in_exp以及尾数data_in_m,并计算指数偏差值exp_out;随后,进行异常检测,输出异常检测旗帜信号 exception。exception 有 5种可能的值:3b000(输入不存在异常情况),3b001(输入为非数,输出为非数),3b010(输入为负数,输出为非数),3b011(输入为正无穷,输出为正无穷),3b100(输入为0,输出为0)。同时,在检查输入浮点数的指数为奇数还是偶数后,该模块还会调整尾数部分,例如将其由113位调整为116 位,并输出mantissa_out,以便后续sqrt_mantissa_calculation 模块的分组计算。三、浮点平方根运算单元的验证与分析(一)仿真验证在本研究中,仿真验证共分为三大部分,分别是浮点异常验证、边界数据验证和逻辑功能验证。其中,浮点异常验证主要针对的是输入的非数(NaN)、正负无穷、0或者-xi-1hi-11.5rixihi sqrt_preconfig模块mantissa_out exp_out exception datasqrt_mantissa_calculation模块square_root exp exception_out finish clkrst_nsqrt_normalize模块result error开方预配置模块开方归一化模块开方尾数计算模块误差结果复位时钟数据技术应用 论点 ARGUMENT75不符合定义域的输入数值,边界数据验证的一般是定义域边界的输入数值,而逻辑功能验证的则是定义域内的浮点正规数。基于此,笔者对此次设计的浮点平方根运算单元进行大量的随机数据测试,测试数据包括非数、正负无穷、0、浮点正规数以及边界数。仿真验证结果如表1 所示。(二)性能分析在电路设计得到仿真验证之后,本文根据TSMC 65nm标准工艺库,在0.9V的工作电压下完成了逻辑实现和综合,最终得到有关硬件的工作频率、面积等逻辑综合结果,如表 2 所示。四、结语本文对 128 位浮点平方根运算单元实现了RTL 级(寄存器传输级)建模,并基于ModelSim硬件仿真平台完成了平方根运算单元的逻辑功能的仿真验证;在TSMC 65nm的标准工艺完成了逻辑实现和综合。结果表明,本文所设计的浮点平方根运算硬件单元完成一次128位浮点计算需要 4 个时钟周期,计算误差最大不超过 128 位浮点尾数的最低位,满足精度高、延迟低的特征。DC 逻辑综合结果表明,当电路的工作频率为800MHz时,硬件电路面积为0.8216mm2,功耗为13.87MW。参考文献:1 侯力秩.DSP 中的浮点与定点比较 J.通信电源技术,2020,37(01):105-106.2 夏宏,李笑盈,王攻本.浮点开方运算单元的电路设计 J.计算机工程与应用,2001(11):39-41,87.3Moroz L,Samotyy V,Wegrzyn M,et al.Efficient Floating-Point Square Root and Reciprocal Square Root A lgor ithmsC/2021 11st IEEE International Conference on Intelligent Data Acquisition and Advanced Computing Systems:Technology and Applications(IDAACS).2021:552-559.4Bhoyar R,Palsodkar P,Kakde S.Design and implementation of goldschmidts algorithm for floating point division and square rootC/2015 International Conference on Communications and Signal Processing:2015 International Conference on Communications a n d S i g n a l P r o c e s s i n g(I C CSP).2015:1588-1592.本文作者刘明,博士,就职于深圳信息职业技术学院微电子学院;佳沐,就读于深圳信息职业技术学院微电子学院;许志良,教授、博士,就职于深圳职业信息技术学院微电子学院。傅文佳,就读于哈尔滨工业大学(深圳)电信学院;张霆廷,教授、博士,就职于哈尔滨工业大学(深圳)电信学院 表 1 浮点平方根运算单元仿真验证结果对比 128 位浮点输入(16 进制)ModelSim 结果(16 进制)Python 结果(16 进制)7fff80000000000000000000000000007fff8000000000000000000000000000 c15811c10f0c8540897177268d83cce57fff8000000000000000000000000000 3f9d4fd0ac9accb4dd96270ef0c5bc133fce2534433f8637ee059c85f83fa7363fce2534433f8637ee059c85f83fa7363fa617727e62e0a58e7b7099095ae8ee3fd27a41540361868f193845326a6a5b3fd27a41540361868f193845326a6a5b4072f3dd74810d5628e58cf1e95d6a754038f9e569cd37b627f85e841af09e5b4038f9e569cd37b627f85e841af09e5b40470c36ac8bbce0affc4143a1b74888402306091f60021785c625c0a0535d72402306091f60021785c625c0a0535d72表 2 浮点平方根运算单元综合结果工艺工作频率(MHz)面积(mm2)计算最大误差功耗(MW)TSMC 65nm8000.82161.610 10-3413.87