Commit 38980abf authored by Ille, Ondrej, Ing.'s avatar Ille, Ondrej, Ing.

Reoranized license headers to be compatible with license

updater script
parent ea6e6018
Library ieee;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.ALL;
use ieee.std_logic_unsigned.All;
use work.CANconstants.all;
use work.ID_transfer.all;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -33,17 +26,8 @@ use work.ID_transfer.all; ...@@ -33,17 +26,8 @@ use work.ID_transfer.all;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
-- Revision History:
--
-- July 2015 Created file
-- 17.1.2016 Added ID change from register value to decimal value for range
-- filter comparison
-- 1.6.2016 Fixed wrong enable decoding from driving bus signals! Filters
-- were disabled but
-- frame was anyway propagated to the output!
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Purpose: -- Purpose:
-- Message filter for recieved data. Combinational circuit with valid data re- -- Message filter for recieved data. Combinational circuit with valid data re-
...@@ -56,6 +40,21 @@ use work.ID_transfer.all; ...@@ -56,6 +40,21 @@ use work.ID_transfer.all;
-- it is considered as valid. Frame type (CAN Basic, CAN Extended, CAN FD Basic) -- it is considered as valid. Frame type (CAN Basic, CAN Extended, CAN FD Basic)
-- are also selectable for filtering. -- are also selectable for filtering.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Revision History:
-- July 2015 Created file
-- 17.1.2016 Added ID change from register value to decimal value for range
-- filter comparison
-- 1.6.2016 Fixed wrong enable decoding from driving bus signals! Filters
-- were disabled but
-- frame was anyway propagated to the output!
--------------------------------------------------------------------------------
Library ieee;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.ALL;
use ieee.std_logic_unsigned.All;
use work.CANconstants.all;
use work.ID_transfer.all;
entity messageFilter is entity messageFilter is
generic generic
......
Library ieee;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.ALL;
use ieee.std_logic_unsigned.All;
use work.CANconstants.all;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -32,8 +26,23 @@ use work.CANconstants.all; ...@@ -32,8 +26,23 @@ use work.CANconstants.all;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
-- Revision History: --------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Purpose:
-- Recieve buffer for messages. RAM memory type of N*32 bit words. Reading of
-- data from registers done word by word. In registers reading implemented in
-- the way that one read moves to the next word. Storing the message into the
-- buffer is sequential operation started with valid rec_message_valid for one
-- clock cycle. In following up to 20 clock cycles recieved data has to be va-
-- lid to be fully stored
-- --
-- Note:This is guaranteed from CAN Core. rec_message_valid is active in the
-- end of EOF field. Intermission field follows with 11 bit times (minimum 55
-- clock cycles) where recieved data are not changed, only overload condition
-- may be signallised!
--------------------------------------------------------------------------------
-- Revision History:
-- July 2015 Created file -- July 2015 Created file
-- 18.12.2015 RX Buffer inference from Flip-flops changed to native SRAM me- -- 18.12.2015 RX Buffer inference from Flip-flops changed to native SRAM me-
-- mory on FPGA. Dual port memory used for this purpose (sync -- mory on FPGA. Dual port memory used for this purpose (sync
...@@ -79,20 +88,11 @@ use work.CANconstants.all; ...@@ -79,20 +88,11 @@ use work.CANconstants.all;
-- --
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- Library ieee;
-- Purpose: use IEEE.std_logic_1164.all;
-- Recieve buffer for messages. RAM memory type of N*32 bit words. Reading of use IEEE.numeric_std.ALL;
-- data from registers done word by word. In registers reading implemented in use ieee.std_logic_unsigned.All;
-- the way that one read moves to the next word. Storing the message into the use work.CANconstants.all;
-- buffer is sequential operation started with valid rec_message_valid for one
-- clock cycle. In following up to 20 clock cycles recieved data has to be va-
-- lid to be fully stored
--
-- Note:This is guaranteed from CAN Core. rec_message_valid is active in the
-- end of EOF field. Intermission field follows with 11 bit times (minimum 55
-- clock cycles) where recieved data are not changed, only overload condition
-- may be signallised!
--------------------------------------------------------------------------------
entity rxBuffer is entity rxBuffer is
GENERIC( GENERIC(
......
Library ieee;
USE IEEE.std_logic_1164.all;
USE IEEE.numeric_std.ALL;
USE ieee.std_logic_unsigned.All;
use work.CANconstants.all;
use work.ID_transfer.all;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -33,8 +26,18 @@ use work.ID_transfer.all; ...@@ -33,8 +26,18 @@ use work.ID_transfer.all;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Purpose:
-- Circuit for selecting the valid message for CAN Core from two TXT buffer in-
-- puts. Circuit compares the timestamp of the message with input timestamp
-- (actual time) and allows the message to be propagated to the CAN Core when
-- the time Stamp of message is higher than actual timestamp! This realises the
-- functionality of sending the message in exact time! When both timeStamp are
-- equal and then message with lower identifier is selected!
--------------------------------------------------------------------------------
-- Revision History: -- Revision History:
--
-- July 2015 Created file -- July 2015 Created file
-- 17.1.2016 Added ID change from register value to decimal value for case -- 17.1.2016 Added ID change from register value to decimal value for case
-- when identifier needs to decide about priority message (Time -- when identifier needs to decide about priority message (Time
...@@ -56,15 +59,12 @@ use work.ID_transfer.all; ...@@ -56,15 +59,12 @@ use work.ID_transfer.all;
-- time and save some LUTs. -- time and save some LUTs.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- Library ieee;
-- Purpose: USE IEEE.std_logic_1164.all;
-- Circuit for selecting the valid message for CAN Core from two TXT buffer in- USE IEEE.numeric_std.ALL;
-- puts. Circuit compares the timestamp of the message with input timestamp USE ieee.std_logic_unsigned.All;
-- (actual time) and allows the message to be propagated to the CAN Core when use work.CANconstants.all;
-- the time Stamp of message is higher than actual timestamp! This realises the use work.ID_transfer.all;
-- functionality of sending the message in exact time! When both timeStamp are
-- equal and then message with lower identifier is selected!
--------------------------------------------------------------------------------
entity txArbitrator is entity txArbitrator is
generic( generic(
......
Library ieee;
USE IEEE.std_logic_1164.all;
USE IEEE.numeric_std.ALL;
USE ieee.std_logic_unsigned.All;
use work.CANconstants.all;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -32,6 +26,15 @@ use work.CANconstants.all; ...@@ -32,6 +26,15 @@ use work.CANconstants.all;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Purpose:
-- Transmit message buffer. Access to TX_DATA_REG of user registers is combi-
-- nationally mapped to the TXT Buffers. User is storing the data directly into
-- the TX buffer. Once the user allows to transmitt from the buffer, content of
-- the buffer is validated and "empty" is cleared.
--------------------------------------------------------------------------------
-- Revision History: -- Revision History:
-- --
-- July 2015 Created file -- July 2015 Created file
...@@ -47,13 +50,11 @@ use work.CANconstants.all; ...@@ -47,13 +50,11 @@ use work.CANconstants.all;
-- reource reduction was achieved. -- reource reduction was achieved.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- Library ieee;
-- Purpose: USE IEEE.std_logic_1164.all;
-- Transmit message buffer. Access to TX_DATA_REG of user registers is combi- USE IEEE.numeric_std.ALL;
-- nationally mapped to the TXT Buffers. User is storing the data directly into USE ieee.std_logic_unsigned.All;
-- the TX buffer. Once the user allows to transmitt from the buffer, content of use work.CANconstants.all;
-- the buffer is validated and "empty" is cleared.
--------------------------------------------------------------------------------
entity txtBuffer is entity txtBuffer is
generic( generic(
......
Library ieee;
USE IEEE.std_logic_1164.all;
USE IEEE.numeric_std.ALL;
USE ieee.std_logic_unsigned.All;
USE WORK.CANconstants.ALL;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -33,10 +26,6 @@ USE WORK.CANconstants.ALL; ...@@ -33,10 +26,6 @@ USE WORK.CANconstants.ALL;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
-- Revision History:
--
-- July 2015 Created file
--
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
...@@ -64,6 +53,10 @@ USE WORK.CANconstants.ALL; ...@@ -64,6 +53,10 @@ USE WORK.CANconstants.ALL;
-- would be set at the beginning of the "switching bit" and prescaler would -- would be set at the beginning of the "switching bit" and prescaler would
-- use hard-coded value of time quanta during ph1 and ph2 bit times. -- use hard-coded value of time quanta during ph1 and ph2 bit times.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Revision History:
-- July 2015 Created file
--
--------------------------------------------------------------------------------
Library ieee; Library ieee;
USE IEEE.std_logic_1164.all; USE IEEE.std_logic_1164.all;
......
Library ieee;
USE IEEE.std_logic_1164.all;
USE IEEE.numeric_std.ALL;
USE ieee.std_logic_unsigned.All;
USE WORK.CANconstants.ALL;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -33,8 +26,22 @@ USE WORK.CANconstants.ALL; ...@@ -33,8 +26,22 @@ USE WORK.CANconstants.ALL;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
-- Revision History: --------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Purpose:
-- 1. Implements Generic Synchronisation chain for incoming data
-- 2. Detects appropriate edge for synchronisation!!
-- 3. Measure Transciever delay compensation on command
-- 4. Sample bus values in sample point of Bit time:
-- a) By normal sampling, at position of sample point (Transciever,reciever)
-- b) In secondary sample point for Transciever of CAN FD Data Phase
-- 5. Detect bit Error by comparing transmitted values and Sampled values!
-- --
--Note: this bit error detection used in the end only for data phase transciever
-- of CAN FD Phase! In other cases bit error is detected inside CAN-Core by
-- comparing transmitted and recieved bit.
--------------------------------------------------------------------------------
-- July 2015 Created file -- July 2015 Created file
-- 19.12.2015 Added tripple sampling mode. Furthermore sampling is disabled -- 19.12.2015 Added tripple sampling mode. Furthermore sampling is disabled
-- when whole controller is disabled -- when whole controller is disabled
...@@ -64,20 +71,11 @@ USE WORK.CANconstants.ALL; ...@@ -64,20 +71,11 @@ USE WORK.CANconstants.ALL;
-- --
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- Library ieee;
-- Purpose: USE IEEE.std_logic_1164.all;
-- 1. Implements Generic Synchronisation chain for incoming data USE IEEE.numeric_std.ALL;
-- 2. Detects appropriate edge for synchronisation!! USE ieee.std_logic_unsigned.All;
-- 3. Measure Transciever delay compensation on command USE WORK.CANconstants.ALL;
-- 4. Sample bus values in sample point of Bit time:
-- a) By normal sampling, at position of sample point (Transciever,reciever)
-- b) In secondary sample point for Transciever of CAN FD Data Phase
-- 5. Detect bit Error by comparing transmitted values and Sampled values!
--
--Note: this bit error detection used in the end only for data phase transciever
-- of CAN FD Phase! In other cases bit error is detected inside CAN-Core by
-- comparing transmitted and recieved bit.
--------------------------------------------------------------------------------
entity busSync is entity busSync is
GENERIC ( GENERIC (
......
Library ieee;
USE IEEE.std_logic_1164.all;
USE IEEE.numeric_std.ALL;
USE ieee.std_logic_unsigned.All;
USE WORK.CANconstants.ALL;
use work.brs_comp_package.all;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -33,6 +26,21 @@ use work.brs_comp_package.all; ...@@ -33,6 +26,21 @@ use work.brs_comp_package.all;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Purpose:
-- v.3 of Prescaler circuit. Due to synchronisation issues with two bit rate
-- counters during switching bit Rates only one counter used. Due to this im-
-- plementation *_nbt, *_dbt signals availiable only when sp_control indicates
-- this bit rate is actual transmit/recieve bit rate! Bit timing is set from
-- driving bus. Contol of generated bit time is made via sp_control signal.
-- Synchronisation is enabled and control via sync_control input. The edge used
-- for synchronisation is signalised by active signal sync_edge. Synchronisation
-- type has to be valid on sync_control. When hard synchronisation appears then
-- separate state is entered which handles correct sample and sync signals ge-
-- neration so that no error appears during hard synchronisation!
--------------------------------------------------------------------------------
-- Revision History: -- Revision History:
-- --
-- June 2015 Version 1 of circuit -- June 2015 Version 1 of circuit
...@@ -90,19 +98,12 @@ use work.brs_comp_package.all; ...@@ -90,19 +98,12 @@ use work.brs_comp_package.all;
-- During the bit where bit rate switch occured. -- During the bit where bit rate switch occured.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- Library ieee;
-- Purpose: USE IEEE.std_logic_1164.all;
-- v.3 of Prescaler circuit. Due to synchronisation issues with two bit rate USE IEEE.numeric_std.ALL;
-- counters during switching bit Rates only one counter used. Due to this im- USE ieee.std_logic_unsigned.All;
-- plementation *_nbt, *_dbt signals availiable only when sp_control indicates USE WORK.CANconstants.ALL;
-- this bit rate is actual transmit/recieve bit rate! Bit timing is set from use work.brs_comp_package.all;
-- driving bus. Contol of generated bit time is made via sp_control signal.
-- Synchronisation is enabled and control via sync_control input. The edge used
-- for synchronisation is signalised by active signal sync_edge. Synchronisation
-- type has to be valid on sync_control. When hard synchronisation appears then
-- separate state is entered which handles correct sample and sync signals ge-
-- neration so that no error appears during hard synchronisation!
--------------------------------------------------------------------------------
entity prescaler_v3 is entity prescaler_v3 is
PORT( PORT(
......
Library ieee;
USE IEEE.std_logic_1164.all;
USE IEEE.numeric_std.ALL;
USE ieee.std_logic_unsigned.All;
use work.CANconstants.all;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -32,15 +26,6 @@ use work.CANconstants.all; ...@@ -32,15 +26,6 @@ use work.CANconstants.all;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
-- Revision History:
--
-- June 2015 Created file
-- 28.5.2016 Starting polynomial changed for crc 17 and crc 21. Highest bit
-- is now fixed in logic one to be compliant with CAN ISO FD. It
-- will be needed to implement both ways still since ISO and
-- non-ISO FD will be changable via configuration bit!
-- 4.6.2016 Added drv_is_fd to cover differencce in highest bit of crc17
-- and crc21 polynomial
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
...@@ -54,6 +39,22 @@ use work.CANconstants.all; ...@@ -54,6 +39,22 @@ use work.CANconstants.all;
-- --
-- Refer to CAN 2.0 or CAN FD Specification for CRC calculation algorythm -- -- Refer to CAN 2.0 or CAN FD Specification for CRC calculation algorythm --
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Revision History:
-- June 2015 Created file
-- 28.5.2016 Starting polynomial changed for crc 17 and crc 21. Highest bit
-- is now fixed in logic one to be compliant with CAN ISO FD. It
-- will be needed to implement both ways still since ISO and
-- non-ISO FD will be changable via configuration bit!
-- 4.6.2016 Added drv_is_fd to cover differencce in highest bit of crc17
-- and crc21 polynomial
--------------------------------------------------------------------------------
Library ieee;
USE IEEE.std_logic_1164.all;
USE IEEE.numeric_std.ALL;
USE ieee.std_logic_unsigned.All;
use work.CANconstants.all;
entity canCRC is entity canCRC is
generic( generic(
......
library ieee;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use ieee.std_logic_unsigned.all;
use WORK.CANconstants.all;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -32,8 +26,18 @@ use WORK.CANconstants.all; ...@@ -32,8 +26,18 @@ use WORK.CANconstants.all;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--Purpose:
-- Bit destuffing circuit. Data sampled always with valid trig_spl_1 signal.
-- Length of bitStuffing controlled via stuff_length input. Stuff error signa-
-- lises Error when the stuff rule is not valid (stuff_lenght+1) consecutive
-- bits of the same polarity. Signal destuffed indicates that current output
-- bit is not valid data bit, but is destuffed bit taken out from input data
-- stream!
--------------------------------------------------------------------------------
-- Revision History: -- Revision History:
--
-- July 2015 Created file -- July 2015 Created file
-- 19.5.2016 1. Added Stuff bit counter to cover ISO FD extra field! -- 19.5.2016 1. Added Stuff bit counter to cover ISO FD extra field!
-- 2. Edge detection 0->1 added at fixed_stuff input. Once edge -- 2. Edge detection 0->1 added at fixed_stuff input. Once edge
...@@ -62,16 +66,11 @@ use WORK.CANconstants.all; ...@@ -62,16 +66,11 @@ use WORK.CANconstants.all;
-- ffing in the start of FD CRC. Fixed bit-destuff should win! -- ffing in the start of FD CRC. Fixed bit-destuff should win!
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- library ieee;
--Purpose: use IEEE.std_logic_1164.all;
-- Bit destuffing circuit. Data sampled always with valid trig_spl_1 signal. use IEEE.numeric_std.all;
-- Length of bitStuffing controlled via stuff_length input. Stuff error signa- use ieee.std_logic_unsigned.all;
-- lises Error when the stuff rule is not valid (stuff_lenght+1) consecutive use WORK.CANconstants.all;
-- bits of the same polarity. Signal destuffed indicates that current output
-- bit is not valid data bit, but is destuffed bit taken out from input data
-- stream!
--------------------------------------------------------------------------------
entity bitDestuffing is entity bitDestuffing is
port( port(
......
Library ieee;
USE IEEE.std_logic_1164.all;
USE IEEE.numeric_std.ALL;
USE ieee.std_logic_unsigned.All;
USE WORK.CANconstants.ALL;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- --
-- CAN with Flexible Data-Rate IP Core -- CAN with Flexible Data-Rate IP Core
...@@ -32,6 +26,22 @@ USE WORK.CANconstants.ALL; ...@@ -32,6 +26,22 @@ USE WORK.CANconstants.ALL;
-- Anybody who wants to implement this IP core on silicon has to obtain a CAN -- Anybody who wants to implement this IP core on silicon has to obtain a CAN
-- protocol license from Bosch. -- protocol license from Bosch.
-- --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Purpose:
-- Simple bit stuffing circuit with HandShake protocol. When bit is stuffed
-- transciever (CAN Core) has to stop transcieving for one bit time. data_halt
-- output is set to logic 1 when bit is stuffed.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Second version of bit Stuffing circuit. Enables configurable stuff length.
-- Operation starts when enable='1'. Valid data already has to be on data_in
-- then. Operates with triggering signal tran_trig_1 Fixed Stuffing method can
-- be used by setting logic on fixed_stuff input. In fixed stuff inverse bit is
-- inserted after every stuff_length bits, even if their polarity is not equal!
--------------------------------------------------------------------------------
-- Revision History: -- Revision History:
-- --
-- June 2015 Created file -- June 2015 Created file
...@@ -51,20 +61,11 @@ USE WORK.CANconstants.ALL; ...@@ -51,20 +61,11 @@ USE WORK.CANconstants.ALL;
-- in the start of FD CRC. Fixed bit-stuff should win! -- in the start of FD CRC. Fixed bit-stuff should win!
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-------------------------------------------------------------------------------- Library ieee;
-- Purpose: USE IEEE.std_logic_1164.all;
-- Simple bit stuffing circuit with HandShake protocol. When bit is stuffed USE IEEE.numeric_std.ALL;
-- transciever (CAN Core) has to stop transcieving for one bit time. data_halt USE ieee.std_logic_unsigned.All;
-- output is set to logic 1 when bit is stuffed. USE WORK.CANconstants.ALL;
--------------------------------------------------------------------------------