无法计算出输出的正确位数

Can't figure out the correct amount of bits for an output

好吧,我的任务是使用 4 位 cla 和多路复用器创建一个 n(n 是 4 的倍数)位 cla(进位先行加法器)。具体来说,我必须执行以下操作:

括号中的部分必须根据给定的参数 n 的需要重复多次。我的问题是:我应该如何定义电线 r、t 和 c? 一开始我是这么想的:

wire [3n/4-3-1:0] c; // without considering the first wire that comes out of the right most cla4
wire [n - 4 - 1:0] r,t;

这确实适用于 n>4 (8,12,16...),但当 n=4 ([-1:0]) 时会出现明显的问题。 有什么办法可以解决这个问题吗?一个简单的解决方案是让这些电线成为所需的更多位,但我一直在尝试考虑另一种解决方案。

试试这个。

localparam M = (N>4) ? (3*N)/4 - 3 : 1;
localparam L = (N>4) ? N-4 : 1;

wire [M-1:0] c;
wire [L-1:0] r,t;