SYSTEM
BRING-UP
After designing the CPU, I designed a simple test-fixture
using on-chip ROM and ran my test programs in the
Foundation simulator.
After
simulating test programs for hundreds of cycles, I
compiled the design using the Xilinx tools and tested
it on my XS40 board. Using a parallel port output
for CLK, I wrote shell scripts to single-step the
processor and observe PC7:1 on the LEDs. Later, I
ran the CPU at up to 20 MHz.
Starting
from a core set of working instructions, it was easy
to test the rest, one at a time. If something went
awry, I could do a binary search for the problem,
insert a stop: goto stop; breakpoint into my test,
recompile, and download. A real remote debugger would
be nice!
Armed
with a working CPU, it is easy to add and test new
features, one by one. I added double-cycled reads
from external RAM, then MEMCTRL, then LED output registers.
Writing text messages to the seven-segment LED was
a big milestone. RAM writes were next. And, late in
the project I added DMA, the video controller, and
interrupts.
I
want to emphasize the importance of thorough testing.
You have your work cut out for you when properly testing
a pipelined processor and an SoC.
This
has been a proof-of-concept project, and I have focused
on design issues. To ship something like this, you
would need to budget as much or more time for validation
as for the design and implementation.
The
final system floorplan, as placed on our 14 ´ 14 CLB
FPGA, is shown in Figure 3.
|
|
| Figure 3The rest of the device
contains the automatically placed processor
control unit and other logic. |