52
电电电电电电 电电电 RTL 电电 电电电电10

数字系统的 RTL 设计 学时分配:10

  • Upload
    apria

  • View
    326

  • Download
    0

Embed Size (px)

DESCRIPTION

数字系统的 RTL 设计 学时分配:10. 目的和目标. 初步了解复杂数字系统的“数据通路+控制逻辑”的设计思想; 初步掌握数据流模型的建立和描述; 初步了解数字系统模块划分和时序设计的方法。 掌握简单 CPU(Mu0, 8051 兼容 CPU) 的设计方法; 了解 IT 产业链中核心芯片( CPU 等)的高性能设计所面临的机遇和挑战。. 说明. 复杂数字系统的设计应该先经过系统级验证,然后才转换成数据流模型。 系统级建模和验证的方法很多,也没有统一的模型。公认最有潜力的描述语言是 SystemC。 - PowerPoint PPT Presentation

Citation preview

Page 1: 数字系统的 RTL 设计 学时分配:10

电子科技大学

• 数字系统的 RTL 设计• 学时分配: 10

Page 2: 数字系统的 RTL 设计 学时分配:10

电子科技大学

目的和目标• 初步了解复杂数字系统的“数据通路 + 控制逻

辑”的设计思想;• 初步掌握数据流模型的建立和描述;• 初步了解数字系统模块划分和时序设计的方法。• 掌握简单 CPU(Mu0, 8051 兼容 CPU) 的设计方

法;• 了解 IT 产业链中核心芯片 (CPU 等 ) 的高性能

设计所面临的机遇和挑战。

Page 3: 数字系统的 RTL 设计 学时分配:10

电子科技大学

说明• 复杂数字系统的设计应该先经过系统级

验证,然后才转换成数据流模型。• 系统级建模和验证的方法很多,也没有

统一的模型。公认最有潜力的描述语言是 SystemC 。

• 限于课时,本部分课件省去系统级的建模和验证,只讲述数据流模型的设计和描述。

Page 4: 数字系统的 RTL 设计 学时分配:10

电子科技大学

内容安排• 硬件的 RTL 模型的特点。• 数据通路与控制逻辑。• 一个简单的数据处理模块。• 曼彻斯特处理器 MU0 。• 流水线与超标量 CPU 设计简介。

Page 5: 数字系统的 RTL 设计 学时分配:10

复杂数字系统的 RTL设计思想

• 数字系统( RTL级)设计

• 数字系统( RTL级)设计

Data PathData Path

Control LogicControl Logic

运算单元 (组合电路 )

存储单元 (寄存器 )

运算单元 (组合电路 )

存储单元 (寄存器 )

有限状态机 (组合部分和时序部分 )

微码 ROM描述

有限状态机 (组合部分和时序部分 )

微码 ROM描述

Page 6: 数字系统的 RTL 设计 学时分配:10

硬件的 RTL 模型的特点1. RTL 模型中的信号代表了硬件中数据的实际

移动方向以及电路的互连关系;2. RTL 模型中的语句与实际寄存器的结构模型

之间存在直接的映射关系;3. RTL 模型指定了寄存器级的电路元件之间的

连接关系,从而隐藏了电路结构;4. RTL 模型指定了存储单元的复用结构及总线;5. RTL 模型中明确指定了各个寄存器的驱动时

钟;6. RTL 模型中通常不采用抽象的数据类型

Page 7: 数字系统的 RTL 设计 学时分配:10

电子科技大学

前期知识准备• 存储器: RAM , ROM

Page 8: 数字系统的 RTL 设计 学时分配:10

电子科技大学

设计实例

RAM

待设计的电路 : 将 RAM 中的数据依次累加。

clk reset

DB

AB

RnW

MRq

Page 9: 数字系统的 RTL 设计 学时分配:10

电子科技大学

数据通路

RAM

时序电路组合电路

Page 10: 数字系统的 RTL 设计 学时分配:10

电子科技大学

RnW MRq

REnrst

+oe

Addr

RAM

时序电路组合电路

Page 11: 数字系统的 RTL 设计 学时分配:10

电子科技大学

控制逻辑

clk reset

addrRnWMRq

oeREn

Page 12: 数字系统的 RTL 设计 学时分配:10

