跳转至

除法器

你可以从理论课学到的几个版本中任选一个算法完成实验,基本的要求是无符号、无溢出判断、有除零异常判断,如果你不实现除零异常判断将无法获得全部的实验分数。

模块实现

报告中需要给出你写出的完整代码。

你的模块与端口名应该与下列相同:

divider.v
module divider(
    input   clk,
    input   rst,
    input   start,          // 开始运算
    input[31:0] dividend,   // 被除数
    input[31:0] divisor,    // 除数
    output divide_zero,     // 除零异常
    output  finish,         // 运算结束信号
    output[31:0] res,       // 商
    output[31:0] rem        // 余数
);

如果除数是零,则直接将 finishdivide_zero 升至高位即可,此时 resrem 可以是任意值。

仿真测试

报告中需要给出 testbench 代码,测试波形与解释(波形截图需要保证缩放与变量数制合适)。

附件中的 divider_tb.v 已经给出了基本的测试代码,你需要添加更多的测试样例,尽可能多测试边界样例。