これが私の問題です。システム構成によっては、不明な数の入力 (すべて 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 ループについてはよくわかりません。私が望むようにうまくいくでしょうか?それを行う他の方法はありますか?