.


:




:

































 

 

 

 





, ( ), . .

, , , BIT std_logic ( ). , , . .

, ..

ARCHITECTURE fsm OF example IS

TYPE STATE_TYPE IS (Init, Idle, Write, Read, Inc);

SIGNAL state: STATE_TYPE;

BEGIN

clocked: PROCESS (Clk, Reset)

BEGIN

IF (Reset = '1') THEN state <= Init;

ELSIF (Clk' EVENT AND Clk = '1') THEN

CASE state IS

WHEN Init => state <= Idle;

WHEN Idle =>

IF (WR = '1') THEN state <= Write;

ELSIF (Rd = '1') THEN state <= Read; Strs<=1;

END IF;

WHEN Write =>

IF (Emp = '1') THEN state <= Write;;Busy_C<=1;

ELSIF (Ack = '1') THEN state <= Inc;Busy_C<=0

END IF;

WHEN Read =>

IF (Emp = '1') THEN state <= Read; Busy_R<=1

ELSIF (Ack = '1') THEN state <= Inc;; busy_R<=0; Strs<=0;

END IF;

WHEN Inc =>

IF (Addr7 /= '1') THEN state <= Idle;

ELSIF (Addr7 = '1') THEN state <= Init;

END IF;

END CASE;

END IF;

END PROCESS clocked;

--

EN<=1 when state=write or state=idle else 0;

ClrAdr<=1 when state=idle else0;

Ld<=1 when state=write else 0;

EnINC<= 1 when state=INC else 0;

Str<=1 when state=read else 0;

END ARCHITECTURE fsm,

 

, ( ,

p_l3.vhd, .. p_clk , .

library IEEE; USE ieee.std_logic_1164.ALL; use ieee.util_1164.all;   PACKAGE p_l3 IS FUNCTION buffer_inv(input:std_logic_vector; en:std_logic) RETURN std_logic_vector; signal p_clk:std_logic; type state is (s0,s1,s2,s3,s4,s5,s6,s7); type st_m_out is (y0,y1,y2,y3); type st_m_in !!! FUNCTION input_to_vector(inp:st_m_in;k:integer) return std_logic_vector; FUNCTION Output_to_vector !!!; END p_l3;   PACKAGE BODY p_l3 IS FUNCTION input_to_vector (inp:st_m_in;k:integer) return std_logic_vector IS variable i,j:integer; begin i:=0; for l in st_m_in loop if inp=l then j:=i; end if; i:=i+1; end loop; return to_vector(j,k); end input_to_vector;   FUNCTION output_to_vector !!! end p_l3;   FUNCTION buffer_inv(input:std_logic_vector; en:std_logic) return std_logic_vector IS VARIABLE result: std_logic_vector(input'range); BEGIN FOR i IN input'RANGE LOOP IF en='1'then IF input(i) = '1' THEN result(i):= '0'; ELSE result(i):= '1'; END IF; ELSE result(i):='Z'; end if; END LOOP; RETURN result; END buffer_inv;

 

 





:


: 2017-03-18; !; : 315 |


:

:

.
==> ...

1281 - | 1263 -


© 2015-2024 lektsii.org - -

: 0.012 .