Working on DesignLab 1.0.3 release.


Jack Gassett

Recommended Posts

Hey Everyone,

 

Alvie and I are hard at work on the next DesignLab release, here is what we are adding:

  • Merged in the latest Arduino and ZPUino IDE changes. This gets us to Arduino 1.5.6 and pulls in a ton of Alvie's changes.
  • Can disable POSIX support to make smaller sketches.
  • Enabling DMA support for wishbone controllers
  • ZX Spectrum VGA controller library with Jet Set Willy example code. Uses DMA memory.
  • Alvie is going to town on a new VGA controller. The VGA controller allows us to specify different resolutions and color depths. It looks like the pro and the DUO should be able to do 480x640, 800x600, and 1024x768. The Pro has more memory bandwidth so may even be able to do 720p resolution, we will have to test more to see. We can change on the fly whether we are using RGB565 or RGB332 format.
  • The new VGA adapter will use the AdaFruit GFX library so you can use all of the functions provided with that library to program the new VGA controller.
  • There will be new basic building blocks for stand alone schematics such as counter's, bus converter, Papilio clocks, and dividers.
  • The new VGA adapter will be enable us to support HDMI and RGB panel output in the future, instead of just VGA.
  • We are also starting to think about how we can have an OV7670 camera module feed into the memory of the VGA adapter...
  • Alvie is also thinking about how to enable OSD display's on the VGA adapter.

Very cool stuff in the works right now!

 

Jack.

Link to comment
Share on other sites

  • Replies 104
  • Created
  • Last Reply

That panel will come in handy, we will have support for it soon.

 

Oh, and a couple other things that will hopefully make it in the next release:

  • Programmable frequency generator, lets you adjust the speed of a PLL using the wishbone bus.
  • Menu library to build a menu system for the VGA adapter.

Jack.

Link to comment
Share on other sites

Sounds awefull :-) Looking forward to it !

 

In the meanwhile I'm home again :-) (still need to take a lot of rest and keep everything at a slow pace)

Ooh well, I missed my electronics/programming addiction so hard, I started coding right away for my RGB LED matrix. (6 panels, good for 96x64 pixels - measuring almost 60 x 40 cm)

I wrote a converter that converts video files to raw-data files. I put these raw files on an SD card, and "play" this data to the RGB panels via Arduino code (SmartMatrix library)

The result is 20 fps, 100 Hz refresh rate, 16-bit coloring ...

The framerate is less then 1 percent off. (original Teletubbie video is 2m33s, mine is 2m31s while playing, will fix this when I got my extra panels, need to do some extra syncing after all while parallel processing data)

It's "hard" to captures this on video. In real-life the video is "flicker-free" and the colors are more "brilliant" ...

I think I need to find a tutorial on "capturing" this "thingy" on video in a beter quality. (for now, you just have to believe me that the quality in real life is better, LOL)

 

Teletubbies:

Wipe-out (just to show that speed/fps is OK):

 

My wife ordered another 6 of these panels as a Valentines' present, they should arrive on monday or tuesday.

My panel will be 128x96 pixels after that upgrade.

My birthday is also "upcomming" in april, she will buy me another 12 of these panels !
Eventually, I want this display to be 1m80 x 1m (almost 16:9 resolution with 288 x 162 pixels)

I hope I can keep the data-flow high enough :-) (I will need to implement some sort of compression, because my SD card / SPI interface will not be able to keep up the pace)

 

Next week, I will do "nothing", just keep some rest. After that, I hope I can start drawing again in Solidworks. Still need to make a slight adjustment on the Papilio Pro case,

and do some work on the Arcade MegaWing casing, and do some "design" for my German friend, Felix :-)

 

 

 

best regards,

Kris (happy to be home again - now looking forward to DesignLab 1.0.3)

Link to comment
Share on other sites

I just uploaded a beta version of the DesignLab 1.0.3.

http://forum.gadgetfactory.net/index.php?/files/file/234-designlab-beta/

 

This does not have the new VGA adapter but it has a 640_480 version.

 

