witam grupe
zabralem sie za Xilinxy i WebPacka + ModelSima kodze sobie w Verilogu wszystko ladnie dziala, srodowisko calkiem przyjemne, tylko mam problem z symulatorem :(
oto przykladowy kod
---------------------------------------------------- module generator(clk,vout,hsync,vsync); input clk; output vout; output hsync; output vsync; reg [10:0] hcounter; reg [8:0] vcounter;
wire allow; assign allow = (hcounter >= 168 && hcounter < 888 && vcounter >= 32 && vcounter < 288 ) ? 1 : 0;
assign hsync = (hcounter < 69 && vcounter < 305) ? 1 : 0; assign vsync = (vcounter >= 306 && vcounter <= 308) ? 1 : 0;
assign vout = allow; always @(posedge clk) begin hcounter = hcounter + 1; if(hcounter == 936) begin hcounter = 0; vcounter = vcounter + 1; if(vcounter == 312) vcounter = 0; end end endmodule
----------------------------------------------------
oraz plik symulacji:
---------------------------------------------------- `timescale 1ns/1ns module sim; reg clk; wire vout; wire hsync; wire vsync;
generator UUT ( .clk(clk), .vout(vout), .hsync(hsync), .vsync(vsync) );
always begin //clock process #34 clk = 0; #34 clk = 1; end
initial begin
#100000 $stop; end endmodule
----------------------------------------------------
Juz nie wnikajac w tresc kodu, bo to chyba teraz nie istotne - rzecz w tym, ze symulator przyjmuje plik, uruchamia symulacje tworzy piekne przebiegi i..... kicha :( Wszystkie wyjscia sa caly czas w stanie X... oczywiscie kod dziala dokladnie tak jak powinien w kosci, ale symulator nie ma zamiaru :(
Jedyne wypadki kiedy pokazuje sie cos zamiast Xow na wyjsciach, to gdy przypisze wartosc stala wyjsciu, albo w programie jest reg o tej samej nazwie co wyjscie - czyli prosty licznik w ktorym mam:
output [3:0] cnt; reg [3:0] cnt; ...
dziala, ale gdy zrobie: output [3:0] out; reg [3:0] cnt; assign out = cnt;
juz nie... i na wyjsciu caly czas jest stan nieokreslony...
i o co tu chodzi? czy ja nie wiem o jakich zasadach programowania w Verilogu, czy to wina symulatora??
help i z gory dzieki...