数字系统的 rtl 设计 学时分配:10
DESCRIPTION
数字系统的 RTL 设计 学时分配:10. 目的和目标. 初步了解复杂数字系统的“数据通路+控制逻辑”的设计思想; 初步掌握数据流模型的建立和描述; 初步了解数字系统模块划分和时序设计的方法。 掌握简单 CPU(Mu0, 8051 兼容 CPU) 的设计方法; 了解 IT 产业链中核心芯片( CPU 等)的高性能设计所面临的机遇和挑战。. 说明. 复杂数字系统的设计应该先经过系统级验证,然后才转换成数据流模型。 系统级建模和验证的方法很多,也没有统一的模型。公认最有潜力的描述语言是 SystemC。 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/1.jpg)
电子科技大学
• 数字系统的 RTL 设计• 学时分配: 10
![Page 2: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/2.jpg)
电子科技大学
目的和目标• 初步了解复杂数字系统的“数据通路 + 控制逻
辑”的设计思想;• 初步掌握数据流模型的建立和描述;• 初步了解数字系统模块划分和时序设计的方法。• 掌握简单 CPU(Mu0, 8051 兼容 CPU) 的设计方
法;• 了解 IT 产业链中核心芯片 (CPU 等 ) 的高性能
设计所面临的机遇和挑战。
![Page 3: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/3.jpg)
电子科技大学
说明• 复杂数字系统的设计应该先经过系统级
验证,然后才转换成数据流模型。• 系统级建模和验证的方法很多,也没有
统一的模型。公认最有潜力的描述语言是 SystemC 。
• 限于课时,本部分课件省去系统级的建模和验证,只讲述数据流模型的设计和描述。
![Page 4: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/4.jpg)
电子科技大学
内容安排• 硬件的 RTL 模型的特点。• 数据通路与控制逻辑。• 一个简单的数据处理模块。• 曼彻斯特处理器 MU0 。• 流水线与超标量 CPU 设计简介。
![Page 5: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/5.jpg)
复杂数字系统的 RTL设计思想
• 数字系统( RTL级)设计
• 数字系统( RTL级)设计
Data PathData Path
Control LogicControl Logic
运算单元 (组合电路 )
存储单元 (寄存器 )
运算单元 (组合电路 )
存储单元 (寄存器 )
有限状态机 (组合部分和时序部分 )
微码 ROM描述
有限状态机 (组合部分和时序部分 )
微码 ROM描述
![Page 6: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/6.jpg)
硬件的 RTL 模型的特点1. RTL 模型中的信号代表了硬件中数据的实际
移动方向以及电路的互连关系;2. RTL 模型中的语句与实际寄存器的结构模型
之间存在直接的映射关系;3. RTL 模型指定了寄存器级的电路元件之间的
连接关系,从而隐藏了电路结构;4. RTL 模型指定了存储单元的复用结构及总线;5. RTL 模型中明确指定了各个寄存器的驱动时
钟;6. RTL 模型中通常不采用抽象的数据类型
![Page 7: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/7.jpg)
电子科技大学
前期知识准备• 存储器: RAM , ROM
![Page 8: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/8.jpg)
电子科技大学
设计实例
RAM
待设计的电路 : 将 RAM 中的数据依次累加。
clk reset
DB
AB
RnW
MRq
![Page 9: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/9.jpg)
电子科技大学
数据通路
RAM
时序电路组合电路
![Page 10: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/10.jpg)
电子科技大学
RnW MRq
REnrst
+oe
Addr
RAM
时序电路组合电路
![Page 11: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/11.jpg)
电子科技大学
控制逻辑
clk reset
addrRnWMRq
oeREn
![Page 12: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/12.jpg)
时序设计一定注意,一般时序设计和状态图设计应该在代
码设计之前
clkreset
MRqRnW
00 01 02 FF 00
REn
oe
Addr
![Page 13: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/13.jpg)
State_regs输出译码
次态译码
地址计数器
RnWMRq
oeClk
Clk
reset
reset
addr
cntEn
FsmCstFsmNst
时序电路组合电路
REn
控制逻辑展开
![Page 14: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/14.jpg)
时序设计
clkreset
MRqRnW
00 01 02 FF 00
REn
oe
Addr
cntEn
Init Sr Sw Sr Sw Sr Sr Sw StopSw … …
![Page 15: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/15.jpg)
电子科技大学
状态机设计
Init
Sr
SwStop
Reset
Addr = “FF”
Addr /= “FF”
![Page 16: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/16.jpg)
电子科技大学
状态转换表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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/17.jpg)
电子科技大学
代码描述• 略。• 总结:一般的数字系统设计中,
– 第一步,系统需求分析 ;– 第二步,系统级建模及验证;– 第三步,模块接口及时序设计
• 数据通路• 控制逻辑
– 第四步,代码编写;– 之后,进行正常的设计迭代。
![Page 18: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/18.jpg)
电子科技大学
需求修改…
MEM
待设计的电路 : 根据输入的Instruction 来进行 RAM 的数据处理。
clk reset
DB
AB
RnW
MRq
Instruction
![Page 19: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/19.jpg)
电子科技大学
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/20.jpg)
电子科技大学RnW MRq
REnrst
+oe
Addr
RAM
时序电路组合电路
译码
2
Opcode 4
数据通路S12
![Page 21: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/21.jpg)
时序设计
clkreset
MRqRnW
REn
oe
0110 读 写 0111Opcode
注意:这里假设某些外部电路保证Opcode 在
Reset时为 0110 ,
其信号变化被 clk 同步。
![Page 22: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/22.jpg)
电子科技大学
控制逻辑
输出译码
RnWMRq
oe
reset
时序电路组合电路
REn
Opcode
![Page 23: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/23.jpg)
电子科技大学
需求升级…
MEM
待设计的电路 : 根据 MEM中的数据来进行 MEM 自身的数据处理,即 Instruction来自 MEM 本身。
clk reset
DB
AB
RnW
MRq
代码段
数据段
![Page 24: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/24.jpg)
电子科技大学
数据通路修改分析• 存储器的访问分为两个阶段:
– 1.Instruction 的读取 ----取指。– 2. 数据的读取 ----执行。
• 分析地址和数据总线的占用:– 1.取指阶段: Instruction 的地址 +Instrucition 。– 2.执行阶段:操作数的地址 +操作数。
• 需要解决的问题:– 指令和数据的冲突避免;– 地址产生机制。
![Page 25: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/25.jpg)
电子科技大学
问题的解决• 指令和数据的冲突避免:
– 缓存指令:引入 IR 寄存器;• 地址的产生:
– 指令地址:每执行一次指令就加 1 ;– 操作数地址:由 IR 寄存器的 S域产生。
![Page 26: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/26.jpg)
数据通路 ( 省略总线复用 )
memorymemory
irir地址累加地址累加
accacc
address bus
data bus
control
alualu
![Page 27: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/27.jpg)
电子科技大学
进一步硬件优化• 发现 ALU 在取指阶段空闲,执行阶段工作,则可以考虑让 ALU 在取指阶段对指令地址进行累加,从而使得硬件更加充分利用。
• 最终的指令周期设计:– 取值阶段:取指令,同时指令地址+ 1 。– 执行阶段:取操作数,运算。
![Page 28: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/28.jpg)
电子科技大学
最终数据通路 ( 简化 )
memorymemory
irirpcpc
accacc
address bus
data bus
control
alualu
![Page 29: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/29.jpg)
Cycle1: 取指 & PC++
memorymemory
irirpcpc
accacc
address bus
data bus
control
alualualualu
![Page 30: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/30.jpg)
Cycle1: 取指 & PC++
memorymemory
pcpc
accacc
address bus
data bus
control
alualualualu
iriririrpc
![Page 31: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/31.jpg)
Cycle2: 取操作数 + 执行
memorymemory
irirpcpc
accacc
address bus
data bus
control
alualu
irir
alualu
![Page 32: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/32.jpg)
Cycle2: 取操作数 + 执行
memorymemory
irirpcpc
accacc
address bus
data bus
control
alualu
irir
alualuaccacc
![Page 33: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/33.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/34.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/35.jpg)
电子科技大学
Control Logic
Fetch
Execute 输出译码
FsmState
OpCode
Rst
ACCz
ACC[15]
控制信号
stop
![Page 36: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/36.jpg)
电子科技大学
需求再次升级 : 指令流控制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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/37.jpg)
电子科技大学
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/38.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/39.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/40.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/41.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/42.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/43.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/44.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/45.jpg)
电子科技大学
Control Logic
Fetch
Execute 输出译码
FsmState
OpCode
Rst
ACCz
ACC[15]
控制信号
stop在标准 mu0 设计中,没有使用 stop 状态,
而是回绕到Execute 。
![Page 46: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/46.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/47.jpg)
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](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/48.jpg)
电子科技大学
Cpu 的性能提高策略• 提高系统时钟频率:
– 微码 ROM 硬连线逻辑 ;– 指令流水线。 ( 流水线 mu0 需要将跳转指令的指令周期扩展成 2 个时钟 ) ;
• 程序与数据总线分开:哈佛总线。• 进一步提高 IPC :超标量结构。• 突破存储器带宽瓶颈:指令 Cache 和数据
Cache 。• DSP 中,引入硬件乘加器等以提高数据处理速度。
![Page 49: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/49.jpg)
电子科技大学
指令流水
取指 译码 执行
取指 译码 执行
取指 译码 执行
指令 1
指令 2
指令 3
![Page 50: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/50.jpg)
电子科技大学
其他内容• 可以参考有关资料。• 对 CPU 设计感兴趣者可以参考:
– 《 ARM SoC体系结构》,北京航空航天出版社;
– 《 Modern Processor Design – Fundamentals of Superscalar Processors 》, John Paul Shen 。译本:《现代处理器设计 ---- 超标量处理器基础》,电子工业出版社。
![Page 51: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/51.jpg)
电子科技大学
小结• 复杂数字系统设计:数据通路 + 控制逻
辑;• 需求分析 系统验证 模块划分及接
口时序设计 状态机设计 代码编写 设计验证。
![Page 52: 数字系统的 RTL 设计 学时分配:10](https://reader031.vdocuments.mx/reader031/viewer/2022033004/56815911550346895dc63dd9/html5/thumbnails/52.jpg)
电子科技大学
课程结束
谢谢!