M
madmaiden
Guest
hej,
Jeg har nogle grundlæggende spørgsmål og læse forskellige tutorials hjalp ikke.Jeg vil gerne gøre en tilstand maskine, der går om alle stater en fast numer af (lad os sige fem) gange så stopper og venter, indtil en knap er trykket ned.Jeg prøvede kodning dette i verilog og også i vhdl.ingen resultater.For at teste om staten blev maskinen arbejder jeg tilsluttet den til tx pin, og hver gang den nåede den første stat en række blev sendt.Det workes fint, men jeg vil gerne gøre det sende fem værdier, hver gang der trykkes på knappen, ikke mere ikke mindre.Jeg har også en Debounce blok, der virker fint.
Jeg vil sende den kode skrevet i vhdl:
Kode:fsm1: PROCESS (PB1, currentstate, tx_rdy, nr)
begynd
tilfælde currentstate er
hvor ledig =>
tx_write <= '1 ';
if (tx_rdy = '1 ') AND (nr <5), derefter
nextstate <= st1;
elsif (PB1 = '1 ')
nr = "000";
anden
nextstate <= tomgang;
end if;
når ST1 =>
dat <= "01010001"; - doens 't virkelig betyder noget, hvad det er transmiited for nu
nr <= nr '1 ';
nextstate <= ST2;
når ST2 =>
tx_write <= '0 ';
nextstate <= ST3;
når ST3 =>
nextstate <= tomgang
ende sag;
end process;
Jeg har nogle grundlæggende spørgsmål og læse forskellige tutorials hjalp ikke.Jeg vil gerne gøre en tilstand maskine, der går om alle stater en fast numer af (lad os sige fem) gange så stopper og venter, indtil en knap er trykket ned.Jeg prøvede kodning dette i verilog og også i vhdl.ingen resultater.For at teste om staten blev maskinen arbejder jeg tilsluttet den til tx pin, og hver gang den nåede den første stat en række blev sendt.Det workes fint, men jeg vil gerne gøre det sende fem værdier, hver gang der trykkes på knappen, ikke mere ikke mindre.Jeg har også en Debounce blok, der virker fint.
Jeg vil sende den kode skrevet i vhdl:
Kode:fsm1: PROCESS (PB1, currentstate, tx_rdy, nr)
begynd
tilfælde currentstate er
hvor ledig =>
tx_write <= '1 ';
if (tx_rdy = '1 ') AND (nr <5), derefter
nextstate <= st1;
elsif (PB1 = '1 ')
nr = "000";
anden
nextstate <= tomgang;
end if;
når ST1 =>
dat <= "01010001"; - doens 't virkelig betyder noget, hvad det er transmiited for nu
nr <= nr '1 ';
nextstate <= ST2;
når ST2 =>
tx_write <= '0 ';
nextstate <= ST3;
når ST3 =>
nextstate <= tomgang
ende sag;
end process;