42
1 第2第 第第第 SoC 第 第第第第 第第第 SoC 第 第第第第 第第第第 第第第 第第第第第 统统

第 2 课 嵌入式 SoC 系统设计概述

  • Upload
    cheng

  • View
    93

  • Download
    8

Embed Size (px)

DESCRIPTION

第 2 课 嵌入式 SoC 系统设计概述. 嵌入式 SoC 系统设计技术 嵌入式系统的系统级描述方法. 2.1 嵌入式系统设计技术. 处理器技术 IC 技术 设计技术. 1. 处理器技术. ( 体系结构考虑 ). 1 处理器定制化程度. 随着处理问题的不同,处理器有不同的定制化程度. total = 0 for i = 1 to N loop total += M[i] end loop. 需要的功能. 单用途 处理器. 通用目的 处理器. 专用 - PowerPoint PPT Presentation

Citation preview

Page 1: 第 2 课  嵌入式 SoC 系统设计概述

1

第 2课 嵌入式 SoC 系统设计概述 嵌入式 SoC 系统设计技术 嵌入式系统的系统级描述方法

Page 2: 第 2 课  嵌入式 SoC 系统设计概述

2

2.1 嵌入式系统设计技术 处理器技术 IC 技术 设计技术

Page 3: 第 2 课  嵌入式 SoC 系统设计概述

3

1. 处理器技术

( 体系结构考虑 )

Page 4: 第 2 课  嵌入式 SoC 系统设计概述

4

1 处理器定制化程度随着处理问题的不同,处理器有不同的定制化程度

total = 0for i = 1 to N loop total += M[i]end loop

通用目的处理器

单用途处理器

专用处理器

需要的功能

Page 5: 第 2 课  嵌入式 SoC 系统设计概述

5

2 处理器计算引擎结构计算引擎结构 -- 实现系统所需功能处理器不必是可编程的

“ 处理器” 不等于是通用目的处理器

IR PC

寄存器文件

通用ALU

数据通道控制器

程序存储器

Assembly code for:

total = 0 for i =1 to …

控制逻辑和状态寄存器

数据存储器

通用目的处理器 (“ 软件” ) 单用途 (“ 硬件” )

数据通道控制器

控制逻辑

状态寄存器

数据存储器

索引

总计

+

IR PC

寄存器文件

专用ALU

数据通道控制器

程序存储器

Assembly code for:

total = 0 for i =1 to …

控制逻辑和状态寄存器

数据存储器

专用

Page 6: 第 2 课  嵌入式 SoC 系统设计概述

6

Microcontroller

CCD preprocessor Pixel coprocessorA2D

D2A

JPEG codec

DMA controller

Memory controller ISA bus interface UART LCD ctrl

Display ctrl

Multiplier/Accum

Digital camera chip

lens

CCD

Hardware

Software

举例:数码相机 SoC 系统

Page 7: 第 2 课  嵌入式 SoC 系统设计概述

7

2. IC 技术

( 实现技术考虑 )

Page 8: 第 2 课  嵌入式 SoC 系统设计概述

8

数字电路实现方式

把数字(门级)实现映射到 IC 上的方法 IC 技术的差别在于如何根据特定的设计来定制 IC IC 一般都有 10 层以上的结构

谁来建立布局层? 何时建立布局层?

source drainchanneloxidegate

Silicon substrate

IC package IC

Page 9: 第 2 课  嵌入式 SoC 系统设计概述

9

3 类 IC 技术

全定制 VLSI

半定制 ASIC ( 门阵列和标准 Cell)

PLD ( 可编程逻辑阵列 )

Page 10: 第 2 课  嵌入式 SoC 系统设计概述

10

1 全定制 VLSI - ASIC

所有的层均根据嵌入式系统的特定数字实现进行优化 晶体管的布局放置,降低连线长度 调整晶体管尺寸,优化信号的传输 走线调整

优点 非常高的性能、尺寸小、低功耗

缺点 非常高的 NRE 成本、非常长的上市时间

Page 11: 第 2 课  嵌入式 SoC 系统设计概述

11

2 半定制 IC

较低层已经全部或部分建立 晶体管和逻辑门级的掩模已经建立,设计师只需要完成连线

的各层

优点 良好性能、比全定制低的 NRE 成本

缺点 仍然需要几周到几个月的流片开发时间

Page 12: 第 2 课  嵌入式 SoC 系统设计概述

12

3 PLD ( 可编程逻辑器件 )所有的层都已经存在

