- Matej Gradoš (ID:230551) (responsible for Github repository completetion, alphabet-to-morseCode-to-8bit translation) @mathieux95
- Patrik Horčička (ID: 230558) (responsible for Stopwatches, TimeDecoders) @patrikhor
- Adam Ondrejka (ID: 216915) (responsible for Edge_detector, comments in code, components) @xondre
- David Carboch (ID: 221654) (responsible for Morse_to_8bit_shifter, video presentation of the overall project) @EzopVonJanoviceCity
- Project objectives
- Hardware description
- Detection algorithm description
- VHDL modules description and simulations
- TOP module description and simulations
- Video
- References
- Final VHDL code
The main objective of the project within the subject Digital Electronics 1 (Summer Semester 2022) was to create a Morse Code Receiver. The Morse Code Receiver has the ability to receive input from source (in our case - buttons on the Arty-A7-50T board) and translate it. After translation, user receives a sigle letter/number output on the 7-segement display.
The singal enters the processing unit via pushbutton which is simulating the real-life scenario. Same as with the telegraphs back in the old days, where user only had the option to push or hold down on the telegraph key which resulted in dot or dash being transmitted. Our translating unit then receives the data input and uses comparable logic created mainly by CASE - WHEN
statements.
The length of each symbol is translated into an uniform lenght of 8bits. Translated sequence of 8bits is then rightaway displayed on the 7-segment display - lighting up corresponding a-g segments. The device is able to translate every letter of the Modern Englsih alphabet and numbers from 0 to 9.
💻 Source code, testbenches and simulations were all developed in integrated development environment Vivado and can be found here.
The Nexys A7 board is a complete, ready-to-use digital circuit development platform based on the latest Artix-7TM Field Programmable Gate Array (FPGA) from Xilinx®. With its large, high-capacity FPGA, generous external memories, and collection of USB, Ethernet, and other ports, the Nexys A7 can host designs ranging from introductory combinational circuits to powerful embedded processors. Several built-in peripherals, including an accelerometer, temperature sensor, MEMs digital microphone, a speaker amplifier, and several I/O devices allow the Nexys A7 to be used for a wide range of designs without needing any other components.
BTNU
Pushbutton located on the top of the group used for input of the signal (hold = dash, quick push = dot)BTNC
Pushbutton located in the center of the group used for reset of the memory
7seg display
7-segment display used for a single character output based on the received input
Pushbutton group used for input | 7segment display used to display translated output |
---|---|
Every letter of the English alphabet and number is assigned an 8bit binary value created by a simple algorithm based on International Morse Code rule book
Algorithm of creating 8bit words to binary representation
- Every symbol in initialized by marker - 1
- Dot is represented by zero - 0
- Dash is represented by one - 1
Algorithm of creating 8bit words to binary representation - picture
Letters and numbers assigned 8bit value can be found here .
To make the output fully functional and working properly assigning segments on a 7segment display is essential. To display corresponding values on the 7segment display we used this manual.
Block | Description |
---|---|
Edge detect |
Receives binary input - [0] and [1] - from push button BTNU Differentiates between rising_edge or falling_edge . When detector receives either rising_edge or falling_edge binary 1 is sent to output. |
Stopwatch1 |
Measures time interval between rise and fall impulse received from Edge detector . This means Stopwatch 1 is measuring how long we've had 1 as an input. |
Stopwatch2 |
Measures time interval between rise and fall impulse received from Edge detector . This means Stopwatch 2 is measuring how long we've had 0 as an input. |
Time_Decoder1 |
After fall_edge received on input Time_Decoder1 picks up the duration of the interval from Stopwatch 1 . Picked up duration is then compared internally and decided upon, whether the output is dash (-) or dot (.). |
Time_Decoder2 |
After receiving rising_edge as an input Time_Decoder2 picks up the duration of the interval from Stopwatch 2 . Picked up duration is then compared internally and decided upon, whether the output is char or word. |
Morse_To_8bit_Shifter |
Receives and translates the received binary input into an 8bit sequence.When dot (.) is received by the Morse_To_8bit_Shifter 0 (zero) is added into memory. When dash (-) is received by the Morse_To_8bit_Shifter 1 (one) is added into memory.After receiving char or word sends out ready to output and displays collected data. |
8bit_To_7seg |
Waiting for ready impulse from Morse_To_8bit_Shifter . After receiving mentioned impulse, reads out saved data and displays letter/number on the 7-segment display. |