每一个异步串行系统的核心都是一个UART(通用异步接收机/发送机)。UART不仅控制传输的数据,相应的电平,同时也控制通讯的速度。UART能够存储足够的信息,所以保证了在电脑忙的时候,数据流也能连续传输。这对于同时处理大量任务的操作系统非常有帮助。
下面附图是理想串行通讯的示意。
如图,我们大部分的串行卡都有一个输入输出的FIFO。FIFO的数据可以通过串行驱动获取。串行驱动会自动地把FIFO的数据传输到软件的缓存,这个缓存是可以在应用软件由用户配置的(比如,在LabVIEW可以使用Serial Port Init VI来设置缓存区大小)。读接口的数据实际上包含从软件缓存读的过程。
这实际上是一个双缓存传输,在UART FIFO和软件的缓存都有溢出的风险。