If the IC is to boot from directly connected USB etc, then could the inputs be made bomb proof ?
I have to fix a lot of Firewire things that have suffered static, sometimes it means the complete PCB has to be changed. A lot of those cost >£500 now. A sacrificial buffer would be a PITA but lower the number of blown Prop IIs, the lower the number of tears.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Style and grace : Nil point
Post Edited (Toby Seckshund) : 11/24/2009 12:57:53 PM GMT
Okay, so this pull-up requirement is pretty simple. I can't imagine the USB circuit on the other end would see anything different if that pull-up were built inside the Prop II versus outside and discrete.
BTW, you probably already read this, but each pair of adjacent Prop II I/Os has a high-speed comparator between them that can toggle at 50MHz. If we add the internal 1.5k resistor, we've got it all, except for those two external impedance-control resistors. Those would be a pain to add internally because you'd need build another set of high-current drivers with resistors after them, with everything following the ESD layout rules, since the impedance would be under 300 ohms. Better leave those outside, anyway, as it just feels safer.
If the IC is to boot from directly connected USB etc, then could the inputs be made bomb proof ?
That's why those two impedance-control resistors (probably 47 ohm) will be done with discretes OUTSIDE the chip. I don't like the idea of the Prop getting connected straight into anything with a cable. There should be some series resistors in such instances. There ought to be a law!
Chip Gracey (Parallax) said...
Okay, so this pull-up requirement is pretty simple. I can't imagine the USB circuit on the other end would see anything different if that pull-up were built inside the Prop II versus outside and discrete.
BTW, you probably already read this, but each pair of adjacent Prop II I/Os has a high-speed comparator between them that can toggle at 50MHz. If we add the internal 1.5k resistor, we've got it all, except for those two external impedance-control resistors. Those would be a pain to add internally because you'd need build another set of high-current drivers with resistors after them, with everything following the ESD layout rules, since the impedance would be under 300 ohms. Better leave those outside, anyway, as it just feels safer.
I did have trouble when I had it wired that way, but it was a year or two ago and I'm stuffed if I can remember what the problem was. You are right, logically it should make no difference.
I might have to re-wire one of my USB slave boards and run some experiments.
Personally I'm a little unsure of adding a 1.5k pull-up unless you are talking about only putting it on the usb pins. I'd rather have a switchable high impedance pull up (10-100k) on each IO pin and just use one extra pin for the pull up resistor. That way you can put it on D+ or D- as you need and you are already adding the series resistors, so it's only one extra above the two you already require.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
BradC, these internal 1.5k pull-ups would be on every pin just for USB usage. There will also be internal 10k pull-up/down resistors for normal I/O use.
Chip Gracey (Parallax) said...
BradC, these internal 1.5k pull-ups would be on every pin just for USB usage. There will also be internal 10k pull-up/down resistors for normal I/O use.
Excellent. I'll take two please.
It still seems like using a hammer to crack a walnut when we still need the 2 external series resistors. Extra registers, extra logic just to save one external resistor?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
OBC, do you really want me to say it again? Okay... the Commodore 64's ROM was an atrocious pig stye. Coming from the Apple ][noparse][[/noparse], I was actually quite shocked. There was a universe of difference between what Wozniak had written and what who-knows-who had done in the C64. Had the C64 been given a better ROM that supported the graphics and sound hardware through a nicer built-in BASIC, it would have been 10x the machine to the average owner. In the end, programmers sussed out the performance through pure assembly coding and floppy driver-code replacement, but it was a shame that it was so hobbled by its poor built-in software. I had developed a cross-assembler system that used the Apple ][noparse][[/noparse] as a host machine, and a cable from its game port went to an expansion card in the C64. The most-used "key" on the C64 was the power switch - off and on all the time. The Apple ][noparse][[/noparse] stayed awake and downloaded code over and over into the C64. I was 14 when designed that system and I sold over 300 of them to Sega, Williams, Activision, and others. I remember riding my bike to the convenience store (in 1982) and filling out the UPS forms to send them all over the country. I used that system to design the ISEPIC. Okay, enough nastalgia. We're in the complicated 21st century now.
Okay, but just one more little bit of nostalgia...
I looked up an old ISEPIC manual and found the following in the "Legal Notices" section: "Chip Gracey (C) 1967 Mr. & Mrs. Gracey."
BradC said...
It still seems like using a hammer to crack a walnut when we still need the 2 external series resistors. Extra registers, extra logic just to save one external resistor?
IMHO the important thing is the pin, which you save, not the resistor.
And you can switch between Low- and Fullspeed per software, without resolder a resistor.
It still seems like using a hammer to crack a walnut when we still need the 2 external series resistors. Extra registers, extra logic just to save one external resistor?
Au contraire! It saves an I/O pin and keeps the boot-up communication pins limited to just TWO (RX/TX or DP/DM). Helps us sleep better.
BradC said...
It still seems like using a hammer to crack a walnut when we still need the 2 external series resistors. Extra registers, extra logic just to save one external resistor?
IMHO the important thing is the pin, which you save, not the resistor.
Well, yes.. I guess I can see that, but if there are 96 of them losing one does not seem that onerous.
I guess it just seems like a lot of extra complexity. One of the things I've really enjoyed about the existing chip is the pins are all identical. Anything, anywhere. Adding a couple of extra internal pullups to a pair of pins for the sake of a 0.1c external resistor just seems to go against that.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
It still seems like using a hammer to crack a walnut when we still need the 2 external series resistors. Extra registers, extra logic just to save one external resistor?
Au contraire! It saves an I/O pin and keeps the boot-up communication pins limited to just TWO (RX/TX or DP/DM). Helps us sleep better.
Yep, I can see that POV. And in any case, you are the bloke who knows what is required to do it. All I can do is guess [noparse]:)[/noparse]
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
BradC said...
I guess it just seems like a lot of extra complexity. One of the things I've really enjoyed about the existing chip is the pins are all identical. Anything, anywhere. Adding a couple of extra internal pullups to a pair of pins for the sake of a 0.1c external resistor just seems to go against that.
Fear not! EVERY pin will have one these babies in it, along with a comparator, a delta-sigma ADC, a delta-sigma DAC, a high speed signal/video 75-ohm DAC, pull-ups/downs,·slew control, float/weak/strong·HIGH/LOW combos, schmitt input w/feedback, crystal oscillator, and a few other things. I'm anxious to get this done so Beau can lay it out and we can get a handle on the final size.
Fear not! EVERY pin will have one these babies in it, along with a comparator, a delta-sigma ADC, a delta-sigma DAC, a high speed signal/video 75-ohm DAC, pull-ups/downs, slew control, float/weak/strong HIGH/LOW combos, schmitt input w/feedback, crystal oscillator, and a few other things. I'm anxious to get this done so Beau can lay it out and we can get a handle on the final size.
My first reaction is not polite enough to post, but deals with blessed snapping duck excrement .
Question. One of my "issues" with the current duty counter mode is it is unsuitable for clean audio output as it injects all sorts of funky harmonics in there at low signal levels. Will the delta-sigma DAC be more suitable for audio output?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
I guess it just seems like a lot of extra complexity. One of the things I've really enjoyed about the existing chip is the pins are all identical. Anything, anywhere. Adding a couple of extra internal pullups to a pair of pins for the sake of a 0.1c external resistor just seems to go against that.
Fear not! EVERY pin will have one these babies in it, along with a comparator, a delta-sigma ADC, a delta-sigma DAC, a high speed signal/video 75-ohm DAC, pull-ups/downs, slew control, float/weak/strong HIGH/LOW combos, schmitt input w/feedback, crystal oscillator, and a few other things. I'm anxious to get this done so Beau can lay it out and we can get a handle on the final size.
WOW! I hope all these features do not delay further the availability of the chip.
My first reaction is not polite enough to post, but deals with blessed snapping duck excrement .
Question. One of my "issues" with the current duty counter mode is it is unsuitable for clean audio output as it injects all sorts of funky harmonics in there at low signal levels. Will the delta-sigma DAC be more suitable for audio output?
Yes, my friend. That's my aim. The problem you've been experiencing is due to jitter from high/low propagation-time disparities and noise coupled from adjacent signal wires that feed other pads. To solve this for the new on-pin DAC, the signal is now reclocked at the pin (introducing a trivial one-cycle lag). The whole signal path thereafter is fully balanced and complementary. This cuts jitter down from·upwards of a nanosecond to just several·picoseconds. A nanosecond doesn't seem long, but it's significant in a 12.5ns update cycle (current Propeller). This new DAC should be very quiet and useful for audio. It has a follower buffer, too, so it can drive 10k loads. You're going to be happy about it.
Chip: I love the idea of having optional 10K pullups/pulldowns and now 1K5 pullups as well. Is there much extra to make the 1k5 pulldown as well?
With 10K we can put a superbright LED directly on the pin, either to 3V3 or Gnd. With 1K5 we can use a less bright LED directly. These days I like to connect the LED to ground as it is easier in software to say 1=LED ON. In days gone by, we had to sink the current so the LED always went to V+.
I don't like adding pullups and pulldowns to pcbs. It is not a 1c (or 0.1c) cost. In 2000 assembly costs ran out at 5-10c per resistor. There is also the pcb space and the track for the pullup/pulldown. When you get to these small chips with lots of pins this is important.
Series resistors are a different matter as they are protecting the chip, usually from the outside world (connectors). Their resistance requirements will vary. And, they can usually be placed near the connector where space often is not as tight.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ Links to other interesting threads:
The new delta-sigma ADC has two modes: a high-frequency low-res mode for digitizing signals in the megahertz to 10-bit quality, and an audio-frequency high-res mode that is stable to 14 bits. All the delta-sigma circuitry is in the pad, so there's no propagation through cogs to skew things up. Everything happens in the pin circuit and the feedback is very tight. The delta-sigma streams back through the INA/INB/INx bit. You're going to like this, too.
Is there much extra to make the 1k5 pulldown as well?
Pull-down can be added, too.·The 1.5k resistor circuit·will increase the pad circuit size by probably 1%. I didn't think about driving LEDs, but that would work great.
Ahh, see with that the Prop could comfortably do full speed right now. It's the synchronization / decoding and serialization that consumes quite a bit of the time.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
Chip Gracey (Parallax) said...
The problem you've been experiencing is due to jitter from high/low propagation-time disparities and noise coupled from adjacent signal wires that feed other pads.
Are you sure it is jitter related? When I was experimenting with it what I found was there were "duty" cycles that had inherent harmonics in them very close to the zero crossing point (50%). I'm going to have to ferret back through my posts to find it, but the frequency of the injected harmonic was directly related (and calculable) to the "duty" value selected. I had to inject dither (as you did in your spatializer object) into the signal to remove the little buzzes and distortions at low volumes, but that then ruined the signal to noise ratio. I'd be doing backflips to find I'm wrong and this problem will disappear in the new chip.
One thing I did do while I was testing was make sure 4 adjacent pads on either side of the D/A output were set as outputs and statically set low. I even tried whacking decoupling caps across the pads. PhilPi helped to test it, and he also came up with a dithering solution, but unfortunately when you plug the output into a 30W guitar amp with reasonably sensitive speakers the noise was pretty intolerable.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
Those limit-cycle tones will still be there, unfortunately. Sorry. I want to get rid of them, too, but they are difficult to eliminate.
One way to get rid of them is to use PWM instead of duty modulation. You can do that right now on the current Prop. The only problem with PWM is that it must be run for its whole cycle. If you can tolerate that, it will be very quiet.
There's got to be some way to get rid of the limit-cycle tones in duty modulation without too much dither. Perhaps ultrasonic dither would work.
Comments
I have to fix a lot of Firewire things that have suffered static, sometimes it means the complete PCB has to be changed. A lot of those cost >£500 now. A sacrificial buffer would be a PITA but lower the number of blown Prop IIs, the lower the number of tears.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Style and grace : Nil point
Post Edited (Toby Seckshund) : 11/24/2009 12:57:53 PM GMT
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
Why would you need to unless you planned to run high speed?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
BTW, you probably already read this, but each pair of adjacent Prop II I/Os has a high-speed comparator between them that can toggle at 50MHz. If we add the internal 1.5k resistor, we've got it all, except for those two external impedance-control resistors. Those would be a pain to add internally because you'd need build another set of high-current drivers with resistors after them, with everything following the ESD layout rules, since the impedance would be under 300 ohms. Better leave those outside, anyway, as it just feels safer.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
I did have trouble when I had it wired that way, but it was a year or two ago and I'm stuffed if I can remember what the problem was. You are right, logically it should make no difference.
I might have to re-wire one of my USB slave boards and run some experiments.
Personally I'm a little unsure of adding a 1.5k pull-up unless you are talking about only putting it on the usb pins. I'd rather have a switchable high impedance pull up (10-100k) on each IO pin and just use one extra pin for the pull up resistor. That way you can put it on D+ or D- as you need and you are already adding the series resistors, so it's only one extra above the two you already require.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Visit some of my articles at Propeller Wiki:
MATH on the propeller propeller.wikispaces.com/MATH
pPropQL: propeller.wikispaces.com/pPropQL
pPropQL020: propeller.wikispaces.com/pPropQL020
OMU for the pPropQL/020 propeller.wikispaces.com/OMU
Excellent. I'll take two please.
It still seems like using a hammer to crack a walnut when we still need the 2 external series resistors. Extra registers, extra logic just to save one external resistor?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
Okay, but just one more little bit of nostalgia...
I looked up an old ISEPIC manual and found the following in the "Legal Notices" section: "Chip Gracey (C) 1967 Mr. & Mrs. Gracey."
Got a chuckle out of that one!
IMHO the important thing is the pin, which you save, not the resistor.
And you can switch between Low- and Fullspeed per software, without resolder a resistor.
Andy
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
Well, yes.. I guess I can see that, but if there are 96 of them losing one does not seem that onerous.
I guess it just seems like a lot of extra complexity. One of the things I've really enjoyed about the existing chip is the pins are all identical. Anything, anywhere. Adding a couple of extra internal pullups to a pair of pins for the sake of a 0.1c external resistor just seems to go against that.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
Yep, I can see that POV. And in any case, you are the bloke who knows what is required to do it. All I can do is guess [noparse]:)[/noparse]
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
I assumed that it could handle high-speed USB - it needs about 400 MIPS so it could be done on three or four cogs.
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
400 MIPS to decode a 480MHZ signal ?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
Post Edited (Leon) : 11/24/2009 2:27:26 PM GMT
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
My first reaction is not polite enough to post, but deals with blessed snapping duck excrement .
Question. One of my "issues" with the current duty counter mode is it is unsuitable for clean audio output as it injects all sorts of funky harmonics in there at low signal levels. Will the delta-sigma DAC be more suitable for audio output?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
Sorry, I hadn't realised you were using another IC to do the heavy lifting. Yes, I'm sure the new chip will be able to manage that then.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
With 10K we can put a superbright LED directly on the pin, either to 3V3 or Gnd. With 1K5 we can use a less bright LED directly. These days I like to connect the LED to ground as it is easier in software to say 1=LED ON. In days gone by, we had to sink the current so the LED always went to V+.
I don't like adding pullups and pulldowns to pcbs. It is not a 1c (or 0.1c) cost. In 2000 assembly costs ran out at 5-10c per resistor. There is also the pcb space and the track for the pullup/pulldown. When you get to these small chips with lots of pins this is important.
Series resistors are a different matter as they are protecting the chip, usually from the outside world (connectors). Their resistance requirements will vary. And, they can usually be placed near the connector where space often is not as tight.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
· Prop Tools under Development or Completed (Index)
· Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)
· Search the Propeller forums·(uses advanced Google search)
My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
The new delta-sigma ADC has two modes: a high-frequency low-res mode for digitizing signals in the megahertz to 10-bit quality, and an audio-frequency high-res mode that is stable to 14 bits. All the delta-sigma circuitry is in the pad, so there's no propagation through cogs to skew things up. Everything happens in the pin circuit and the feedback is very tight. The delta-sigma streams back through the INA/INB/INx bit. You're going to like this, too.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
The Phy chip serialises/deserialises the data from/to 8 bits parallel. This is a popular one:
www.smsc.us/index.php?tid=143&pid=28
12 I/O pins are required.
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.
Ahh, see with that the Prop could comfortably do full speed right now. It's the synchronization / decoding and serialization that consumes quite a bit of the time.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
Are you sure it is jitter related? When I was experimenting with it what I found was there were "duty" cycles that had inherent harmonics in them very close to the zero crossing point (50%). I'm going to have to ferret back through my posts to find it, but the frequency of the injected harmonic was directly related (and calculable) to the "duty" value selected. I had to inject dither (as you did in your spatializer object) into the signal to remove the little buzzes and distortions at low volumes, but that then ruined the signal to noise ratio. I'd be doing backflips to find I'm wrong and this problem will disappear in the new chip.
One thing I did do while I was testing was make sure 4 adjacent pads on either side of the D/A output were set as outputs and statically set low. I even tried whacking decoupling caps across the pads. PhilPi helped to test it, and he also came up with a dithering solution, but unfortunately when you plug the output into a 30W guitar amp with reasonably sensitive speakers the noise was pretty intolerable.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
If you always do what you always did, you always get what you always got.
Those limit-cycle tones will still be there, unfortunately. Sorry. I want to get rid of them, too, but they are difficult to eliminate.
One way to get rid of them is to use PWM instead of duty modulation. You can do that right now on the current Prop. The only problem with PWM is that it must be run for its whole cycle. If you can tolerate that, it will be very quiet.
There's got to be some way to get rid of the limit-cycle tones in duty modulation without too much dither. Perhaps ultrasonic dither would work.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chip Gracey
Parallax, Inc.