Bardzo bym was prosił o pomoc i wyrozumiałość na pewno zrobiłem coś złe, ale mam tragicznego wykładowce. Sam też nie jestem orłem a chciałbym chociaż spróbować zrobić coś samemu a nie oddawać gotowca. To tak poniższy kod ma sterować światłami dołączę rysunek jak ja widzę te światłą prosiłbym o sprawdzenie czy mój kod by działał oraz ewentualnie o wyjaśnienie błędów z góry dziękuję.
Przepraszam ze wklejam kod normalnie ale nie znalazłem rozszerzenia dla veriloga
timescale 1ns / 1ps
module LicznikSwiatla(
input clk,
output wire [31:0] licznik
);
reg [31:0] count;
always @(posedge clk)
if(clk)
count <=count +1;
assign licznik=count; //Chce zeby na wyjsciu dawal czas licznika
endmodule
module Swiatla(
input wlacz, //impuls który bedzie właczał ledy
input przycisk, //Przycisk do przejscia dla pieszych
output reg [2:0] prawy, //3 ledy przedstawiajace swiatla po prawej
output reg [2:0]lewy,
output reg [2:0]dol,
output reg [1:0]przejscie1, //swiatla po jedenj stronie przejsca
output reg [1:0]przejscie2);
reg [31:0] pamiec;
LicznikSwiatla(.licznik(pamiec)); //Chcialbym zeby czas z modulu licznikswiatel zapisywal sie w "pamieci"
initial @(posedge przycisk) //dzieki initial kod wykona sie raz?
begin //Mam na mysli to ze ledy nie beda sie palic caly czas
if(przycisk)
prawy[2:2]<=wlacz; //wlacz czerwone
lewy[2:2]<=wlacz; //czerwone
dol[2:2]<=wlacz; //czerwone
przejscie1[1:1]<=wlacz; //zielone na przejsciu
przejscie2[1:1]<=wlacz; //z drugiej strony przejscia zielone
if((pamiec==50000)) //Ile sygnałów liczy seknda? //pierwszy stan
prawy[0:0]<=wlacz; //zielone
lewy[2:2]<=wlacz; //czerwone
dol[2:2]<=wlacz; ;//czerwone
if(pamiec==100000) //Drugi stan
prawy[2:2]<=wlacz; //czerwony
lewy[1:1]<=wlacz; //pomaranczowy
dol[2:2]<=wlacz; //czerwone
if(pamiec==150000) //trzeci stan
prawy[2:2]<=wlacz; //czerwony
lewy[0:0]<=wlacz; //zielony
dol[2:2]<=wlacz; //czerwone
if(pamiec==200000) //4stan
prawy[2:2]<=wlacz; //czer
lewy[2:2]<=wlacz; //czer
dol[1:1]<=wlacz; //P
if(pamiec==250000) //4stan
prawy[2:2]<=wlacz; //czer
lewy[2:2]<=wlacz; //czer
dol[0:0]<=wlacz ;//Z
if(pamiec==300000) //5stan
prawy[1:1]<=wlacz; //P
lewy[2:2]<=wlacz; //czer
dol[2:2]<=wlacz; //czer
if(pamiec==350000) //6stan
prawy[0:0]<=wlacz; //P
lewy[2:2]<=wlacz; //czer
dol[2:2]<=wlacz;
pamiec=0;
end
endmodule