这是我的问题。我有未知数量的输入(全部为 3 位宽),具体取决于系统配置。我想设计一个解码器来选择具有最大值的输入作为输出。所以我在这里使用嵌入式 ruby,以便可以将配置传递给 RTL。这是我的设计:
代码:
module decoder
(
<% (1...NUM_INPUT).each do |i| -%>
input [2:0] freq_<%=i%>,
<% end -%>
output [2:0] decoded_freq
)
<% (1...NUM_INPUT-1).each do |i| -%>
wire [2:0] x<%=i%>,
<% end -%>
integer i;
//decode logic below
assign x1 = (freq_1 > freq_2)? freq_1:freq_2; //compare the first two inputs and select the bigger one
for (i=1; i<NUM_INPUT-1;i++) //for-loop to do the rest
x<%=i+1%> = (x<%=i%> > freq_<%=i+2%>)? x<%=i%>:freq_<%=i+2%>;
assign decoded_freq = x<%=NUM_INPUT-1%>;
endmodule
这行得通吗?我不确定这里的 for 循环。它会按我的意愿工作吗?还有其他方法吗?