Noway2
Electrical
- Apr 15, 2005
- 789
I was wondering if anybody here has any experience with the Philips ISP1161A1 USB controller. I am experiencing an odd problem with this device and I am starting to become at a loss for ideas.
The controller is communicated to through a 16 bit data bus, 1 address line that selects between the "command" port and the "data" port, a read strobe, a write strobe, and a chip select line. Communications to the device consist of writing to the command port the index of the desired device register and then reading from or writing to the data port.
I am finding that when I command the controller to turn power on to the USB ports, which is accomplished by writing values to certain registers, that power momentarilly turns on and then shuts off. The behaviour makes me think that there is either a form of timing issue or a metastability issue, such as double clocking from ringing or reflections. If I place very long delays between each read or write access, the problem appears to be rectified.
As far as I can tell with the logic analyzer, I have implemented the timing well in accordance with the published specs, which creates some confusion as to why the very long delays appear to be helping. Also, to the best of my ability to determine, there is no ringing or stair-stepping on the read and write strobes which have been AC terminated to match the board. My equipment to look at the waveforms is a bit limited as I only have a 300Mhz scope. I am however, using a resistive probe, as suggested by Dr. Howard Jonhson in his High Speed Digital Design book so I should be able to see any effects that are on the few ns scale. With this equipment I was certainly able to detect ringing on the RD and WR lines prior to installing the termination circuitry that disappeared subsequently. The delays I am inserting are only between complete read or write bus cycles as opposed to lengthing the address or data bus settling times.
Does anybody have any suggestions or ideas?
The controller is communicated to through a 16 bit data bus, 1 address line that selects between the "command" port and the "data" port, a read strobe, a write strobe, and a chip select line. Communications to the device consist of writing to the command port the index of the desired device register and then reading from or writing to the data port.
I am finding that when I command the controller to turn power on to the USB ports, which is accomplished by writing values to certain registers, that power momentarilly turns on and then shuts off. The behaviour makes me think that there is either a form of timing issue or a metastability issue, such as double clocking from ringing or reflections. If I place very long delays between each read or write access, the problem appears to be rectified.
As far as I can tell with the logic analyzer, I have implemented the timing well in accordance with the published specs, which creates some confusion as to why the very long delays appear to be helping. Also, to the best of my ability to determine, there is no ringing or stair-stepping on the read and write strobes which have been AC terminated to match the board. My equipment to look at the waveforms is a bit limited as I only have a 300Mhz scope. I am however, using a resistive probe, as suggested by Dr. Howard Jonhson in his High Speed Digital Design book so I should be able to see any effects that are on the few ns scale. With this equipment I was certainly able to detect ringing on the RD and WR lines prior to installing the termination circuitry that disappeared subsequently. The delays I am inserting are only between complete read or write bus cycles as opposed to lengthing the address or data bus settling times.
Does anybody have any suggestions or ideas?