-2
我已經編寫了參數化數字的平方根的verilog代碼。如果位數甚至是代碼工作。平方根分區中的位分組
如果位數是奇數,則代碼將位數從右邊開始分成兩組(兩個LSB)。第一次迭代將選擇從最左側開始具有1位的組。
我正在使用計數器來檢查所需的週期數。我不明白我應該如何選擇第一次迭代的1位組,以及2次迭代的其餘部分。
我已經編寫了參數化數字的平方根的verilog代碼。如果位數甚至是代碼工作。平方根分區中的位分組
如果位數是奇數,則代碼將位數從右邊開始分成兩組(兩個LSB)。第一次迭代將選擇從最左側開始具有1位的組。
我正在使用計數器來檢查所需的週期數。我不明白我應該如何選擇第一次迭代的1位組,以及2次迭代的其餘部分。
可變數量的位選擇在硬件中看起來並不實際。如果你展示了一些代碼,答案可能會更相關或更實用。
兩種解決這一方式:
墊上檢測奇數的數量,加入的0
MSB具有其中選擇1或2位有選擇地填充所述迭代的if else
LSB。
碼例如用於1.
parameter DATA_W = 11;
parameter odd = DATA_W % 2;
input [DATA_W-1:0] data;
reg [DATA_W-1+odd:0] data_int;
always @* begin
if (odd)
data_int = {1'b0, data};
else
data_int = data;
end
碼例如用於2.
// Iteration for(loop=0; loop<max; loop=loop+1) begin
if ((loop == 0) && (odd)) begin
sel = {data[0], 1'b0};
end
else begin
sel = data[loop*2+1:loop*2];
end
// end
這應該能夠被靜態展開爲odd
是基於參數並且循環具有固定數量的迭代。如果一個循環可以靜態展開,那麼它是可綜合的。