时序设计一定注意,一般时序设计和状态图设计应该在代

码设计之前

clkreset

MRqRnW

00 01 02 FF 00

REn

oe

Addr

Page 13: 数字系统的 RTL 设计 学时分配:10

State_regs输出译码

次态译码

地址计数器

RnWMRq

oeClk

Clk

reset

reset

addr

cntEn

FsmCstFsmNst

时序电路组合电路

REn

控制逻辑展开

Page 14: 数字系统的 RTL 设计 学时分配:10

时序设计

clkreset

MRqRnW

00 01 02 FF 00

REn

oe

Addr

cntEn

Init Sr Sw Sr Sw Sr Sr Sw StopSw … …

Page 15: 数字系统的 RTL 设计 学时分配:10

电子科技大学

状态机设计

Init

Sr

SwStop

Reset

Addr = “FF”

Addr /= “FF”

Page 16: 数字系统的 RTL 设计 学时分配:10

电子科技大学

状态转换表Cst Addr Nst RnW MRq REn Oe CntEn

Init x Sr 0 1 0 0 0

Sr x Sw 0 1 1 0 1

Sw FF Stop 1 1 0 1 1

Stop x Stop 0 0 0 0 0

Sw 其他 Sr 1 1 0 1 1

Page 17: 数字系统的 RTL 设计 学时分配:10

电子科技大学

代码描述• 略。• 总结:一般的数字系统设计中,

– 第一步,系统需求分析 ;– 第二步,系统级建模及验证;– 第三步,模块接口及时序设计

• 数据通路• 控制逻辑

– 第四步,代码编写;– 之后,进行正常的设计迭代。

Page 18: 数字系统的 RTL 设计 学时分配:10

电子科技大学

需求修改…

MEM

待设计的电路 : 根据输入的Instruction 来进行 RAM 的数据处理。

clk reset

DB

AB

RnW

MRq

Instruction

Page 19: 数字系统的 RTL 设计 学时分配:10

电子科技大学

Instruction 定义Opcode S

Opcode S

0000 … ACC := mem16[S]

0001 … mem16[S] := ACC

1215 11 0

0010 … ACC := ACC + mem16[S]

0011 … ACC := ACC -f mem16[S]

0111 … stop

Page 20: 数字系统的 RTL 设计 学时分配:10

电子科技大学RnW MRq

REnrst

+oe

Addr

RAM

时序电路组合电路

译码

2

Opcode 4

数据通路S12

Page 21: 数字系统的 RTL 设计 学时分配:10

时序设计

clkreset

MRqRnW

REn

oe

0110 读 写 0111Opcode

注意:这里假设某些外部电路保证Opcode 在

Reset时为 0110 ,

其信号变化被 clk 同步。

Page 22: 数字系统的 RTL 设计 学时分配:10

电子科技大学

控制逻辑

输出译码

RnWMRq

oe

reset

时序电路组合电路

REn

Opcode

Page 23: 数字系统的 RTL 设计 学时分配:10

电子科技大学

需求升级…

MEM

待设计的电路 : 根据 MEM中的数据来进行 MEM 自身的数据处理,即 Instruction来自 MEM 本身。

clk reset

DB

AB

RnW

MRq

代码段

数据段

Page 24: 数字系统的 RTL 设计 学时分配:10

电子科技大学

数据通路修改分析• 存储器的访问分为两个阶段:

– 1.Instruction 的读取 ----取指。– 2. 数据的读取 ----执行。

• 分析地址和数据总线的占用:– 1.取指阶段: Instruction 的地址 +Instrucition 。– 2.执行阶段:操作数的地址 +操作数。

• 需要解决的问题:– 指令和数据的冲突避免;– 地址产生机制。

Page 25: 数字系统的 RTL 设计 学时分配:10

电子科技大学

问题的解决• 指令和数据的冲突避免:

– 缓存指令:引入 IR 寄存器;• 地址的产生:

– 指令地址:每执行一次指令就加 1 ;– 操作数地址:由 IR 寄存器的 S域产生。

Page 26: 数字系统的 RTL 设计 学时分配:10

数据通路 ( 省略总线复用 )

memorymemory

irir地址累加地址累加

accacc

address bus

data bus

control

alualu

Page 27: 数字系统的 RTL 设计 学时分配:10

