S
Sunbelt
Guest
J'essaie de faire un tampon FIFO simple à l'aide des langages Verilog et ISE 10.1.Je continue de recevoir cet avertissement pour chaque bit de "_data_out" et le _data_out "dans RTL schéma est mis à la terre.AVERTISSEMENT: XST: 1710 - FF / Latch <_data_out_1> (sans valeur init) a une valeur constante de 0 à <in_north_0> bloc.Ce FF / Latch seront supprimés au cours du processus d'optimisation.
»1ns calendrier / 1PS
////////////////////////////////////////////////// ////////////////////////////////
////////////////////////////////////////////////// ////////////////////////////////
tampon module (
_clk entrée, / / clock
_rst entrée, / / reset
fil d'entrée [63:0 _data_in], / données d'entrée /
_w_en entrée, / / write_enable
_r_en entrée, / / lire permettre
sortie reg [63:0] _data_out, / / sortie de données
sortie _full reg, / / si 0 tampon est plein
);
data_width paramètre = 64;
reg [data_width-1: 0] mem0; reg [data_width-1: 0] MEM1;
reg [data_width-1: 0] MEM2; reg [data_width-1: 0] MEM3;
reg [data_width-1: 0] mem4; reg [data_width-1: 0] MEM5;
reg [data_width-1: 0] mem6; reg [data_width-1: 0] mem7;
/ / _full Est empty0;
reg empty1; Empty2 reg; empty3 reg; empty4 reg;
reg empty5; empty6 reg; empty7 reg;
toujours @ (posedge _clk)
commencer
///////////////////////////////// //////////////// Reset //////////////////
if (_rst == 1)
commencer
mem0 = 0; MEM1 = 0; MEM2 = 0; MEM3 = 0;
mem4 = 0; MEM5 = 0; mem6 = 0; mem7 = 0;
_full = 1; empty1 = 1; Empty2 = 1; empty3 = 1;
empty4 = 1; empty5 = 1; empty6 = 1; empty7 = 1;
_port_id = 0; _port_r = 0;
fin
d'autre
commencer
//////////////////////////// Lire ///////////////////// //////////////////
if (_r_en == 1) commencer
_data_out = mem7;
mem7 = 0;
empty7 = 1; fin
////////////////////////////////////////////////// /////////////////////
if (empty7 == 1) commencer
if (mem6! = 0) commencent
mem7 = mem6;
empty7 = 0;
mem6 = 0;
empty6 = 1; end end
if (empty6 == 1) commencer
if (MEM5! = 0) commencent
mem6 = MEM5;
empty6 = 0;
MEM5 = 0;
empty5 = 1; end end
if (empty5 == 1) commencer
if (mem4! = 0) commencent
MEM5 = mem4;
empty5 = 0;
mem4 = 0;
empty4 = 1; end end
if (empty4 == 1) commencer
if (MEM3! = 0) commencent
mem4 = MEM3;
empty4 = 0;
MEM3 = 0;
empty3 = 1; end end
if (empty3 == 1) commencer
if (MEM2! = 0) commencent
MEM3 = MEM2;
empty3 = 0;
MEM2 = 0;
Empty2 = 1; end end
if (Empty2 == 1) commencer
if (MEM1! = 0) commencent
MEM2 = MEM1;
Empty2 = 0;
MEM1 = 0;
empty1 = 1; end end
if (empty1 == 1) commencer
if (mem0! = 0) commencent
MEM1 = mem0;
empty1 = 0;
_full = 1; end end
Donnez votre /////////////////////////// ////////////////////// ////////////////
if (_full == 1 & & _w_en == 1) commencer
mem0 = _data_in;
_full = 0; fin
////////////////////////////////////////////////// /////////////////////
fin / / else
fin
endmodule
»1ns calendrier / 1PS
////////////////////////////////////////////////// ////////////////////////////////
////////////////////////////////////////////////// ////////////////////////////////
tampon module (
_clk entrée, / / clock
_rst entrée, / / reset
fil d'entrée [63:0 _data_in], / données d'entrée /
_w_en entrée, / / write_enable
_r_en entrée, / / lire permettre
sortie reg [63:0] _data_out, / / sortie de données
sortie _full reg, / / si 0 tampon est plein
);
data_width paramètre = 64;
reg [data_width-1: 0] mem0; reg [data_width-1: 0] MEM1;
reg [data_width-1: 0] MEM2; reg [data_width-1: 0] MEM3;
reg [data_width-1: 0] mem4; reg [data_width-1: 0] MEM5;
reg [data_width-1: 0] mem6; reg [data_width-1: 0] mem7;
/ / _full Est empty0;
reg empty1; Empty2 reg; empty3 reg; empty4 reg;
reg empty5; empty6 reg; empty7 reg;
toujours @ (posedge _clk)
commencer
///////////////////////////////// //////////////// Reset //////////////////
if (_rst == 1)
commencer
mem0 = 0; MEM1 = 0; MEM2 = 0; MEM3 = 0;
mem4 = 0; MEM5 = 0; mem6 = 0; mem7 = 0;
_full = 1; empty1 = 1; Empty2 = 1; empty3 = 1;
empty4 = 1; empty5 = 1; empty6 = 1; empty7 = 1;
_port_id = 0; _port_r = 0;
fin
d'autre
commencer
//////////////////////////// Lire ///////////////////// //////////////////
if (_r_en == 1) commencer
_data_out = mem7;
mem7 = 0;
empty7 = 1; fin
////////////////////////////////////////////////// /////////////////////
if (empty7 == 1) commencer
if (mem6! = 0) commencent
mem7 = mem6;
empty7 = 0;
mem6 = 0;
empty6 = 1; end end
if (empty6 == 1) commencer
if (MEM5! = 0) commencent
mem6 = MEM5;
empty6 = 0;
MEM5 = 0;
empty5 = 1; end end
if (empty5 == 1) commencer
if (mem4! = 0) commencent
MEM5 = mem4;
empty5 = 0;
mem4 = 0;
empty4 = 1; end end
if (empty4 == 1) commencer
if (MEM3! = 0) commencent
mem4 = MEM3;
empty4 = 0;
MEM3 = 0;
empty3 = 1; end end
if (empty3 == 1) commencer
if (MEM2! = 0) commencent
MEM3 = MEM2;
empty3 = 0;
MEM2 = 0;
Empty2 = 1; end end
if (Empty2 == 1) commencer
if (MEM1! = 0) commencent
MEM2 = MEM1;
Empty2 = 0;
MEM1 = 0;
empty1 = 1; end end
if (empty1 == 1) commencer
if (mem0! = 0) commencent
MEM1 = mem0;
empty1 = 0;
_full = 1; end end
Donnez votre /////////////////////////// ////////////////////// ////////////////
if (_full == 1 & & _w_en == 1) commencer
mem0 = _data_in;
_full = 0; fin
////////////////////////////////////////////////// /////////////////////
fin / / else
fin
endmodule