start Task 5
This commit is contained in:
275
05-Morse/Morse/concat/concatenated.vhd
Normal file
275
05-Morse/Morse/concat/concatenated.vhd
Normal file
@ -0,0 +1,275 @@
|
||||
-- VHDL Entity Morse.charToMorseController.symbol
|
||||
--
|
||||
-- Created:
|
||||
-- by - francois.francois (Aphelia)
|
||||
-- at - 09:13:01 03/29/19
|
||||
--
|
||||
-- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5)
|
||||
--
|
||||
LIBRARY ieee;
|
||||
USE ieee.std_logic_1164.all;
|
||||
USE ieee.numeric_std.all;
|
||||
|
||||
ENTITY charToMorseController IS
|
||||
GENERIC(
|
||||
characterBitNb : positive := 8;
|
||||
unitCountBitNb : positive := 3
|
||||
);
|
||||
PORT(
|
||||
morseOut : OUT std_ulogic;
|
||||
clock : IN std_ulogic;
|
||||
reset : IN std_ulogic;
|
||||
charNotReady : IN std_ulogic;
|
||||
char : IN std_ulogic_vector (characterBitNb-1 DOWNTO 0);
|
||||
startCounter : OUT std_ulogic;
|
||||
unitNb : OUT unsigned (unitCountBitNb-1 DOWNTO 0);
|
||||
counterDone : IN std_ulogic;
|
||||
readChar : OUT std_ulogic
|
||||
);
|
||||
|
||||
-- Declarations
|
||||
|
||||
END charToMorseController ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- VHDL Architecture Morse.charToMorseController.fsm
|
||||
--
|
||||
-- Created:
|
||||
-- by - axel.amand.UNKNOWN (WE7860)
|
||||
-- at - 14:50:02 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;
|
||||
|
||||
ARCHITECTURE fsm OF charToMorseController IS
|
||||
|
||||
TYPE STATE_TYPE IS (
|
||||
waitForChar,
|
||||
storeChar,
|
||||
sendDotStart,
|
||||
sendDotWait,
|
||||
sendDotSpacerStart,
|
||||
sendDotSpacerWait,
|
||||
sendDotDotStart,
|
||||
sendDotDotWait,
|
||||
sendDotDashStart,
|
||||
sendDotDashWait,
|
||||
sendDashStart,
|
||||
sendDashWait,
|
||||
sendDahsSpacerStart,
|
||||
sendDashSpacerWait,
|
||||
sendDashDotStart,
|
||||
sendDashDashStart,
|
||||
sendDashDotWait,
|
||||
sendDashDashWait,
|
||||
popChar,
|
||||
popChar1
|
||||
);
|
||||
|
||||
-- Declare current and next state signals
|
||||
SIGNAL current_state : STATE_TYPE;
|
||||
SIGNAL next_state : STATE_TYPE;
|
||||
|
||||
BEGIN
|
||||
|
||||
-----------------------------------------------------------------
|
||||
clocked_proc : PROCESS (
|
||||
clock,
|
||||
reset
|
||||
)
|
||||
-----------------------------------------------------------------
|
||||
BEGIN
|
||||
IF (reset = '1') THEN
|
||||
current_state <= waitForChar;
|
||||
ELSIF (clock'EVENT AND clock = '1') THEN
|
||||
current_state <= next_state;
|
||||
END IF;
|
||||
END PROCESS clocked_proc;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
nextstate_proc : PROCESS (
|
||||
char,
|
||||
charNotReady,
|
||||
counterDone,
|
||||
current_state
|
||||
)
|
||||
-----------------------------------------------------------------
|
||||
BEGIN
|
||||
CASE current_state IS
|
||||
WHEN waitForChar =>
|
||||
IF (charNotReady = '0') THEN
|
||||
next_state <= storeChar;
|
||||
ELSE
|
||||
next_state <= waitForChar;
|
||||
END IF;
|
||||
WHEN storeChar =>
|
||||
IF (character'val(to_integer(unsigned(char))) = 'e' or
|
||||
character'val(to_integer(unsigned(char))) = 'i' or
|
||||
character'val(to_integer(unsigned(char))) = 'a') THEN
|
||||
next_state <= sendDotStart;
|
||||
ELSIF (character'val(to_integer(unsigned(char))) = 't' or
|
||||
character'val(to_integer(unsigned(char))) = 'n' or
|
||||
character'val(to_integer(unsigned(char))) = 'm') THEN
|
||||
next_state <= sendDashStart;
|
||||
ELSE
|
||||
next_state <= popChar1;
|
||||
END IF;
|
||||
WHEN sendDotStart =>
|
||||
next_state <= sendDotWait;
|
||||
WHEN sendDotWait =>
|
||||
IF (counterDone = '0') THEN
|
||||
next_state <= sendDotWait;
|
||||
ELSIF (character'val(to_integer(unsigned(char))) = 'e') THEN
|
||||
next_state <= popChar1;
|
||||
ELSE
|
||||
next_state <= sendDotSpacerStart;
|
||||
END IF;
|
||||
WHEN sendDotSpacerStart =>
|
||||
next_state <= sendDotSpacerWait;
|
||||
WHEN sendDotSpacerWait =>
|
||||
IF (counterDone = '0') THEN
|
||||
next_state <= sendDotSpacerWait;
|
||||
ELSIF (character'val(to_integer(unsigned(char))) = 'i') THEN
|
||||
next_state <= sendDotDotStart;
|
||||
ELSE
|
||||
next_state <= sendDotDashStart;
|
||||
END IF;
|
||||
WHEN sendDotDotStart =>
|
||||
next_state <= sendDotDotWait;
|
||||
WHEN sendDotDotWait =>
|
||||
IF (counterDone = '0') THEN
|
||||
next_state <= sendDotDotWait;
|
||||
ELSE
|
||||
next_state <= popChar1;
|
||||
END IF;
|
||||
WHEN sendDotDashStart =>
|
||||
next_state <= sendDotDashWait;
|
||||
WHEN sendDotDashWait =>
|
||||
IF (counterDone = '0') THEN
|
||||
next_state <= sendDotDashWait;
|
||||
ELSE
|
||||
next_state <= popChar1;
|
||||
END IF;
|
||||
WHEN sendDashStart =>
|
||||
next_state <= sendDashWait;
|
||||
WHEN sendDashWait =>
|
||||
IF (counterDone = '0') THEN
|
||||
next_state <= sendDashWait;
|
||||
ELSIF (character'val(to_integer(unsigned(char))) = 't') THEN
|
||||
next_state <= popChar1;
|
||||
ELSE
|
||||
next_state <= sendDahsSpacerStart;
|
||||
END IF;
|
||||
WHEN sendDahsSpacerStart =>
|
||||
next_state <= sendDashSpacerWait;
|
||||
WHEN sendDashSpacerWait =>
|
||||
IF (counterDone = '0') THEN
|
||||
next_state <= sendDashSpacerWait;
|
||||
ELSIF (character'val(to_integer(unsigned(char))) = 'i') THEN
|
||||
next_state <= sendDashDotStart;
|
||||
ELSE
|
||||
next_state <= sendDashDashStart;
|
||||
END IF;
|
||||
WHEN sendDashDotStart =>
|
||||
next_state <= sendDashDotWait;
|
||||
WHEN sendDashDashStart =>
|
||||
next_state <= sendDashDashWait;
|
||||
WHEN sendDashDotWait =>
|
||||
IF (counterDone = '0') THEN
|
||||
next_state <= sendDashDotWait;
|
||||
ELSE
|
||||
next_state <= popChar1;
|
||||
END IF;
|
||||
WHEN sendDashDashWait =>
|
||||
IF (counterDone = '0') THEN
|
||||
next_state <= sendDashDashWait;
|
||||
ELSE
|
||||
next_state <= popChar1;
|
||||
END IF;
|
||||
WHEN popChar =>
|
||||
IF (counterDone = '1') THEN
|
||||
next_state <= waitForChar;
|
||||
ELSE
|
||||
next_state <= popChar;
|
||||
END IF;
|
||||
WHEN popChar1 =>
|
||||
next_state <= popChar;
|
||||
WHEN OTHERS =>
|
||||
next_state <= waitForChar;
|
||||
END CASE;
|
||||
END PROCESS nextstate_proc;
|
||||
|
||||
-----------------------------------------------------------------
|
||||
output_proc : PROCESS (
|
||||
current_state
|
||||
)
|
||||
-----------------------------------------------------------------
|
||||
BEGIN
|
||||
-- Default Assignment
|
||||
morseOut <= '0';
|
||||
startCounter <= '0';
|
||||
unitNb <= (others => '0');
|
||||
readChar <= '0';
|
||||
|
||||
-- Combined Actions
|
||||
CASE current_state IS
|
||||
WHEN sendDotStart =>
|
||||
startCounter <= '1';
|
||||
WHEN sendDotWait =>
|
||||
unitNb <= to_unsigned(1, unitNb'length);
|
||||
morseOut <= '1';
|
||||
WHEN sendDotSpacerStart =>
|
||||
startCounter <= '1';
|
||||
WHEN sendDotSpacerWait =>
|
||||
unitNb <= to_unsigned(1, unitNb'length);
|
||||
WHEN sendDotDotStart =>
|
||||
startCounter <= '1';
|
||||
WHEN sendDotDotWait =>
|
||||
unitNb <= to_unsigned(1, unitNb'length);
|
||||
morseOut <= '1';
|
||||
WHEN sendDotDashStart =>
|
||||
startCounter <= '1';
|
||||
WHEN sendDotDashWait =>
|
||||
unitNb <= to_unsigned(3, unitNb'length);
|
||||
morseOut <= '1';
|
||||
WHEN sendDashStart =>
|
||||
startCounter <= '1';
|
||||
WHEN sendDashWait =>
|
||||
unitNb <= to_unsigned(3, unitNb'length);
|
||||
morseOut <= '1';
|
||||
WHEN sendDahsSpacerStart =>
|
||||
startCounter <= '1';
|
||||
WHEN sendDashSpacerWait =>
|
||||
unitNb <= to_unsigned(1, unitNb'length);
|
||||
WHEN sendDashDotStart =>
|
||||
startCounter <= '1';
|
||||
WHEN sendDashDashStart =>
|
||||
startCounter <= '1';
|
||||
WHEN sendDashDotWait =>
|
||||
unitNb <= to_unsigned(1, unitNb'length);
|
||||
morseOut <= '1';
|
||||
WHEN sendDashDashWait =>
|
||||
unitNb <= to_unsigned(3, unitNb'length);
|
||||
morseOut <= '1';
|
||||
WHEN popChar =>
|
||||
unitNb <= to_unsigned(3, unitNb'length);
|
||||
WHEN popChar1 =>
|
||||
readChar <= '1';
|
||||
startCounter <= '1';
|
||||
WHEN OTHERS =>
|
||||
NULL;
|
||||
END CASE;
|
||||
END PROCESS output_proc;
|
||||
|
||||
END fsm;
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user