在本练习中,您将创建一个具有两个层次结构级别的线路。您将 top_module 实例化(提供)的两个 add16 副本,每个副本将实例化 16 个副本 add1 。因此,您必须编写两个模块: top_module 和 add1 。
与module_add一样,您将获得一个执行 16 位加法的模块 add16 。您必须实例化其中两个才能创建 32 位加法器。一个 add16 模块计算加法结果的低 16 位,而第二个 add16 模块计算结果的高16 位。您的 32 位加法器不需要处理 carry-in(假设 0)或 carry-out(忽略)。
如下图所示将 add16 模块连接在一起。提供的模块 add16 具有以下声明:
module add16 ( input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output cout );
在每个 add16 中,有 16 个完整的加法器(模块 add1 ,未提供)被实例化以实际执行加法。您必须编写具有以下声明的完整加法器模块:
module add1 ( input a, input b, input cin, output sum, output cout