ajuta, de bază vhdl stat maşină cu nex 2

Autor Subiect: ajuta, de bază vhdl stat maşină cu nex 2  (Citit de 4 ori)

nicklas_a74

  • Vizitator
ajuta, de bază vhdl stat maşină cu nex 2
« : Ianuarie 01, 1970, 01:00:00 am »
Salut
Am scris în VHDL codul de mai jos.Destinaţia este de a avea o maşină de stat.
care începe de la 0.Când l-am folosi comutatorul şi un operator trebuie să păstraţi comuta
valoarea şi operator şi du-te la starea 1.Apoi, dacă eu ar trebui să apăsaţi egal un nou magazin
trece valoarea şi în funcţie de operator, care am folosit calcula rezultatul
etcDar când am ruleze pe Nexus 2 bord este doest lucra aşa cum sa intenţionat.
Te rog ajuta-ma cu Propunerile de corectură în codul de mai jos.

procesului (de stat, operand, egal, switch, clk)
variabilă tal1, tal2: std_logic_vector (7 downto 0);
variabilă de rezultat: std_logic_vector (15 downto 0);
variabilă temp_operand: std_logic_vector (2 downto 0);

începe

dacă rising_edge (clk), apoi

caz de stat este

când s0 => dacă operand / = "000", atunci
temp_operand: = operand;
dispx (7 downto 0) <= comutator (7 downto 0);
dispx (15 downto 8) <= "11101110";
tal1: = comutator (7 downto 0);
stare <= s1;

alt
dispx (7 downto 0) <= comutator (7 downto 0);
dispx (15 downto 8) <= "11101110";
sfârşit dacă;

când s1 => dacă egal = "1", apoi
tal2: = comutator (7 downto 0);

este cazul temp_operand

atunci când "100" => rezultat: = ( "00000000" & tal1) tal2;
dispx <= rezultat;
stare <= S2;

atunci când "010" => rezultat: = ( "00000000" & tal1)-tal2;
dispx <= rezultat;
stare <= S2;

atunci când alţii => rezultat: = tal1 * tal2;
dispx <= rezultat;
stare <= S2;
sfârşitul cazul;

alt
dispx (7 downto 0) <= comutator (7 downto 0);
dispx (15 downto 8) <= "11101110";
sfârşit dacă;când S2 => dacă trece / = tal2 apoi
stare <= s0;
alt
stare <= S2;
dispx <= rezultat;
sfârşit dacă;

atunci când alţii => de stat <= s0;
sfârşitul cazul;
sfârşit dacă;
sfârşitul procesului;



shitansh

  • Vizitator
Re: ajutor, de bază vhdl stat maşină cu nex 2
« Răspuns #1 : Ianuarie 01, 1970, 01:00:01 am »
Salut,

Pentru orice fel de design digital, la prima vedere, el doesnt
work  decât aveţi, pentru a verifica pentru putere,
în  cazul în bord devine în mod corespunzător de putere în sus şi este distribuit în mod corespunzător de putere între toate comaponant?

Dacă acesta este ok, atunci verifica pentru clk şi reset.dacă dumneavoastră de design devine clk şi reiniţializaţi corect?

Check it clk de atribuire şi de reiniţializare a condus sau gpio (în caz de gpio verifica cu CRO sau fac dus mechenism orice lucru sau orice altceva vă simţiţi mai bine).

dacă acest lucru este de asemenea, venind în mod corespunzător atunci există o problemă în codul
dvs.  de design.

Pentru a verifica în cazul în care este o problemă de stat în maşină .....
Primul lucru pe care trebuie să aibă grijă despre completă şi paralel caz de stat rea.e acolo, d complet caz?şi este acolo defaul caz?acestea sunt necesare pentru a preveni şi de la clanţă nedorite de stat.

Problema este încă acolo, atunci va trebui să simuleze şi depanare în felul ăsta.avea grijă despre simulare şi sinteză misbihavior

Hth,
--
Shitansh Vaghela


nicklas_a74

  • Vizitator
Re: ajutor, de bază vhdl stat maşină cu nex 2
« Răspuns #2 : Ianuarie 01, 1970, 01:00:02 am »
Vă mulţumim pentru răspunsurile
Am putere şi aşa mai departe, deoarece codul meu, dar nu se execută corect.Eu cred că este
în interiorul statului descriere este problema.Nu folosesc nici un nume de rău, de vreme ce codul meu
ar trebui să aibă grijă de "nedorite" state şi "push" la starea s0 ca incepand
afirma.Dar eu nu pot "vedea" în cazul în care problema se află în cadrul cod am scris.

