Jump to content

BoxLambda, a retro-style FPGA based computer project using VERA


Recommended Posts

Well, for the audio solution, I would like to suggest a combination of the Seta X1-010, X2 Phillips SAA1099, and the Yamaha YM2414.  All those sound chips would have been from the '80s, there's plenty of tracker music for each of them on YouTube, and together, they cover almost all the basics (Geometry Synthesis, PCM, Wavetable, and FM Synthesis) except Mathematical Synthesis like Additive (Atari AMY) or Subtractive (Like the Roland MT and Sound Canvas families).

If the YM2414 is unavailable as a softcore, I'm certain the YM2151 is definitely out there.

Link to comment
Share on other sites

Thanks for the suggestions. I'm not sure if soft cores exist for those devices (other than the YM2151), but if they do, the intent is that you can load them into the sound core slot on a live system - as long as they can be made to fit the interface and floor plan that is.

 

Link to comment
Share on other sites

On 5/6/2022 at 5:35 AM, epsilon537 said:

Thanks for the suggestions. I'm not sure if soft cores exist for those devices (other than the YM2151), but if they do, the intent is that you can load them into the sound core slot on a live system - as long as they can be made to fit the interface and floor plan that is.

 

Well, The X1-010 was used in a whole bunch of arcade games by the likes of Seta, Alumer, Visco, Athena, Tecmo, Sammy (Before the merger with Sega), Data East, and especially Banpresto.  As I've seen footage of Twin Eagle: Revenge Joe's Brother running on the MISTer platform on YouTube, I'm certain that it's out there to find.  Or, one can theoretically find the source code for core for the Seta 1st Generation Arcade Hardware and try to isolate the HDL code for the X1-010 that way.

The Phillips SAA-1099 was used in the SAM Coupe, The Creative Labs GameBlaster and early SoundBlaster series cards, a couple of Mid-Late Eighties Digital Equipment and Silicon Graphics workstations (as a timer generator and peripheral I/O controller), and several arcade games by Century Electronics.

The really tricky one would be the YM2414.  It's an eight channel, four operator FM synthesizer with eight possible waveforms that was only used in Yamaha keyboards, and (second sourced) in midrange keyboards and synth modules by the likes of Moog, Budcla, Korg, and Casio.  I fell in love with its sound on YouTube, but if it's not available, the YM2151 will work fine.

Dumb question: How fast are you going to clock that 32-bit RISC V core?  I ask this because you may need a separate Sound CPU and audio buffer, especially if you want to experiment with the joys of PCM polyphony at high sample rates without bogging down the rest of the system.  I would suggest either the Hudson HuC6280 (Also used as a Sound CPU in arcade games by Taito and Data East), or the Zilog Z180, as each can address 1 MB plus of memory on their own.

Another Dumb Question: Which FPGA are you planning to use, and how much I/O will you able to play with?

Link to comment
Share on other sites

On 5/6/2022 at 4:36 PM, Kalvan said:

Dumb question: How fast are you going to clock that 32-bit RISC V core?  I ask this because you may need a separate Sound CPU and audio buffer, especially if you want to experiment with the joys of PCM polyphony at high sample rates without bogging down the rest of the system.  I would suggest either the Hudson HuC6280 (Also used as a Sound CPU in arcade games by Taito and Data East), or the Zilog Z180, as each can address 1 MB plus of memory on their own.

Another Dumb Question: Which FPGA are you planning to use, and how much I/O will you able to play with?

Timing closure will decide the speed. I'm targeting 50MHz.
I have my eye on a very interesting 'smart' DMAC core. You might be able to get by with that, instead of a 2nd CPU for audio. More on than in my next BoxLambda post.
If the DMAC doesn't suffice, I intend to include an empty black box region in the floor plan, with bus master hook-ups. Theoretically, you could fit another CPU in there.
A very limited version might just fit on a Arty A7-35T: https://digilent.com/shop/arty-a7-artix-7-fpga-development-board/
The 'full' version will require a Nexys A7-100T: https://digilent.com/shop/nexys-a7-fpga-trainer-board-recommended-for-ece-curriculum/

 

Link to comment
Share on other sites

Will this computer serve a purpose for an end users or is this a project where you design and build a computer simply for the joy of doing so, regardless of the resulting machine's purpose? Totally fine either way, of course; I was just curious.

Link to comment
Share on other sites

On 5/11/2022 at 6:06 PM, Tatwi said:

Will this computer serve a purpose for an end users or is this a project where you design and build a computer simply for the joy of doing so, regardless of the resulting machine's purpose? Totally fine either way, of course; I was just curious.

The 'FPGA-ness' of the computer sits at the center of this project. I would like to build a machine where it's doable and fun to mess around both on the software side and the hardware side.

