Can the propeller generate nice GUI graphics on one or two cogs?
rwgast_logicdesign
Posts: 1,464
in Propeller 1
Im about to gear up on a new project, Ive been very much in to microwave RF experimentation lately. I started designing a down conversion board for use with SDRs and scanners, the problem is I realized I didn't have any convenient way to build and test a dual 1ghz and 3ghz Local Oscillator unless I wanted to use a pretty pricey Analog Devices frequency synth that goes up to 4ghz. Not only will the chip raise the cost of my down converter considerably but it's phase noise is no where near what can be achieved by multiplying a lower frequency with mixers.
So I decided I want to build a little SI5351 1-200mhz clock generator board that is tcxo referenced, then use two AD9834 DDS chips (clock referenced to one of the 3 si5351 output) that can do square/sine/triangle up to 37mhz and a few VCO's at selected frequency's. The board is basically meant to act as a lower speed oscillator that will let me pick speed/waveform and single or quadrature oscillator output. This will allow me to use it directly for most thing in HF/VHF and make a good starting point to test mixers, frequency multipliers, etc.
So all this comes to one i2c for the si5351, two separate SPI ports for the DDS chips, a couple analog output pins for VCO's. I also want to use a i think an TTL serial port for a GPS I ordered an another SPI port for a real time clock. The GPS is so I can lock the TCXO down, Clock is so I can have a GPS clock lol. Anyways needing to run all these simultaneous serial buses in and out, the propeller naturally came to mind. I know the prop would be great for this stuff but I want the interface to be a 2.8 Spi Touch Display and a Quadrature Encoder with Button, there is just so many options (frequency, waveform, number of outputs, phase difference, amplitude) I dont think a 16 by X display is the greatest idea. Ive never worked with a graphics display before and ive had two seedstudio touch LCD "sheilds" sitting around forever. I guess im wondering is if the propeller is capable of doing a nice GUI with alpha smoothing, double frame buffering, etc. I don't want it to look like a pixelated dos menu. If it can do some decent graphics how many cogs will I need, im assuming the only ram I can get fast enough transfer from is the HUB?
One other thing i am a bit confused about is I spent a fair time teaching myself propeller assembly a while back but moved on to the psoc5 chips before doing anything with it. How does propeller assembly work if one chooses to use C instead of spin?
So I decided I want to build a little SI5351 1-200mhz clock generator board that is tcxo referenced, then use two AD9834 DDS chips (clock referenced to one of the 3 si5351 output) that can do square/sine/triangle up to 37mhz and a few VCO's at selected frequency's. The board is basically meant to act as a lower speed oscillator that will let me pick speed/waveform and single or quadrature oscillator output. This will allow me to use it directly for most thing in HF/VHF and make a good starting point to test mixers, frequency multipliers, etc.
So all this comes to one i2c for the si5351, two separate SPI ports for the DDS chips, a couple analog output pins for VCO's. I also want to use a i think an TTL serial port for a GPS I ordered an another SPI port for a real time clock. The GPS is so I can lock the TCXO down, Clock is so I can have a GPS clock lol. Anyways needing to run all these simultaneous serial buses in and out, the propeller naturally came to mind. I know the prop would be great for this stuff but I want the interface to be a 2.8 Spi Touch Display and a Quadrature Encoder with Button, there is just so many options (frequency, waveform, number of outputs, phase difference, amplitude) I dont think a 16 by X display is the greatest idea. Ive never worked with a graphics display before and ive had two seedstudio touch LCD "sheilds" sitting around forever. I guess im wondering is if the propeller is capable of doing a nice GUI with alpha smoothing, double frame buffering, etc. I don't want it to look like a pixelated dos menu. If it can do some decent graphics how many cogs will I need, im assuming the only ram I can get fast enough transfer from is the HUB?
One other thing i am a bit confused about is I spent a fair time teaching myself propeller assembly a while back but moved on to the psoc5 chips before doing anything with it. How does propeller assembly work if one chooses to use C instead of spin?
Comments
Im still curious though how is PASM and PropC integrated together, I want to get the code done as fast as possible so C and PASM are going to be the way to go, if I use spin im gonna have to go back and re read a bunch of language specific stuff. Can you inline assembly, can one cog run PASM while another runs C? As far as a memory model I want to keep everything small and tight in the propellers memory, but I want to pull graphics from some type of non volatile media and throw the in to sram where I can buffer them in to the Prop ahead of time, im not sure what memory model I should use for this. I have a few 1mb NVRAM chips that would work perfectly but since they are parallel interface I would have to add more complexity using either a CPLD or another PROP, I have a feeling that may get more complicated than pulling from flash/eeprom copying to ram and then copying to hub.
You have only 32Kbytes on chip, so you are going to struggle to hit "decent graphics" and avoid " a pixelated dos menu".
Eg Half that memory for Pixels, at 4bpp, supports around 181 x 181 pixels
That's probably enough for an Instrument Control interface, but if you really want to push up the pixels, maybe something like a FDTI Eve display controller ?
Another choice, if you want a challenge, would be to implement a HyperRAM display, on a P1.
100MHz, 64M (8M x 8 ), BGA24
http://www.digikey.com/product-detail/en/issi-integrated-silicon-solution-inc/IS66WVH8M8BLL-100B1LI/706-1466-ND
That 8MB completely smashes any Pixel RAM ceiling, and now the issue shifts to one of clocking, and R/W.
To give yourself options, a split design with 2 P1's would allow a RF/Display PCB split, and permit other displays to be used.
HW is P1 + Memory + LVC273 latch (if you want VGA option, LVC273 allows Video blanking during Write) to stream 8 bpp to either a LCD, or a VGA display.
A more modest solution point, would be to use 2 x QuadSPI SRAM (20MHz, 256kx4 each, TSSOP8)