设计师可以购买一个 IC ( FPGA 芯片) 通过修改 IC 中各模块的连接可以实现需要的功能 现场可编程门逻辑阵列 (FPGA) 非常流行

优点 低 NRE 成本、 IC 立即可用

缺点 体积更大、单位成本更高、功耗大、速度较慢

Page 13: 第 2 课  嵌入式 SoC 系统设计概述

13

4 处理器和 IC 技术的权衡基本权衡

通用 vs 定制 处理器技术与 IC 技术的取舍 两种技术是独立的。

通用目的处理器

ASIP 单用途 处理器

Semi-customPLD Full-custom

通用型改善之处 : 定制型改善

功耗性能大小

成本(高产量)

灵活性可维护性NRE 成本

建立样机时间上市时间

成本(低量产)

Page 14: 第 2 课  嵌入式 SoC 系统设计概述

14

3. 设计技术

( 设计方法学考虑 )

Page 15: 第 2 课  嵌入式 SoC 系统设计概述

15

设计技术—自顶向下流程如何将所需的系统功能从概念转变成实现的方法

库 /IP: 将预先设计好的低抽象级实现用于高级

系统规范

行为级规范

寄存器传输规范

逻辑实现

至最终实现

编译 / 综合 : 自动产生低级实现细节

测试 / 验证:确保每级功能正确,减少各级之间来回反复的成本

编译 /综合 : 库 /IP 测试 / 验证

系统级综合

行为级综合

RT 综合

逻辑综合

硬件 /软件 /OS

RT元件

逻辑门 /单元

模型仿真器 /检查器

硬件软件协同仿真器

HDL仿真器

逻辑门仿真器

Page 16: 第 2 课  嵌入式 SoC 系统设计概述

16

改进设计流程以提高设计效率的方法

编译 / 综合

库 /IP

测试 / 验证

Page 17: 第 2 课  嵌入式 SoC 系统设计概述

17

2.2 嵌入式系统级描述方法1. 计算模型 计算模型实例 -FSM 状态机的实现

Page 18: 第 2 课  嵌入式 SoC 系统设计概述

18

需求分析

规格说明

体系结构设计

硬件设计

系统集成

系统测试

产 品

软件设计执行装置设计

传统设计主要抽象层次

Page 19: 第 2 课  嵌入式 SoC 系统设计概述

19

体系结构设计 规格说明不讲系统如何做,而只讲系统做什么体系结构设计是设计者认为的设计第一阶段 目的:

描述系统如何实现那些功能,如何计划系统的各个构件。

GPS 接受信号

数据库

显示器搜索引擎 转换器

用户界面

移动地图框图

Page 20: 第 2 课  嵌入式 SoC 系统设计概述

20

数据库搜索转换器

位置 用户界面 时钟

像素软件

显示器

缓冲器CPU

GPS信号接收器

I /O面板

存储器

硬件

图1-6移动地图的硬件和软件系统

移动地图系统体系结构细化

Page 21: 第 2 课  嵌入式 SoC 系统设计概述

21

如何继续向下细化直至系统实现?

一般采用经验性设计 如何验证性能满足要求? 如何避免系统实现中的功能性错误? 如何保证上市时间?

Page 22: 第 2 课  嵌入式 SoC 系统设计概述

22

2.2.1 嵌入式系统的计算模型描述

1. 系统行为的复杂度2. 模型与语言

Page 23: 第 2 课  嵌入式 SoC 系统设计概述

23

随着 IC容量的增加而增加 过去 : 洗衣机 , 小游戏等 (几百条语句) 目前 : TV 机顶盒 , 移动电话等(几十万条语句)

描述的行为通常初始阶段无法很好理解 由于描述错误造成的大量实现 Bug

用汉语描述系统

嵌入式系统行为的复杂度

Page 24: 第 2 课  嵌入式 SoC 系统设计概述

24

模型与语言

Models

Languages

食谱

德语英语 日语

诗词 故事

食谱与英文时序程

C++C Java

状态图 数据流

顺序程序与 C语言

Page 25: 第 2 课  嵌入式 SoC 系统设计概述

25

模型与语言

如何精确的捕获系统行为 计算模型是关键环节,也可以考虑用 C 和 C++

常用计算模型 Common computation models: 时序程序模型 ( Sequential program model )

程序流程图 通信进程模型 ( Communicating process model )

可描述多个并发的时序程序模型 状态机模型 ( State machine model )

控制为主的系统。 数据流模型 ( Dataflow model )

