Datapath & Control

A real digital system incorporates both elements (i.e. datapath and control) working in unison

Datapath – provides status to control unit and makes decisions on next state.

Control unit – determines the sequence of operations.

Data Flow Control

假如只有一条输入线路,通过register控制A B信号同时到达加法器

image-20221115183508410

初始情况加法器输入输出都为?(不确定)

先让input输入A 加法器B的值等于A,A=?

下一个时钟输入B加法器A=A,B=B

image-20221115183922945

取A+B的程序是:

  1. 初始条件

  2. 输入操作数A

  3. 将A存储到寄存器A中

  4. 输入操作数B

  5. 将B存储到寄存器B中

  6. 读取输出

image-20221115184024574

将整个任务分解成更小的子任务,这些子任务可以在FSM中依次执行。

模块化、层次化设计:将系统划分为模块化子系统。

输入/输出

Datapath and Control Unit

image-20221115184742824

– Datapath: data storage and processing

– Control unit: data flow and function selections

  • There are three basic components in a datapath:

– set of registers in the system.

– operations performed on data stored.

– control that determines sequence of operations.

Register Transfers notation

Register transfer notation (RTN) – notation which describes the datapath

寄存器传输表示法在描述数据路径时很有用。这种设计级别通常称为寄存器传输级别(RTL)。

image-20221115184949965

image-20221115184958992

从一个寄存器到另一个寄存器的数据传输使用替换运算符表示

image-20221122201012644

R2将被R1替代

布尔信号可以添加来创建条件传输,即数据传输依赖于控制信号:

K1是控制(使能信号)

image-20221122201200626

当K1=1时,且时钟到来时将R1传到R2

image-20221122201248279

多个转移同时发生(一个时钟沿):

image-20221122201329841 image-20221122201349314

RTN的表示方法:

695031e123eb3bf646d91b73cf7a73a

srR1 右移

slR1 左移

Micro-Operations

RTN中的运算符:微操作-对存储在寄存器或存储器中的数据进行的基本操作。

4 main types:

– Transfer: normal and conditional transfer

– Arithmetic: addition, subtraction

– Logic: AND, OR, XOR, NOT

– Shift: shift left (towards MSB), shift right (towards LSB)

如:

image-20221122201700482 image-20221122201724193

移动微操作用于数据的横向移动;寄存器的内容可以向左或向右移动。

image-20221122201754186

这里使用组合逻辑的移位器

Datapath

数字系统可以分为datapath+control unite

数据路径——数字系统的数据所采用的路径

包含寄存器以及组合逻辑器件: ALUs, multipliers, dividers, shifters and rotators

image-20221122203701880

一个例子:Adding 100 integers in an array x[i] together

image-20221122202412729

用datapath处理:

image-20221122202445627

得到状态机:输入V为x[i]是否成功输入?

输出为load 和 clr

image-20221122202537961

image-20221122202527274

Register File:寄存器堆

Control signals are:

•write enable (WE) 写使能

• write address (WA) 写地址(往哪个寄存器里保存数据)

• read address A (RA) A端口输出哪个寄存器的数据

• read address B RB) B端口输出哪个寄存器的数据

image-20221122203348918

一个例子:把input存到R3,portA输出R0, PortB输出R1

注意这是个同步电路但是没画出时钟

image-20221122203418806

Control Word

当数据路径中有许多组合电路时,就会有大量的控制信号。

控制字:发送到数据路径块的控制信号的集合。

控制字包含控制单元为控制数据路径中的不同功能而必须生成的所有控制信号。

image-20221122203742470 image-20221122203828000 image-20221122203750786

image-20221122205640981

由于数字电路的传播延时,应该将时钟信号周期设置大于电路延时

例子:Given a 8-bit binary number X, count the no. of ones in X找8bit 数据中有几个比特为1image-20221122204102308

在运算过程中最后的三态门都是高阻态,只有在最后需要输出时,才设为1(打开)

流程的伪代码:使用00000001与上data,如果input的最后一位是1就加一,否则不变,然后进行向右移位,直到data为0

image-20221122204232463

RTL/RTN:

image-20221122204439636

注意一个时钟只能处理一行

image-20221122204731573

Control Words:

image-20221122205402576

注意第二行和第三行:第二行使用R0 XOR R0产生0

第三行使用 R2自增产生1

循环红框中的control word直到最终input data 为0

要解决一个问题,我们可以先设计一个具有适当微操作的数据路径,并给出一个正确控制步骤和dataflow的FSM。