[an error occurred while processing this directive]
TelesysCoreLib. А не собрать ли уважаемому обществу открытую библиотеку корок по типу LogicCore? Мой маленький вклад - HDLC_DECODER.
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено asmej 06 апреля 2004 г. 20:37

-------------------------------------------------------------------------------
--
-- Copyright 2004 Zelax-Telecom asmej@zelax.ru
-- This software is provided AS-IS and free of charge with the restriction that
-- this copyright notice remain in all copies of the Source Code at all times.
--
-- File: hdlc_decoder.vhd
-- Target : for Spartan-II, Spartan-IIE and Virtex-E only
-- Design statistics:
-- Minimum period: 5.029ns (Maximum frequency: 198.847MHz)
-- Number of occupied Slices: 6
--
-- Description:
-- This module does:
-- 1. Start and end of hdlc-frame pattern check and deleting.
-- 2. Idle pattern checking and deleting:
-- - after the end of a frame which is signaled by an abort signal;
-- - all units.
-- 3. Bit stuffing deleting.
--
--
-------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
LIBRARY UNISIM;
USE UNISIM.Vcomponents.ALL;

ENTITY hdlc_decoder IS PORT (
EOF : OUT std_logic; -- End of Frame flag
C : IN std_logic; -- system clock ( data accompanied clock, if CE==1)
R : IN std_logic; -- Decoder RESET
VB : OUT std_logic; -- Valid output Bit (slo accompanied strobe)
CE : IN std_logic; -- clock enable
DeStuf : IN std_logic; -- 1-destuffing, 0-ignore stuffing (byte stuffing assumed)
sli : IN std_logic; -- serial line input (in the moment when EOF=1
-- is equivalent also to Frame ABORT flag)
slo : OUT std_logic -- serial line output
);

END hdlc_decoder;


ARCHITECTURE STRUCTURE OF hdlc_decoder IS

-- COMPONENTS

COMPONENT lut4_l
PORT (
I0 : IN std_logic;
I1 : IN std_logic;
I2 : IN std_logic;
I3 : IN std_logic;
LO : OUT std_logic
); END COMPONENT;

COMPONENT muxcy
PORT (
CI : IN std_logic;
DI : IN std_logic;
O : OUT std_logic;
S : IN std_logic
); END COMPONENT;

COMPONENT RAM16X1S
PORT (
D : IN std_logic;
WE : IN std_logic;
A0 : IN std_logic;
A1 : IN std_logic;
A2 : IN std_logic;
A3 : IN std_logic;
O : OUT std_logic;
WCLK : IN std_logic
); END COMPONENT;

COMPONENT FDE
PORT (
D : IN std_logic;
CE : IN std_logic;
C : IN std_logic;
Q : OUT std_logic
); END COMPONENT;

COMPONENT muxcy_l
PORT (
CI : IN std_logic;
DI : IN std_logic;
LO : OUT std_logic;
S : IN std_logic
); END COMPONENT;

COMPONENT xorcy
PORT (
CI : IN std_logic;
LI : IN std_logic;
O : OUT std_logic
); END COMPONENT;

COMPONENT FDRE
PORT (
D : IN std_logic;
CE : IN std_logic;
C : IN std_logic;
R : IN std_logic;
Q : OUT std_logic
); END COMPONENT;

COMPONENT lut4
PORT (
I0 : IN std_logic;
I1 : IN std_logic;
I2 : IN std_logic;
I3 : IN std_logic;
O : OUT std_logic
); END COMPONENT;

COMPONENT lut3_l
PORT (
I0 : IN std_logic;
I1 : IN std_logic;
I2 : IN std_logic;
LO : OUT std_logic
); END COMPONENT;

COMPONENT muxcy_d
PORT (
CI : IN std_logic;
DI : IN std_logic;
LO : OUT std_logic;
O : OUT std_logic;
S : IN std_logic
); END COMPONENT;

COMPONENT INV
PORT (
O : OUT std_logic;
I : IN std_logic
); END COMPONENT;

COMPONENT gnd
PORT (
G : OUT std_logic
); END COMPONENT;

COMPONENT vcc
PORT (
P : OUT std_logic
); END COMPONENT;

-- SIGNALS