数据为主的系统 面向对象模型 ( Object-oriented model )

Page 26: 第 2 课  嵌入式 SoC 系统设计概述

26

2.2.2 计算模型的举例 -FSM 一个电梯控制器的实例

Page 27: 第 2 课  嵌入式 SoC 系统设计概述

27

一个电梯控制器的实例

简单的电梯控制器 请求解析器

解析不同楼层请求,确认一个被请求楼层

单元控制器 将电梯移到被请求楼层

用 C 语言来捕获。。。

buttonsinside

elevator

UnitControl

b1

down

open

floor

...

RequestResolver

...

up/downbuttons on

eachfloor

b2bN

up1up2dn2

dnN

req

up

System interface

up3dn3

Page 28: 第 2 课  嵌入式 SoC 系统设计概述

28

使用时序程序模型描述电梯控制器

“ 将电梯向上或向下移动到被请求楼层,到达被请求楼层后,打开电梯门至少 10s ,并一直保持打开状态,直到被请求的楼层改变,确保电梯门在移动中决不会打开。不能改变电梯移动的方向,除非向上移动时没有更高层请求或向下没有更低层请求。。。。”

用自然语言的描述时序程序模型

void UnitControl() { up = down = 0; open = 1; while (1) { while (req == floor); open = 0; if (req > floor) { up = 1;} else {down = 1;} while (req != floor); up = down = 0; open = 1; delay(10); }}

void RequestResolver() { while (1) ... req = ... ...}void main() { Call concurrently: UnitControl() and RequestResolver()}

Inputs: int floor; bit b1..bN; up1..upN-1; dn2..dnN;Outputs: bit up, down, open;Global variables: int req;

You might have come up with something having even more if statements.

Page 29: 第 2 课  嵌入式 SoC 系统设计概述

29

状态机模型 (FSM)

考虑用 FSM 模型描述系统: 可能的状态

E.g., Idle, GoingUp, GoingDn, DoorOpen 由 input引起的一个状态到另一个状态的迁移

E.g., req > floor 每个状态发生的活动

E.g., In the GoingUp state, u,d,o,t = 1,0,0,0 (up = 1, down, open, and timer_start = 0)

Try it...

Page 30: 第 2 课  嵌入式 SoC 系统设计概述

30

状态机模型 (FSM)

Idle

GoingUp

req > floor

req < floor

!(req > floor)

!(timer < 10)

req < floor

DoorOpen

GoingDn

req > floor

u,d,o, t = 1,0,0,0

u,d,o,t = 0,0,1,0

u,d,o,t = 0,1,0,0

u,d,o,t = 0,0,1,1

u is up, d is down, o is open

req == floor

!(req<floor)

timer < 10

t is timer_start

UnitControl 过程的状态机

Page 31: 第 2 课  嵌入式 SoC 系统设计概述

31

  第二讲 主要内容

嵌入式系统的设计技术 嵌入式系统的系统级描述方法

计算模型

简单实例

状态机的使用

并行性的表述

Page 32: 第 2 课  嵌入式 SoC 系统设计概述

32

FSM 的形式定义FSM 是一个 6 元组 F<S, I, O, F, H, s0>

S :为所有状态的集合 {s0, s1, …, sl}

I :为所有输入的集合 {i0, i1, …, im} O:为所有输出的集合 {o0, o1, …, on} F :次态函 数 (S x I → S ) H :输出函数 (S → O ) s0 :初始状态

Page 33: 第 2 课  嵌入式 SoC 系统设计概述

33

Finite-state machine with datapath model (FSMD)

FSMD :扩展 FSM , 保存的数据具有复杂的数据类型和变量

FSMs 仅使用布尔数据类型和操作,没有使用变量

FSMD: 7 元组 <S, I , O, V, F, H, s0> S :状态集 {s0, s1, …, sl} I :输入集 {i0, i1, …, im} O :输出集 {o0, o1, …, on}

V :变量集 {v0, v1, …, vn} F :次态函数 (S x I x V → S) H:操作函数 (S → O + V) s0 :初始状态

Page 34: 第 2 课  嵌入式 SoC 系统设计概述

34

Finite-state machine with datapath model (FSMD)

Idle

GoingUp

req > floor

req < floor

!(req > floor)

!(timer < 10)

req < floor

DoorOpen

GoingDn

req > floor

u,d,o, t = 1,0,0,0

u,d,o,t = 0,0,1,0

u,d,o,t = 0,1,0,0

