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

<= "11101110";
tal1: = comutator (7 downto 0);
stare <= s1;
alt
dispx (7 downto 0) <= comutator (7 downto 0);
dispx (15 downto

<= "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

<= "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;