Basys 3 Morse Decoder

Introduction: Basys 3 Morse Decoder

This is a project for a college class. This project is written in VHDL in a program called Vivado. The tasks to create all the modules necessary to implement a Morse Decoder using the Basys 3 board. The board is used to take in morse code from a switch and it will display the letter on the seven segment display.

To do a Dot - turn the switch on and off without waiting

To do a Dash - turn the switch on for 2 second, then turn it off

Step 1: Install Xilinx Vivado Webpack

The Vivado webpack can be downloaded at Use this getting started guide to walk through the download and installation steps.

Step 2: Create a New Project

  1. Open vivado. Then Click “Create New Project”
  2. Click “Next”. Name the the project and choose the project location. Our project name was MorseDecoder and was stored on a USB drive.
  3. Choose RTL Project.
  4. Click “Next”.
  5. Click “Next” to bypass AddSources
  6. Click “Next” to bypass Add Existing Ip
  7. Click “Next” to bypass Add Constraints Choose your board based on the picture provided.
  8. Click “Next”
  9. Click “Finish”

Step 3: Create Dot/Dash Input Module

This module tracks when the button is pressed, and how long it is pressed and translates it into Morse code.

  1. Go to the Sources window, Right Click, and click “Add Sources”
  2. Select “Add or Create Design source”
  3. Click “Create File”
  4. Change the file type to “VHDL”
  5. Name your file (ours is named DD ) and click “OK”
  6. Click “Finish”
  7. Click “OK” to bypass the “Define Module” window
  8. Copy and Paste our provided code with Comments


Step 4: Create Seven Segment Display Output Module

This Module is in charge of changing the morse code into the correct letter in a bitstream form that the seven segment display can actually display.

  1. Follow the instructions in Step 3 again, but this time, copy in the “SSD” file.


Step 5: Create the Top Module

This is the overarching Module that will take in the Morse Code input and Output the letter on the seven segment display.

  1. Follow the instructions in Step 3 yet again, this time copying in the “MorseDecoder” file.

Step 6: Create the Constraints File

We need to select the physical hardware to use on the basys board. This will include using the seven segment display, as well as using a switch to pass in the Morse Code.

  1. Click in the source window and select “Add Sources” again.
  2. Select “Add or Create Constraints”, then click next.
  3. Click “Create File”, and leave the filetype unchanged. Name the file “MorseDecoder”.
  4. Click “Finish”.
  5. Copy and Paste our provided code with Comments.

Step 7: Synthesize the Design

  1. Go to the Flow Navigator and click “Run Synthesis” in the Synthesis section

Step 8: Implement the Design

Once you have successfully run the synthesis, there will be a pop up window to ask you to run the implementation. Click “OK” to continue. If this window doesn't pop up, follow the instructions below:

  1. Go to the Flow Navigator and click “Run Implementation” in the Implementation section

Step 9: Generate the Bitstream

  1. Go to the Flow Navigator and click “Generate Bitstream” in the Program and Debug section

Step 10: Target the Hardware

  1. Make sure your Basys3 board is plugged into the computer Vivado is being run on. The board should have the microUSB end of a cable plugged in, with the regular USB end of that cable plugged into your computer.
  2. Go down to “Open Hardware Manager” in the Program and Debug section, then click the small triangle to the left to open it.
  3. Click the “Open Target” button, and select “Auto Connect”

Step 11: Program the Device

  1. Select “Hardware Manager”
  2. Click “Program Device”
  3. Select the device that pops up
  4. Click “Program”

Be the First to Share


    • Pocket-Sized Speed Challenge

      Pocket-Sized Speed Challenge
    • Super-Size Speed Challenge

      Super-Size Speed Challenge
    • Audio Challenge 2020

      Audio Challenge 2020

    3 Discussions


    Question 6 months ago on Step 9

    Testbench kodunu da atar mısınız?

    Can you share testbench code?


    3 years ago

    Cool! What CPE 133 Professor did you have?


    3 years ago

    I've always been intrigued by Morse code and other radio communications! Great job!