
S3C9654/C9658/P9658
APPENDIX
19-11
INTERNAL HARDWARE STRUCTURE OF SAMSUNG USB CONTROLLER.
Application:
KS86P/C6504, KS86P/C6408. KS86P/C6104
1.
When the device receive setup transaction with DATA1 packet.
Answer)
When the device receive setup transaction with data1 packet then the device send ACK packet
and does not generate interrupt signal. That means the device ignore this transaction since the
data pid is not proper.
2.
When the device receive setup transaction with data0 packet which have non-8 byte data length.
Answer)
The device respond with ACK and generate interrupt to MCU. If the device read EP0CNT
register then the device can get the data number of this packet.
3.
When the device receive setup transaction which have more then 8 bytes data packet.
Answer)
The device keep first 8bytes data and response with ACK packet. And the EP0CNT have the
value 8. That means if the device receive more than 8 bytes then there is no way to distinguish
this one from 8 bytes setup transaction. I upload this issue to USB-IF web board and I received
positive message.
4.
Device Address scheme.
Answer)
Device address is generated by selecting two source. The below is the fragmentation of verilog
file. Verilog is a hardware description language so the hardware function is same with this
statement. I synthesized the hardware using this program.
When I designed this one I only think about first set address command but now we must consider
the second set address command. Fortunately we can solve this issue using firmware.
Anyway you can figure it out what's going on internal hardware.
assign fun_addr = (device_configured) ? uc_fun_addr_reg: 7'h00;
/* This means if the device_configured is 1 then the value of fun_addr is same to
uc_fun_addr_reg. And if the device_configured is 0 then the value of fun_addr is zero. */
/* Device_configured signal used for detecting the status stage of set address command.
Before status stage this value is 0 and after status stage this value going to 1. */