Probably a stupid question ... 2xQuadSPI support.
jazzed
Posts: 11,803
Can any MCU besides Propeller read/write 2 QuadSPI chips simultaneously?
Comments
BTW, the Blackfin is also quite a bit more expensive. Its IDE is infinitely more expensive.
Curiously, Leon, the same thing applies here: "You might just be spending months making everything work in synchrony."
The Atmel XMega's timers claim to do this, and some other vendors have state-engine support around the timers, so the support is not always called Quadrature Counting.
Then you have the Asym-dual-cores, like NXPs M0/M4 pairing, and Freescales XGATE
Or, you can use a CPLD, if you need speed and precision...
LEON and jmg, can you point to specific demo code or app notes where 2 QuadSPI chips are being used in parallel to form an 8 bit bus with a chip select and clock that can be read/written by the processors? This description is a little different from the first post, but this is more precisely what I meant.
@User Name, the code to do this for Propeller was indeed a very fast development effort.
I can post my examples if that helps anyone.
Oops, I miss-read the QuadXXX to be Quad counting. Brain fade.
For QuadSPI, that is new on uC, but ISTR a NXP upper-end variant claiming Dual QuadSPI capability ?
More suppliers are starting to think about Execute-In-Place that QuadSPI can allow, but I have not seen QuadSPI SRAMs yet.
Cypress had something in a press release, but no devices yet ?
NXP has the LPC1800 Cortex-M3 device with a QuadSPI interface, and the dual-core LPC4000 devices also have one. They run at 40 MHz.
Jazzed,
I didn't say that QuadSPI devices had been interfaced to an XMOS device, just that it should be feasible.
What are the QuadSPI devices that you interfaced to the Propeller? What speed do you get?
So you don't intend to favor us with an example or app note even in a http link?
That helps Except that the LPC1800 has only one QuadSPI interface.
LPC4000 has two QuadSPI interfaces, but it is unclear if they can use 2 chips for simultaneous access.
I'm using 2 W25Qxx devices. Rayman has drivers for the ST series SQI devices.
http://ics.nxp.com/literature/leaflets/microcontrollers/pdf/lpc18xx.pdf
What speed are you getting?
What are the actual devices you used? I'll order a couple and see what I can do with one of my XMOS boards. Digi-Key seems to be the only source for the Winbond parts.
The maximum data rate from pins to hub vs-a-vs for propeller in one COG clkfreq/16. ARM with a special interace would trump that pretty easily.
Anyway, as far as I can tell no other MCU can do what I described yet
You have the part numbers Leon. Let me know when you're finished.
I see that Digi-Key has plenty of the W25Q16BVSSIG , I'll get those. XMOS has an interesting new chip that Digi-Key should have in stock in a few days, I'll make the order up with some of those to avoid shipping costs.
That's what I'm using on SpinSocket-Flash
I'm getting about 48Mbps read rate at 96MHz.
Whether it is better to impose time-sharing on a single core or leave the allocation of processor resources up to the programmer (as is done in conventional single-core microcontrollers) is an interesting question. No doubt the quest for determinism is part of the logic behind the XMOS approach. Yet the more external events an XMOS chip has to handle, the more this determinism suffers, time-slicing not withstanding. XMOS users point out that the jitter is small, and much less than on conventional interrupt-driven processors. Meanwhile, XMOS, Inc. prefer to dispense with the word 'deterministic' entirely and replace it with 'predictable'.
So, the good news is that we have a lots of choices! So much depends on the application. IMHO, I don't think there is a processor in the world that makes perfect clocking of complex I/O as simple to achieve as the Propeller. If what you really need are multiple CPUs, nothing beats multiple CPUs. The miracle that Chip seems to have achieved is finding the right degree of coupling between them - at least for embedded control applications.
In reference to the quest of the OP, I'm sure a single-core XMOS chip can deliver adequate timing, ultimately. In the process, the XMOS chip will gain useful external storage and this storage might benefit heater's XZPU. So it's all good. It would be even better if the entry fee to give it a whirl weren't so high.
A processor might have four phases of execution of a single instruction, like:
1) Instruction Decode
2) Register Read
3) Execute
4) Result write
So it takes 4 clocks to dispatch one instruction. How can we speed this up?.
Use a pipeline, have 4 instructions in flight through the CPU at a time. This is a common approach but suffers from pipeline stalls when you hit a jump instruction. all of a sudden you have to flush the pipe and start again. This impacts performance and execution determinism.
Or you could have 4 threads being executed simultaneously, at any given moment an instruction from each thread is in some phase of execution.
This gives you deterministic timing, and keeps your CPU pipe full at all time for maximum performance.
This is what XMOS does and also IBM in their 1.6 Billion transistor 16 core, 256 thread PowerEN chip.
Do you mean the TQFP48 packaged XS1, or something that really is an interesting new chip ?
I placed my Digi-Key order yesterday, I should get the Winbond Quad SPI chips on Wednesday.
I've designed a breakout board for the chip, the schematic and PCB layout are attached. It's intended for use with a 0.64 mm square header and socket.
I could get a batch of boards made, if anyone is interested.
Have you posted the code that can do it on the propeller? How many cogs does it take?
What performance can you get from it?
Is the nibble mode on SDcards the same?
Thanks,
Doug
He mentioned the performance. It's rather slow at 5 MHz for an 80 MHz clock, with NXP achieving 40 MHz with their ARM Cortex devices. They do it in hardware, though.
Nibble mode on an SD card is completely different, see the data sheet.
The interface needs 10 pins with P0..7 for data and 2 pins for CS/CLK.
A single COG programming and buffered read driver is available.
Flash to HUB read performance is the best achievable with Propeller.
SpinSocket-Flash modules run at 96MHz clkfreq so buffer reads are 6 MBytes/s.
The idea was originally introduced in the SpinSocket thread.
Details of how the driver works and rough code is posted here.
The SpinSocket-Flash modules are available with 4MB of Winbond W25Q flash.
SpinSocket is a 32 pin DIP socket stackable module series.
A 256KB SRAM board and several SpinSocket-Flash versions available.
I've been working on a driver for a SpinSocket-Flash/SRAM module.
The Flash/SRAM module will have 1 QuadSPI Flash and 1 single bit SPI SRAM.
XBASIC is available for running programs that are stored in Flash.
XBASIC can also run on any simple Propeller configuration.
XBASIC is an ongoing development by David Betz that targets many MCUs.
ZPU is an effort to create a general-purpose C engine out of an embedded controller. No flavor of heater's ZPU requires or even benefits from exact timing. 10 ns here or there wouldn't be noticed. So, for his purposes the two approaches are 'identical' even though they aren't really identical. XMOS themselves admit their processors are predictable rather than deterministic, and that I/O activity makes prediction more difficult.
The Propeller is first and foremost an embedded controller. In that application it excels. That it can be pressed into other service with adequate results is interesting/amusing/curious. You pick.
Where has XMOS stated that their processors are non-deterministic, and that I/O activity causes problems?
I did not use the words "causes problems." Once again, you are choosing to prevaricate. I said that I/O activity makes the job of timing prediction more difficult. It is axiomatic that in those applications which do not require prediction analysis, like ZPU, no difficulty of this particular sort is encountered.
The XMOS architecture maintains determinism (including I/O) across threads, cores and chips, connected by channels and XLinks. That can't be done with any other architecture, AFAIK.
Curiously, the author of this post was some guy named Heater.