Pipistrello - "Papilio on steroids"


magnusk

Recommended Posts

If you use the PSRAM as a static memory it has interpage access times of 70ns. Do you use it in synchronous mode then?

Are there any samples available on how to do that? Using it in asynchronous mode is easy, but I never used it in synchronous mode.

edit: Nevermind, I just found this: http://www.pld.ttu.ee/~vadim/tty/IAY0570/video_pipeline/

A Picoblaze which uses the PSRAM as a framebuffer.

Link to comment
Share on other sites

  • 1 month later...
  • Replies 65
  • Created
  • Last Reply

Takes me back .. remember VRAM? http://en.wikipedia.org/wiki/VRAM

If you use the PSRAM in synchronous mode to load up an internal RAM block, I guess that you effectively lock out the other port so the processor may pause, waiting for the synchronous read to complete. You might need to use an interrupt service to sync up the processor activity to the vertical blanking interval ..

Link to comment
Share on other sites

  • 4 months later...
Pipistrello came about as I needed a board with HDMI interface, lots of RAM for buffering, high-speed USB for data streaming and SD-card for data storage. In the past I have used the Papilio boards and really like them but for this project I needed something like a "Papilio on steroids". The Papilio Plus sounded interesting but wasn't available when I started this project and did not have any of the needed interfaces on-board. The Avnet LX9-microboard was also a possibility but the limited user-I/O and the lack of HDMI on-board killed that idea.

So the only option left was to make my own board - basically merging the fpga and LPDDR from the LX9-Microboard with the formfactor, wing interface and tool-set from Papilio, then adding all the needed interfaces on-board (and then some more to make it more interesting). The biggest challenge was the 324-ball BGA package which forced me away from the hobbyist PCB vendors (like Seeed studio and OSH Park) to the more traditional (and expensive) PCB vendors that offers the PCB geometry needed for this board (5 mil trace width/spacing, 8 mil holes, 4-layes).

In my professional life I have used PCB Universe (http://www.pcbuniverse.com/) for many boards with great success and they have very reasonable prices and an on-line quote and ordering system so it's easy to place an order (disclamer: I have no business interest in PCB Universe, just a happy customer). The quote for this board was $450 for 50 boards, more than I like to spend but still a bargin compared to other options.

So far all circuits on the board have been tested OK except for the USB host interface which really need Linux up and running first. The board came out perfect - no cuts or jumpers needed so far.

pipi2-25.JPG

Read more about the board features here:http://pipistrello.saanlima.com

My plan is to make this an open-source project once all features on the board have been verified.

Magnus Karlsson

Saanlima Electronics

This post has been promoted to an article

http://pipistrello.saanlima.com

 

Can not download?

 

Link to comment
Share on other sites

  • 2 weeks later...

I stumbled upon Magnus' Pipistrello Rev 2.0 today via Hamsterworks... a Spartan 6 LX45 board with HDMI?!? "Shut up and take my money!" was pretty much my first thought (unless the price is totally stratospheric of course). I've had my eye on the '45 (I'd like to have room for some "future-proofing" and perhaps the ability to emulate more than a few devices at once), the HDMI would be really sweet and the massive RAM would be nice as well!

 

I'm surprised there's not been more discussion of it here. I pinged Magnus to learn more... it'd sure be nice to be able to work with one of these, and nicer still if you started carrying it here.

Link to comment
Share on other sites

I'm totally fine with it, I see the forums as a FPGA resource so please don't feel like you have to hold back from discussing other FPGA boards. I fully support the Pipistrello and I would gladly sell it in the Gadget Factory store if it was available.

 

I even went so far as to reach out a couple weeks ago and touch base with my manufacturing partners asking about the viability of manufacturing a BGA design such as the Pipistrello. I wanted to double check to see if anything had changed since the last time I tried to do a BGA design.  I received a resounding "No", with my existing relationships a BGA board is just too risky for my manufacturing partners. Up front costs are too high and reworking a BGA is too difficult so they are not willing to take such a risk.

 

They only way I see Gadget Factory manufacturing a BGA design is if we can grow to the point where we can afford a large up front investment.

 

It's a bummer, I've been dreaming of a Zynq based design...

Jack.

Link to comment
Share on other sites

Well Gadgetfactory and this forum is geared towards Papilio boards which is what Jack sells. I'm not sure what the official stance is on discussing alternative (competing?) products.

 

Had I not found this thread here and seen the active discussion I probably wouldn't have brought it up, but I took that and Jack's comments earlier in the thread as positive signs that discussion of this are OK and even encouraged.

