element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
FPGA
  • Technologies
  • More
FPGA
Forum PD computer
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join FPGA to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 4 replies
  • Subscribers 558 subscribers
  • Views 1187 views
  • Users 0 members are here
Related

PD computer

kerravon
kerravon over 2 years ago

Hello.

I am a software engineer, not a hardware engineer, and have never used an FPGA, but I am currently trying to understand this:

https://cod5.com/citizen-computer.html

I have written an operating system (PDOS at http://pdos.org) for the 80386 and some other environments - in particular the latest design (PDOS-generic) is meant to be portable, with a pseudo-bios layer.

The thing that is unusual is that this OS is public domain (explicit notice), not just open source.

And there is only one CPU available that we know of that has a public domain VHDL, which is Plasma, which uses the MIPS instruction set.

So we are now looking at matching these things up.

We have public domain tools too, but the C compiler is not yet C90-compliant so currently I use an old gcc for that.

The author of that first website has documented a desktop for a bit over US$300.

I found this forum while looking for a laptop that already has a FPGA in it.

Can someone tell me what is required to get a functioning public domain laptop? Or any comment on the feasibility of the proposed desktop above?

Thanks. Paul.

  • Sign in to reply
  • Cancel
Parents
  • shabaz
    shabaz over 2 years ago

    Hi Paul,

    It sounds like a huge project. The CPU HDL on its own is insufficient, and won't have external RAM or storage nor the interfaces like USB, VGA, HDMI, Ethernet, etc, so that is all work that is undocumented at that website. The website looks like a wish list, since there's no actual documented full project there.

    If you're new to hardware and HDL, I'm not sure it is feasible to embark on such a project without doing a whole load of small simpler projects. HDL isn't the same as software coding either, so there's usually little that will help from software engineering experience there.

    It might be more feasible to pick an existing FPGA project that uses a simple processor and already has some of the interfaces you need, and then get that running, and then make small modifications to it, until you're confident to swap out to with your own HDL along with your desired CPU. You'd probably need to swap out to a more powerful FPGA board eventually too, with SDRAM (or far simpler SRAM) on it.

    Here's a random example, that at first glance seems reasonably documented, and offers compute with keyboard and monitor capability all on a FPGA. It uses a 6502 core written in Verilog (which is what you'll have to use if you're restricting yourself to open source dev tools as well - note that the Plasma CPU that you refer to, is written in VHDL which can't be built using open source tools, if that matters or not for your needs, I don't know):

    https://github.com/emeb/up5k_vga

    As mentioned this doesn't get you to your goal in one step; you'd have to eventually lift out the 6502 core and any other content that doesn't meet your requirement, and move to a bigger FPGA board with memory on it, but at least it will allow you to quickly dive into the physical hardware to get an idea of what it will involve. Probably better if you can find a more recent project though, since even the 6502 one is 4 years old and doesn't seem to have been updated since then.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • kerravon
    kerravon over 2 years ago in reply to shabaz

    Hi shabaz. Thanks for your reply.

    I won't be doing any VHDL myself, at least, that isn't the plan. The CPU (Plasma) is already done, but apparently needs some work to work on a different FPGA. The person who wrote that incomplete website seems to know what changes need to be done to support the more modern FPGA. He also says RAM isn't a problem - the FPGA he linked to has 8 MB which is enough. My OS is only a 110k executable. But my experience with the 8086 is that 640k really isn't enough. If I want a usable system (for developing a better OS for example) I need more like 2 MB. If I was using an optimizing compiler I would need more like 37 MB on the 80386 (that's what GCC 3.2.3 needs to recompile itself). But that won't be an issue because I won't be starting with an optimizing compiler. It will be more like SubC which comes close to even working in small memory model.

    USB is not an issue as I don't have a USB stack in my OS anyway. Nor do I have networking. All focus is on the disk for doing C compiles. An OS to develop OSes. That's sort of the goal. Really more the first goal. The website says email, but I don't think he can do that unless he links the serial port up to another computer emulating a modem.

    The keyboard will use PS/2 connectors to avoid USB as well. That's why those are listed.

    The 6502 project is copyrighted. We're choosing this processor because it is public domain. The tools aren't as important as the end computer being public domain. Any subsequent tools can be written on that public domain computer in the course of the next 5 centuries or whatever it takes to catch up to copyrighted freeware 2023 technology.

    You specifically mentioned external RAM. I assume that is as opposed to internal RAM on the FPGA which I am told is 8 MB and thus sufficient?

    You mentioned storage - that's an issue, thanks. There will be an SD card. I don't know what is required to access it. I'd like to know what we're talking about - VHDL or my "bios" layer (which will be written in C, with minimal assembler as required)? Same question for HDMI and serial port which are the other things I believe will need to be driven. How many lines of VHDL or C code are we talking about? Note that I'm looking to write simple, minimal code. So I won't really be doing interrupt driven if possible. PDOS is single-tasking. I'll send a command to some peripheral and then halt rather than poll and wait for the interrupt to take me to the next instruction. That's how I did the z/Arch version of PDOS. Works fine.

    And yes, any problem on any device means you power off and try again. I'm happy with that (simple) design.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • shabaz
    shabaz over 2 years ago in reply to kerravon

    Hi Paul,

    If you have someone already familiar with HDL then that helps. I had assumed you meant that you would be doing this from scratch, which would be a very uphill struggle as a first project, based on that list of items at that website, which lists USB and so on. The existing 6502 project was a ready-made starter suggestion for a beginner. Using a MIPs-like processor is a good choice because there's a ton of documentation on such a typical architecture.

    I've never implemented HDMI so I have no idea how much HDL is needed. VGA doesn't need a lot (maybe 50 lines or so), reading from RAM repeatedly, which will act as your video RAM. There's lots of online projects showing how to drive VGA and presumably HDMI too. Perhaps for the simplest implementation, dual-port RAM could be used (the FPGA you're using will have documentation explaining how to use a block of this inside the FPGA) so that you can repeatedly read it, while also being able to write to it.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • kerravon
    kerravon over 2 years ago in reply to shabaz

    Thanks for the info shabaz. Sounds like the design is feasible then. I double-checked the website as I was surprised you saw USB. Those appear to be useful references, but I just looked at the actual proposed computer down the bottom, and didn't notice anything that required a USB. I had had previous discussions to try to eliminate the USB stack requirement and he seemed to have accepted that it could be done, and the shopping list seemed to confirm that.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • kerravon
    kerravon over 2 years ago in reply to shabaz

    Thanks for the info shabaz. Sounds like the design is feasible then. I double-checked the website as I was surprised you saw USB. Those appear to be useful references, but I just looked at the actual proposed computer down the bottom, and didn't notice anything that required a USB. I had had previous discussions to try to eliminate the USB stack requirement and he seemed to have accepted that it could be done, and the shopping list seemed to confirm that.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube