Coder Social home page Coder Social logo

easyfpga-vga's Introduction

EasyFPGA-VGA

A Hello World example of VGA output using the RZ-EasyFPGA A2.2 board.

The board

Usually found on AliExpress for about US$ 40, the RZ-EasyFPGA board provides a relatively cheap way into the FPGA world.

The built-in chip is the Altera Cyclone IV EP4CE6E22C8N, which should serve well for smaller projects.

In this guide, we'll be using the built-in VGA interface and by the end we should have a working example flashed to the board.

VGA

Let's start talking about the VGA standard.

Although the connector has a lot of pins, for driving a display we only really need five signals:

  • HSync: Horizontal Synchronization
  • VSync: Vertical Synchronization
  • R: Red channel (analog)
  • G: Green channel (analog)
  • B: Blue channel (analog)

The first thing to understand is how the information is transmitted to the display controller.

We won't go much in depth about the standard itself - you can take a look at some other resources like this one to understand it better - but besides the expected RGB signals, HSync and VSync play an important role.

Source

As shown in the image above, timings are crucial in order to drive a VGA display and for that we'll need do make sure to have the appropriate signal frequencies generated.

For this guide, we'll output at 640x480 @ 60Hz so we'll use the timings/frequencies shown below:

Source

Since each of the color channel signals are analog ones, we're going to also need some sort of DA conversion and for that the board already provides three resistors - one for each channel - ready to be used.

The unfortunate news is that we only really have two levels for each color channel, either turned on or turned off.

Some boards may include a resistive network, allowing the use of more than one bit per channel, but that's not our case unfortunately :(

We'll only have 8 colors (2^3) to work with but that should be enough for our purposes.

Source: Board documentation

Each of those resistors is connected to the pins shown below

Source: Board documentation

We'll use these pin numbers later on.

Initial setup

First we need to make sure we have the appropriate environment for working with the board.

For that, we're going to use the Intel Quartus Prime Lite software at version 20.1.1 - the latest version at the time of writing.

Make sure to install the Lite version since it supports the FPGA chip of our the board and to also install any drivers in order to get the USB Blaster working.

For Windows, the installation process should be straightforward but if you google it there's plenty of resources.

For GNU/Linux, I've attached some guides below that can help you:

For the rest of this guide, I'll be working on an Arch Linux system.

Steps

  1. Fetching the code If you're familiar with git, this should be a no brainer:
$ git clone https://github.com/fsmiamoto/EasyFPGA-VGA.git
$ cd EasyFPGA-VGA
$ quartus EasyFPGA-VGA.qpf
# If you don't have Quartus on your $PATH, just open the project on the Quartus UI.

Open Project

  1. Compile the project

Now we need to build our project. For that you can click on the play icon on the toolbar or press Ctrl+L

Compile the  project

  1. Open the programmer

Now we should be ready to program the board. Start by opening the Programmer tool:

Open programmer

You should see something like this:

Note that our USB Blaster should appear at the top like I've highlighted.

If you don't see your Blaster there, this is probably a driver issue.

Programming

  1. Connect the board

First, power on your board by connecting the USB cable to it.

You can also use the power jack built into the board with a 5V power supply.

With that, you can connected the block header cable to the board on the JTAG block.

It should look something like this:

  1. Flash the board

With everything connected, click on Start on the Programmer tool: Start

Result

If everything goes well, it should begin displaying something!

Yay!

20210412_222510.mp4

TODO

  • Add section about the Project Setup including the Pin Planner

Contributing

If you see any errors or have any questions regarding the project, feel free to open a PR or create an issue.

Sources:

easyfpga-vga's People

Contributors

fsmiamoto avatar joaozanlorensi 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.