On PC, a developer is typically limited to application space. You have to code against a bunch of APIs that other people have cooked up. On the Commander X16, you get to control the entire machine, from software. BoxLambda takes that one step further by letting you create or modify both software and hardware.

So, the lofty goal is to remove the great software-hardware divide 😉. There are not that many people with skills in both domains, but I'm sure there is interest, especially among bare-metal assembly level programmers that want to drill down just a bit further into the machine.

On the other hand, building a computer simply for the joy of doing so is certainly a big part of it 🙂

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

On 5/12/2022 at 4:12 AM, epsilon537 said:

The 'FPGA-ness' of the computer sits at the center of this project. I would like to build a machine where it's doable and fun to mess around both on the software side and the hardware side. ...

The CX16 includes the "stable development platform" philosophy inspired by 80s 8bit home computers like the VIC20 and C64 .. but it's not like there is "one true and proper approach" ... a variety of different projects each with their own coherent approach makes for a more interesting Vera ecosystem.

  • Like 2
Link to comment
Share on other sites

On 5/19/2022 at 12:09 AM, BruceMcF said:

The CX16 includes the "stable development platform" philosophy inspired by 80s 8bit home computers like the VIC20 and C64 .. but it's not like there is "one true and proper approach" ... a variety of different projects each with their own coherent approach makes for a more interesting Vera ecosystem.

Good point. The stable development platform is probably one of the reasons people still develop for the C64 today, but not for the Pentium PC.

In a way, RTL is just software that runs on an FPGA instead of a CPU. In that sense, BoxLambda is a framework and the Arty or Nexys A7 (I haven't decided) is the stable development platform. Then again, if there exists a stable development platform for homebrew FPGA projects with good traction today, it's the MisterFPGA, not the Arty or the Nexys.

 

  • Like 1
Link to comment
Share on other sites

It looks like you can either take two clock cycles to use the DMA to use the Dual-Port RAM as audio buffer, or else use the DMA or the CPU to take four cycles (at least) to use the DDR2 as sound RAM, which may be necessary if you've exceeded your total sprite, or scanline limit, and wanted to add in some BOBs as extra enemies, bullets, fireballs, or clouds in your vertical-scrolling shoot-'em-up, or bit-bang in more parallax scrolling fields?

Question No. 1:  While it doesn't look like it will happen in hardware, do you plan to designate specific stretches of Dual Port and/or DDR2 as sound buffer?  Or will programmers have to be doubly careful about reads and writes to prevent the use of sound data as general logic code, or the YM2149s from reading data meant for A.I. routines and spitting out garbage from the speakers.

Question No. 2: Do you believe you have enough fabric RAM to stick a YM2151 on the Nexys A7-100T?

Link to comment
Share on other sites

On 6/1/2022 at 2:22 AM, Kalvan said:

It looks like you can either take two clock cycles to use the DMA to use the Dual-Port RAM as audio buffer, or else use the DMA or the CPU to take four cycles (at least) to use the DDR2 as sound RAM, which may be necessary if you've exceeded your total sprite, or scanline limit, and wanted to add in some BOBs as extra enemies, bullets, fireballs, or clouds in your vertical-scrolling shoot-'em-up, or bit-bang in more parallax scrolling fields?

Question No. 1:  While it doesn't look like it will happen in hardware, do you plan to designate specific stretches of Dual Port and/or DDR2 as sound buffer?  Or will programmers have to be doubly careful about reads and writes to prevent the use of sound data as general logic code, or the YM2149s from reading data meant for A.I. routines and spitting out garbage from the speakers.

Question No. 2: Do you believe you have enough fabric RAM to stick a YM2151 on the Nexys A7-100T?

I haven't worked out the cycle counts. A small part of the DPRAM, or even Praxos internal memory might be set up as audio buffer if needed. The VERA already has an audio buffer, however. YM2149 register access should be at a low enough rate, buffering might not be needed.

The audio is usually not competing with graphics for bandwidth. All graphics resources reside in VRAM, not DDR or DPRAM. Although I can imagine in some cases we might be loading new graphics resources from DDR into VRAM on-the-fly, i.e. a kind of VRAM banking mechanism. If there is concurrent access from the CPU and DMA to DDR, they will be serviced in a round-robin schedule, so each can account on 50% of the bandwidth.

Q1: in HW, no. No MPU or MMU. The programmer will have to be careful. I don't intend to implement any mechanisms to prevent people from shooting themselves in the foot.

Q2: on the Nexys A7-100T, easily. On the Arty A7-35T, probably not, although maybe the dual YM2149s can be traded for a single YM2151. I would have to synthesize the YM2151 to see how the numbers work out.

 

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...
  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

Please review our Terms of Use