在芯片和芯片之间的通信中,芯片要接收来自其他芯片传输过来的数字信号,同时或者不同时向其他芯片发送数字信号。我想知道芯片内部是如何处理这些数字信号的?
以最常见的串行通信为例,数据是一位一位传输的,不同的通信协议其通信波特率相差很大,从几K到几十M不等,芯片接收时是一位一位接收过来的,芯片是如何处理这些数字信号的?又是怎么知道这些不同排列的数字信号各自代表的含义,并相应做出动作发出回应的?
再者,芯片内部是如何知道接受的二进制是特定长度的数据位,是不是芯片内部有一个专门计数的寄存器,一旦开始接收,就以设定时长开始计数,在规定时长计数不够或者计数太多就认为是错误?
【以最常见的串行通信为例……芯片接收时是一位一位接收过来的,芯片是如何处理这些数字信号的?】
串行通讯分同步和异步两种方式。同步串行通讯除信号外还有一根时钟线,接收方根据时钟信号一位一位地接收,每接收一位,芯片内一个移位寄存器即移动一位,同时计数器动作计数。多位都接收到,就是接收完毕,移位寄存器中的数据交由其它部分处理。异步串行通讯则没有时钟线,多长时间算一位靠事先的规定(波特率)。其余与同步通讯大体相同。
【芯片内部是如何知道接受的二进制是特定长度的数据位,是不是芯片内部有一个专门计数的寄存器,一旦开始接收,就以设定时长开始计数,在规定时长计数不够或者计数太多就认为是错误?】
对异步串行通讯,是的。