Giter Club home page Giter Club logo

revenant01 / fpga-secure-communication-system Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 32.56 MB

Developed a secure communication system using VHDL and Vivado on BASYS3 boards. - Implemented AES encryption on the first board to secure input data, and transmitted the encrypted data via UART. - Decrypted the received data on the second board and displayed it on a VGA screen. Demonstrated proficiency in VHDL, FPGA development, and data security

VHDL 48.07% Tcl 16.17% Pascal 0.18% JavaScript 10.31% Shell 3.16% PureBasic 0.03% Batchfile 0.97% HTML 17.35% C 3.77%

fpga-secure-communication-system's Introduction

FPGA-Secure-Communication-System

This project demonstrates the encryption and decryption of a 128-bit message using the AES algorithm on two Basys3 FPGA boards. The input message is taken from a keyboard connected to the first Basys3 board, encrypted using AES, and then transmitted to the second Basys3 board using UART communication protocol. The second board performs the decryption and displays the original message on a VGA screen.

Prerequisites

Two Basys3 FPGA boards
Vivado Design Suite (version 2020.1 or later)
Keyboard (compatible with Basys3 board)
VGA monitor (compatible with Basys3 board)

Hardware Setup

1.Connect the first Basys3 board to your computer.
2.Connect the keyboard to the appropriate input port on the first Basys3 board.
3.Connect the second Basys3 board to your computer.
4.Connect the VGA monitor to the appropriate output port on the second Basys3 board.

Software Setup

1.Install Vivado Design Suite on your computer. 2.Open Vivado and create a new project. 3.Select the FPGA device compatible with Basys3 boards. 4Create a new VHDL project and import the necessary source files. 5.Set up the project constraints for both boards, including the UART pins and VGA output pins.

Project Structure

project/
├── src/
│ ├── aes_encrypt.vhd
│ ├── aes_decrypt.vhd
│ ├── uart_transmitter.vhd
│ ├── uart_receiver.vhd
│ ├── keyboard_interface.vhd
│ ├── vga_display.vhd
│ ├── top_module.vhd
│ └── ...
├── constraints/
│ ├── first_board.xdc
│ ├── second_board.xdc
│ └── ...
├── README.md
└── ...

src/: Contains the VHDL source files for each component of the project. constraints/: Contains the constraint files defining pin assignments for each board. README.md: The documentation file you're currently reading.

Implementation

1.The keyboard_interface module handles the input from the keyboard connected to the first Basys3 board and sends the 128-bit message to the aes_encrypt module.
2.The aes_encrypt module encrypts the received message using the AES algorithm.
3.The encrypted message is then transmitted from the first Basys3 board to the second Basys3 board using the uart_transmitter module.
4.The uart_receiver module on the second Basys3 board receives the encrypted message.
5.The received message is decrypted by the aes_decrypt module.
6.The vga_display module displays the original decrypted message on the VGA screen connected to the second Basys3 board.

Usage

1.Set up the hardware as described in the "Hardware Setup" section.
2.Configure the Vivado project with the correct device and pin assignments for both boards.
3.Synthesize, implement, and generate the bitstream for each board.
4.Program the bitstreams onto the respective Basys3 boards.
5.Connect the UART pins between the two boards.
6.Power on both boards.
7.Type the 128-bit message using the keyboard connected to the first Basys3 board.
8.Observe the encrypted message being transmitted to the second Basys3 board.
9.The second Basys3 board will decrypt the message and display it on the VGA screen.

Contributing

Contributions to this project are welcome. If you find any issues or want to add new features, please feel free to submit a pull request.

License

This project is licensed

fpga-secure-communication-system's People

Contributors

revenant01 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.