It'd be self-defeating to say "No, let's not discuss other open-source Papilio-friendly boards here!", especially ones with unique specs and feature sets that aren't currently available here. It shows interest, which is a sign of possible demand. It's like getting market research for free. Fostering open-source innovation by fellow devs is a win-win situation.

 

Link to comment
Share on other sites

Wow, I haven't noticed the sudden activity on this thread.

 

I agree with Jack, the economy to market a board like Pipistrello is not very good.  The component cost alone (parts and the PCB) for the LX45-3 version is about $100/board for a batch of 50 boards.  The assembly of a board like this at volumes like this is about $35/board, then comes testing and possibly rework etc for defect boards.  To make any money the board needs to sell for close to $200 but I don't think the hobbyist market will support that.  I have been selling pre-production boards for $140 just because I want to make a board like this available but it's obvious that this is a hobby of mine and not a money maker at this point, so I don't think Jack needs to be worried :)  It would be different if Xilinx supported makers of boards like Papilio and Pipistrello but no luck so far.

 

Hey Alex, you didn't mind when I posted code updates from Pipistrello to fix the Papilio Loader for Papilio Pro ;)

Link to comment
Share on other sites

Well Gadgetfactory and this forum is geared towards Papilio boards which is what Jack sells. I'm not sure what the official stance is on discussing alternative (competing?) products.

 

Everyone, please don't take Alex's comment the wrong way. I don't think that Alex was saying not to discuss other FPGA projects, I think he was just politely saying that I might not be O.K. with that because I'm trying to make a living selling Papilio boards. I took it more as a request for clarification as to whether it was ok to talk about other boards then it was him saying not too. It prompted me to clarify that I am indeed fine with discussions about other boards, which may not have occurred to me without prompting.

 

Alex has contributed a ton of useful code and examples to the Papilio community so please don't lash out at him, the last thing I want is for anyone to be alienated from the Papilio community. Thank you all for understanding that I want to ensure the tone here remains positive.

 

Wow, I haven't noticed the sudden activity on this thread.

 

I agree with Jack, the economy to market a board like Pipistrello is not very good.  The component cost alone (parts and the PCB) for the LX45-3 version is about $100/board for a batch of 50 boards.  The assembly of a board like this at volumes like this is about $35/board, then comes testing and possibly rework etc for defect boards.  To make any money the board needs to sell for close to $200 but I don't think the hobbyist market will support that.  I have been selling pre-production boards for $140 just because I want to make a board like this available but it's obvious that this is a hobby of mine and not a money maker at this point, so I don't think Jack needs to be worried :)  It would be different if Xilinx supported makers of boards like Papilio and Pipistrello but no luck so far.

 

Hey Alex, you didn't mind when I posted code updates from Pipistrello to fix the Papilio Loader for Papilio Pro ;)

 

Magnus, thank you for dropping by and once again thank you for making the Pipistrello design available. I enjoyed looking it over and actually learned quite a bit from it, I will be putting some of the things I saw in your design in my bag of tricks. :) I actually wanted to ask you if you manually routed the impedance controlled lines or did you use some kind of automated tool? I thought that maybe you used the differential routing ability that was recently added? Or some other method that I'm not even aware of!

 

Your updates to the Papilio Programmer came at a great time as the Papilio Pro was launching and saved me a great deal of stress and time, so thank you for that as well!

 

If you ever do work out manufacturing of the Pipistrello we would be honored to carry it in the Gadget Factory store.

 

Finally, this forum and Papilio resources are first and foremost for all of you, the Papilio community. So please feel free to discuss other boards and such, if it benefits the community then I'm all for it. For boards like the Pipistrello I would even be willing to make a dedicated category in the forum for it. Magnus, if that is something you would like then just let me know, I'll set it up.

 

Thanks,

Jack.

Link to comment
Share on other sites

I'd click "like" on your post there, but admin's don't apparently get a like button for their posts...

I didn't take what Alex said as anything other than an effort to avoid having discussion of other devices impinge on your interests as site owner and businessman, but clearly you're not annoyed about it so it's all good. Kudos for your continued earnest support of the community - the true spirit of open source and open design!  :)

Link to comment
Share on other sites

Nice one Jack, you're a pretty cool guy. I have in the past seen other board operators try and squash any discussions on competing products. It's good that you have clarified your position and this is yet another thing that makes this forum a nice place to hang out in.

 

I was pretty close to buying a Papillio Pro when Magnus came out with Pipistrello v2 so I went for that instead due to it using a fast LX45 (speed grade 3 no less!) FPGA, I actually feel bad for not buying a Papilio Pro and help Jack out financially especially since he's been kind enough to give me free stuff in the past, like a prototype Papilio Plus. Had it not been for that donation, I'd not have been able to finish the Bomb Jack game which absolutely needed an external SRAM. Despite having a Pipistrello I still regularly use my Papilio Plus because you just can't beat a 8 to 10 ns access time SRAM.

 