u,d,o,t = 0,0,1,1

u is up, d is down, o is open

req == floor

!(req<floor)

timer < 10

t is timer_start

把 UnitControl 描述成一个 FSMD

Page 35: 第 2 课  嵌入式 SoC 系统设计概述

35

如何把一个系统描述成一个状态机

1. 列出所有的状态2. 声明所有的变量(在本例中没有)3. 对每一个状态,列出到其它状态的所有可能的转移和相关的条件4. 对每个状态或迁移,列出相关操作5. 对每个状态,确保现有转移条件是互斥和完整的 互斥:任意两个条件不能同时成立; 完整:任意时间所有条件中总有一个成立

Page 36: 第 2 课  嵌入式 SoC 系统设计概述

36

状态机与时序程序模型

每种模型反映了对系统行为的不同考虑方式 状态机 : 鼓励设计者要先清楚所有可能的状态,

以及在所有可能输入下可能产生的状态转移 时序程序模型 : 通过可遍历和可条件执行的指令序列来变换数据

状态机描述的优势 更自然的计算手段 其优势不在于采用的是图形表达 (state diagram)

采用文本语言仍然具有相同优势 (i.e., state table) 此外,时序程序模型也能够用图形表达的方式 (i.e., flowchart)

Page 37: 第 2 课  嵌入式 SoC 系统设计概述

37

2.2.3 状态机的时序实现

1. 用时序语言实现状态机 语言子集方法 时序语言的状态机模版

Page 38: 第 2 课  嵌入式 SoC 系统设计概述

38

在时序程序语言中捕获状态机目前所有的开发工具都是基于时序程序语言的

C, C++, Java, Ada, VHDL, Verilog, etc. 希望能用流行的工具进行系统开发。

两种捕获状态机的方法 前端工具方法

需要安装额外的工具支持状态机语言 图形 / 文本 状态机语言 可以支持图形仿真 顺序程序语言代码自动生成,并被输入到主程序中

缺点:必须支持额外的工具 (license 成本,升级,培训等 ) 语言子集( Language subset )方法

一种最常使用的方法。。。

Page 39: 第 2 课  嵌入式 SoC 系统设计概述

39

语言子集方法

遵循一套规则模板,用一组等效的时序语言结构来捕获状态机结构最常用的状态机表达工具

C , VHDL/Verilog)

用 C 来捕获UnitControl 状态机 枚举所有的状态 (#define) 声明状态变量并用初始状态进行初始化 (IDLE) 单 switch 语句分支到当前状态的 case 每个 case 有对应的操作或

up, down, open, timer_start 每个 case 分支检查迁移条件,以确定下一状态

if(…) {state = …;}

Page 40: 第 2 课  嵌入式 SoC 系统设计概述

40

#define IDLE 0#define GOINGUP 1#define GOINGDN 2#define DOOROPEN 3void UnitControl() { int state = IDLE; while (1) { switch (state) { IDLE: up=0; down=0; open=1; timer_start=0; if (req==floor) {state = IDLE;} if (req > floor) {state = GOINGUP;} if (req < floor) {state = GOINGDN;} break; GOINGUP: up=1; down=0; open=0; timer_start=0; if (req > floor) {state = GOINGUP;} if (!(req>floor)) {state = DOOROPEN;} break; GOINGDN: up=1; down=0; open=0; timer_start=0; if (req < floor) {state = GOINGDN;} if (!(req<floor)) {state = DOOROPEN;} break; DOOROPEN: up=0; down=0; open=1; timer_start=1; if (timer < 10) {state = DOOROPEN;} if (!(timer<10)){state = IDLE;} break; } }} UnitControl state machine in sequential programming language

Page 41: 第 2 课  嵌入式 SoC 系统设计概述

41

#define S0 0#define S1 1...#define SN Nvoid StateMachine() { int state = S0; // or whatever is the initial state. while (1) { switch (state) { S0: // Insert S0’s actions here & Insert transitions Ti leaving S0:

if( T0’s condition is true ) {state = T0’s next state; /*actions*/ }

if( T1’s condition is true ) {state = T1’s next state; /*actions*/ }

... if( Tm’s condition is true ) {state = Tm’s next state; /*actions*/ }

break; S1: // Insert S1’s actions here // Insert transitions Ti leaving S1

break; ... SN: // Insert SN’s actions here // Insert transitions Ti leaving SN

break; } }}

状态机通用模板

Page 42: 第 2 课  嵌入式 SoC 系统设计概述