§ Делитель
Зависимости: модуль divmod- WIDTH — битность шины
- STAGE — сколько пройти стадий деления
module div #( parameter WIDTH = 8, // Ширина шины parameter STAGE = 8 // Количество стадий ) ( input wire [(WIDTH-1):0] a, // Делитель input wire [(WIDTH-1):0] b, // Делимое output wire [(WIDTH-1):0] q, // Частное output wire [(WIDTH-1):0] r // Остаток ); assign q = qo[STAGE-1]; assign r = ro[STAGE-1]; wire [(WIDTH-1):0] ro[STAGE]; wire [(WIDTH-1):0] qo[STAGE]; wire [(WIDTH-1):0] zero = 1'b0; divmod #(.WIDTH( WIDTH )) UnitDivMod ( .b (b), .q (a), .r (zero), .qo (qo[0]), .ro (ro[0]) ); genvar i; generate for (i = 0; i < STAGE-1; i=i+1) begin : DivModX divmod #(.WIDTH(WIDTH)) UnitDivMod ( .b (b), .q (qo[i ]), .r (ro[i ]), .qo (qo[i+1]), .ro (ro[i+1]) ); end endgenerate endmodule
16 окт, 2021
© 2007-2023 Все мелочи ништяково получены