As an example I was trying to "port" the Bomb Jack game to the Pipistrello and have it use the external DRAM for storage of the video ROMs. While this was possible on the Papilio Plus with the fast SRAM it turned out that it couldn't be done on the Pipistrello, even though the DRAM can stream sequential data really fast (800MiB/sec in theory), when you try to do random access you incur a big time penalty having to write the address to the MCB then wait for the new data to be available, with a 50MHz MCB clock this can take 10 clock cycles or more if you're unlucky enough to need a new row precharged and the controller is in the middle of a refresh...

 

Fortunately the LX45 on the Pipistrello has heaps more internal BRAM than the LX9 so I was able to bring all the ROMs inside the FPGA. The latest update of the game supports both platforms now including HDMI output from Pipistrello thanks to Mike's example DVID code.

Link to comment
Share on other sites

Yes, way cool Jack!  I would love to have a dedicated category in the forum.  We should talk more our future plans.

 

Sorry Alex, I didn't mean to come off sarcastic, I just wanted to point out that I'm actually also a supporter and fan of the Papilio platform and wants Jack to succeed just as much as anybody else.

Link to comment
Share on other sites

Did you install CadSoft EAGLE and use EAGLE to open the schematic?
dvid test vhdl?

      -- Clock in ports

      CLK_50           : in     std_logic; 50MHZ

      -- Clock out ports

      CLK_DVI          : out    std_logic; <--?MHZ

      CLK_DVIn         : out    std_logic;<--?MHZ

      CLK_VGA          : out    std_logic<--?MHZ

 

Thank you

Link to comment
Share on other sites

If you are using my DVI-D code that uses DDR outputs then the CLK_DVI & CLK_DVIn need to be 5x the frequency of CLK_VGA:

 

 

      -- Clock in ports
      CLK_50           : in     std_logic; 50MHZ
      -- Clock out ports
      CLK_DVI          : out    std_logic; -- 125MHZ
      CLK_DVIn         : out    std_logic;-- 125MHZ, 180 degree phase shift
      CLK_VGA          : out    std_logic -- 25MHZ for 640x480@60Hz

 

I've updated the original source in my Wiki with that too!

 

Mike

Link to comment
Share on other sites

If you are using my DVI-D code that uses DDR outputs then the CLK_DVI & CLK_DVIn need to be 5x the frequency of CLK_VGA:

 

 

      -- Clock in ports

      CLK_50           : in     std_logic; 50MHZ

      -- Clock out ports

      CLK_DVI          : out    std_logic; -- 125MHZ

      CLK_DVIn         : out    std_logic;-- 125MHZ, 180 degree phase shift

      CLK_VGA          : out    std_logic --v25MHZ for 640x480@60Hz

 

I've updated the original source in my Wiki with that too!

 

Mike

Thank you ++++ :) :)

Link to comment
Share on other sites

Yes, way cool Jack!  I would love to have a dedicated category in the forum.  We should talk more our future plans.

 

Ok, this is great, I just created a shiny new category for the Pipistrello and moved this topic into it. Everyone that has one of these boards please feel free to use this resource for discussion. Ultimately it benefits the Papilio community so I'm happy to see it here.

 

Also, here is a little teaser... I had lunch this weekend with one of my manufacturing partners who made a trip to Colorado from China and got some exciting new news! Last time I asked for their help manufacturing a BGA board they were not manufacturing any BGA boards themselves which was one of the major factors for the high costs. Now they have a very successful, high volume, BGA design on the market which means they are now in a position to help me out with low volume BGA designs. This is very exciting and if Magnus and I can talk offline and work out an agreement then the Pipistrello might be the first BGA design they can help us with. There are a lot of question marks and unknowns here, but at least there is a clear and possible path now that might allow us to bring BGA designs, like the Pipistrello, to the Papilio community.

 

Jack.

Link to comment
Share on other sites

Everyone, please don't take Alex's comment the wrong way. I don't think that Alex was saying not to discuss other FPGA projects, I think he was just politely saying that I might not be O.K. with that because I'm trying to make a living selling Papilio boards. I took it more as a request for clarification as to whether it was ok to talk about other boards then it was him saying not too. It prompted me to clarify that I am indeed fine with discussions about other boards, which may not have occurred to me without prompting.

 

Alex has contributed a ton of useful code and examples to the Papilio community so please don't lash out at him, the last thing I want is for anyone to be alienated from the Papilio community. Thank you all for understanding that I want to ensure the tone here remains positive.

 

 