SIGNAL BQ2 : std_logic;
SIGNAL START : std_logic;
SIGNAL IB12 : std_logic;
SIGNAL BQ1 : std_logic;
SIGNAL BQ0 : std_logic;
SIGNAL HI : std_logic;
SIGNAL C1 : std_logic;
SIGNAL C2 : std_logic;
SIGNAL IB14 : std_logic;
SIGNAL C14 : std_logic;
SIGNAL ZERO1 : std_logic;
SIGNAL LO : std_logic;
SIGNAL ZERO0 : std_logic;
SIGNAL CZ : std_logic;
SIGNAL FRAME_DLY : std_logic;
SIGNAL Q2 : std_logic;
SIGNAL NQ2 : std_logic;
SIGNAL Q1 : std_logic;
SIGNAL NQ1 : std_logic;
SIGNAL Q0 : std_logic;
SIGNAL NQ0 : std_logic;
SIGNAL STUFF : std_logic;
SIGNAL PP_SLO : std_logic;
SIGNAL IB11 : std_logic;
SIGNAL IB13 : std_logic;
SIGNAL IB10 : std_logic;
SIGNAL IB15_X_IB14_X_IB12 : std_logic;
SIGNAL P_SLO : std_logic;
SIGNAL STOP : std_logic;
SIGNAL FRAME : std_logic;
SIGNAL NEXT_FRAME : std_logic;
SIGNAL VALIDBIT : std_logic;
SIGNAL FALSEBIT : std_logic;
SIGNAL IB9 : std_logic;

-- INSTANCE ATTRIBUTES

ATTRIBUTE INIT:string;
ATTRIBUTE INIT of U13 : label is "2AFF";
ATTRIBUTE RLOC:string;
ATTRIBUTE RLOC of U13 : label is "R1C0.S1";
ATTRIBUTE RLOC of U14 : label is "R0C0.S1";
ATTRIBUTE RLOC of U15 : label is "R1C0.S0";
ATTRIBUTE RLOC of U16 : label is "R1C0.S0";
ATTRIBUTE RLOC of U17 : label is "R2C0.S1";
ATTRIBUTE RLOC of U19 : label is "R2C0.S1";
ATTRIBUTE RLOC of U1 : label is "R1C0.S1";
ATTRIBUTE INIT of U1 : label is "1000";
ATTRIBUTE INIT of U2 : label is "7000";
ATTRIBUTE RLOC of U2 : label is "R0C0.S1";
ATTRIBUTE RLOC of U3 : label is "R0C0.S1";
ATTRIBUTE RLOC of U4 : label is "R0C0.S1";
ATTRIBUTE INIT of U4 : label is "54";
ATTRIBUTE RLOC of U5 : label is "R0C0.S1";
ATTRIBUTE INIT of U20 : label is "2AFF";
ATTRIBUTE RLOC of U20 : label is "R2C0.S1";
ATTRIBUTE RLOC of U6 : label is "R1C0.S1";
ATTRIBUTE RLOC of U21 : label is "R0C0.S1";
ATTRIBUTE RLOC of U7 : label is "R0C0.S0";
ATTRIBUTE INIT of U7 : label is "1000";
ATTRIBUTE INIT of U22 : label is "8000";
ATTRIBUTE RLOC of U22 : label is "R0C0.S0";
ATTRIBUTE RLOC of U23 : label is "R0C0.S0";
ATTRIBUTE INIT of U8 : label is "ACCC";
ATTRIBUTE RLOC of U8 : label is "R1C0.S0";
ATTRIBUTE RLOC of U9 : label is "R1C0.S0";
ATTRIBUTE RLOC of U24 : label is "R2C0.S1";
ATTRIBUTE RLOC of U27 : label is "R2C0.S1";
ATTRIBUTE INIT of U28 : label is "2AFF";
ATTRIBUTE RLOC of U28 : label is "R2C0.S1";
ATTRIBUTE RLOC of U31 : label is "R2C0.S0";
ATTRIBUTE RLOC of U32 : label is "R2C0.S0";
ATTRIBUTE RLOC of U33 : label is "R2C0.S0";
ATTRIBUTE RLOC of U34 : label is "R2C0.S0";
ATTRIBUTE RLOC of U35 : label is "R2C0.S0";
ATTRIBUTE RLOC of U36 : label is "R2C0.S0";
ATTRIBUTE RLOC of U10 : label is "R0C0.S0";
ATTRIBUTE RLOC of U12 : label is "R1C0.S1";


-- GATE INSTANCES

