, ( ), . .
, , , 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; |
|
|