1 |
41 |
rrred |
Z80 Computer on Spartan 3E Starter Kit
|
2 |
|
|
|
3 |
|
|
Arquitecture
|
4 |
|
|
------------
|
5 |
|
|
|
6 |
|
|
ROT_CENTER push button (Knob) - Reserved - Reset
|
7 |
|
|
|
8 |
|
|
Memory
|
9 |
|
|
------
|
10 |
|
|
0000H - 3FFFH - ROM
|
11 |
|
|
4000H - 52BFH - VIDEO RAM
|
12 |
|
|
52C0H - 57FFH - System Variables
|
13 |
|
|
5800H - 5FFFH - Characters definition RAM
|
14 |
|
|
6000H - 8FFFH - RAM memory
|
15 |
|
|
9000H - FFDFH - Not used/future use
|
16 |
|
|
FFE0H - FFFFH - LCD Video RAM
|
17 |
|
|
|
18 |
|
|
Registers
|
19 |
|
|
---------
|
20 |
|
|
52C0H - Z80SOC VERSION (0 = DE1, 1 = S3E)
|
21 |
|
|
|
22 |
|
|
IO (Ports)
|
23 |
|
|
----------
|
24 |
|
|
|
25 |
|
|
01H - Out - Green Leds (7-0)
|
26 |
|
|
20H - In - SW(3-0)
|
27 |
|
|
30H - In - KEY(3-0)
|
28 |
|
|
70H - In - Rotary control direction
|
29 |
|
|
80H - In - PS/2 Keyboard
|
30 |
|
|
90H - Out - Video
|
31 |
|
|
91H - Out - Video cursor X
|
32 |
|
|
92H - Out - Video cursor Y
|
33 |
|
|
|
34 |
|
|
--
|
35 |
|
|
Reference Sample ROM
|
36 |
|
|
|
37 |
|
|
It is provided a ROM with a reference application, and the corresponding
|
38 |
|
|
Z80 source codes.
|
39 |
|
|
|
40 |
|
|
To use the application you will need to connect the S3E board to a
|
41 |
|
|
VGA monitor and PS/2 keyboard.
|
42 |
|
|
|
43 |
|
|
The program will show how to use:
|
44 |
|
|
Input push buttons
|
45 |
|
|
Input Switches
|
46 |
|
|
PS/2 keyboard
|
47 |
|
|
Video text out (memory mapped and port mapped)
|
48 |
|
|
Leds
|
49 |
|
|
LCD
|
50 |
|
|
Rotary Knob
|
51 |
|
|
Redefinition of characters
|
52 |
|
|
|
53 |
|
|
The program starts waiting for keys to be typed in the keyboard.
|
54 |
|
|
The characters are shown on the 40x30 video (VGA).
|
55 |
|
|
If "A" is pressed, then the program starts another routine,
|
56 |
|
|
that will write bytes into RAM. After 255 bytes are written,
|
57 |
|
|
the bytes are read sequencially and the byte read displayed in the leds (binary format).
|
58 |
|
|
When finished, waits for KEY0 (East on S3E board) and then restart again.
|
59 |
|
|
|
60 |
|
|
The switches (4-0) are used as input to calculate delays. Try
|
61 |
|
|
changing these switches to speed up ou slow down the leds and the LCD text rotation speed.
|
62 |
|
|
When you change these switches, it will only take effect after a Z80 reset (press the Knob button).
|
63 |
|
|
|
64 |
|
|
The Rotary knob can be used at any time to rotate the text in the LCD to the left or to the right.
|
65 |
|
|
|
66 |
|
|
The looping text inside the box demonstrates how to access the video ram.
|
67 |
|
|
To change speed of scrolling, use the switches (SW).
|
68 |
|
|
|
69 |
|
|
To reset the Z80, press the Knob Button (rotary).
|
70 |
|
|
|
71 |
|
|
To modify the screen layout (rows x columns), edit the file z80soc_pack.vhd and find the constants:
|
72 |
|
|
- vid_cols = number of columns (maximum is 80)
|
73 |
|
|
- vid_lines = number of lines (maximum is 60)
|
74 |
|
|
- pixelsxchar = 1 every character will be plotted using 8x8 pixels
|
75 |
|
|
- pixelsxchar = 2 every character will be plotter using 16x16 pixels
|
76 |
|
|
|
77 |
|
|
The column x lines total must not be over 3200, because this is the capacity defined for the video ram.
|
78 |
|
|
The characters can be redefined. Every character must have 8 bytes (8 x 8 bits).
|
79 |
|
|
|
80 |
|
|
Hope you enjoy.
|
81 |
|
|
|
82 |
|
|
TO-DO:
|
83 |
|
|
----
|
84 |
|
|
|
85 |
|
|
- (done) Up to 80x60 Video display
|
86 |
|
|
- Serial communication
|
87 |
|
|
- Monitor program to allow download of programs by serial communication
|
88 |
|
|
- Mass storage device (SD/MMC)
|
89 |
|
|
- Video colors
|