电子科技大学

进一步硬件优化• 发现 ALU 在取指阶段空闲,执行阶段工作,则可以考虑让 ALU 在取指阶段对指令地址进行累加,从而使得硬件更加充分利用。

• 最终的指令周期设计:– 取值阶段:取指令,同时指令地址+ 1 。– 执行阶段:取操作数,运算。

Page 28: 数字系统的 RTL 设计 学时分配:10

电子科技大学

最终数据通路 ( 简化 )

memorymemory

irirpcpc

accacc

address bus

data bus

control

alualu

Page 29: 数字系统的 RTL 设计 学时分配:10

Cycle1: 取指 & PC++

memorymemory

irirpcpc

accacc

address bus

data bus

control

alualualualu

Page 30: 数字系统的 RTL 设计 学时分配:10

Cycle1: 取指 & PC++

memorymemory

pcpc

accacc

address bus

data bus

control

alualualualu

iriririrpc

Page 31: 数字系统的 RTL 设计 学时分配:10

Cycle2: 取操作数 + 执行

memorymemory

irirpcpc

accacc

address bus

data bus

control

alualu

irir

alualu

Page 32: 数字系统的 RTL 设计 学时分配:10

Cycle2: 取操作数 + 执行

memorymemory

irirpcpc

accacc

address bus

data bus

control

alualu

irir

alualuaccacc

Page 33: 数字系统的 RTL 设计 学时分配:10

memorymemory

irir

pcpc

accacc

0 m

ux 1

0 mux 1

MEMrq RnW

Asel PCce

IRce

ALUfs

ACC[15]ACCz

Bsel

opcode

ACCoe

ACCce

B alu A

AB DB

Page 34: 数字系统的 RTL 设计 学时分配:10

memorymemory

MEMrq RnW

AB DBpcpc

irir

Asel

0 m

ux 1

B alu AALUfs

0 mux 1Bsel

accacc

ACCoe

PCce

ACCce

IRce

opcode

ACC[15]ACCz

Page 35: 数字系统的 RTL 设计 学时分配:10

电子科技大学

Control Logic

Fetch

Execute 输出译码

FsmState

OpCode

Rst

ACCz

ACC[15]

控制信号

stop

Page 36: 数字系统的 RTL 设计 学时分配:10

电子科技大学

需求再次升级 : 指令流控制Instruction Opcode SemanticsLDA S 0000 ACC := mem16[S]

STO S 0001 mem16[S] := ACC

ADD S 0010 ACC := ACC + mem16[S]

SUB S 0011 ACC := ACC -f mem16[S]

JMP S 0100 PC := S

JGE S 0101 if ACC ≥ 0 PC := S

JNE S 0110 if ACC ≠ 0 PC := S

STP 0111 stop

Page 37: 数字系统的 RTL 设计 学时分配:10

电子科技大学

MU0

• In this simple example, we’ll look at the ISA and an obvious implementation of it.

• It’s the MU0 -- that is, the Manchester University 0

Page 38: 数字系统的 RTL 设计 学时分配:10

Components of MU0 (1)

• A Program Counter (PC) register to hold the address of the current instruction. (Visible to Programmer)

• One register - the Accumulator (ACC). (Visible to Programmer).

Page 39: 数字系统的 RTL 设计 学时分配:10

Components of MU0 (2)

• An Arithmetic-Logic Unit (ALU) for doing, eh, arithmetic and logic. (Invisible to Programmer).

• An Instruction Register (IR) for holding the current instruction. (Invisible to Programmer.)

Page 40: 数字系统的 RTL 设计 学时分配:10

Components of MU0 (3)

• Instruction Decode Logic and Control Logic to use the components of MU0 to give effect to the instructions.

Page 41: 数字系统的 RTL 设计 学时分配:10

Features of MU0

• 16 bit machine – ACC, PC, IR

• 2’s Complement Arithmetic

• 12 bit addressing (see below)

• 16 bit instructions:

4 bits 12 bits

opcode S

Page 42: 数字系统的 RTL 设计 学时分配:10

memorymemory

irir

pcpc

accacc

0 m

ux 1

0 mux 1

MEMrq RnW

Asel PCce

IRce

ALUfs

ACC[15]ACCz

Bsel

opcode

ACCoe

ACCce

