Someone asked me the other day how an FTDI USB to serial UART works, and I realized I didn't know. I looked at the datasheet for the FT232R and the block diagram didn't really help me. Can anyone explain or link me to a good explanation?
The FTDI chips implement the USB protocol stack. The responsibility of this hardware is to tell your PC what it is (using some identification information) such that your computer can load the right driver for it, and also to manage the data transactions with the PC there-on after - look up USB endpoints for a better explanation of these processes.
Once those drivers are loaded, this would specify a command set that your PC can use to query the chip. This hardware takes care of one side of the equation (communication with your PC). The other side of it would be some dedicated hardware to manage the UART protocol which includes logic, buffers and line drivers and the sorts. The command set mentioned earlier would be used to read from or write to the UART hardware. It should probably be mentioned that USB devices are polled by the PC, so in instances where you are using code which is event based, your PC is actually doing some polling to determine that new data has arrived - this may be different than a native serial port, I wouldn't know.
The above logic can be implemented either as a dedicated ASIC or by using a stripped down microcontroller core which executes firmware on ROM. If it is indeed a microcontroller core, then I imagine the UART is connected to it as a peripheral.
There's a USB microcontroller inside which talks a proprietary protocol over USB (hence the need for drivers) and converts that into "normal" UART signals and back again.