Coder Social home page Coder Social logo

fpga_uart's Introduction

Serial communication on the DE10-Lite FPGA board

This project implements a Universal Asynchronous Receiver - Transmitter system on the Terasic DE10-Lite FPGA board with an adapter for RS-232. The system has two main tasks: to copy and return any incoming character and to send a predeterminded character on a button press(KEY0). The user can manually toggle parity checks with the SWO switch and then chose wheter the parity check is even or odd with SW1. Whilst recieving data a led will blink on the board. Any recieved character will in addition be shown in hex format on the inbuilt 7-segment dislplay on the board.

Modules

To give the system more structure it has been compartmentalised into six modules. There is two Clock Divider-modules, a CTRL-module which controls the flow of data, an RX-module that recieves data, a TX-module for sending data and a Top-module to tie it all together to one system. Ideally if you want to implement this system for yourself you should only need to edit the baudrate and databits in the Top Module. Here is an overview of the modules and their connections. If we were to remake this system we would probably try to reduce the amount of interconnections for a cleaner system, but none of us do not have the mental energy to deal with any of that redesign right now Screenshot 2024-02-26 115031

Full list of Ports and Signals in the system

Name I/O Type Function
clk Input std_logic 50MHz clock
rst_n Input std_logic Reset system
button_n Input std_logic Send a predetermined character
PARITET Input std_logic Turn parity on/off
PARITET_OP Input std_logic Determine even or odd parity
rx_input Input std_logic Recieve serial data
led_indicator Output std_logic Blinks when a message has been recieved
hex0 Output std_logic_vector(7...0) Shows HEX of last recieved character
hex1 Output std_logic_vector(7...0) Shows HEX of last recieved character
tx_output Output std_logic Sends serial message
tx_busy Signal std_logic Is high whilst message is sending
tx_init Signal std_logic Pulse indicates that a message should be sent
tx_data_to_send Signal std_logic(7...0) Data to transfer in binary
recived_flag Signal std_logic Pulse indicates recieved message
recived_byte Signal std_logic Recieved data

Top Module

The top module is the connector of the other modules and its structure is

Clk Divider Module

Ctrl Module

TX Module

RX Module

fpga_uart's People

Contributors

jawny-e avatar shrimpstone avatar krzysztofmor 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.