1 |
117 |
dgisselq |
# Description
|
2 |
|
|
|
3 |
|
|
This project attempts to take two separate projects, the ZipCPU and Xess.com's XuLA2-LX25, and merge them together into a single system on a chip implementation. As currently implemented, this SoC offers the following peripherals to the ZipCPU within:
|
4 |
|
|
|
5 |
|
|
- External peripherals
|
6 |
|
|
|
7 |
|
|
- 14 GPIO inputs, 15 GPIO outputs
|
8 |
|
|
- PWM output (can be swapped for an FM transmitter ...)
|
9 |
|
|
- Rx and Tx UART ports
|
10 |
|
|
- 1MB SPI flash, together with a read/write controller
|
11 |
|
|
- 32MB SDRAM capable of non-stop pipeline reads and writes
|
12 |
|
|
- SD Card, sharing the SPI wires of the flash
|
13 |
|
|
|
14 |
|
|
- Internal peripherals
|
15 |
|
|
|
16 |
|
|
- Real-time clock and date4
|
17 |
|
|
- Access to the FPGA configuration port, for unattended updates
|
18 |
|
|
- ZipCPU debug/configuration port access from JTAG
|
19 |
|
|
|
20 |
|
|
- ZipCPU peripherals
|
21 |
|
|
|
22 |
|
|
- 3x timers, each of which can be programmed either in a one shot mode or as a repeating interval timer
|
23 |
|
|
- A watchdog timer, and a wishbone bus watchdog timer
|
24 |
|
|
- Two interrupt controllers
|
25 |
|
|
- Direct Memory Access (DMA) controller for unattended memory movement
|
26 |
|
|
|
27 |
|
|
# Current Status
|
28 |
|
|
|
29 |
|
|
The SoC is fully functional. Keeping the project from being complete, however,
|
30 |
|
|
is the lack of an integrated specification document. (Specification documents
|
31 |
|
|
do exist, however, for many of the peripheral components.)
|
32 |
|
|
|
33 |
|
|
# Unique Features
|
34 |
|
|
|
35 |
|
|
This System on a Chip (SoC) controller has some unique features associated with
|
36 |
|
|
it, above and beyond the peripherals listed above. Primary among those is the
|
37 |
|
|
JTAG to 32-bit wishbone master conversion. This makes it possible for an
|
38 |
|
|
external entity to read from or write to the wishbone bus. Uses include
|
39 |
|
|
verifying whether or not peripherals work, as well as configuring the CPU,
|
40 |
|
|
memory and flash for whatever purpose one might have. This particular
|
41 |
|
|
capability was designed so that host (i.e. FPGA control) programs (external
|
42 |
|
|
to the FPGA) can call a common set of bus interface functions to communicate
|
43 |
|
|
with the FPGA, regardless of how the bus was implemented.
|
44 |
|
|
|
45 |
|
|
A second unique feature is a PWM driver that spreads its digital energy into
|
46 |
|
|
higher (non-auditory) frequencies which can then be filtered out easier
|
47 |
|
|
with a simple low-pass filter. As an example, sending a zero, or half-pulse
|
48 |
|
|
width, will result in alternating digital ones and zeros from the driver. While
|
49 |
|
|
I expect this will have a pleasing effect on the ear, especially since these
|
50 |
|
|
transactions will be outside of the normal hearing range, this is the first time
|
51 |
|
|
I have tried it and the jury's still out regarding whether or not it works or
|
52 |
|
|
even works well.
|
53 |
|
|
|
54 |
|
|
Finally, while it may not really be that unique, this core does feature a fully
|
55 |
|
|
functional SDRAM controller capable of sustaining one read cycle (or write
|
56 |
|
|
cycle) every two clocks when pipelined. Unlike many other dynamic memory
|
57 |
|
|
controllers, this one was _not_ created from a proprietary, closed source,
|
58 |
|
|
memory interface generation facility--so it is available for anyone to examine,
|
59 |
|
|
study, and even comment upon and improve--subject to the conditions of the GPL.
|