155 lines
4.4 KiB
Plaintext
155 lines
4.4 KiB
Plaintext
|
--
|
||
|
-- VHDL Architecture Morse.morseEncoder.struct
|
||
|
--
|
||
|
-- Created:
|
||
|
-- by - axel.amand.UNKNOWN (WE7860)
|
||
|
-- at - 14:50:20 28.04.2023
|
||
|
--
|
||
|
-- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5)
|
||
|
--
|
||
|
LIBRARY ieee;
|
||
|
USE ieee.std_logic_1164.all;
|
||
|
USE ieee.numeric_std.all;
|
||
|
|
||
|
LIBRARY Memory;
|
||
|
LIBRARY Morse;
|
||
|
LIBRARY RS232;
|
||
|
|
||
|
ARCHITECTURE struct OF morseEncoder IS
|
||
|
|
||
|
-- Architecture declarations
|
||
|
constant fifoDepth : positive := 100;
|
||
|
|
||
|
-- Internal signal declarations
|
||
|
SIGNAL characterReg : std_ulogic_vector(uartDataBitNb-1 DOWNTO 0);
|
||
|
SIGNAL characterIn : std_ulogic_vector(uartDataBitNb-1 DOWNTO 0);
|
||
|
SIGNAL characterValid : std_ulogic;
|
||
|
SIGNAL morseOut : std_ulogic;
|
||
|
SIGNAL tone : std_ulogic;
|
||
|
SIGNAL charNotReady : std_ulogic;
|
||
|
SIGNAL readChar : std_ulogic;
|
||
|
|
||
|
|
||
|
-- Component Declarations
|
||
|
COMPONENT FIFO_bram
|
||
|
GENERIC (
|
||
|
dataBitNb : positive := 8;
|
||
|
depth : positive := 8
|
||
|
);
|
||
|
PORT (
|
||
|
write : IN std_ulogic ;
|
||
|
clock : IN std_ulogic ;
|
||
|
reset : IN std_ulogic ;
|
||
|
dataOut : OUT std_ulogic_vector (dataBitNb-1 DOWNTO 0);
|
||
|
read : IN std_ulogic ;
|
||
|
dataIn : IN std_ulogic_vector (dataBitNb-1 DOWNTO 0);
|
||
|
empty : OUT std_ulogic ;
|
||
|
full : OUT std_ulogic
|
||
|
);
|
||
|
END COMPONENT;
|
||
|
COMPONENT charToMorse
|
||
|
GENERIC (
|
||
|
characterBitNb : positive := 8;
|
||
|
unitCountDivide : positive := 10E3
|
||
|
);
|
||
|
PORT (
|
||
|
morseOut : OUT std_ulogic ;
|
||
|
clock : IN std_ulogic ;
|
||
|
reset : IN std_ulogic ;
|
||
|
charIn : IN std_ulogic_vector (characterBitNb-1 DOWNTO 0);
|
||
|
readChar : OUT std_ulogic ;
|
||
|
charNotReady : IN std_ulogic
|
||
|
);
|
||
|
END COMPONENT;
|
||
|
COMPONENT toneGenerator
|
||
|
GENERIC (
|
||
|
toneDivide : positive := 100E3
|
||
|
);
|
||
|
PORT (
|
||
|
tone : OUT std_ulogic ;
|
||
|
clock : IN std_ulogic ;
|
||
|
reset : IN std_ulogic
|
||
|
);
|
||
|
END COMPONENT;
|
||
|
COMPONENT serialPortReceiver
|
||
|
GENERIC (
|
||
|
dataBitNb : positive := 8;
|
||
|
baudRateDivide : positive := 2083
|
||
|
);
|
||
|
PORT (
|
||
|
RxD : IN std_ulogic ;
|
||
|
clock : IN std_ulogic ;
|
||
|
reset : IN std_ulogic ;
|
||
|
dataOut : OUT std_ulogic_vector (dataBitNb-1 DOWNTO 0);
|
||
|
dataValid : OUT std_ulogic
|
||
|
);
|
||
|
END COMPONENT;
|
||
|
|
||
|
-- Optional embedded configurations
|
||
|
-- pragma synthesis_off
|
||
|
FOR ALL : FIFO_bram USE ENTITY Memory.FIFO_bram;
|
||
|
FOR ALL : charToMorse USE ENTITY Morse.charToMorse;
|
||
|
FOR ALL : serialPortReceiver USE ENTITY RS232.serialPortReceiver;
|
||
|
FOR ALL : toneGenerator USE ENTITY Morse.toneGenerator;
|
||
|
-- pragma synthesis_on
|
||
|
|
||
|
|
||
|
BEGIN
|
||
|
-- Architecture concurrent statements
|
||
|
-- HDL Embedded Text Block 1 eb1
|
||
|
morseCode <= morseOut and tone;
|
||
|
|
||
|
|
||
|
-- Instance port mappings.
|
||
|
I_FIFO : FIFO_bram
|
||
|
GENERIC MAP (
|
||
|
dataBitNb => uartDataBitNb,
|
||
|
depth => fifoDepth
|
||
|
)
|
||
|
PORT MAP (
|
||
|
write => characterValid,
|
||
|
clock => clock,
|
||
|
reset => reset,
|
||
|
dataOut => characterReg,
|
||
|
read => readChar,
|
||
|
dataIn => characterIn,
|
||
|
empty => charNotReady,
|
||
|
full => OPEN
|
||
|
);
|
||
|
I_enc : charToMorse
|
||
|
GENERIC MAP (
|
||
|
characterBitNb => uartDataBitNb,
|
||
|
unitCountDivide => integer(clockFrequency*unitDuration + 0.5)
|
||
|
)
|
||
|
PORT MAP (
|
||
|
morseOut => morseOut,
|
||
|
clock => clock,
|
||
|
reset => reset,
|
||
|
charNotReady => charNotReady,
|
||
|
charIn => characterReg,
|
||
|
readChar => readChar
|
||
|
);
|
||
|
I_tone : toneGenerator
|
||
|
GENERIC MAP (
|
||
|
toneDivide => integer(clockFrequency/toneFrequency + 0.5)
|
||
|
)
|
||
|
PORT MAP (
|
||
|
tone => tone,
|
||
|
clock => clock,
|
||
|
reset => reset
|
||
|
);
|
||
|
I_UART : serialPortReceiver
|
||
|
GENERIC MAP (
|
||
|
dataBitNb => uartDataBitNb,
|
||
|
baudRateDivide => integer(clockFrequency/uartBaudRate + 0.5)
|
||
|
)
|
||
|
PORT MAP (
|
||
|
RxD => RxD,
|
||
|
clock => clock,
|
||
|
reset => reset,
|
||
|
dataOut => characterIn,
|
||
|
dataValid => characterValid
|
||
|
);
|
||
|
|
||
|
END struct;
|