Also included:

  • Multiple Serial Ports example - Using the new method to specify the wishbone slot.
  • Supports turning of POSIX support which makes the sketches bigger. If you want smaller sketches just add "#define NOPOSIX"
  • The zpuino_sigmadelta symbol is added per request. No examples yet.
  • Lots of behind the scene upgrades from merging Alvie's Arduino 1.5.6 port.

Jack.

Link to comment
Share on other sites

Sounds awefull :-) Looking forward to it !

 

In the meanwhile I'm home again :-) (still need to take a lot of rest and keep everything at a slow pace)

Ooh well, I missed my electronics/programming addiction so hard, I started coding right away for my RGB LED matrix. (6 panels, good for 96x64 pixels - measuring almost 60 x 40 cm)

I wrote a converter that converts video files to raw-data files. I put these raw files on an SD card, and "play" this data to the RGB panels via Arduino code (SmartMatrix library)

The result is 20 fps, 100 Hz refresh rate, 16-bit coloring ...

The framerate is less then 1 percent off. (original Teletubbie video is 2m33s, mine is 2m31s while playing, will fix this when I got my extra panels, need to do some extra syncing after all while parallel processing data)

It's "hard" to captures this on video. In real-life the video is "flicker-free" and the colors are more "brilliant" ...

I think I need to find a tutorial on "capturing" this "thingy" on video in a beter quality. (for now, you just have to believe me that the quality in real life is better, LOL)

 

Teletubbies:

Wipe-out (just to show that speed/fps is OK):

 

My wife ordered another 6 of these panels as a Valentines' present, they should arrive on monday or tuesday.

My panel will be 128x96 pixels after that upgrade.

My birthday is also "upcomming" in april, she will buy me another 12 of these panels !

Eventually, I want this display to be 1m80 x 1m (almost 16:9 resolution with 288 x 162 pixels)

I hope I can keep the data-flow high enough :-) (I will need to implement some sort of compression, because my SD card / SPI interface will not be able to keep up the pace)

 

Next week, I will do "nothing", just keep some rest. After that, I hope I can start drawing again in Solidworks. Still need to make a slight adjustment on the Papilio Pro case,

and do some work on the Arcade MegaWing casing, and do some "design" for my German friend, Felix :-)

 

 

 

best regards,

Kris (happy to be home again - now looking forward to DesignLab 1.0.3)

 

 

Wow! That looks really great! Is it done with a Papilio?

 

Jack.

Link to comment
Share on other sites

Indeed a Teensy (sorry to disappoint you, lol) I had this thing laying around for to long ...
Now that DesignLab 1.0.3 is out, I will start porting this thingy to Papilio Pro (can't be that hard), I'm sure the Papilio is a better candidate to drive these RGB panels.

(I'm sure the Papilio can keep up the "pace" better with the SPI / SD card then the Teensy does)

Also, when Alvie does his "magic" for the RGB LED panel wing and some examples come available, I'm sure we will get better performance :-)

(24bit, 120 Hz refreshrate, 25 fps is still my goal)

 

I'm off now, to excited about the new Designlab, time to play :-)

Link to comment
Share on other sites

Hi Jack, Hi Alvie,

 

Is there something special that needs to be done, to get VGA up and running ? (I want to use the VGA output on the Arcade Megawing)

I uploaded the Megawing circuit to my Papilio Pro, and was able to run the VGA wing examples (HQVGA that is).

I changed the define circuit for the megawing in to VGA640x480 example, but if I look at the serial output, I see "Device not found".

Also, when I try to run the VGA_ZXSpectrum, I don't see anything on my monitor.

 

Did I overlook some coding/settings, or do I need to try out another (older) monitor ? (all my monitors are 1920x1080 FullHD Philips Ambilight Monitors)

 

 

thanks,

Kris

Link to comment
Share on other sites

Ok, let me do a quick update on this:

 

I have been working together with Jack on a generic VGA interface, that can be used in DUO and other Papilio boards. The base design is working, and Jack will publish it soon in DesignLab.

VGA supports arbitrary resolutions, up to 2048x2048, with arbitrary pixel clocks, as long as RAM is fast enough.

 

VGA supports 2 pixel modes: 16 bit (RGB565) and 8-bit (RGB332). Note, that at this time, only RGB565 is fully tested, RGB332 will come later.

 

VGA supports halving H/V resolutions for less memory usage and less bw usage.

 

So far, we have successfully tested these modes with DUO and Pro (except TBC, but will work for sure)

 

DUO+Pro:

320x240@60HZ, RGB565 [doubled 640x480]

400x300@60Hz, RGB565 [doubled 800x600]

512x384@60Hz, RGB565 [doubled 1024x768]

640x480@60Hz, RGB332 (TBC)

 

Pro-only:

640x480@60HZ, RGB565 (also for DUO with 2MB)

640x512@60HZ, RGB565 (also for DUO with 2MB) [doubled 1280x1024]

1024x768@60Hz, RGB565

1280x1024@60Hz, RGB332 (TBC)

 

We'll keep you all updated.

 

Note that this is a generic VGA module, so you can even switch resolutions in runtime.

 

Alvie

 

[Edit: added new modes for DUO with 2MB SRAM, add 640x512, add notes]

Link to comment
Share on other sites

Hi Jack, Hi Alvie,

Is there something special that needs to be done, to get VGA up and running ? (I want to use the VGA output on the Arcade Megawing)

I uploaded the Megawing circuit to my Papilio Pro, and was able to run the VGA wing examples (HQVGA that is).

I changed the define circuit for the megawing in to VGA640x480 example, but if I look at the serial output, I see "Device not found".

Also, when I try to run the VGA_ZXSpectrum, I don't see anything on my monitor.

Did I overlook some coding/settings, or do I need to try out another (older) monitor ? (all my monitors are 1920x1080 FullHD Philips Ambilight Monitors)

thanks,

Kris

Kris, this is a beta release, I think the example for the 640x480 is not in right directory. Look under libraries/vga-640-480/examples for the sketch.

Link to comment
Share on other sites

Hi Jack,

 

I forgot to mention, I already moved the files to the correct location. (examples) So this is not the cause of my problem :-(

Nothing appears on my monitor, but is seems to be syncing to 800x600 - 72 Hz ... (otherwise, when a sample does not work, it switches back to the HDMI input of my intel NUC)

In the meanwhile I also tested it with a 7" TFT with VGA connection (800x480) I still had laying around ... Same result.

I know it's a beta, no problem on beeing a beta-tester ... I just need some guidance here :-)

Link to comment
Share on other sites

Hi Jack, indeed, the one with the HDMI class :-) I know I can't the HQVGA & VGA together, was just refering to the fact that HQVGA was the one that was working in the past and still is working, so my hardware seems OK, because that one initially also syncs at 800x600 ...

 

So, to be clear:

- VGA_640_480 is not working for me (this is the one with the HDMI class)

- VGA_ZXSpectrum is also not working for me (but I don't need this actually)

 

don't worry about the short replies, I know how it's like to answer messages on a phone, LOL :-)

don't rush, I can wait, still need to take my rest aan keep my pace slow ...

 

have a nice weekend,

Kris

Link to comment
Share on other sites

Hi Jack,

 

I've tried out the beta and it looks pretty cool. Couple of questions about the new SigmaDelta which looks great. Have you had a chance to test the code? I can't seem to get it working. Or if you have test bench or something similar that'll probably also help.

 

Thanks!

 

Here's an example of what I've tried. Am I missing something?

 
#include "SigmaDelta.h"void setup(){  //SigmaDelta    SigmaDelta.begin(WING_AL4, WING_AL5);}void loop(){  //SigmaDelta  SigmaDelta.setValues(65535);}
Link to comment
Share on other sites

The SigmaDelta library was depending on an embedded version of the SigmaDelta wishbone component that was also attached to a PPS/Flex pin. In order to free up all of the wishbone slots for maximum customization we are no longer embedding components in DesignLab. So for the SigmaDelta library to work you need a circuit with it. The circuit should connect the "Dual Channel DAC" symbol to any wishbone slot and then connect the dac outputs to Flex pins or directly to the pins that you want. Like this:

 

Connection to flex pins

post-29509-0-66140600-1424219113_thumb.p

 

Connected directly to pins:

post-29509-0-64822700-1424220167.png

 

Here is an example sketch that works with the Papilio Pro and DUO. The Pro has flex pins connected and the DUO has direct pins.

SigmaDelta_DAC-150217a.zip

Link to comment
Share on other sites

Also, I wasn't able to get SPI libraries to compile, like the Analog Wing example. I tried a fix to the code but while it compiled I'm not sure if the wishbone slot was correctly set up or if there was something else that went wrong. I know this is a beta, but figured I'd let you know. If there's an easy fix for that let me know, I can test out some of my other code.

 

Thanks

Link to comment
Share on other sites

Ah, so the question here is if the sigmadelta library can support multiple instances yet. We will have to ask Alvie how that would work to access multiple instances.

 

I'll check the Analog Wing example next, unfortunately a lot of the examples need to be updated for ZPUino 2.0. I'll keep updating them, I appreciate you letting me know about non working examples.

 

Thanks!

Jack.

Link to comment
Share on other sites

Hi Jack,

 

I tried your example and it works great. I tried modifying my circuit (disconnected the other wishbone peripherals) and it still didn't work. I've then modified your circuit you uploaded and disabled the flexible pins and tried to directly set them. This doesn't seem to work for the Pro. I'm attaching your SigmaDelta example with the Pro modified to WING_AL0 and WING_AL1. This doesn't work as is, but if you uncomment out the flexible pin assignment code it works once more. I'm wondering if the SigmaDelta code is not allocating the output pins correctly and defaulting to flexible pins only? Or maybe there's something going on with my installation...

 

As for the Analog Wing example - the problem is not the Wing code itself, but the SPIADC library. I think it has to be corrected for the updated SPI library, namely it should call begin() to use the DeviceRegistry instead of the current begin() mode that sets the wishbone slot, etc. I was able to get Analog Wing example to work that way but not in my circuit that has multiple peripherals so something else seems to be wrong like you mentioned (supporting multiple instances).

 

Thanks

SigmaDelta_DAC_2.zip

Link to comment
Share on other sites

So it looks like you missed the step of generating the bit file after modifying the circuit. Looking at you attached zip file I can see that the schematic file was edited on 2/18/15 at 2:51 but looking at the bit file shows that it was edited on 2/17/15 at 5:37. So it looks like you updated the schematic but never ran the "Generate Programming File" process to generate a new bit file based on your schematic. So the circuit you were loading was my old circuit that was connected to flex pins...

 

I ran the "Generate Programming File" and then loaded the newly generated circuit to the Papilio board and it worked as expected...

 

Jack.

Link to comment
Share on other sites

Boy, do I feel silly! Thanks Jack, that was indeed the problem. I've also verified that several DACs + SPI ADC works so I don't think there's an issue with the DeviceRegistry and multiple wishbone peripherals. As I mentioned earlier I had to update SPI and SPIADC but I did copy a more recent file off of github than what was in v1.0.3. I can upload those files here if you'd like, they are very simple fixes which you may have already corrected. The Analog Wing example works now in 1.0.3 as well as my own code which has the Analog Wing in a different slot.

 

May I also make a request to prevent silly users like me from some head scratching in the future? I noticed that DesignLab can detect when the PDF of the schematic (View Circuit) is outdated when compared to the actual circuit file (some examples in 1.0.3). Could you run a check during the Load Circuit function that does the same thing and notifies the user if the circuit file is newer than the bit file? (E.g. Did you forget to Generate the Programming File?)  ;)

 

I just need to verify the output voltages on the DAC; they seem to be a somewhat unexpected but I haven't looked much further than making sure they are nonzero at this point.

 

Thanks! 

Link to comment
Share on other sites

Archived

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