Hi. I wolud like to use USB protocol in new design board But I be afraid of to use, because I know that sometimes the communication fail between the computer and board and this mean for us to make power off & on . this is a big problem for me/customer ?What is your recommended
Whether USB is reliable or not depends greatly on the particular hardware you intend to use, and the expected environment.
As far as the USB protocol itself is concerned, I would say it is not particularly robust in the face of physical bit errors. The data CRC is only 16 bits, and some hosts will give up rather ungracefully (and uncontrollably) after 3 failed attempts to transfer a packet.
As long as you can assure physical bit error rate is low, USB should be reliable, but if you have heavy interference (e.g. a USB cable right next to noisy power cables), I wouldn't recommend it.
Yes, that's indeed a problem, I'm not talking about the data bits, but about the connection. Some USB devices (like FTDI) have a special software call in their drivers, which mimics a plug/unplug action, but (depending on the OS) this might restore the connection or not. Often the software plug / unplug action is too short to let the power on the USB-slave drop below the reset value.
I would think that the major issue in the end will be the robustness of the software on both ends of the USB cable. Hardware may be marginal of course, but what will really make your product reliable or dangerous is how the software reacts to the unexpected.
SNR of USB2.0 is poor with very low voltage levels to achieve the high speed at the upper physical limits to stay in competition with fire wire. Fire wire uses one more pair and thereby always prevails in speed. Even PCB Layout between buffer and socket is important @USB2. Prefer low speed for high reliability. In case of failure, USB has error correction and repeat mechanism but this is not true for Isochronous Devices. Assume all, it depends how much data and reaction time is required to select a preferable operation mode what uses CRC protection and self recovery for lost or broken packets. The used CRC gives 100% coverage for single and double bit errors and host controllers have normally 3 retries by default. The client software recovery method is at your choice (if you write the client cpu code).