De aceea l-am întrebat pentru anumite comentarii cu privire la codul meu.


shitansh

  • Vizitator
Re: ajutor, de bază vhdl stat maşină cu nex 2
« Răspuns #3 : Ianuarie 01, 1970, 01:00:03 am »
Salut,

din păcate nu am nici o experienţă cu VHDL thats de ce i-au dat direcţie.în cazul în care acesta este în verilog apoi perheps te pot ajuta.

Dacă de conversie a putea trimite-mi codul în Verilog apoi voi vedea.rightnow destul de ocupat altceva i-au făcut-o deja.Adăugat după 6 minute:Un alt suggetion,

Încercaţi să vă facă FSM cu două blocuri de câte unul pentru secvenţiale şi un altul pentru combinational şi, de asemenea, meke bloc separat pentru ieşire Logik acest fel, puteţi să-l mai mult de depanare.

HTH
--
Shitansh Vaghela


nand_gates

  • Vizitator
Re: ajutor, de bază vhdl stat maşină cu nex 2
« Răspuns #4 : Ianuarie 01, 1970, 01:00:04 am »
Citeste-o pe asta!

Cod:

proces (clk)

variabilă tal1, tal2: std_logic_vector (7 downto 0);

variabilă de rezultat: std_logic_vector (15 downto 0);

variabilă temp_operand: std_logic_vector (2 downto 0);

începedacă rising_edge (clk), apoi

caz de stat este

când s0 =>

dacă operand / = "000", atunci

temp_operand: = operand;

dispx (7 downto 0) <= comutator (7 downto 0);

dispx (15 downto 8) <= "11101110";

tal1: = comutator (7 downto 0);

stare <= s1;

alt

dispx (7 downto 0) <= comutator (7 downto 0);

dispx (15 downto 8) <= "11101110";

sfârşit dacă;când s1 =>

în cazul în egală = "1", apoi

tal2: = comutator (7 downto 0);

este cazul temp_operand

atunci când "100" =>

Rezultatul: = ( "00000000" & tal1) tal2;

atunci când "010" =>

Rezultatul: = ( "00000000" & tal1) - tal2;

atunci când alţii =>

Rezultatul: = tal1 * tal2;

sfârşitul cazul;

dispx <= rezultat;

stare <= S2;

alt

dispx (7 downto 0) <= comutator (7 downto 0);

dispx (15 downto 8) <= "11101110";

sfârşit dacă;când S2 =>

dacă trece / = tal2 apoi

stare <= s0;

alt

stare <= S2;

dispx <= rezultat;

sfârşit dacă;atunci când alţii =>

stare <= s0;

sfârşitul cazul;

sfârşit dacă;

sfârşitul procesului;

nicklas_a74

  • Vizitator
Re: ajutor, de bază vhdl stat maşină cu nex 2
« Răspuns #5 : Ianuarie 01, 1970, 01:00:05 am »
Codul încă dont lucru atunci când am transferul său bitfile la bord Nexus 2.Comutatorul este conectat la butoane B18, D18 si E18 care permit de a alege , - sau * ca operand.Ar trebui să fie egale pe butonul H13 pe bord.De ecran se afişează valorile de la switch-uri G18 la R17, în mod corect.Dar după ce am spus de presă " " şi, ulterior, oferă cel de-al doilea număr şi apăsaţi butonul pentru "egal" este dosent lucru.Este dosent arate valoarea.Cant "vedea" ce este în neregulă cu acest cod?
Orice alte sugestii?


nand_gates

  • Vizitator
Re: ajutor, de bază vhdl stat maşină cu nex 2
« Răspuns #6 : Ianuarie 01, 1970, 01:00:06 am »
Pot beneficia de completă vhdl codul?


nand_gates

  • Vizitator
Re: ajutor, de bază vhdl stat maşină cu nex 2
« Răspuns #7 : Ianuarie 01, 1970, 01:00:07 am »
Problema ar putea fi ...
Sunteti utilizând push butoane B18, D18 si E18, fără debouncing.
Verifica asta ...
http://www.fpga4fun.com/Debouncer2.html

Sper că acest lucru vă va ajuta!