library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_arith.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
ENTITY ram IS
port ( A : in std_logic_vector(5 downto 0);
CEB, WEB : in std_logic;
INN : in std_logic_vector(7 downto 0);
OUTT : out std_logic_vector(7 downto 0)
);
END ram;
ARCHITECTURE dataflow_view OF ram IS
SUBTYPE TYPE_WORD IS std_logic_vector(7 downto 0);
TYPE TYPE_RAM IS ARRAY(63 DOWNTO 0) OF TYPE_WORD;
SIGNAL memory : TYPE_RAM;
BEGIN
OUTT <= memory( CONV_INTEGER( A ) );
RAM_0 : PROCESS( CEB )
BEGIN
IF (CEB='1' AND CEB'EVENT )
THEN IF (WEB='0')
THEN memory( CONV_INTEGER( A ) ) <= INN;
END IF;
END IF;
END PROCESS RAM_0;
END dataflow_view;
ENTITY circuit is
PORT
( ck : in BIT;
jour : in BIT;
reset : in BIT;
vdd : in BIT;
vss : in BIT;
i : in BIT_VECTOR(3 DOWNTO 0);
porte : out BIT;
alarm : out BIT
);
END circuit;
ARCHITECTURE MOORE OF circuit is
TYPE ETAT_TYPE IS (E0, E1, E2, E3, E4, E5, EA);
SIGNAL EF, CS : ETAT_TYPE;
CONSTANT digit0 : BIT_VECTOR (3 DOWNTO 0) := B"1111" ; -- O
....
--PRAGMA CURRENT_STATE CS
--PRAGMA NEXT_STATE EF
--PRAGMA CLOCK ck
--PRAGMA FIRST_STATE E0
BEGIN
PROCESS ( CS, i)
BEGIN
IF ( reset = '1' )
THEN
EF <= E0; porte <= '0'; alarm <= '0'; ELSE
CASE CS is
WHEN E0 =>
porte <= '0'; alarm <= '0';
IF ( i = digit0 ) THEN
IF ( jour = '1' ) THEN EF <= E5;
ELSE EF <= EA;
END IF;
ELSE
IF ( i = digit1 ) THEN EF <= E1;
ELSE IF ( jour = '1' ) THEN EF <= E0;
ELSE EF <= EA;
END IF;
END IF;
END IF;
WHEN E1 =>
....
END CASE;
END IF;
END PROCESS;
PROCESS( ck )
BEGIN
IF ( ck = '1' AND NOT ck'STABLE ) THEN CS <= EF;
END IF;
END PROCESS;
END MOORE;
ENTITY addaccu IS
PORT(
clr : IN BIT;
ld : IN BIT;
outs : IN BIT_VECTOR(15 DOWNTO 0);
clk : IN BIT;
result : OUT BIT_VECTOR(15 DOWNTO 0);
vdd : IN BIT;
vss : IN BIT
);
END addaccu;
ARCHITECTURE VBE OF addaccu IS
SIGNAL rtlsum_0 : BIT_VECTOR(15 DOWNTO 0);
SIGNAL rtlcarry_0 : BIT_VECTOR(15 DOWNTO 0);
SIGNAL resultint : REG_VECTOR(15 DOWNTO 0) REGISTER;
BEGIN
rtlcarry_0(0) < '0';
rtlsum_0 < ((resultint XOR outs) XOR rtlcarry_0);
rtlcarry_0(15 downto 1) < (((resultint(14 downto 0) AND outs(14 downto 0)) OR
(resultint(14 downto 0) AND rtlcarry_0(14 downto 0))) OR
(outs(14 downto 0) AND rtlcarry_0(14 downto 0)));
result < resultint;
LABEL1 : BLOCK ((clk = '1') AND NOT(clk'STABLE) )
BEGIN
resultint < GUARDED "0000000000000000" WHEN clr ELSE
rtlsum_0 WHEN (NOT(clr) AND ld) ELSE resultint;
END BLOCK LABEL1;
END VBE;
ENTITY digi IS
PORT (
ck : in BIT ;
jour : in BIT ;
reset : in BIT ;
vdd : in BIT ;
vss : in BIT ;
i : in BIT_VECTOR(3 DOWNTO 0) ;
porte : out BIT ;
alarm : out BIT
);
END digi;
ARCHITECTURE VST OF digi IS
COMPONENT nxr2_x1
port (
i0 : in BIT ;
i1 : in BIT ;
nq : out BIT ;
vdd : in BIT ;
vss : in BIT
);
END COMPONENT;
....
SIGNAL mbk_buf_not_aux1 : BIT;
....
BEGIN
not_aux12_ins : nxr2_x1
PORT MAP (
vss => vss,
vdd => vdd,
nq => not_aux12,
i1 => i(3),
i0 => i(1));
....
end VST;
in clk B;;
in rst B;;
in stb B;;
in a (7 downto 0) X;;
in b (7 downto 0) X;;
out result (15 downto 0) X;;
out done B;
begin
....
: 1 0 0 00 00 ?0006 ?0;
: 0 0 0 00 00 ?0006 ?0;
: 1 0 0 00 00 ?0006 ?1;
: 0 0 0 00 00 ?0006 ?1;
: 1 0 0 00 00 ?0006 ?1;
: 0 0 0 00 00 ?0006 ?1;
end;
V ALLIANCE : 6
H digi,P, 1/10/2002,100
A 0,0,28000,30000
C 28000,29700,600,vdd,7,EAST,ALU1
C 21000,0,200,alarm,0,SOUTH,ALU2
C 2000,30000,200,ck,0,NORTH,ALU2
....
S 0,25000,28000,25000,1200,vss,RIGHT,ALU1
S 0,20000,28000,20000,1200,vdd,RIGHT,ALU1
S 0,10000,28000,10000,1200,vdd,RIGHT,ALU1
....
I 24000,0,a3_x2,a3_x2_4_ins,SYM_Y
I 4000,0,na2_x1,na2_x1_2_ins,SYM_Y
....
V 2000,29500,CONT_VIA2,*
V 2000,30000,CONT_VIA2,*
V 2500,14000,CONT_VIA2,*
V 2500,19000,CONT_VIA2,*
...
EOF
V ALLIANCE : 6
H digi_e,L,01/10/2002
C alarm,UNKNOWN,EXTERNAL,12
C ck,UNKNOWN,EXTERNAL,40
...
C vdd,UNKNOWN,EXTERNAL,1
C vss,UNKNOWN,EXTERNAL,21
I na2_x1,na2_x1_2_ins
C i0,UNKNOWN,INTERNAL,4
C i1,UNKNOWN,INTERNAL,6
...
S 4,INTERNAL,not_aux14
S 3,INTERNAL,circuit_cs_0
S 2,INTERNAL,circuit_cs_2
S 1,EXTERNAL,vdd
EOF