B alu A

AB DB

Page 43: 数字系统的 RTL 设计 学时分配:10

memorymemory

irir

pcpc

accacc

0 m

ux 1

0 mux 1

MEMrq RnW

Asel PCce

IRce

ALUfs

ACC[15]ACCz

Bsel

opcode

ACCoe

ACCce

B alu A

AB DB

memorymemory

irir

pcpc

Page 44: 数字系统的 RTL 设计 学时分配:10

memorymemory

irir

pcpc

accacc

0 m

ux 1

0 mux 1

MEMrq RnW

Asel PCce

IRce

ALUfs

ACC[15]ACCz

Bsel

opcode

ACCoe

ACCce

B alu A

AB DB

memorymemory

accacc

Page 45: 数字系统的 RTL 设计 学时分配:10

电子科技大学

Control Logic

Fetch

Execute 输出译码

FsmState

OpCode

Rst

ACCz

ACC[15]

控制信号

stop在标准 mu0 设计中,没有使用 stop 状态,

而是回绕到Execute 。

Page 46: 数字系统的 RTL 设计 学时分配:10

Control Logic InputsInputs

Instruction Opcode Reset Ex/ft ACCz ACC15

Reset xxxx 1 x x x

LDA S0000 0 0 x x

0000 0 1 x x

STO S0001 0 0 x x

0001 0 1 x x

ADD S0010 0 0 x x

0010 0 1 x x

SUB S0011 0 0 x x

0011 0 1 x x

JMP S 0100 0 x x x

JGE S0101 0 x x 0

0101 0 x x 1

JNE S0110 0 x 0 x

0110 0 x 1 x

STP 0111 0 x x x

Page 47: 数字系统的 RTL 设计 学时分配:10

Control Logic OutputsOutputs

Aset Bset ACCce PCce IRce ACCoe ALUfs MEMrq RnW Ex/ft

0 0 1 1 1 0 = 0 1 1 0

1 1 1 0 0 0 = B 1 1 1

0 0 0 1 1 0 B+1 1 1 0

1 x 0 0 0 1 x 1 0 1

0 0 0 1 1 0 B+1 1 1 0

1 1 1 0 0 0 A+B 1 1 1

0 0 0 1 1 0 B+1 1 1 0

1 1 1 0 0 0 A-B 1 1 1

0 0 0 1 1 0 B+1 1 1 0

1 0 0 1 1 0 B+1 1 1 0

1 0 0 1 1 0 B+1 1 1 0

0 0 0 1 1 0 B+1 1 1 0

1 0 0 1 1 0 B+1 1 1 0

0 0 0 1 1 0 B+1 1 1 0

1 x 0 0 0 0 x 0 1 0

Page 48: 数字系统的 RTL 设计 学时分配:10

电子科技大学

Cpu 的性能提高策略• 提高系统时钟频率:

– 微码 ROM 硬连线逻辑 ;– 指令流水线。 ( 流水线 mu0 需要将跳转指令的指令周期扩展成 2 个时钟 ) ;

• 程序与数据总线分开:哈佛总线。• 进一步提高 IPC :超标量结构。• 突破存储器带宽瓶颈:指令 Cache 和数据

Cache 。• DSP 中,引入硬件乘加器等以提高数据处理速度。

Page 49: 数字系统的 RTL 设计 学时分配:10

电子科技大学

指令流水

取指 译码 执行

取指 译码 执行

取指 译码 执行

指令 1

指令 2

指令 3

Page 50: 数字系统的 RTL 设计 学时分配:10

电子科技大学

其他内容• 可以参考有关资料。• 对 CPU 设计感兴趣者可以参考:

– 《 ARM SoC体系结构》,北京航空航天出版社;

– 《 Modern Processor Design – Fundamentals of Superscalar Processors 》, John Paul Shen 。译本:《现代处理器设计 ---- 超标量处理器基础》,电子工业出版社。

Page 51: 数字系统的 RTL 设计 学时分配:10

电子科技大学

小结• 复杂数字系统设计:数据通路 + 控制逻

辑;• 需求分析 系统验证 模块划分及接

口时序设计 状态机设计 代码编写 设计验证。

Page 52: 数字系统的 RTL 设计 学时分配:10

电子科技大学

课程结束

谢谢!