EmbeddedRelated.com
Forums

POP-11 (PDP-11/40 in an FPGA)

Started by Scott August 16, 2007
2007/8/22, Jonathan Kirwan :

> On Wed, 22 Aug 2007 00:35:19 -0600, you wrote:
>
> >
> >The only problem I can see is the PDP-11 instruction
> >set is still copy written.
> > How can that be after so many years, now? Wasn't the pdp-11/20 first
> shipped out in early 1970?? That's 37 years and more

Copyright currently lasts 75 years from the death of the author.
It's regularly extended to prevent Mickey Mouse from becoming public domain.
Fortunately copyright does not apply to ISAs.

Kolja Sulimma
Jonathan Kirwan wrote:

> How can that be after so many years, now? Wasn't the pdp-11/20 first
> shipped out in early 1970?? That's 37 years and more.

Micky Mouse is still patented and he came out in the 40's.
I think off hand what was patented was the PC is used as general
index register - not a special register as before.

> Jon
PS. Disney is still pushing for longer time for patents.
I just started playing with POP-11 (now that the site is back up) and
one of the neat things is that the sfl2vl utility also has an sfl2vh
funtion which creates VHDL from SFL.

I have converted POP-11 to VHDL but it is going to take a lot of
thought to figure out how to port it to the Spartan III Starter Board.
It would help if I knew ANYTHING about the PDP-11/40 but alas...

Richard
--- In f..., "Scott" wrote:
>
> Hello,
>
> I came across this old posting for the POP-11, but the original
> URL no longer works. I'd really like to get the
> VHDL source code for the POP-11 project if possible.
> Can someone send me an updated URL?
>
> Thanks in Advance,
> Scott
>
No, no, no.

Patents and Copyright are completely different things. Almost unrelated.
Mickey Mouse never was patented and couldn't be so.
Patents expire within a few decades, copyrights last a lot longer.
Kolja Sulimma

2007/8/22, woodelf :
> Jonathan Kirwan wrote:
>
> > How can that be after so many years, now? Wasn't the pdp-11/20 first
> > shipped out in early 1970?? That's 37 years and more.
>
> Micky Mouse is still patented and he came out in the 40's.
> I think off hand what was patented was the PC is used as general
> index register - not a special register as before.
>
> > Jon
> PS. Disney is still pushing for longer time for patents.
Kolja Sulimma wrote:

> Patents and Copyright are completely different things. Almost unrelated.
> Mickey Mouse never was patented and couldn't be so.
> Patents expire within a few decades, copyrights last a lot longer.

I say 'much the same', just one is for art and writing and one is for technology.

> Kolja Sulimma

Since I found FPGA's too small for a random logic cpu design I have created.
I ended up using the internal ram as micro-code to get it all to fit.

I have not looked into using them recently. Right now I am looking doing a 2901
74LSXXX design for my cpu and am trying to get the right PCB software.

Remember a REAL 11 has a front panel and that takes up a lot I/O pins.
Also UNIX may require 1) a memory management unit 2) Floating point too.
I think there are of PDP-11 chips out there that are still around because
they never had those features.
> Since I found FPGA's too small for a random logic cpu design I have
created.
> I ended up using the internal ram as micro-code to get it all to fit.
>
> I have not looked into using them recently. Right now I am looking
doing a 2901
> 74LSXXX design for my cpu and am trying to get the right PCB software.
>
> Remember a REAL 11 has a front panel and that takes up a lot I/O pins.
> Also UNIX may require 1) a memory management unit 2) Floating point too.
> I think there are of PDP-11 chips out there that are still around
because
> they never had those features.
>

The POP-11 has an MMU but no floating point. The author has Unix
running so floating point must not be a requirement. It certainly
isn't a requirement for Linux as that runs on a lot of ARM9 chips
without FPUs.

I had thought to use IO Expanders (SPI <-> a lot of pins) to handle
the LEDs and switches. After all, I can send the values far faster
than the eye can see and LEDs only mean anything when the CPU is
stopped. Within a mS I could easily update the entire display and
read all the switches. SPI only requires 3 wires (Clk, MOSI, MISO)
plus one device select per gadget. Or use an external selector so 3
pins select 8 devices - leave one empty to deselect the bus.

I have used SPI to a 16 hex digit display (MAX6954) for another
project and it worked well. I have chips for SPI to matrix LEDs (8x8
dual color) and I have already done 16 console switches to SPI
(MCP23S17). All of this is trivial compared to getting the CPU to
function.

