1 |
10 |
root |
<!--# set var="title" value="" -->
|
2 |
|
|
<!--# include virtual="/ssi/ssi_start.shtml" -->
|
3 |
|
|
<link REL="stylesheet" TYPE="text/css" HREF="/people/tantos/styles.css">
|
4 |
|
|
|
5 |
|
|
<h1>Wishbone Monitor Controller</h1>
|
6 |
|
|
<h2>Description</h2>
|
7 |
|
|
<strong>Wishbone Monitor Controller</strong> is a set of freely available VHDL cores. It contains
|
8 |
|
|
a central building block containing the basic functionality. It can then be sorrounded by
|
9 |
|
|
various helper functions to add functionality. The central core comprises of a
|
10 |
|
|
sync generator, a pixel data generator, a memory interface and a CPU interface. It is specificly
|
11 |
|
|
designed for slow 8-bit systems (although CPU interface size can be set) with no high needs
|
12 |
|
|
about a display. It is also designed to be simple and small (cheap). The target is the whole
|
13 |
|
|
design to be well fit in an Altera ACEX 1k30 device which is available for around 10USD.
|
14 |
|
|
|
15 |
|
|
<h2>Individual module decriptions</h2>
|
16 |
|
|
Building blocks
|
17 |
|
|
<ul>
|
18 |
|
|
<li><a href="vga_core.shtml">Central core</a></li>
|
19 |
|
|
<li><a href="palette.shtml">Palette RAM module</a></li>
|
20 |
|
|
<li><a href="accel.shtml">Accelerator</a></li>
|
21 |
|
|
<li><a href="mouse.shtml">Mouse sprite module</a></li>
|
22 |
|
|
</ul>
|
23 |
|
|
Sampe configurations
|
24 |
|
|
<ul>
|
25 |
|
|
<li><a href="vga_chip.shtml">VGA chip</a></li>
|
26 |
|
|
<li><a href="vga_core_v2.shtml">Accelerated VGA core</a></li>
|
27 |
|
|
</ul>
|
28 |
|
|
|
29 |
|
|
<h2>Features</h2>
|
30 |
|
|
For a fast breafing here are the main design goals and features of the various modules:
|
31 |
|
|
<ul>
|
32 |
|
|
<li>Highly customizable sync generation with polarity control</li>
|
33 |
|
|
<li>Capable of driving EGA/VGA/Hercules/CGA monitors</li>
|
34 |
|
|
<li>Multi-scan support for low resolution modes</li>
|
35 |
|
|
<li>Internal memory for multi-scan, for even less memory accesses</li>
|
36 |
|
|
<li>FIFO de-coupled memory interface and pixel output circuit</li>
|
37 |
|
|
<li>Wisbone pixel memory interface</li>
|
38 |
|
|
<li>16-bit pixel memory support (later parametrizable)</li>
|
39 |
|
|
<li>Programmable color depth (1,2,4,8 bits per pixel)</li>
|
40 |
|
|
<li>~80Mhz pixel clock (wish)</li>
|
41 |
|
|
<li>Standard parametrizable Wishbone CPU bus interface</li>
|
42 |
|
|
<li>Syncron internal structure</li>
|
43 |
|
|
<li>Fully synthesizable (using Leonardo Spectrum)</li>
|
44 |
|
|
<li>Palette support (3x5 bits plus key bit in each entry)</li>
|
45 |
|
|
<li>Accelerator functions for common display operations</li>
|
46 |
|
|
<li>Mouse cursor support if it fits to the chip (wish)</li>
|
47 |
|
|
</ul>
|
48 |
|
|
|
49 |
|
|
<h2>Status</h2>
|
50 |
|
|
<ul>
|
51 |
|
|
<li>Central core implemented</li>
|
52 |
|
|
<li>Palette and Accelerator implemented</li>
|
53 |
|
|
<li>Cores compile under ActiveHDL and Leonardo Spectrum</li>
|
54 |
|
|
<li>Cores simulate well (some more validation still needed)</li>
|
55 |
|
|
<li>All functionality fits into a 1k30 chip</li>
|
56 |
|
|
<li>Synthesized central core works as expected but max. clock rate is ~60MHz</li>
|
57 |
|
|
<li>When all function synthesized max. clock rate is ~35MHz :-(((</li>
|
58 |
|
|
</ul>
|
59 |
|
|
|
60 |
|
|
<h2>ToDo</h2>
|
61 |
|
|
<ul>
|
62 |
|
|
<li>More simulation to proove all core functionality</li>
|
63 |
|
|
<li>Port to other (Xilinx Spartan-II) FPGA architectures</li>
|
64 |
|
|
<li>Optimize design to encrease clock speed</li>
|
65 |
|
|
<li>Implement Mouse sprite block</li>
|
66 |
|
|
<li>More sample applications (complete designs)</li>
|
67 |
|
|
<li>Sample programs</li>
|
68 |
|
|
<li>Parametrizable pixel memory interface</li>
|
69 |
|
|
<li>Generic version for fixed configuration (even much smaller)</li>
|
70 |
|
|
<li>LCD support (??)</li>
|
71 |
|
|
<li>high-color support (??)</li>
|
72 |
|
|
<li>Develop a target board and try the core in real</li>
|
73 |
|
|
</ul>
|
74 |
|
|
|
75 |
|
|
<h2>Download</h2>
|
76 |
|
|
<p>
|
77 |
|
|
The first beta version of the Memory Controller can be downloaded from from the CVS repository.
|
78 |
|
|
You can browse the repository <a href="/cvsweb.shtml/wb_vga/">here</a> or
|
79 |
|
|
use <a href="/cvsmodule.shtml">CVSget</a> with module name <strong>wb_vga</strong>.
|
80 |
|
|
The design uses the <a href="/cores/wb_tk/">WishboneTK</a> so you will also need that.
|
81 |
|
|
|
82 |
|
|
<h2>Author & Maintainer</h2>
|
83 |
|
|
<p>
|
84 |
|
|
<a href="/people/tantos">Andras Tantos</a>
|
85 |
|
|
<!--# include virtual="/ssi/ssi_end.shtml" -->
|