.. ----------------------------------------------------------------------------- .. .. Filename : index.rst .. Author : Huang Leilei .. Status : phase 000 .. Created : 2025-09-21 .. Description : 第01练 - 组合逻辑设计 .. .. ----------------------------------------------------------------------------- 第01练 - 组合逻辑设计 -------------------------------------------------------------------------------- 1. 使用课上介绍的方法对除法进行算法建模 a. | 输入:数据类型为S0I8F0的被除数dat_a_i;数据类型为S0I8F0的除数dat_b_i。 #. | 输出:数据类型为S0I8F8的商dat_c_o。 #. | 精度:与全精度运算保持一致。 #. | 方法: * 直接使用“/”(作为例子) * 使用恢复余数除法(作为例子) * 使用不恢复余数除法(自行实现) * 使用LUT(自行实现) * 使用二分法(逐比特)(自行实现) * 使用牛顿-拉夫逊迭代法(自行实现) #. | 环境:不做限制。 #. | 语言:不做限制。 #. | 注意: * 牛顿-拉夫逊迭代法的发散性: 当初始值大于2 / divisor时,x * (2 - divisor * x)会趋向于负无穷。 * 如果使用python实现,注意其round的特性: round(0.5) = 0 # 可采用floor(x + 0.5)替代。 #. 使用牛顿-拉夫逊迭代法对除法进行(组合逻辑的)硬件描述 a. | 输入:数据类型为S0I8F0的被除数dat_a_i;数据类型为S0I8F0的除数dat_b_i。 #. | 输出:数据类型为S0I8F8的商dat_c_o。 #. | 精度:与全精度运算保持一致。 #. | 环境:不做限制。 #. | 语言:Verilog。 #. 使用CORDIC方法对sin()进行算法建模和(组合逻辑的)硬件描述: a. | 输入:数据类型为S0I1F16的弧度值dat_theta_i(假设输入总是落在[0,pi/2]之间)。 #. | 输出:数据类型为S0I1F16的正弦值dat_result_o。 #. | 精度:在迭代16次的情况下,与全精度运算相比误差在3(含)以内。 #. | 算法环境:不做限制。 #. | 算法语言:不做限制。 #. | 硬件环境:不做限制。 #. | 硬件语言:Verilog。