BEGIN
U13 : lut4_l PORT MAP(
I0 => Q2,
I1 => Q1,
I2 => Q0,
I3 => IB9,
LO => BQ2
);
U14 : muxcy PORT MAP(
CI => CZ,
DI => LO,
O => ZERO1,
S => NEXT_FRAME
);
U15 : RAM16X1S PORT MAP(
D => IB11,
WE => CE,
A0 => ZERO0,
A1 => ZERO1,
A2 => ZERO1,
A3 => ZERO1,
O => IB10,
WCLK => C
);
U16 : FDE PORT MAP(
D => IB10,
CE => CE,
C => C,
Q => IB9
);
U17 : muxcy_l PORT MAP(
CI => C1,
DI => LO,
LO => C2,
S => BQ1
);
U18 : xorcy PORT MAP(
CI => C1,
LI => BQ1,
O => NQ1
);
U19 : FDRE PORT MAP(
D => NQ1,
CE => CE,
C => C,
R => R,
Q => Q1
);
U1 : lut4 PORT MAP(
I0 => IB9,
I1 => Q0,
I2 => Q1,
I3 => Q2,
O => START
);
U2 : lut4_l PORT MAP(
I0 => DESTUF,
I1 => STUFF,
I2 => FRAME_DLY,
I3 => FRAME,
LO => VALIDBIT
);
U3 : FDRE PORT MAP(
D => VALIDBIT,
CE => CE,
C => C,
R => R,
Q => VB
);
U4 : lut3_l PORT MAP(
I0 => STOP,
I1 => START,
I2 => FRAME,
LO => NEXT_FRAME
);
U5 : FDRE PORT MAP(
D => NEXT_FRAME,
CE => CE,
C => C,
R => R,
Q => FRAME
);
U20 : lut4_l PORT MAP(
I0 => Q1,
I1 => Q0,
I2 => Q2,
I3 => IB9,
LO => BQ1
);
U6 : FDRE PORT MAP(
D => FRAME,
CE => CE,
C => C,
R => R,
Q => FRAME_DLY
);
U21 : muxcy_d PORT MAP(
CI => LO,
DI => LO,
LO => CZ,
O => ZERO0,
S => VALIDBIT
);
U7 : lut4 PORT MAP(
I0 => IB9,
I1 => Q1,
I2 => Q0,
I3 => Q2,
O => STUFF
);
U22 : lut4_l PORT MAP(
I0 => IB15_X_IB14_X_IB12,
I1 => IB13,
I2 => IB11,
I3 => IB10,
LO => STOP
);
U23 : FDRE PORT MAP(
D => STOP,
CE => CE,
C => C,
R => FALSEBIT,
Q => EOF
);
U8 : lut4_l PORT MAP(
I0 => P_SLO,
I1 => IB9,
I2 => STUFF,
I3 => DESTUF,
LO => PP_SLO
);
U9 : FDE PORT MAP(
D => PP_SLO,
CE => CE,
C => C,
Q => P_SLO
);
U24 : muxcy_l PORT MAP(
CI => HI,
DI => LO,
LO => C1,
S => BQ0
);
U25 : INV PORT MAP(
O => FALSEBIT,
I => VALIDBIT
);
U26 : xorcy PORT MAP(
CI => HI,
LI => BQ0,
O => NQ0
);
U27 : FDRE PORT MAP(
D => NQ0,
CE => CE,
C => C,
R => R,
Q => Q0
);
U28 : lut4_l PORT MAP(
I0 => Q0,
I1 => Q1,
I2 => Q2,
I3 => IB9,
LO => BQ0
);
U29 : gnd PORT MAP(
G => LO
);
U30 : vcc PORT MAP(
P => HI
);
U31 : muxcy PORT MAP(
CI => C14,
DI => LO,
O => IB15_X_IB14_X_IB12,
S => IB12
);
U32 : RAM16X1S PORT MAP(
D => IB13,
WE => CE,
A0 => ZERO0,
A1 => ZERO1,
A2 => ZERO1,
A3 => ZERO1,
O => IB12,
WCLK => C
);
U33 : FDE PORT MAP(
D => IB12,
CE => CE,
C => C,
Q => IB11
);
U34 : muxcy_l PORT MAP(
CI => SLI,
DI => LO,
LO => C14,
S => IB14
);
U35 : RAM16X1S PORT MAP(
D => SLI,
WE => CE,
A0 => ZERO0,
A1 => ZERO1,
A2 => ZERO1,
A3 => ZERO1,
O => IB14,
WCLK => C
);
U36 : FDE PORT MAP(
D => IB14,
CE => CE,
C => C,
Q => IB13
);
U10 : FDRE PORT MAP(
D => P_SLO,
CE => CE,
C => C,
R => FALSEBIT,
Q => SLO
);
U11 : xorcy PORT MAP(
CI => C2,
LI => BQ2,
O => NQ2
);
U12 : FDRE PORT MAP(
D => NQ2,
CE => CE,
C => C,
R => R,
Q => Q2
);
END STRUCTURE;


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru