162 lines
4.9 KiB
VHDL
162 lines
4.9 KiB
VHDL
----------------------------------------------------------------------------------
|
|
-- Company: SORBONNE UNIVERSITE
|
|
-- Designed by: J.DENOULET, Winter 2021
|
|
--
|
|
-- Module Name: DCC_FRAME_GENERATOR - Behavioral
|
|
-- Project Name: Centrale DCC
|
|
-- Target Devices: NEXYS 4 DDR
|
|
--
|
|
-- Générateur de Trames de Test pour la Centrale DCC
|
|
--
|
|
----------------------------------------------------------------------------------
|
|
|
|
|
|
library IEEE;
|
|
use IEEE.STD_LOGIC_1164.ALL;
|
|
|
|
entity DCC_FRAME_GENERATOR is
|
|
Port ( Interrupteur : in STD_LOGIC_VECTOR(7 downto 0); -- Interrupteurs de la Carte
|
|
Trame_DCC : out STD_LOGIC_VECTOR(50 downto 0)); -- Trame DCC de Test
|
|
end DCC_FRAME_GENERATOR;
|
|
|
|
architecture Behavioral of DCC_FRAME_GENERATOR is
|
|
|
|
begin
|
|
|
|
-- Génération d'une Trame selon l'Interrupteur Tiré vers le Haut
|
|
-- Si Plusieurs Interupteurs Sont Tirés, Celui de Gauche Est Prioritaire
|
|
|
|
-- Compléter les Trames pour Réaliser les Tests Voulus
|
|
|
|
process(Interrupteur)
|
|
begin
|
|
|
|
-- Interrupteur 7 Activé
|
|
--> Trame Marche Avant du Train d'Adresse i
|
|
if Interrupteur(7)='1' then
|
|
|
|
Trame_DCC <= "11111111111111111111111" -- Préambule
|
|
& "0" -- Start Bit
|
|
& "00000010" -- Champ Adresse (adresse 2 sans raison particuliere )
|
|
& "0" -- Start Bit
|
|
& "01100011" -- Champ Commande (vitesse step 3 sans raison particuliere)
|
|
& "0" -- Start Bit
|
|
& "01100001" -- Champ Contrôle
|
|
& "1" ; -- Stop Bit
|
|
|
|
-- Interrupteur 6 Activé
|
|
--> Trame Marche Arrière du Train d'Adresse i
|
|
elsif Interrupteur(6)='1' then
|
|
|
|
Trame_DCC <= "11111111111111111111111" -- Préambule
|
|
& "0" -- Start Bit
|
|
& "00000010" -- Champ Adresse
|
|
& "0" -- Start Bit
|
|
& "01000011" -- Champ Commande
|
|
& "0" -- Start Bit
|
|
& "01000001" -- Champ Contrôle
|
|
& "1" ; -- Stop Bit
|
|
|
|
|
|
-- Interrupteur 5 Activé
|
|
--> Allumage des Phares du Train d'Adresse i
|
|
elsif Interrupteur(5)='1' then
|
|
|
|
Trame_DCC <= "11111111111111111111111" -- Préambule
|
|
& "0" -- Start Bit
|
|
& "00000010" -- Champ Adresse
|
|
& "0" -- Start Bit
|
|
& "10010000" -- Champ Commande
|
|
& "0" -- Start Bit
|
|
& "10010010" -- Champ Contrôle
|
|
& "1" ; -- Stop Bit
|
|
|
|
-- Interrupteur 4 Activé
|
|
--> Extinction des Phares du Train d'Adresse i
|
|
elsif Interrupteur(4)='1' then
|
|
|
|
Trame_DCC <= "11111111111111111111111" -- Préambule
|
|
& "0" -- Start Bit
|
|
& "00000010" -- Champ Adresse
|
|
& "0" -- Start Bit
|
|
& "10000000" -- Champ Commande
|
|
& "0" -- Start Bit
|
|
& "10000010" -- Champ Contrôle
|
|
& "1" ; -- Stop Bit
|
|
|
|
-- Interrupteur 3 Activé
|
|
--> Activation du Klaxon (Fonction F11) du Train d'Adresse i
|
|
elsif Interrupteur(3)='1' then
|
|
|
|
Trame_DCC <= "11111111111111111111111" -- Préambule
|
|
& "0" -- Start Bit
|
|
& "00000010" -- Champ Adresse
|
|
& "0" -- Start Bit
|
|
& "10100100" -- Champ Commande
|
|
& "0" -- Start Bit
|
|
& "10100110" -- Champ Contrôle
|
|
& "1" ; -- Stop Bit
|
|
|
|
-- Interrupteur 2 Activé
|
|
--> Réamorçage du Klaxon (Fonction F11) du Train d'Adresse i
|
|
elsif Interrupteur(2)='1' then
|
|
|
|
Trame_DCC <= "11111111111111111111111" -- Préambule
|
|
& "0" -- Start Bit
|
|
& "00000010" -- Champ Adresse
|
|
& "0" -- Start Bit
|
|
& "10100000" -- Champ Commande
|
|
& "0" -- Start Bit
|
|
& "10100010" -- Champ Contrôle
|
|
& "1" ; -- Stop Bit
|
|
|
|
-- Interrupteur 1 Activé
|
|
--> Annonce SNCF (Fonction F13) du Train d'Adresse i
|
|
elsif Interrupteur(1)='1' then
|
|
|
|
Trame_DCC <= "11111111111111" -- Préambule
|
|
& "0" -- Start Bit
|
|
& "00000010" -- Champ Adresse
|
|
& "0" -- Start Bit
|
|
& "11011110" -- Champ Commande (Octet 1)
|
|
& "0" -- Start Bit
|
|
& "00000001" -- Champ Commande (Octet 2)
|
|
& "0" -- Start Bit
|
|
& "11011111" -- Champ Contrôle
|
|
& "1" ; -- Stop Bit
|
|
|
|
-- Interrupteur 0 Activé
|
|
--> Annonce SNCF (Fonction F13) du Train d'Adresse i
|
|
elsif Interrupteur(0)='1' then
|
|
|
|
Trame_DCC <= "11111111111111" -- Préambule
|
|
& "0" -- Start Bit
|
|
& "00000010" -- Champ Adresse
|
|
& "0" -- Start Bit
|
|
& "11011110" -- Champ Commande (Octet 1)
|
|
& "0" -- Start Bit
|
|
& "00000000" -- Champ Commande (Octet 2)
|
|
& "0" -- Start Bit
|
|
& "11011110" -- Champ Contrôle
|
|
& "1" ; -- Stop Bit
|
|
|
|
-- Aucun Interrupteur Activé
|
|
--> Arrêt du Train d'Adresse i
|
|
else
|
|
|
|
Trame_DCC <= "11111111111111111111111" -- Préambule
|
|
& "0" -- Start Bit
|
|
& "00000010" -- Champ Adresse
|
|
& "0" -- Start Bit
|
|
& "01100000" -- Champ Commande
|
|
& "0" -- Start Bit
|
|
& "01100010" -- Champ Contrôle
|
|
& "1" ; -- Stop Bit
|
|
|
|
end if;
|
|
|
|
end process;
|
|
|
|
end Behavioral;
|
|
|