CS/EE 5710/6710 Digital VLSI Design
CAD Assignment #7 Group Mini-Project
Text Message Option
Due Friday October 28th, 5:00pm
Overview: You have the option to
change the Video Pattern Generator so it will output a text message instead of the
required checkerboard. If your group
successfully does this, you will be rewarded with a 5 semester point bonus.
Horizontal & Vertical modules: These are the same as
for the required pattern generator.
The Horizontal Module produces 7 horizontal address bits, HA[6:0]. This divides
the video screen into 128 columns. The
Vertical Module produces ten address bits, Vcnt[9:0] but if you only
use the seven bits vCnt[7:1] the video screen will be
divided into 128 rows.
You will then have a 128x128 grid to put patterns in. Suppose in each square of the grid you send a
signal to either turn the video either on or off. Then the following will
result:
1.
When the signal is any function of HA[6:0],
the result will be a pattern of vertical stripes.
2.
When the signal is any function of vCnt[7:1], the result will be a pattern of horizontal stripes.
3.
The exclusive or
of any one of the HA[7:0] bits with any one of the vCnt[7:1] bits will result in a checkerboard pattern.
Suppose instead of stripes or checkerboards, we want to
display text. We can represent fairly decent looking individual
characters with an 8x8 grid. We will
divide our 128x128 grid into 8x8 character grids and put up a 16x16 array of
characters. Our 128x128 video grid requires 14 address
bits. Six of these bits are used to
address the 8x8 character grid (HA[2:0] and vCnt[3:1]) this leaves eight bits (HA[6:3] and vCnt[7:4]) for a
function that will select a character for each cell of our 16x16 array of
characters.
This is a data
sheet (a library for the character ROM is here: /uusoc/facility/cad_common/local/Cadence/lib/charRom
you can add it to your library with the
library editor) for a character ROM containing 4 rows of 16 columns of
characters (64 characters total) each stored as an 8x8 binary array. The 64 characters of the ROM are selected
with six bits (two that select a character row and four that select a character
column, the four column select bits must be sent through a decoder to create
the sixteen unary column select bits the ROM actually uses).
A device that creates a video text pattern would look
something like this:
The Character Function translates the 16x16 character array
addresses into a six bit Character Bus.
To create a text message, I made both a 5-input ,6-output Verilog
multiplexer and I made another ROM to hold my message
characters. This ROM is configured as 32x6, that
is five address bits and six data outputs.
Here is a comparison
of the layout of these two implementations.
Finally, hook up the vCnt[7:4] bits and the HA[6:3] bits so that the 32 character
message comes out in two rows of characters with 16 characters in each
row. You will need to put in some logic
to do this and avoid multiple copies of the message. (This logic will use some vCnt bits and hBright and vBright).