[Coco] Introduction

John Kent jekent at optusnet.com.au
Sun Feb 24 06:51:08 EST 2013


Hi Jayeson,

The XuLA-200 is too small for a CoCo implementation, as it' only has a 
200Kgate FPGA. It's big enough for a basic 6809 design with serial port, 
PS/2 keyboard and VDU. The CoCo3FPGA design was originally implemented 
on a 1MGate Spartan 3 Starter board, although now the Altera/terasic DE1 
board is used. The XuLA2, which uses a 1.5Mgate Spartan 6 so would be 
big enough to implement a full CoCo3FPGA design however Gary Becker has 
only released binaries to his CoCo3FPGA design for the DE1 board so it's 
not possible to port it to anything else unless he releases the source.

I did make a start on a 6847 VDG, and a PS/2 keyboard to scan code 
matrix wouldn't be too difficult. I think Mark McDougall has been 
working on a CoCo1/CoCo2 design.

The Altera / Terasic DE1 board has more peripherals on it such as RS232, 
VGA, SD Card, PS/2 interface and so on, so it's easier to implement a 
complete system where as the XuLA boards is more intended to be used 
with a carrier board with the peripherals you want on it.

There is a steep learning curve getting into FPGA design, particularly 
if you want to implement something as complex as a microprocessor core, 
or complete system on a chip although the complexity can vary. Old CPUs 
like the 68XX, 65XX and 8085/Z80 essentially consist of a state machine 
that generates the instruction cycles which is controlled by the opcodes 
and controls the data paths to the registers, ALU, condition codes and 
memory.

Modern designs tend to be pipelined RISC Harvard architectures that 
latch the internal signals and register values between stages so that 
the instruction cycles can be run in parallel. You typically have 
instruction and data cache connected to shared memory so that you can be 
reading instructions and reading and writing data at the same time. The 
CPU arbitrates external memory access between data and instruction 
cache. A RISC piplelined CPU design would be the logical next step for 
me to take, although there are already quite a few open source RISC CPU 
architectures out there.

VHDL & Verilog are similar in many ways to many standard programming 
languages. The thing to remember is though that you are generating a 
hardware description rather than a set of instructions to execute on a 
computer. A computer is effectively time division multplexing the ALU 
logic between variables in memory.

Some people think that the transition from software to a hardware 
description can be a difficult change to make, although personally I 
didn't find that. Having some hardware design experience helps and 
having a fair idea of the nature of code generated by software compilers 
helps also in understanding what the synthesis software is doing. If you 
understand the code generated by switch / case statements in C and can 
see the analogy to a hardware decoder chip then you have a fair idea of 
what a case / when statement in VHDL generates.

If you want to get into FPGAs I suggest you start off with a simple 
project and work your way up. There are web sites that have open source 
FPGA cores that you can study and learn how they are designed. The 
appeal for me is trying to understand how the chips that I have used in 
digital designs over the years work.

If you understand the basics of digital design it's not hard to use the 
basic building blocks to create a new design for whatever you want. It 
just takes a bit of persistence, enthusiasm and dedication to getting there.

John.

On 24/02/2013 9:19 PM, Jayeson Lee-Steere wrote:
> John, I was just looking over your FPGA pages. Always wished I could just
> whip up whatever I want with one, but the barrier to entry is fairly high.
> I know logic well enough but those languages seem like Voodoo to me. Still
> the XESS XuLA boards look like a semi-easy place to start. I'm thinking one
> of those mounted on a board with a Coco cartridge connector, implementing a
> Dungeons of Daggorath ROM and logging the bus signals would be just the
> ticket...
>
> - Jayeson
>
>

-- 
http://www.johnkent.com.au
http://members.optusnet.com.au/jekent





More information about the Coco mailing list