The Z80 core (T80) fits easily in a 300k gate device and a complete
minicomputer with all of the IO devices (card reader, printer,
typewriter, keyboard, disk drive) fits easily in a 1M gate Spartan 3.
In fact, the minicomputer only uses 300k gates plus every byte of the
BlockRAM.

It looks like the POP11 fits in 100k gates based on using the EP1K100
or 2910 LEs (whatever they are defined to be) for the EP1C3. So,
despite the fact the code (in VHDL) is about 9000 lines, it fits in a
fairly small device.

A 1M gate Sparten 3 in HUGE (think in terms of 10 PDP-11/40s) and the
Starter Board is cheap at $149 (for the 1M version)
http://digilentinc.com/Products/Detail.cfm?Prod=S3BOARD

I like the 2901 stuff and I certainly know how to do the microcode but
you can use exactly the same approach using an FPGA. It isn't
commonly done that way but there is no reason you can't define a very
wide array by some arbitary length and code the bits. In fact, that
part is easy because you can define them in INIT strings in the
configuration file (*.ucf) so you can twiddle the microcode without
recompiling the entire VHDL (maybe). You can also use the BlockRAM to
store the microcode and initialize it the same way. Or, you can store
the microcode on a SD/MMC card and load it at boot time. This is a
neat option because all microcoding is done without recompiling anything.

Richard
rtstofer wrote:

> It looks like the POP11 fits in 100k gates based on using the EP1K100
> or 2910 LEs (whatever they are defined to be) for the EP1C3. So,
> despite the fact the code (in VHDL) is about 9000 lines, it fits in a
> fairly small device.

> I like the 2901 stuff and I certainly know how to do the microcode but
> you can use exactly the same approach using an FPGA. It isn't
> commonly done that way but there is no reason you can't define a very
> wide array by some arbitary length and code the bits. In fact, that
> part is easy because you can define them in INIT strings in the
> configuration file (*.ucf) so you can twiddle the microcode without
> recompiling the entire VHDL (maybe). You can also use the BlockRAM to
> store the microcode and initialize it the same way. Or, you can store
> the microcode on a SD/MMC card and load it at boot time. This is a
> neat option because all microcoding is done without recompiling anything.

I used the other brand of FPGA's and was doing my logic design as schematic
entry. I had 750 CLB's and 256x32 ram so I configured the random logic
to fit in the ram to save space. This was a compile time option.
Even so the routing is what killed the project. It just barly fit.
I suspect the last option you have may be a better design so that you
can have the 'extra' pdp 11 instructions decoded and later you can upgrade/test
the microcode.

> Richard
>
On Wed, 2007-08-22 at 12:12 -0600, woodelf wrote:

> Also UNIX may require 1) a memory management unit 2) Floating point
> too.

1) yes
2) no

Hellwig
> I used the other brand of FPGA's and was doing my logic design as
schematic
> entry. I had 750 CLB's and 256x32 ram so I configured the random logic
> to fit in the ram to save space. This was a compile time option.
> Even so the routing is what killed the project. It just barly fit.
> I suspect the last option you have may be a better design so that you
> can have the 'extra' pdp 11 instructions decoded and later you can
upgrade/test
> the microcode.
>

According to the Spartan 3 datasheet, your device (based on CLBs)
would be equivalent to 400k gates which would be a XC3S400 and this
Xilinx FPGA would have 56k bits of distributed RAM and 288k bits of
BlockRAM.

The XC3S1000 (the 1M gate version on the Spartan 3 Starter Board)
would have 1920 CLBs, 120k bits of distributed RAM and 432k bits of
BlockRAM along with 24 hardware multipliers.

The starter board includes 1MB of asynchronous RAM which should be
more than enough for the PDP-11/40.

I like the idea of a $149 PDP-11/40 running Unix. Now if I can just
port the code.

Richard
rtstofer wrote:

> The starter board includes 1MB of asynchronous RAM which should be
> more than enough for the PDP-11/40.

The new boards are nice but since I am doing homebrew at home
I am rather limited with my limited construction skills.

Does the board have a provision for a serial rom for power up
FPGA load?

>
> I like the idea of a $149 PDP-11/40 running Unix. Now if I can just
> port the code.

You need another meg ... REAL UNIX is only 22 bit adressing. :(

> Richard