第01练 - 组合逻辑设计 (04-10、04-17、04-24)

  1. 使用课上介绍的方法对除法进行算法建模

    1. 输入:数据类型为S0I8F0的被除数dat_a_i;数据类型为S0I8F0的除数dat_b_i。

    2. 输出:数据类型为S0I8F8的商dat_c_o。

    3. 精度:与“全精度运算”保持一致。

    4. 方法:

      • 全精度运算(作为例子)

      • 直接使用“/”(作为例子)

      • 使用恢复余数除法(作为例子)

      • 使用不恢复余数除法(自行实现)

      • 使用LUT(自行实现)

      • 使用二分法(逐比特)(自行实现)

      • 使用牛顿-拉夫逊迭代法(自行实现)

    5. 环境:不做限制。

    6. 语言:不做限制。

    7. 注意:

      • 牛顿-拉夫逊迭代法的发散性: 当初始值大于2 / divisor时,x * (2 - divisor * x)会趋向于负无穷。

      • python中round的特性(python默认采用银行家round): round(0.5) = 0 # 可采用floor(x + 0.5)替代。

  2. 使用牛顿-拉夫逊迭代法对除法进行(组合逻辑的)硬件描述

    1. 输入:数据类型为S0I8F0的被除数dat_a_i;数据类型为S0I8F0的除数dat_b_i。

    2. 输出:数据类型为S0I8F8的商dat_c_o。

    3. 精度:与“全精度运算”保持一致。

    4. 环境:不做限制。

    5. 语言:Verilog。

  3. 请于05-08前提交实验报告至作业邮箱,应包含以下内容

    1. 标题(组合逻辑设计实验:牛顿-拉夫逊迭代求解除法)

    2. 实验日期

    3. 学生信息

    4. 实验目的

    5. 实验原理

    6. 实验环境

    7. 代码及分析

    8. 仿真及分析

    9. 实验总结

    • 注意简洁性,不要长篇大论,讲出关键内容就可以!!

    • 注意简洁性,不要长篇大论,讲出关键内容就可以!!

    • 注意简洁性,不要长篇大论,讲出关键内容就可以!!


  1. 选做:使用CORDIC方法对sin()进行算法建模和(组合逻辑的)硬件描述:

    1. 输入:数据类型为S0I1F16的弧度值dat_i(假设输入总是落在[0,pi/2)之间)。

    2. 输出:数据类型为S0I1F16的正弦值dat_o。

    3. 精度:在迭代16次的情况下,与全精度运算相比误差在3LSB(含)以内。

    4. 算法环境:不做限制。

    5. 算法语言:不做限制。

    6. 硬件环境:不做限制。

    7. 硬件语言:Verilog。