一、一个五级MUX,如下图,若是第二级数据信号为关键信号(及延迟最大),如何改善timing?画图即可。
解答:首先将d2转移到最后一级,只有当sel1 & ~sel4 & ~sel3 & ~sel2 =1时,输出才可以取到d2,因此更改该级条件为上述条件。(若取d3,d4,d5,条件应与sel1没有关系,因此需要把d2的条件和取d3,d4,d5的条件做个 ‘与’ 。)
二、(1)你所了解的算法,接口协议有哪些?尽可能多列出接触过的算法或者协议。(2)挑选其中一个算法或者接口协议,详细阐述。可以使用公式,伪代码,图标,波形等方式。
解答:I2C、SPI、UART,AXI,PCIe等
关于UART的详细阐述:
<> UART 是一种通用的数据通信协议,也是异步串行通信口(串口)的总称,它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。它包括了 RS232、RS499、RS423、RS422 和 RS485 等接口标准规范和总线标准规范。
串口作为常用的三大低速总线(UART、SPI、I2C)之一,在设计众多通信接口和调试时占有重要地位。但 UART 和 SPI、I2C 不同的是,它是异步通信接口.
串口数据的发送与接收是基于帧结构的,即一帧一帧的发送与接收数据。每一帧除了中间包含 8bit 有效数据外,还在每一帧的开头都必须有一个起始位,且固定为 0;在每一帧的结束时也必须有一个停止位,且固定为 1,即最基本的帧结构(不包括校验等)有10bit。在不发送或者不接收数据的情况下,rx 和 tx 处于空闲状态,此时 rx 和 tx 线都保持高电平,如果有数据帧传输时,首先会有一个起始位,然后是 8bit 的数据位,接着有 1bit的停止位,然后 rx 和 tx 继续进入空闲状态,然后等待下一次的数据传输。帧结构(以rs232为例):