在下面的代碼中:首先,我在給定地址加載數據和權重的ROM。在同一時鐘,我正在做數據和重量的乘法。最後,我將位數從16位擴展到23位。代碼編譯沒有錯誤,但有警告。我無法解決這些警告。在xilinx中運行代碼時的警告
module main_module(extended_out,mux_out,data,weight,clk,en,addr);
input clk,en;
input [2:0] addr;
output [7:0] data,weight;
output [15:0] mux_out;
output [22:0] extended_out;
ram_input a1 (clk, en, addr, data);
ram_weight a2 (clk, en, addr, weight);
top_module a3 (mux_out,data,weight);
SignExtender a4 (clk,mux_out,extended_out);
endmodule
################### MODULE 1 ##################### ###################
module ram_input (clk, en, addr, data);
input clk;
input en;
input [2:0] addr;
output reg [7:0] data;
reg [2:0] raddr;
always @(posedge clk)
begin
if (en)
raddr <= addr;
end
always @(raddr,en)
begin
if (en)
begin
case(raddr)
3'b000: data = 8'b0000_0010;
3'b001: data = 8'b0000_0110;
3'b010: data = 8'b0000_1110;
3'b011: data = 8'b0000_0010;
3'b100: data = 8'b0000_0100;
3'b101: data = 8'b0000_1010;
3'b110: data = 8'b0000_1100;
3'b111: data = 8'b0000_0000;
default: data = 8'b0000_XXXX;
endcase
end
else
data = 8'b0000_0000;
end
endmodule
###################### ################# MODULE 2 ########################
module ram_weight (clk, en, addr, weight);
input clk;
input en;
input [2:0] addr;
output reg [7:0] weight;
reg [2:0] raddr;
always @(posedge clk)
begin
if (en)
raddr <= addr;
end
always @(raddr,en)
begin
if (en)
begin
case(raddr)
3'b000: weight = 8'b0000_1000;
3'b001: weight = 8'b0000_1010;
3'b010: weight = 8'b0001_1101;
3'b011: weight = 8'b0001_0100;
3'b100: weight = 8'b0000_0111;
3'b101: weight = 8'b0001_0010;
3'b110: weight = 8'b0010_1000;
3'b111: weight = 8'b0011_1111;
default: weight = 8'b0000_XXXX;
endcase
end
else
weight = 8'b0000_0000;
end
endmodule
############################ 33 MODULE - 3 ############ #########
module top_module(p,x,y);
output [15:0]p;
input [7:0]x,y;
reg [15:0]p;
reg [15:0]a;
integer i;
always @(x , y)
begin
a=x;
p=0;
for(i=0;i<8;i=i+1)
begin
if(y[i])
p=p+a;
a=a<<1;
end
end
endmodule
##############################模塊 - --- 4 #############################
module SignExtender(clk, extend, extended);
input[15:0] extend;
input clk;
output[22:0] extended;
reg[22:0] extended;
wire [15:0] extend;
always @(posedge clk)
begin
extended[22:0] <= { {7{extend[15]}}, extend[15:0] };
end
endmodule
######## #######################錯誤##############################
警告646 - 信號「a」已分配但從未使用過。這個未連接的信號將在優化過程中進行修整。
警告1710 - 在main_module塊中,「FF/Latch a4/extended_15」(沒有初始值)的值爲0。這個FF/Latch將在優化過程中被修剪。
警告:Xst:1895 - 由於其他「」FF/Latch修剪「」,FF/Latch「」a4/extended_14「」(無初始值)在塊「main_module」中具有常數值0。這個FF/Latch將在優化過程中被修剪。警告:Xst:1895 - 由於其他FF/Latch修剪,FF/Latch「」a4/extended_13「」(無初始值)在塊「」main_module「」中具有固定值0。這個FF/Latch將在優化過程中被修剪。
警告:Xst:1895 - 由於其他FF/Latch修剪,FF/Latch「」a4/extended_12「」(無初始值)在塊「」main_module「」中具有固定值0。這個FF/Latch將在優化過程中被修剪。
警告:Xst:1895 - 由於其他FF/Latch修剪,FF/Latch「」a4/extended_11「」(無初始值)在塊「」main_module「」中具有固定值0。這個FF/Latch將在優化過程中被修剪。
警告:Xst:1895-由於其他FF/Latch修剪,FF/Latch「」a4/extended_10「」(無初始值)在塊「」main_module「」中具有固定值0。這個FF/Latch將在優化過程中被修剪。
警告:Xst:1895 - 由於其他FF/Latch修剪,FF/Latch「」a4/extended_0「」(無初始值)在塊「」main_module「」中具有固定值0。這個FF/Latch將在優化過程中被修剪。
警告 - 1說你沒有使用常數「a」變量,但同時做乘法我把作爲一個臨時寄存器,但剩餘的錯誤,我不明白他們真正要告訴...
請幫忙解釋這些警告。
當你模擬這種設計時,一切正常嗎?如果你還沒有運行模擬,那麼你應該現在就做,然後回來告訴我們結果。 – 2013-12-20 17:10:17
我建議使用pastebin或github代替長代碼段。沒有顏色很難看到。 – Khanh
是的先生我已經模擬和輸出也來了,但警告的問題,因爲在fpga板執行此代碼時,我不知道天氣我的出來會不會....... –