我想根據設計編寫乘數。它由兩個16位輸入組成,單個加法器用於計算部分乘積。一個輸入的LSB與另一個輸入的16位進行AND操作,AND門的輸出重複地加到前一個輸出。它的Verilog代碼如下,但我似乎無法使輸出正常工作。Verilog中的邏輯問題
module datapath(output reg [31:15]p_high,
output reg [14:0]p_low,
input [15:0]x, y,
input clk); // reset, start, x_ce, y_ce, y_load_en, p_reset,
//output done);
reg [15:0]q0;
reg [15:0]q1;
reg [15:0]and_output;
reg [16:0]sum, prev_sum;
reg d_in;
reg [3:0] count_er;
initial
begin
count_er <= 0;
sum <= 17'b0;
prev_sum <= 17'b0;
end
[email protected](posedge clk)
begin
q0 <= y;
q1 <= x;
and_output <= q0[count_er] & q1;
sum <= and_output + prev_sum;
prev_sum <= sum;
p_high <= sum;
d_in <= p_high[15];
p_low[14] <= d_in;
p_low <= p_low >> 1;
count_er <= count_er + 1;
end
endmodule
我創建了一個測試平臺,測試電路和我看到的第一個問題是,我希望它與操作不起作用。 x操作數的16位與y操作數的LSB進行和操作。 y操作數在每個時鐘週期後移位一位,並通過連續添加部分乘積來計算最終產品。
但是,我從sum和prev_sum行開始出現問題,它們的輸出顯示爲xxxxxxxxxxxx。
* 「具有獲取輸出工作的煩惱」 *。你可以請更具體嗎?如果我們首先了解發生了什麼問題,那麼更容易進行調試。 – Tim 2013-03-22 23:47:08
我添加了更多內容。 – GamingX 2013-03-23 01:17:35