這是我的問題。 根據系統配置,我有未知數量的輸入(全部爲3位寬)。我想設計一個解碼器來選擇最大值的輸入作爲輸出。所以我在這裏使用嵌入式ruby,以便可以將配置傳遞給RTL。 這裏是我的設計:使用verilog設計具有未知輸入數量的解碼器
代碼:
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-loop。它會按我的想法工作嗎?有沒有其他方法可以做到這一點?
哇,這裏發生了什麼?我不認識Ruby,但看起來真的很醜。無論如何,如果你想合成一些具有「未知」數量輸入的東西,在合成之前需要知道輸入的數量。您不能在FPGA中動態創建信號,它在編程時都需要在那裏。 – Russell
很明顯,你還沒有嘗試使用紅寶石來解析文件。最後一個for循環不會解開,你有Verilog拼寫錯誤。你試圖遵循什麼版本的IEEE標準?你可以用嵌入式ruby實現功能。 (提示:使用參數) – Greg