So, an fxo is essentially an analog signal , with a bandwidth of 300 to 3000 hz. (most of the energy of a human voice will be in that range) , mostly you want to convert that ultimately to SIP/SDP network traffic.
Consider the rj11 in the wall as the source and Asterisk the destination, there are several routes available.
An ATA accepts the analog and converts it to SIP/SDP in one small box costing between 20 and 100 bucks per channel, asterisk sees it as an endpoint in IP space, you are done.
A DAHDI speaking card takes the analog and converts it into a digium channel that has to get to the asterisk server which converts the digium channel into SIP/SDP , that route must traverse a physical path, the pci bus, via any layers of the kernel(s) necessary to the client server (asterisk) and it must do this with a latency of less than 10 ms and with approaching zero loss/delay or out of orderness anything less than 100% here and you will need to dive into echo correction/detection/suppression which is generally expensive in both time and hardware
Hardware passthrough on VM type systems is very much a variable, does the physical hardware support it or just say they do ?, do any software layers schedule it against other demands? Many a slip twixt cup and SIP here.
Software passthrough (TimeDomainMultiplexing_over_Ethernet) is a little leaner, you run dahdi on the physical card in the host and then present a layer 2 etherstream to the mac address via a dahdi service running on the target machine, bypassing most parts of ‘virtualization’ that cant wait to bite your ass.
This might sound strange but is the best way I ever could rely on when passing PSTN of analog (or digital, T1, E1, R2, PRI, SS7 or presumably any of the other dahdi technologies) on any hardware running any OS if the PSTN connection and the SIP server where on the same ethernet.
Having worked both ends of this donkey, I can assure you that I would prefer the ATA/Gateway solution for almost any problem, if forced to digium cards, only use the mac layer to get from host to client, it works but prefers its own network interface bare of other protocols, I suggest you use a vlan. ref: (oldie but goldie)