close-circle
Close
0%
0%

'Flea Ohm' FPGA Project

Formerly my own raspi-zero style FPGA development board, my Ohm (in Mk2 form) has grown up a bit since then.. :-)

Similar projects worth following
FleaFPGA Ohm/Ohm+ are my own attempts at making a powerful FPGA-based development board in a raspi zero form-factor. This time however, I use the new ECP5 FPGA from Lattice Semiconductor! ;-)

Read more »

  • Pre-production Part 3:

    Valentin Angelovski06/05/2017 at 04:24 2 comments

    Hello again! :)

    While I eagerly await on (what I hope to be) the final revision of my Ohm board, thought I'd drop one more update here..

    1.) OV7670 module testing went well :)

    2.) Fixed a few more minor errors with the PCB, as well as tweaked the following specs:

    • Stepped up the user GPIO breakout to 62 pins total..
    • Added a user push button (really needed one for things like system reset etc.. so I bit the bullet :-).
    • Added some additional circuit protection bits that were missing on the original Ohm zero..
    • To get the maximum possible use out of my board (ie: implementing multiple video inputs), I may need to offer the 45k variant ECP5 for the FPGA.. For many things however, the 24.5k variant seems to be acceptable. It can (for example) accept the minimig core, albeit at ~80% slices and 100% PLL blocks usage..

    3.) Started work on my very first (and relatively simple) 'hat' for the Ohm board - a 'retro ports breakout' hat containing:

    • 2 x C64 style game ports (for joystick and game paddle support).
    • 1 x PS/2 combo port (for keyboard and mouse support via a Y-splitter cable).
    • 1 x Audio output jack.
    • ESP8266 (was ESP32, see update below) module provision (several possibilities here, needs more work ;)

    Looking forward to seeing the final boards when they arrive (hopefully) by next week's end (I hope I've covered everything..) More to follow!

    **** EDIT 09/06/2017: For reasons mainly relating to time, I have decided to use the ESP-12E module (ie. ESP8266) for Revision 'A' the retro breakout hat (and possibly move to ESP32 for later versions when I am in a better position to support it). I have the following interfaces wired up from the ESP to the FPGA:

    1. SDIO and UART interface pins wired up.
    2. Control signals required for ESP module control and/or firmware update (ie. RST, EN, GPIO0, GPIO15, etc.) are upported.

    Both expansion hats and pre-production Ohm boards are almost ready to be shipped back to me. Next week will be an eventful one.. ;-) ****

    1. Pre-production Part 2:

      Valentin Angelovski05/11/2017 at 06:30 1 comment

      Hello again! :-)

      Well a few things have happened since my last update. Since that time, I ended up having two second-round prototypes built: one with 10/100 Ethernet and another with Gigabit Ethernet. Pictured below is the Gigabit Ethernet version (with and without user accessory modules plugged in):


      Ethernet tests: This one was a pleasant surprise - wasn't expecting my Gigabit variant to work (was still happy to release the 10/100 variant if it did not work..), but work it did! :-D Gonna do some more testing on it, but I have decided to upgrade the spec. to include it in the final board..

      CSI port testing: Didn't go so well.. After finally getting around to diving into this in a major way, I discovered my solution to be unsatisfactory due to problems with shared i/o pins for csi and parallel camera support :-/ Therefore, I decided to delete the CSI port and instead focus on parallel CMOS camera module functionality (but with the possibility for CSI support via 'SLVS' configuration of suitable GPIO pins)..

      Deleting the CSI header did free up more user GPIO pins (which are always welcome.. :-), so I added an extra single-row header strip above GPIO-B to access the extra GPIO (see below):

      This now leaves parallel CMOS camera and some GPIO-related tests to carry out. To be continued.. thanks for reading! :-)

    2. Pre-production Part 1:

      Valentin Angelovski04/11/2017 at 08:26 5 comments

      Hello again! :-)

      Quick update on my Ohm project: Prototype testing is now almost complete. Only thing not tested to date was the CSI header, thanks to a silly error that slipped under the radar..

      Based on these tests (among other things) I've updated my PCB design to include all fixes and/or tweaks arising from it:

      One of the things that really bothered me was the lack of user GPIO breakout. So I increased the GPIO count to 55 user pins total, thanks to the inclusion of a 20-pin 'GPIO-B' header, as well as increasing the pin-count of the 'GPIO-C' header :-D

      There were also other changes and tweaks as well - I will write a more comprehensive list of the changes when I have more free time.

      Next step: Review the above as soon as possible and see if I can knock one up quickly.. ;-) Thanks for reading!

    3. 'Ohm' Mk2 is alive!

      Valentin Angelovski03/25/2017 at 11:56 4 comments

      Hello again!

      Just a quick update to report I finally have a new Ohm Mk2 prototype assembled and undergoing testing:

      Apart from a few minor snags, testing of my first Ohm Mk2 prototype has been going well. As part of the test process I've ported both minimig and Next186 softcores to this board (successfully). I've also exercised the onboard ADC inputs using my FPGA scope demo.

      Among the remaining tasks, I need to provide some means of a loopback test of the Ethernet port from the FPGA. Also at some later stage I will need to validate (as a minimum) USB HID capability from those ports, not merely PS/2 pass-through as has been tested thus far.. Stay tuned! :-D

      Cheers, Valentin

    4. New year, new direction - Part II

      Valentin Angelovski02/23/2017 at 10:55 2 comments

      Hello again!

      Sorry about the delay in my last reply. Non-hobby matters, along with the added frustration over long part lead-times etc. did slow things down here quite a bit..

      Rather than wait an unknown lead-time on an FPGA part that I need, thought I'd try for a redesign of my Ohm board using larger (but more readily available) parts. While this might result in a larger (and more expensive) board, thought I'd also take this opportunity to make it a bit more useful..

      So, whilst I was in the process of exploring FPGA alternatives, (where nothing is really jumping out at me right now - apart from maybe Max-10) I gave Lattice and another variant of their ECP5 series one more spin..

      Anyway, here's my result (did I mention it's a bit bigger than before? :-) :

      I've retained all the existing Ohm board functions, but added a flexible lvds header (for display or camera modules, potentially) and also 10/100 Ethernet.

      Regarding the external DRAM: I have completed several versions of the above-mentioned design with different external RAM chips loaded, from SDRAM through to DDR3..

      I realize this is a major deviation from the original (pi zero form factor) design. However cool that was (and still is, I've not forgotten), I've decided that I always wanted to do something in-between a zero and a full-blown pi. Through this renewed effort, it will be as close as I'm ever going to get. :-)

      Next step: To decide upon the external RAM, review and then try fabricating one (or more) of these guys..

      Thanks for reading! :-)

      Cheers,

      Valentin

    5. New year. New direction.

      Valentin Angelovski01/08/2017 at 13:20 6 comments

      Hello again (and Happy New year to all! :-)

      Over the holiday break, I've been pondering what I could do to possibly revive this stalled project of mine..

      So, given I cannot obtain the parts I need for my current design I have therefore decided to look at redesigning my Ohm board using an FPGA from another manufacturer..

      Okay, we'll see what I can come up with now. Suggestions are also welcome! ;-)

      Cheers, Valentin

    6. Ohm/Ohm+ project retirement

      Valentin Angelovski12/17/2016 at 14:26 0 comments

      EDIT: *** 09/01/2017: This project is being considered for possible revival ;-) See Blog post titled "New year. New direction" Thanks!

      http://www.fleasystems.com/forums/showthread.php?tid=65

    7. Ohm project update.

      Valentin Angelovski12/07/2016 at 14:05 8 comments

      Hello again!

      **** EDIT 12/12/2016: Due to the fact I still have no ETA on availability of certain key parts (like the FPGA) for this project, I have decided to put my Ohm and Ohm+ projects on-hold indefinitely and do other things with my spare time. This includes my newly-completed Ohm+ board with DDR3 RAM. Apologies to those of you who were waiting for positive news, but I am afraid without parts I cannot do much - Valentin ****

      Just a thought I'd post a quick update on my Ohm project. Last weekend, I managed to successfully assemble and test my 'pre-production ready' revision Ohm board (yay!). My initial function tests show the board is behaving largely as expected but my tests are ongoing. Following is a 'happy snap' of the final assembled board:

      So far, I've successfully configured the above with Next186 (x86) and Sweet32 SoC softcores. With luck, I should be able to set aside some time to complete the functional testing on the board in the coming days. More to follow..

    8. Project delays and picking up where I left off..

      Valentin Angelovski11/15/2016 at 09:07 2 comments

      Hello everyone!

      It's been a long while since our last project news update. Progress had unfortunately stalled due to issues ranging from component availability to non-hobby matters.. :-(

      While I waited for matters beyond my control to resolve, I thought I'd have a decent crack at adding a 2nd USB host port to my Flea Ohm board. Didn't think it was possible.. but somehow I made it fit (yay! See below):

      Now, I had always intended my Ohm board to be a worthy successor for my earlier FleaFPGA Classic boards. This meant some means to add a PS/2 Keyboard and mouse as desired (thus making it backwards compatible with nearly all of the existing HDL projects implemented on the older board). Not having a 2nd USB host port with PS/2 secondary capability was something of a lament for me, hence my (successful) attempt..

      Now that my above-mentioned issues have now been resolved, I can now pick up where I left off two months ago.. :-)

      So here's my announcement: As soon as I have confirmed the above PCB to be functional (approximately 2 weeks from now), I will begin small-scale production of my Ohm board immediately thereafter. Pre-production Ohm boards may be ordered directly from me. Price will be set at USD$33 per board. Sales of pre-production Ohm boards will be limited to a maximum of two boards per customer.

      As for my Ohm+ board: I have yet to bring my Ohm+ board up to the same standard as my latest Ohm design. This is mainly due to the extensive modifications needed to include the second USB host port. Therefore I will make a separate announcement about Ohm+ at a later date.

      More to follow (and soon.. :-)

      Cheers, Valentin

    9. Flea 'Ohm' ready for small-scale production!

      Valentin Angelovski09/12/2016 at 08:36 1 comment

      Hello again!

      Well folks, it's been a few weeks since my last post. So I am posting an overall update on my hobby project(s) now..

      'Ohm' board development status: Ready for a small-scale production run!

      After adding numerous fixes to the PCB artwork, I believe the resultant new revision is good enough for a pilot production run!

      There are sufficient (as well as cool) HDL examples for potential users to 'kick the tires' on the 'Ohm' board, so to speak. More cool examples would be nice, but those can be added later.

      Only thing left to do now is wait for a reply from component suppliers and then work out the final board pricing. Good times! :-D

      'Ohm+' board development status: Board tested OK but needs a 'killer' HDL application example..

      Successfully tested the 128MB LPDDR RAM on the Ohm+ prototype @ 100MHz max. using CAS=2 (yay!). However, it does not meet timing at that rate nor does the test code support burst mode transfers (yet). Tweaked ram controller HDL needs more work before it will be viable for use in system application. Another (probably better and faster) alternative would be to use Lattice's own LPDDR controller IP, but apparently that is not free..

      After adding numerous fixes to the PCB artwork, this board revision is also good enough IMHO for a pilot production run! Apart from RAM, it is 100% backwards compatible with the standard 'Ohm' board (which uses 32MB low-power SDRAM instead of 128MB LPDDR).

      Summary: My 'Ohm' board is now ready for a small-scale production run. My 'Ohm+' PCB artwork is also ready but needs worthy working HDL examples to make it a viable platform. Therefore I will focus on taking the 'Ohm' board on to the next level, but also see what examples could be brought to Ohm+ as well as the Ohm...

      Well, that's all for now. As soon as I know how much these boards will cost to make, I will post another update (hopefully soon). Watch this space! ;-)

    View all 14 project logs

    Enjoy this project?

    Share

    Discussions

    Marcos Genaro wrote 05/27/2017 at 05:56 point

    Hello Valentin!

    I'm glad your project is back and alive! It's amazing, thank you so much for it!

    Do you intend to sell the Ohm Board anytime soon?

    Thank you!

      Are you sure? yes | no

    Valentin Angelovski wrote 06/05/2017 at 04:39 point

    Hello Marcos!

    Thanks so much for your interest and kind words :) Do check out my latest project log - if my latest PCB revision arrives working as intended I will consider that a production-ready board :) 

    At this point, I am considering doing an immediate limited run to see if there's some real interest - will reveal more details in the next project log. Thanks again!

    Valentin

      Are you sure? yes | no

    Antti Lukats wrote 05/11/2017 at 11:08 point

    what is MK2 form ?

      Are you sure? yes | no

    Valentin Angelovski wrote 05/11/2017 at 11:19 point

    Hello Antti! 
    My 'Mk2' reference relates to the fact I moved away from a raspberry pi zero form factor (and towards something with a more readily available FPGA and also a bit more growth potential :-). 

    Cheers, Valentin.

    PS: Interesting.. thought I had registered my 'like' for your C65 project but that doesn't seem to have occured - fixed! :-D

      Are you sure? yes | no

    jonathanscottjames wrote 02/24/2017 at 23:19 point

    what's the max 8 bit input rate of the gpio on flea ohm? and where can i guy one?

      Are you sure? yes | no

    Valentin Angelovski wrote 02/28/2017 at 03:28 point

    Hello! Good question. I've not tested maximum *input* data rates via the GPIO header yet, but suspect it may be in the ballpark of 100MHz (or possibly more, need to test). This is assuming the following:

    1.) Data transfer occuring via a direct board-to-board connection, not via a ribbon cable..

    2.) Single-ended data only i.e. not using the available lvds differential signal pairs which are also available via the main header and should provide much faster data transfer rates (again, needs further testing).

    As for buying an Ohm board: Unfortunately I've had to completely redesign my board, due to non-availability of the FPGA I had previously used in my initial prototypes :-/ Feel free to check out my latest blogs about it. Cheers.

      Are you sure? yes | no

    Lars R. wrote 11/15/2016 at 11:03 point

    How much data can you squeeze out of the HDMI?

    FHD@60Hz?

    FHD@90Hz?

    ...

      Are you sure? yes | no

    Valentin Angelovski wrote 11/15/2016 at 11:20 point

    Hello Lars and thanks for your question.

    Highest screen mode I've successfully attempted with the Ohm's video output was 1080p30 (i.e. 30Hz progressive). Of course, this means that anything below that i.e. 480p, 720p, 1024x768@60Hz etc. etc. should also work as well.

    I did make an attempt to output test video at 1080p50 (50Hz). Unfortunately the image quality did not appear entirely stable, presumably due to FPGA timing limits being exceeded by a significant margin. 

      Are you sure? yes | no

    D H wrote 11/05/2016 at 11:46 point

    A great project - two usage ideas

    (a) use the board to recreate sound chips such as NES, SID or a OPL3 for distinctive sounds - attach a music keyboard to the usb or the io pins

    (b) convert the cores from the MIST project (https://github.com/mist-devel/mist-board/wiki) for a wide variety of reimplemented consoles and computers

    Two questions:

    (i) can an audio jack be attached to the io pints?

    (ii) Can it load HDL fpga cores from the sd card (for easy conversion to another project) or can it only be converted using a pc?

      Are you sure? yes | no

    Valentin Angelovski wrote 11/09/2016 at 04:23 point

    @D H

    Thanks for your interest in my Flea Ohm project. 

    Regarding your suggestions: (a) I would love to see OPL3 added to Nicolae's Next186 SoC (alas I have not yet done it myself as I only know VHDL well). Apart from Amiga and x86, I did successfully attempt a port of an old build of C64 softcore (with SID) to my Ohm board. (b) My own personal free time is rather limited however, so any outside help in this regard would be welcome.

    My answers to your questions: (i) You would need to add an RC (or LC) filter circuit between the GPIO pin and your proposed audio jack. (ii) Currently, the FPGA's config ROM can only be altered via an external PC. By PC I also potentially mean a Raspberry Pi (zero?). I *think* the flea JTAG utility app. could be recompiled for ARM but I would need to confirm that.

    While it may be theoretically possible (assuming the user's hardware design allows it) to transfer a new config ROM image to the FPGA in "background mode" from the SD card, it would be somewhat tricky and cumbersome to implement. You would also need to cycle power to the FPGA in order for it to accept the new ROM configuration. 

    Cheers, Valentin

      Are you sure? yes | no

    dobredanielstelian wrote 10/04/2016 at 19:32 point

    Hi,

    Your board looks nice.

    I want to design one myself using Xilinx FPGA. I want to use Spartan 6 xc6slx25 or some equivalent Atrix 7.

    If you have any suggestions on what i should add on it, something that maybe you forgot and you wanted to add.

    Best Regards,

    Daniel

      Are you sure? yes | no

    Fredrik.c.johnsson wrote 09/18/2016 at 22:21 point

    hello,

    Love your work and need an FleaFPGA Ohm+ for a future Amiga projekt. Amiga in a joy (like the C64 in a joy butt WAY better).

    Any ideas on what it will cost? I reeeeeealy whant one ;-) 

      Are you sure? yes | no

    Valentin Angelovski wrote 09/20/2016 at 02:02 point

    Hello Fredrik!

    Thanks for your interest in my project and question. I also like the idea of an Amiga-in-joystick, but instead I built an "Amiga-cube" ;-) Picture of my "Amiga-cube" can be found in the gallery.

    Currently focussing on Ohm (not Ohm+) board production due to the following things it has going for it:

       1.) List of working HDL projects already ported to it.

       2.) Possibility exists for a "sub-USD$40" FPGA development board (still working this one out currently. More soon).

    Cheers Valentin

      Are you sure? yes | no

    Erik Piehl wrote 08/31/2016 at 06:36 point

    Great project! A quick question on the assembly: if I understood properly you self assembled the boards, is that right? I am just wondering how you dealt with the BGA packages? I am planning to make an FPGA board, and it would be great to be able to use BGA packaged chips - but I suppose it means going to a 4 layer board... And I don't have a reflow oven...

      Are you sure? yes | no

    Lars R. wrote 08/31/2016 at 07:08 point

    4 layer is not much more than 3 layer. And this is already tough for BGA: Vias consume the space below the package on the bottom layer. Assuming the 2nd layer being GND, your 3rd layer is for at least two VCC-voltages that connect to various balls, need to be routed to the package and require decoupling. So, it is hard to have a reference plane for signals on the 4th layer (bottom), which leaves you with one good layer for signals: top layer.

      Are you sure? yes | no

    Erik Piehl wrote 08/31/2016 at 08:41 point

    Thank you for the comments! I guess I am wondering how many layers in practice would be required for a board like this - is it doable with 4 layers or you think one needs more?

      Are you sure? yes | no

    Lars R. wrote 08/31/2016 at 08:59 point

    Erik, this highly depends on how 'intelligent' the pinout of the BGA is and what you need. I don't know the ECP5. In theory, with a very good BGA pinout, it is possible to connect LPDDR... with 4 layers. However, with the ICs I used so far, it was a pain even with 6 layers. If you are also satisfied with SDRAM with a reduced pincount interface or with Hyperram, you are probably fine with 4 layers or even less. However, for both options (reduced pincount SDRAM and Hyperram), there are no Hard IPs on current FPGAs.

      Are you sure? yes | no

    Valentin Angelovski wrote 09/07/2016 at 08:26 point

    Hello Erik! You are correct in that I assembled my flea Ohm prototypes by hand, but not without difficulties associated with various things.. including placement skill. I found that accurate hand-placement of a 0.5mm pitch BGA package or type 0201 SMD capacitors requires taking into account things like hand tremors as well as one's own heart beat! Tricky stuff...

    My advice would be to go with something like 1mm ball-pitch BGA imho. In addition to the easier assembly, these are normally a much cheaper option when you factor in the PCB tooling cost as well.

    Also, Lars was fairly accurate with his reply. Anyways, best of luck with your project. 

    Cheers Valentin.

      Are you sure? yes | no

    Erik Piehl wrote 09/08/2016 at 05:50 point

    Hello Valentin, thank you for your comments! I think it is impressive that you we're able to put the boards together by hand. I guess difficulties are to be expected when dealing with those fine pitch parts. I was previously thinking that BGAs are pretty much out of the question for hand built hardware, but clearly that is not exactly the case. Anyway for my next step I will probably stick to TQFP parts, as the Xilinx part XC6SLX9 I'm planning to use is available in that package. Going to bigger parts would automatically mean going to BGA, hence the question.

    Cheers, Erik

      Are you sure? yes | no

    KnivD wrote 08/11/2016 at 05:49 point

    Excellent! Me want :)

    When are you going to offer these on the market?

      Are you sure? yes | no

    Valentin Angelovski wrote 08/11/2016 at 10:48 point

    Hello and thanks for your question.

    I plan on testing my newly updated boards when they arrive next week (as shown in the diagram on my 2nd project log). Once the boards pass their functional testing I will look at what it might cost to do a production run of Flea Ohm boards.  Also note that I will ultimately be evaluating two board designs: FleaFPGA Ohm and Ohm+ :) Cheers.

      Are you sure? yes | no

    claude.schwarz wrote 08/18/2016 at 11:24 point

    Hello Valentin, you can count me in for a FleaFPGA Ohm+ :)

    Didn't have  much done lately with the FleaFPGA Uno, but I have some ideas in which the extra LEs and LPDDR RAM would come very handy 

    Oh and can you beef up the HDMI 5V output a bit? I had to add a wire from the USB connector 5V to the HDMI connector 5V out on the FleaFPGA Uno to get my HDMI2VGA adapter working with it

      Are you sure? yes | no

    Valentin Angelovski wrote 08/18/2016 at 15:35 point

    Hello Claude! It has been a while but good to hear from you! :) 
    Thanks for your suggestion - For the sake of compatibility it is a good idea. I was previously made aware of the issue through some recent online research (that unfortunately did not make it into these prototypes, but that is OK since there will likely be another PCB re-spin for various reasons). I will see to it that my next board revision have an auxiliary 5V feed to the video connector, among other incremental improvements. Cheers.

      Are you sure? yes | no

    Qiang Zhang wrote 08/10/2016 at 16:15 point

    Hi, Valentin, about the ADC, is it build into the FPGA or it requires extrac ADC chip?

    Bests!

      Are you sure? yes | no

    K.C. Lee wrote 08/10/2016 at 22:43 point

    Sounds like it is a sigma-delta ADC - probably single bit comparator using a differential input on the FPGA.  The rest is DSP math to get more bit in return of lower conversion speed.

      Are you sure? yes | no

    Valentin Angelovski wrote 08/10/2016 at 23:59 point

    Hello Qiang! As K.C. has suggested, the ADC is sigma-delta based with nearly all of the ADC's logic implemented in the FPGA using VHDL. As I did with my previous FleaFPGA Uno project, I included the external passive components on-board needed to complete each ADC circuit. Cheers.

      Are you sure? yes | no

    Qiang Zhang wrote 08/11/2016 at 02:46 point

    Interesting! 250M samples/second scares me. After second reading, it is for 1 bit but still impressive.

      Are you sure? yes | no

    Valentin Angelovski wrote 08/11/2016 at 03:20 point

    Just a reply to your comment about Flea Ohm's maximum ADC sample rate - my 250MSample/sec quote was purely theoretical (and not realistic in practice given the loop filter values used in the design - that's what I get for drawing my diagram late at night :-). I have since updated my diagram to provide more realistic possibilities with the ADC inputs.

    Further, these ADC inputs admittedly won't be quite as accurate as a dedicated external ADC, but for a good number of applications they'll probably do just fine. Cheers.

      Are you sure? yes | no

    Tim Ansell wrote 08/09/2016 at 04:06 point

    Do you have a schematic for the board? I'm interested in how the HDMI port is wired.

      Are you sure? yes | no

    Valentin Angelovski wrote 08/09/2016 at 05:52 point

    Hello Tim! I've not yet released schematics for flea Ohm (soon though), but you will find the video out interface to be virtually identical to that found on my FleaFPGA Uno board. More information on FleaFPGA Uno (including schematics) can be found here: http://www.fleasystems.com/fleaFPGA_Uno.html Cheers.

      Are you sure? yes | no

    Similar Projects

    Does this project spark your interest?

    Become a member to follow this project and never miss any updates