В следующем коде: Во-первых, я загружаю ПЗУ с данными и весом по указанному адресу. В те же часы я делаю умножение данных и веса. Наконец, я увеличиваю количество бит с 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
################### МОДУЛЬ 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
###################### ################# МОДУЛЬ 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 МОДУЛЬ - 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
######## ################ ERROR ####################
ВНИМАНИЕ! 646 - Сигнал «a» назначается, но никогда не используется. Этот несвязанный сигнал будет обрезан во время процесса оптимизации.
ПРЕДУПРЕЖДЕНИЕ 1710 - «FF/Latch a4/extended_15» (без значения инициализации) имеет постоянное значение 0 в блоке main_module. Этот FF/Latch будет обрезан во время процесса оптимизации.
ПРЕДУПРЕЖДЕНИЕ: Xst: 1895 - Из-за другого "" FF/Latch trim "", FF/Latch "" a4/extended_14 "" (без значения init) имеет постоянное значение 0 в блоке «main_module». Этот FF/Latch будет обрезан во время процесса оптимизации.
ВНИМАНИЕ: Xst: 1895 - Из-за другого FF/Latch trim, FF/Latch "" a4/extended_13 "" (без значения init) имеет постоянное значение 0 в блоке "" main_module "". Этот FF/Latch будет обрезан во время процесса оптимизации.
ВНИМАНИЕ: Xst: 1895 - Из-за другого FF/Latch trim, FF/Latch "" a4/extended_12 "" (без значения init) имеет постоянное значение 0 в блоке "" main_module "". Этот FF/Latch будет обрезан во время процесса оптимизации.
ВНИМАНИЕ: Xst: 1895 - Из-за другой FF/Latch trim, FF/Latch "" a4/extended_11 "" (без значения init) имеет постоянное значение 0 в блоке "" main_module "". Этот FF/Latch будет обрезан во время процесса оптимизации.
ВНИМАНИЕ: Xst: 1895 - Из-за другой FF/Latch trimming, FF/Latch "" a4/extended_10 "" (без значения init) имеет постоянное значение 0 в блоке "" main_module "". Этот FF/Latch будет обрезан во время процесса оптимизации.
ВНИМАНИЕ: Xst: 1895 - Из-за другой FF/Latch trim, FF/Latch "" a4/extended_0 "" (без значения init) имеет постоянное значение 0 в блоке "" main_module "". Этот FF/Latch будет обрезан во время процесса оптимизации.
предупреждение - 1 говорит, что вы не использовали константу «а» переменной, но при этом умножение я взял в качестве временного регистра, но остальные ошибки я не понимаю, что они действительно собираются сказать ...
Пожалуйста, помогите объяснить эти предупреждения.
Все ли работает правильно, когда вы имитируете этот дизайн? Если вы не запускаете симуляцию, тогда вы должны это сделать, а затем вернуться и сообщить нам результаты. –
Я рекомендую использовать pastebin или github для длинного кода фрагмента. Трудно видеть без цветов. – Khanh
да, сэр, я уже смоделирован, и выход тоже идет, но проблема с предупреждением, потому что при реализации этого кода на плате fpga я не знаю, погода моя придет или нет ....... –