Archived
1
0

add encoding SM --not finish yet

This commit is contained in:
2024-04-10 14:22:10 +02:00
parent 7f4a0c615f
commit 8a64f5c04b
62 changed files with 19657 additions and 826 deletions

View File

@ -34,10 +34,13 @@ TYPE SENDING_STATE_TYPE IS (
sendR4,
waitR4,
sendR5,
waitSpace,
waitEndWord
);
signal sending_current_state, sending_next_state : SENDING_STATE_TYPE;
signal signSendRegisters, signRegistersSended: std_ulogic;
BEGIN
------------------------------------------------------------------------------
-- conditions for morse units
@ -77,6 +80,7 @@ BEGIN
is7 <= '1' when std_match(unsigned(char), "011" & x"7") else '0'; -- 011 0111
is8 <= '1' when std_match(unsigned(char), "011" & x"8") else '0'; -- 011 1000
is9 <= '1' when std_match(unsigned(char), "011" & x"9") else '0'; -- 011 1001
------------------------------------------------------------------------------
process(reset, clock) begin
if reset = '1' then
@ -89,25 +93,33 @@ BEGIN
end process;
process(general_current_state) begin
process(reset, clock) begin
case general_current_state is
when waitForChar =>
register1 <= END_WORD;
register2 <= END_WORD;
register3 <= END_WORD;
register4 <= END_WORD;
register5 <= END_WORD;
--report "General current state is wait for char" severity note;
register1 <= SPACE;
register2 <= SPACE;
register3 <= SPACE;
register4 <= SPACE;
register5 <= SPACE;
signSendRegisters <= '0';
if charNotReady = '0' then
general_next_state <= storeChar;
readChar <= '1';
report "charReady" severity note;
else
general_next_state <= waitForChar;
readChar <= '0';
--report "charNotReady" severity note;
end if;
when storeChar =>
report "General current state is store char" severity note;
if isA then
register1 <= SHORT;
register2 <= LONG;
general_next_state <= sendRegisters;
report "New char: A" severity note;
elsif isB then
register1 <= LONG;
register2 <= SHORT;
@ -128,6 +140,7 @@ BEGIN
elsif isE then
register1 <= SHORT;
general_next_state <= sendRegisters;
report "New char: E" severity note;
elsif isF then
register1 <= SHORT;
register2 <= SHORT;
@ -149,6 +162,7 @@ BEGIN
register1 <= SHORT;
register2 <= SHORT;
general_next_state <= sendRegisters;
report "New char: I" severity note;
elsif isJ then
register1 <= SHORT;
register2 <= LONG;
@ -170,6 +184,7 @@ BEGIN
register1 <= LONG;
register2 <= LONG;
general_next_state <= sendRegisters;
report "New char: M" severity note;
elsif isN then
register1 <= LONG;
register2 <= SHORT;
@ -204,6 +219,7 @@ BEGIN
elsif isT then
register1 <= LONG;
general_next_state <= sendRegisters;
report "New char: T" severity note;
elsif isU then
register1 <= SHORT;
register2 <= SHORT;
@ -309,36 +325,202 @@ BEGIN
register5 <= SHORT;
general_next_state <= sendRegisters;
else
register1 <= END_WORD;
register2 <= END_WORD;
register3 <= END_WORD;
register4 <= END_WORD;
register5 <= END_WORD;
register1 <= SPACE;
register2 <= SPACE;
register3 <= SPACE;
register4 <= SPACE;
register5 <= SPACE;
general_next_state <= storeChar;
report "Char look not correct" severity warning;
end if;
signSendRegisters <= '1';
when sendRegisters =>
sending_next_state <= sendR1;
--report "General current state is send registers" severity note;
readChar <= '0';
signSendRegisters <= '0';
if signRegistersSended then
general_next_state <= sended;
report "Char is send" severity note;
end if;
when sended =>
register1 <= END_WORD;
register2 <= END_WORD;
register3 <= END_WORD;
register4 <= END_WORD;
register5 <= END_WORD;
--report "General current state is sended" severity note;
general_next_state <= waitForChar;
register1 <= SPACE;
register2 <= SPACE;
register3 <= SPACE;
register4 <= SPACE;
register5 <= SPACE;
WHEN OTHERS =>
report "General current state is BROKEN" severity warning;
general_next_state <= waitForChar;
end case;
end process;
process(sending_current_state) begin
process(reset, clock) begin
case sending_current_state is
when waiting =>
morseOut <= '0';
startCounter <= '0';
unitNb <= "000";
signRegistersSended <= '0';
if signSendRegisters = '1' then
sending_next_state <= sendR1;
report "Start to send new char" severity note;
else
sending_next_state <= waiting;
end if;
when sendR1 =>
report "Send register1" severity note;
startCounter <= '1';
morseOut <= '1';
case register1 is
when SHORT =>
unitNb <= "001";
when LONG =>
unitNb <= "011";
when others =>
report "Error when sending register1" severity error;
end case;
case register2 is
when SPACE =>
sending_next_state <= waitSpace;
when END_WORD =>
sending_next_state <= waitEndWord;
when others =>
sending_next_state <= waitR1;
end case;
when waitR1 =>
report "Wait register1" severity note;
startCounter <= '0';
if counterDone = '1' then
morseOut <= '0';
sending_next_state <= sendR2;
end if;
when sendR2 =>
report "Send register2" severity note;
startCounter <= '1';
morseOut <= '1';
case register2 is
when SHORT =>
unitNb <= "001";
when LONG =>
unitNb <= "011";
when others =>
report "Error when sending register2" severity error;
end case;
case register3 is
when SPACE =>
sending_next_state <= waitSpace;
when END_WORD =>
sending_next_state <= waitEndWord;
when others =>
sending_next_state <= waitR2;
end case;
when waitR2 =>
report "Wait register2" severity note;
startCounter <= '0';
if counterDone = '1' then
morseOut <= '0';
sending_next_state <= sendR3;
end if;
when sendR3 =>
report "Send register3" severity note;
startCounter <= '1';
morseOut <= '1';
case register3 is
when SHORT =>
unitNb <= "001";
when LONG =>
unitNb <= "011";
when others =>
report "Error when sending register3" severity error;
end case;
case register4 is
when SPACE =>
sending_next_state <= waitSpace;
when END_WORD =>
sending_next_state <= waitEndWord;
when others =>
sending_next_state <= waitR3;
end case;
when waitR3 =>
startCounter <= '0';
if counterDone = '1' then
morseOut <= '0';
sending_next_state <= sendR4;
end if;
when sendR4 =>
startCounter <= '1';
morseOut <= '1';
case register4 is
when SHORT =>
unitNb <= "001";
when LONG =>
unitNb <= "011";
when others =>
report "Error when sending register4" severity error;
end case;
case register5 is
when SPACE =>
sending_next_state <= waitSpace;
when END_WORD =>
sending_next_state <= waitEndWord;
when others =>
sending_next_state <= waitR4;
end case;
when waitR4 =>
startCounter <= '0';
if counterDone = '1' then
morseOut <= '0';
sending_next_state <= sendR5;
end if;
when sendR5 =>
startCounter <= '1';
morseOut <= '1';
case register5 is
when SHORT =>
unitNb <= "001";
when LONG =>
unitNb <= "011";
when others =>
report "Error when sending register5" severity error;
end case;
sending_next_state <= waitSpace;
when waitSpace =>
startCounter <= '0';
if counterDone = '1' then
morseOut <= '0';
sending_next_state <= waiting;
end if;
signRegistersSended <= '1';
when waitEndWord =>
sending_next_state <= waiting;
when others =>
sending_next_state <= waiting;
end case;
end process;
morseOut <= '0';
startCounter <= '0';
unitNb <= (others => '-');
END ARCHITECTURE studentVersion;

View File

@ -1,8 +1,8 @@
-- VHDL Entity Morse.charToMorse.symbol
--
-- Created:
-- by - axel.amand.UNKNOWN (WE7860)
-- at - 14:49:52 28.04.2023
-- by - remi.heredero.UNKNOWN (WE2330808)
-- at - 13:09:12 10.04.2024
--
-- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5)
--

View File

@ -2,8 +2,8 @@
-- VHDL Architecture Morse.charToMorse.struct
--
-- Created:
-- by - axel.amand.UNKNOWN (WE7860)
-- at - 14:49:52 28.04.2023
-- by - remi.heredero.UNKNOWN (WE2330808)
-- at - 13:09:12 10.04.2024
--
-- Generated by Mentor Graphics' HDL Designer(TM) 2019.2 (Build 5)
--