FPGA Register Space

 

 

 

 

p

 

 

LED Sign

Homepage

 

 

 Processor Memory Map

Address

Function

0x10000: 0x2ffff

Display Memory, Addressable as byte, word  and longword

0x30000: 0x3007C

Register Space

0x50000: 0x50180

Character memory

0x58000: 0x58400

Character Font memory

Font: 8 bytes per character; first byte is top 8 pixels of character, last byte is bottom 8 pixels

 

FPGA Register Space

Address

Register Name

Function

0x30000

Virt_Scrn_Width

Number of longwords in one horizonal scan line. Normally set to 0x30 for 192 byte screen width. This register can be used to create a virtual screen over which the actual display screen may be panned.

0x30004

Scrn_Origin

Address of first longword in screen memory where the display page should start reading. First longword is upper left corner of display. Changing the value in this register allows the display screen to pan through the virtual screen.

0x30008

Backgrnd_Color

Byte wide register containing the display background color when the background color is enabled.

0x3000C

Display_Mode

This register enables/disables graphics/text operation. The register also contains bits to control how the text and graphics data are mixed (AND, OR, XOR) Background color enable is in this register, as well.

0x30010

Draw_Color

The point engine, line engine and polygon filler write the byte-wide color value contained in this register into display memory when the engines are running.

0x30014

Draw_Command

This register is used to enable the line, point, polygon and rotation modules. Bits in this register also select the axis of rotation used by the rotator module

0x30018

XA

X1 coordinate. This register is written with the X coordinate for the point engine, the starting X coordinate for the line engine and one of three X values for the polygon filler.

0x3001C

YA

Y1 coordinate. This register is written with the Y coordinate for the point engine, the starting Y coordinate for the line engine and one of three Y values for the polygon filler.

0x30020

XB

X2 coordinate. This register is written with the ending X coordinate for the line engine or one of three X values for the polygon filler.

0x30024

YB

Y2 coordinate. This register is written with the ending Y coordinate for the line engine or one of three Y values for the polygon filler.

0x30028

XC

X3 coordinate. This register is written with one of three X values for the polygon filler.

0x3002C

YC

Y3 coordinate. This register is written with one of three Y values for the polygon filler.

0x30030

XD

X4 coordinate. No function defined. This register is available for storage

0x30034

YD

Y4 coordinate. No function defined. This register is available for storage.

0x30038

Eng_Stat

This register is used by the line engine, polygon filler and rotation module to indicate to the processor when the engines are busy. (One bit per engine; point engine doesn’t have a busy bit.. the engine finishes before the CPU can possibly load the next coordinate pair.)

0x3003C

Char_Color

Byte-wide color value assigned to characters when character mode is enabled.

0x30040

Blink_freq

Nibble-wide blink frequency used to blink characters. Resolution: 1/16 second

0x30044

Xdelta

Reserved (Line engine register, non-writable)

0x30048

Ydelta

Reserved (Line engine register, non-writable)

0x3004C

Yincb

Reserved (Line engine register, non-writable)

0x30050

Clip_X_top

X coordinate of upper left point of clipping rectangle

0x30054

Clip_Y_top

Y coordinate of upper left point of clipping rectangle

0x30058

Clip_X_bottom

X coordinate of lower right point of clipping rectangle

0x3005C

Clip_Y_bottom

Y coordinate of lower right point of clipping rectangle

0x30060

Vertex_X

X coordinate of vertex to be rotated (24-bit fixed point format)

0x30064

Vertex_Y

Y coordinate of vertex to be rotated (24-bit fixed point format)

0x30068

Vertex_Z

Z coordinate of vertex to be rotated (24-bit fixed point format)

0x3006C

Vertex_X_Prime

Rotated X coordinate. This register written by rotator module after rotation completes.

0x30070

Vertex_Y_Prime

Rotated Y coordinate. This register written by rotator module after rotation completes.

0x30074

Vertex_Z_Prime

Rotated Z coordinate. This register written by rotator module after rotation completes.

0x30078

Theta

Angle of rotation for rotator module (9-bit value: 360 degrees/512)

 

Register Encoding

 

Background Color

Bit(s)

Function

7:4

Green Intensity

3:0

Red Intensity

 

 

Display Mode

Bit(s)

Function

0

Enable Background Color when high

1

Text Only when high

2

Graphics Only when high

3

Text/Graphics pixels OR together

4

Text/Graphics pixels AND together

5

Enable Text page blink

6

Text/Graphics pixels XOR together

7

Invert Character color

 

 

 

 

 

 

 

 

 

 

 

 

Point/Line/Polygon/Rotation Engine Enable

Bit(s)

Function

2:0

001 => Start Point Engine

010 => Start Line Engine

011 => Start Polygon Filler

100 => Start Rotation Engine

7:3

Reserved

9:8

00 => Rotate about Z axis

01 => Rotate about X axis

10 => Rotate about Y axis

 

 

 

 

 

 

 

 

 

 

 

Engine Status

Bit(s)

Function

0

Line Engine busy when high

1

Rotation Engine busy when high

2

Polygon Filler busy when high

 

 

 

 

 

 

 

 

 

If you have any questions about the sign feel free to email me

Register definitions as of 6/20/03

 

Email: rhirsch81@comcast.net