Magnus, thank you for dropping by and once again thank you for making the Pipistrello design available. I enjoyed looking it over and actually learned quite a bit from it, I will be putting some of the things I saw in your design in my bag of tricks. :) I actually wanted to ask you if you manually routed the impedance controlled lines or did you use some kind of automated tool? I thought that maybe you used the differential routing ability that was recently added? Or some other method that I'm not even aware of!

 

Your updates to the Papilio Programmer came at a great time as the Papilio Pro was launching and saved me a great deal of stress and time, so thank you for that as well!

 

If you ever do work out manufacturing of the Pipistrello we would be honored to carry it in the Gadget Factory store.

 

Finally, this forum and Papilio resources are first and foremost for all of you, the Papilio community. So please feel free to discuss other boards and such, if it benefits the community then I'm all for it. For boards like the Pipistrello I would even be willing to make a dedicated category in the forum for it. Magnus, if that is something you would like then just let me know, I'll set it up.

 

Thanks,

Jack.

 

To answer your question about the routing, this board was manually done in Eagle 5.  The meandering part is actually very easy to do, you just have to select the grid based on the trace width/spacing you are using.  In this case the traces are 5 mils wide and I use .1 mm grid.  To make a u-turn you just go diagonal one step, then straight one step, then another diagonal step and then continue straight again.  That will make the center-to-center trace distance = .3 mm or 12 mil.  So with 5 mil trace width, the gap between the traces is 7 mil.

 

The lenght of the traces are reported in Eagle by typing the command "run length <signal group>" on the command line.  For example, to report the length of the DQ lines, type "run length LPDDR_DQ*" and you see a table with all the wire lengths and the difference from the shortest trace.  The longest trace in the group should be the one without any meandering and the rest should have meandering added to match the length of the longest trace in this group.  You might need several groups, for the LPDDR the DQ lines are one group, the A lines are another group etc.  You adjust the lengh of a trace by moving a "u-turn" one or several grid steps, each step will add or reduce the trace length by .2 mm if the grid is .1 mm.  After moving a "u-turn" you can verify the result by re-running the last command using up-arrow and then hit return.  Also note that before a trace is routed the length command will tell you the unrouted distance = the direct distance between the two points you need to connect, so base on that you can do a rough guess on how much meandering you need to do for the initial routing of the trace.

Link to comment
Share on other sites

Ok, this is great, I just created a shiny new category for the Pipistrello and moved this topic into it. Everyone that has one of these boards please feel free to use this resource for discussion. Ultimately it benefits the Papilio community so I'm happy to see it here.

 

Also, here is a little teaser... I had lunch this weekend with one of my manufacturing partners who made a trip to Colorado from China and got some exciting new news! Last time I asked for their help manufacturing a BGA board they were not manufacturing any BGA boards themselves which was one of the major factors for the high costs. Now they have a very successful, high volume, BGA design on the market which means they are now in a position to help me out with low volume BGA designs. This is very exciting and if Magnus and I can talk offline and work out an agreement then the Pipistrello might be the first BGA design they can help us with. There are a lot of question marks and unknowns here, but at least there is a clear and possible path now that might allow us to bring BGA designs, like the Pipistrello, to the Papilio community.

 

Jack.

I think our posts just crossed each other.  Thanks for setting up the Pipistrello category, I will shortly post about a Microblaze port of Arduino 1.5.2 for Pipstrello and potentially also for Papilio Pro.  It uses the 5-stage 32-bit Microblaze soft core at 100 MHz and the build flow is patterned after the Due flow in 1.5.2. 

 

 As for the BGA assembly info, this is very exiting news and I'm definitely interested in learning more about it.

Link to comment
Share on other sites

I think our posts just crossed each other.  Thanks for setting up the Pipistrello category, I will shortly post about a Microblaze port of Arduino 1.5.2 for Pipstrello and potentially also for Papilio Pro.  It uses the 5-stage 32-bit Microblaze soft core at 100 MHz and the build flow is patterned after the Due flow in 1.5.2. 

This will be great. :) Do you have a Papilio Pro board? If not we should get you one.

 As for the BGA assembly info, this is very exiting news and I'm definitely interested in learning more about it.

I sent you an email, if you do not see it then please PM me.

 

Jack.

Link to comment
Share on other sites

Sure, I can dig up more information about the size etc. but since area is not a concern in the LX45 chip all performance vs. area knobs are turned for performance.  It also has a 64-bit multiplier and a barrel shifter but no MMU nor FPU.  It has cache for both instructions and data in SDRAM but I forgot the actual size.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.