2013-05-17 21 views
1

我正在研究一個我將在FPGA上進行綜合的VGA學校項目。我正在與Xilinx合作,並使用Verilog作爲HDL。該項目說,我必須生成固定數量的粒子,將它們顯示在屏幕上,並且通過使用鍵盤,我必須控制這些粒子的環境(如風,重力等)。在Verilog中生成要編譯的多行

我可以通過使用產生具有尺寸爲1個像素的(大小並不重要)一個粒子:

wire p1 =(posx>=part1x[13:4] && posx<=(part1x[13:4]+1) && posy>=part1y[12:4] && posy<=(part1y[12:4]+1)); 

通過使用該:

wire p1 =(posx>=part1x[13:4] && posx<=(part1x[13:4]+1) && posy>=part1y[12:4] && posy<=(part1y[12:4]+1)); 
wire p2 =(posx>=part2x[13:4] && posx<=(part2x[13:4]+2) && posy>=part2y[12:4] && posy<=(part2y[12:4]+2)); 
wire p3 =(posx>=part3x[13:4] && posx<=(part3x[13:4]+3) && posy>=part3y[12:4] && posy<=(part3y[12:4]+3)); 

三個粒子將被創建。

例如,我怎樣才能生成100個(或更多)粒子而不必寫100行代碼?

回答

6

你可以使用「for」循環來產生這個。這是一個很簡單的例子:

wire input[100]; 
wire output[100]; 
// ... 
genvar i; 
generate 
    for (i = 0; i < 100; i = i+1) begin 
    assign output[i] = ~input[i]; 
    end 
endgenerate 

爲了這個應用到你的情況,你可能需要使用part1xpart2x等,轉而使用一大「陣列」,並計算抵消它基於i

希望它有幫助。祝你好運!

+0

我明白了。謝謝你的時間和幫助,先生。拉扎連科。 –

+0

後續問題:因爲我有100個粒子,我該怎麼寫'assign red =(p1 || p2 || p3 || ... || border)?3'b111:3'b000;' –

+0

@AnandWu:Not當然如果我理解你的問題是正確的。你能再詳細一點嗎?甚至創建一個單獨的問題?謝謝。 – 2013-05-17 20:14:46