PowerPoint 演示文稿

Download Report

Transcript PowerPoint 演示文稿

第五章 可编程逻辑
梁华国
黄正峰
计算机与信息学院
计算机系统结构研究室
http://www1.hfut.edu.cn/department/jisuanji/c
n/workroom/socwebnew/index.php/
1
第五章 可编程逻辑





PLD的基本概念
现场可编程门阵列FPGA
在系统可编程ISP
可编程逻辑的原理图方式设计
可编程逻辑的VHDL文本方式设计
2
PLD的基本概念
 可编程阵列
 与阵列
 或阵列
 可编程连接技术
 PLD的类型
 简单可编程逻辑器件SPLD
 复杂可编程逻辑器件CPLD
3
可编程阵列
 PLD是用可编程阵列组成的。
 可编程阵列本质上是行、列导线组成的导电
网格。
 在网格的交叉点上,通过熔断金属丝等连接
技术来实现逻辑1或逻辑0。
 可编程阵列分类:与阵列和或阵列
4
与阵列
5
与阵列实现三变量的与或表达式
6
或阵列
7
可编程连接技术
 熔丝技术:编程之前,熔丝相连,状态称为逻辑1;熔
丝熔断后的状态称为逻辑0。非易失。
 反熔丝技术:这种连接与熔丝连接正好相反,不是
破坏连接,而是建立连接。非易失。
 E2PROM技术:加电的方式可以擦除或重写,ISP在
系统编程。非易失。
 SRAM技术:SRAM存储元通过触发器实现行列交叉
点的连接、断开。易失,每次加电,PLD编程数据
须重新写入。(如何解决?)
8
SRAM为基的与阵列
9
PLD的类型
 简单可编程逻辑器件SPLD
 复杂可编程逻辑器件CPLD
10
SPLD 的分类
11
CPLD的结构框图
 CPLD:可编程的互连总线连接的SPLD。
12
三
大
F
P
G
A
提
供
商
13
Xilinx Revenue
$1.73B in 2005
500
Xilinx $481M
in Q206
收入比较
Xilinx
In Millions of U.S. Dollars
450
400
350
Altera
300
250
200
150
100
Q306
Q305
Q105
Q304
Q104
Q303
Q103
Q302
Q102
Q301
Q101
Q300
Q100
Q399
Q199
Q398
Q198
Q397
Q197
Q396
Q196
Q395
Q195
Q394
Q194
Q393
Q193
Q392
Q192
Q391
Q191
0
Q106
Lattice
Actel
QuickLogic
50
Revenue by calendar quarter
Source: Company Reports (LSCC, ALTR, ACTL, XLNX, QUIK)
14
可编程器件市场份额(2007)
FPGA Segment
Xilinx
55%
35%
Altera
10%
All
Others
Xilinx revenues are greater than all other pure-play PLD companies combined.
15
Source: Company reports
Latest information available; computed on a 4-quarter rolling basis
性能比较
 Xilinx
 Spartan3E
 50万门
 Virtex II Pro:XC2VP30
 300万门,2个
PowerPC
 Virtex-4:
XC4VSX25FF668
 800万门
 Altera
 Cyclone: EP1C6Q240
 约12万门
 Cyclone II: EP2C35F672
 等效150万门,没有硬
核
 Stratix II
 500万门
16
65nm技术 Xilinx Virtex5 FPGA
ECC and Interconnect
18 Kbit
FIFO Logic
18 Kbit
36Kbit Dual-Port Block RAM / FIFO
with ECC
Higher Bandwidth
FPGA Industry’s First Built-in PCIe & Ethernet Blocks
Protocol Support
ExpressFabric™
Real 6-input LUT, Up to 330,000 Logic Cells
30% Higher Performance
Virtex-5
3.2 Gbps Serial Transceivers
Lowest Power
Virtex-4
ExpressFabric™
New Interconnect Architecture
Enhanced Routing
mp
25x18 DSP Slice
Higher Precision
2nd Generation Sparse Chevron
Superior Signal Integrity
DCM
DCM
PLL
Second Generation Triple-oxide,
Advanced 65nm Process,
1 Volt Core, Strained Silicon
Low Power
550 MHz Clock Management DCM
(precision synthesis)
+ PLL (Low jitter)
ASIC
SRAM
ASSP
FLASH
3.3V SelectIO with ChipSync
1.25 Gbps LVDS,
800 Mbps Single-Ended
17
第五章 可编程逻辑





PLD的基本概念
现场可编程门阵列FPGA
在系统可编程ISP
可编程逻辑的原理图方式设计
可编程逻辑的VHDL文本方式设计
18
现场可编程门阵列FPGA
 FPGA的基本结构
 可组态逻辑块CLB
 SRAM为基础的FPGA
19
比较FPGA和CPLD
 复杂度:FPGA比CPLD复杂。
 体系结构:
 FPGA包括:
 逻辑块CLB
 可编程互连总线
 I/O输入输出块
 CPLD包括:
 SPLD
 可编程的互连总线
 粒度差异:
 FPGA的逻辑块CLB功能简单、数量大(细粒度/fine grain)。
 CPLD的逻辑块LAB功能复杂、数量小(粗粒度/coarse grain) 。
20
比较FPGA和CPLD
 PLD适合于设计复杂的组合逻辑(如:译码器) 。
 CPLD分解组合逻辑的功能很强。
 一个宏单元就可以分解十几个甚至20-30多个组
合逻辑输入。
 FPGA的一个LUT只能处理4输入的组合逻辑。
 FPGA适合于设计复杂的时序逻辑。
 FPGA芯片中包含的LUT(Look-Up Table)和触
发器,数量非常多。
21
比较FPGA和CPLD
 PLD拥有上电即可工作的特性。
 大部分FPGA需要一个加载过程。
 所以,如果系统要可编程逻辑器件上电就要
工作,那么就应该选择PLD。
22
查找表(Look-Up-Table)
 LUT本质是RAM。FPGA中多使用4输入的
LUT,LUT可看成4位地址线的16x1的RAM。
 用户通过原理图/HDL语言描述了逻辑电路后,
PLD/FPGA开发软件会自动穷举逻辑电路的
所有结果,并把结果事先写入RAM。
 输入信号进行逻辑运算就等于输入一个地址
进行查表,找出地址对应的内容,然后输出
即可。
23
4输入与门的LUT实例
24
FPGA的基本结构框图
25
现场可编程门阵列FPGA
 FPGA的基本结构
 可组态逻辑块CLB
 SRAM为基础的FPGA
26
基本可组态CLB
 CLB处在行列可编程的互连总线之内。
 互连总线用来连接这些CLB。
 CLB的结构组成:
 逻辑模块
 本地可编程互连总线
27
CLB的内部结构
 CLB包含若干个较小的逻辑模块(Logic
Module)
 一个逻辑模块可以实现组合逻辑,也可以实
现时序逻辑。
28
可组态逻辑块CLB
29
FPGA中一个逻辑模块的框图
30
LUT编成后用作SOP表达式输出
31
现场可编程门阵列FPGA
 FPGA的基本结构
 可组态逻辑块CLB
 SRAM为基础的FPGA
32
SRAM为基础的FPGA
 根据制造技术不同,FPGA在体系结构上分
可变或不变两种。
 “不变”:基于反熔丝技术。
 “可变”:基于SRAM技术。
 当电源关闭时,被编程到CLB的所有数据将丢失。
 解决办法:
 另外配置一块EPROM/Flash,用于存放可编程互连资
源的信息。
 上电时,SRAM从EPROM/Flash读入相关信息。
33
第五章 可编程逻辑





PLD的基本概念
现场可编程门阵列FPGA
在系统可编程ISP
可编程逻辑的原理图方式设计
可编程逻辑的VHDL文本方式设计
34
在系统可编程ISP
 在系统可编程ISP的特点
 ispLSI器件的体系结构
 在系统编程原理
35
在系统可编程ISP的特点
 常规的PLD是对器件各自先编程后装配
 ISP技术先装配后编程,成为产品后还可反复
编程
 ISP技术的出现,使得数字系统的设计,生产
和维护都发生革命性的变化
 可测性设计(Design-For-Test)
 可生产性设计(Design-For-Manufacture)
36
可测性设计(Design-For-Test)
37
可测性设计(Design-For-Test)
0
38
数字系统的最新趋势
 软件和硬件的相互融合
 软、硬件协同设计(手机)
 硬件和软件相互制约(Godson)
 硬件设计流程的软件化(借助EDA软件工具)
39
软、硬件协同设计
 以手机的硬件平台和对应的操作系统为例
 Nokia E71使用主频为369MHZ的ARM 11处
理器,Symbian9.2操作系统,拥有110MB
存储空间,机身可用的RAM达70MB。
40
硬件和软件相互制约
 Windows + Intel 的黄金搭档
 Godson + Linux 的无奈之举
 09年,法国Emtec公司推出基于龙芯2F处理
器平台的笔记本,售价约为349.99美元。
41
龙芯专卖店首家北京中关村开业(2009)
42
龙芯专卖店内展示龙芯芯片
43
龙芯系列处理器
44
龙芯2F开发板
45
正在访问新浪网的龙芯笔记本
46
使用龙芯的天罗系列防火墙
47
ISP技术的特点
(1)ISP技术在数字设计阶段的贡献
①设计样机(Time-To-Market)
②系统调试(软硬件协同设计)
数码产品:
③电路板的重构和现场的升级换代
大鱼吃小鱼 VS 快鱼吃慢鱼
拓展:远程升级!
一张升级磁盘就实现逻
辑重构,成本低。
48
ISP技术的特点
(2) ISP对数字系统生产阶段的贡献
①简化了生产流程且无引脚损伤
②多功能硬件
简化了用量测算、
③边界扫描测试
订货、库存
简化生产流程,降低
④产品维护和产品升级 生产成本
简化现场诊断与测试
49
ISP技术的特点
50
在系统可编程ISP
 在系统可编程ISP的特点
 ispLSI器件的体系结构
 在系统编程原理
51
ispLSI器件的结构
 ispLSI系列器件是基于与或阵列结构。
 芯片由巨块组成,通过全局布线区连接。
 巨块包括:
 通用逻辑块GLB
 (CF:FPGA中的CLB)
 输出布线区ORP
 I/O单元和专用输入单元
52
ispLSI1032器件的结构
 芯片含84个引脚
 (64个I/O引脚)
 集成密度为6000个等效门
 最高工作频率为90MHZ
 含128个触发器和64个锁存器
 CF:触发器和锁存器?
53
ispLSI器件的结构
GLB是基本的
逻辑单元
GRP位于芯片的中央,以
固定的方式将所有片内
逻辑联系在一起。
54
全局布线区(GRP)
 GRP位于芯片的中央,它以固定的方式将所
有片内逻辑联系在一起。
 I/O之间的延迟是恒定的和可预知的。
55
通用逻辑块GLB
 ispLSI1032的与阵列有18个输入端,
 16个来自GRP
 2个专用输入端
 每个GLB有20个与门,形成20个乘积项,再
通过四个或门输出。
 四输出宏单元有四个触发器,触发器可组态为
D,T,JK等形式。
 GLB有5种组态模式。
56
GLB的逻辑框图
57
GLB的5种组态模式





标准组态模式
高速直通组态模式
异或逻辑组态模式
多模式组态模式
单乘积项组态模式
58
ispLSI器件(标准组态)
59
ispLSI器件(高速直通组态)
60
ispLSI器件(异或逻辑组态)
61
ispLSI器件 (多模式组态)
62
ispLSI器件 (单乘积项组态)
63
在系统可编程ISP
 在系统可编程ISP的特点
 ispLSI器件的体系结构
 在系统编程原理
64
在系统编程原理和方法
在系统编程过程:
 将JEDEC数据自SDI端串行输入数据寄存器。
 将编程数据写入E2CMOS单元。
 将写入的数据自SDO移出进行校验。
65
ispLSI的编程结构转换图
逐行编程
66
ispLSI的工作模式
 ispLSI两种工作模式
 正常模式
 编辑模式
 ispLSI器件有五个编程接口





ispEN
SDI
SDO
MODE
SCLK
67
ispLSI的工作模式
 正常模式
 ispEN = 1
 编辑模式
 ispEN = 0
 所有I/O端的三态缓冲处于高阻态
 切断了芯片与外电路的联系
 SDI的两项功能(功能复用)
 MODE=0,串行移位寄存器的输入
 MODE=1,编程状态机的一个控制信号
68
ispLSI的编程状态机
69
在系统编程原理和方法
ISP器件的编程方式
 用PC机的并行口编程,接在打印机端口
 多芯片ISP编程
 典型的ISP编程电路
70
典型的ISP编程电路
 SDI、SDO、MODE、SCLK 分别连接在一起
 ispEN逐个使能各器件
71
第五章 可编程逻辑





PLD的基本概念
现场可编程门阵列FPGA
在系统可编程ISP
可编程逻辑的原理图方式设计
可编程逻辑的VHDL文本方式设计
72
可编程逻辑的原理图方式设计






编程环境和设计流程图
设计输入
功能模拟
综合和实现(软件)
时序模拟
器件下载
73
编程环境和设计流程图
 编程环境。目标器件的放置采用两种方法:
①用编程器。②用开发板。ISP芯片可以直
接使用系统板。
74
可编程逻辑的原理图方式设计






编程环境和设计流程图
设计输入
功能模拟
综合和实现(软件)
时序模拟
器件下载
75
设计输入
 文本输入
 用硬件描述语言(HDL)完成,通用性好。
 原理图输入
 可视化逻辑元件拖放、连接,直观简单,难以
适应大规模的电路设计。
 太过复杂的逻辑电路可以分段输入
 分层指示法
 分而治之:divide and conquer strategy
76
设计输入的实例:原理图 vs 文本 ?
77
逻辑分段与结合的例子
78
可编程逻辑的原理图方式设计






编程环境和设计流程图
设计输入
功能模拟
综合和实现(软件)
时序模拟
器件下载
79
功能模拟
80
可编程逻辑的原理图方式设计






编程环境和设计流程图
设计输入
功能模拟
综合和实现(软件)
时序模拟
器件下载
81
综合和实现(软件)
 优化目标:




Area
Speed(Delay)
Power(Clock Gating)
Reliability
 优化目标之间难以兼顾。
 综合阶段输出:网表。
 网表由综合软件生成
 网表描述元件和元件之间的连接关系
82
综合阶段的优化例子
83
可编程逻辑的原理图方式设计






编程环境和设计流程图
设计输入
功能模拟
综合和实现(软件)
时序模拟
器件下载
84
时序模拟
 时序模拟的目的:
 确保电路以设计频率工作
 没有传输延迟或其他影响全局操作的时序问题。
 时序模拟=功能模拟+目标器件的延迟
 延迟包括门延迟和线延迟
85
门延迟信息的实例
86
时序模拟的实例
两个4位二进制数比较器的仿真波形
87
可编程逻辑的原理图方式设计






编程环境和设计流程图
设计输入
功能模拟
综合和实现(软件)
时序模拟
器件下载
88
器件下载
 产生二进制码表示的位流后,发送到目标器
件进行自动配置。
 下载完成后,设计已放置在目标器件上,并
且可以在电路上进行测试。
89
第五章 可编程逻辑





PLD的基本概念
现场可编程门阵列FPGA
在系统可编程ISP
可编程逻辑的原理图方式设计
可编程逻辑的VHDL文本方式设计
90
VHDL入门
 VHDL:
 Very high speed integrated circuit
Hardware
Description
Language
 超高速集成电路硬件描述语言
 戏称为:Very Hard Description Language
(J.Bhasker 贝尔实验室)
91
VHDL和Verilog HDL(1)
 国内外普遍使用的主流硬件描述语言只有两种:
VHDL和Verilog HDL。
 VHDL
 以ADA语言为基础,由美国国防高级研究计划局
(DARPA)开发
 1987年定为IEEE1076标准
 美国国防部规定为官方ASIC设计语言。
 Verilog HDL
 在用途最广泛的C语言的基础上发展起来
 1995年定为IEEE1364标准
92
VHDL和Verilog HDL(2)
 VHDL
 较为适合特大型(千万门级以上)的系统级设计
 Verilog HDL较为适合系统级、算法级、RTL级、
门级和电路开关级
93
VHDL和Verilog HDL(3)
 VHDL比较严谨,
 inout std_logic_vector(31 downto 0);
 Verilog比较自由,
 初学还是用VHDL比较好,初学用Verilog比较容易出错。
 inout [31:0]
 在中国台湾省、美国、日本等使用 Verilog 较多,
而在欧洲 VHDL 发展得比较好。国内大多数集成电
路设计公司(中兴、华为)基本都采用 Verilog。
94
Which is better ?
 I know both languages equally well.When
asked which one I prefer,I usually answer
that I was asked the wrong question.The
right question should be"Which one do I
hate the least?"And the answer to that
question is :"the one I'm not currently
working with "
95
可编程逻辑的VHDL文本方式设计
 VHDL的基本概念
 VHDL的组合逻辑设计
 VHDL的时序逻辑设计
96
VHDL的基本结构
 实体 (Entity)
 描述所设计的系统的外部接口信号
 结构体(Architecture)
 描述系统内部的结构和行为
 包集合(Package)
 存放各种设计模块能共享的数据类型
 库(Library):
 存放已编译过的模块单元
 配置( Configuration):
 从库中选取单元来组成新系统
97
描述结构体功能的三种方法
 数据流描述
 通过布尔类型的语句来描述逻辑电路
 结构描述
 分层次结构,高层可调用低层的设计模块。
 行为描述
 高级描述,类似高级语言编程
98
组合逻辑电路设计
 异或门(74LS86)
 3线-8线译码器(74LS138)
 加法器
99
二输入异或门(74LS86)
 逻辑表达式: y  ab  ab
 真值表:
100
行为描述方式设计的异或门74LS86
库:存放已编译过
的模块单元
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY xor2_v1 IS
实体:描述系统的
外部接口信号
PORT(a,b: IN STD_LOGIC;
y: OUT STD_LOGIC);
END xor2_v1;
ARCHITECTURE behave OF xor2_v1 IS
结构体:描述系统内
部的结构和行为
BEGIN
y <= a XOR b;
END behave;
101
库说明
 Library语句
 声明了IEEE库
 按照IEEE组织制定的工业标准进行编写的标准资源
库。包括STD_LOGIC、STD_LOGIC_VECTOR等
数据类型。
 Use语句
 use 库名.程序包名.项目名
 用到了IEEE库、 IEEE库中STD_LOGIC_1164
程序包的全部资源。
102
实体说明
 要求实体名和存储的文
件名一致。
 实体名是xor2_v1
 存储名是xor2_v1.vhd
 端口类型包括:





In
输入型
out 输出型
inout 输入输出型
buffer 缓冲型
linkage无指定方向,可与任何方向的信号连接
103
std_logic_1164的数据类型
 标准逻辑位std_logic
 标准逻辑矢量std_logic_vector









‘U’
‘X’
‘0’
‘1’
‘Z’
‘W’
‘L’
‘H’
‘-’
--未初始化
--强未知值
--强0
--强1
--高阻
--弱未知值
--弱0
--弱1
--无关项
104
结构体说明
 3种描述方式
 行为描述
 基本设计单元的数学模型描述
 数据流描述
 寄存器传输描述
 结构描述
 逻辑元器件连接描述
 结构体中的语句执行是并行的
 和书写语句的顺序无关
105
逻辑运算符






NOT
AND
OR
NAND
NOR
XOR
106
赋值语句
 信号赋值语句
 目标信号<=表达式[ after 延迟值 ]
 变量赋值语句
 目标变量:=表达式
 变量的说明和赋值语句只能出现在
 进程(Process)
 过程(Procedure)
 函数(Function)
107
观察:能否发现问题?
二输入异或门的仿真波形
108
0
0 0
1 1
1 1
0
1 1
0 0
1 1
0
0 1
1 1
1 0
思考:仿真波形和真值表不一致?
二输入异或门的仿真波形
109
0
0 0
1 1
1 1
0
1 1
0 0
1 1
0 1
1 1
1 0
0
门级延迟
二输入异或门的仿真波形(考虑门级延迟信息)
110
数据流描述方式(依据真值表)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY xor2_v2 IS
PORT(a,b: IN STD_LOGIC;
y: OUT STD_LOGIC);
END xor2_v2;
ARCHITECTURE dataflow OF xor2_v2 IS
BEGIN
PROCESS (a,b)
VARIABLE comb : STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
comb := a & b;
CASE comb IS
WHEN "00"=> y <='0';
WHEN "01"=> y <='1';
WHEN "10"=> y <='1';
WHEN "11"=> y <='0';
WHEN OTHERS => y <='X';
END CASE;
END PROCESS;
END dataflow;
111
进程语句(1)
敏感列表
位连接运算
112
进程语句(2)
 敏感列表
 进程语句有两种工作状态:
 等待状态
 执行状态
 敏感列表中的敏感信号改变后,进程处于执行
状态,否则处于等待状态。
113
组合逻辑电路设计
 异或门(74LS86)
 3线-8线译码器(74LS138)
 加法器
114
Y0
A0
Y1
A1
A2
74138
3线-8线
G1
G2 A
G2 B
译码器
Y2
Y3
Y4
Y5
Y6
Y7
115
输 入
输 出
G1 G2A G2B A2 A1 A0
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
× 1
× × ×
1
1
1
1
1
1
1
1
× × 1
× × ×
1
1
1
1
1
1
1
1
0 × ×
× × ×
1
1
1
1
1
1
1
1
1
0
0
0
0 0
0
1
1
1
1
1
1
1
1
0
0
0
0 1
1
0
1
1
1
1
1
1
1
0
0
0
1 0
1
1
0
1
1
1
1
1
1
0
0
0
1 1
1
1
1
0
1
1
1
1
1
0
0
1
0 0
1
1
1
1
0
1
1
1
1
0
0
1
0 1
1
1
1
1
1
0
1
1
1
0
0
1
1 0
1
1
1
1
1
1
0
1
1
0
0
1
1 1
1
1
1
1
1
1
1
0
×
3线—8线译码器74138真值表
116
数据流描述方式3线-8线译码器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY decoder138_v2 IS
PORT(G1,G2A,G2B: IN STD_LOGIC;
A: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END decoder138_v2;
117
ARCHITECTURE dataflow OF decoder138_v2 IS
BEGIN
PROCESS (G1,G2A,G2B,A)
敏感列表
BEGIN
IF(G1='1' AND G2A='0' AND G2B='0')THEN
CASE A IS
WHEN "000" => Y <="11111110";
WHEN "001" => Y <="11111101";
WHEN "010" => Y <="11111011";
WHEN "011" => Y <="11110111";
WHEN "100" => Y <="11101111";
WHEN "101" => Y <="11011111";
WHEN "110" => Y <="10111111";
WHEN OTHERS => Y <="01111111";
END CASE;
ELSE
Y <="11111111";
END IF;
END PROCESS;
ENDdataflow;
118
1
0
0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
门级延迟
总线显示方式的3线—8线译码器74138仿真波形图
119
组合逻辑电路设计
 异或门(74LS86)
 3线-8线译码器(74LS138)
 加法器
120
加法器是数字电路中的基本运算单元,下
例是直接利用VHDL运算符“+”实现加法运
算的8位加法器源代码。其中A和B是两个相
加的8位二进制数,Cin是低位进位位,S是
A、B相加之和,Co是A、B相加之后的进位
位。
121
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY adder8_v IS
PORT(A :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
B :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Cin:IN STD_LOGIC;
Co : OUT STD_LOGIC;
S :OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END adder8_v;
122
ARCHITECTURE behave OF adder8_v IS
SIGNAL Sint : STD_LOGIC_VECTOR(8 DOWNTO 0);
SIGNAL AA,BB: STD_LOGIC_VECTOR(8 DOWNTO 0);
BEGIN
AA <='0'& A(7 DOWNTO 0); --将8位加数矢量扩展为9位,为进位提供空间
BB <='0'& B(7 DOWNTO 0); --将8位被加数矢量扩展为9位,为进位提供空间
Sint <= AA + BB + Cin;
S(7 DOWNTO 0) <= Sint(7 DOWNTO 0);
Co <= Sint(8);
END behave;
123
门级延迟
8位加法器仿真波形
124
时序逻辑设计
 触发器
 计数器
125
时钟作为敏感信号(1)
 时钟信号的边沿到来时,时序电路的状态才
会发生改变。
 时钟信号是时序电路的执行条件和同步信号。
 通常采用时钟进程的形式来描述
 敏感列表中的敏感信号是时钟信号
126
时钟作为敏感信号(2)
 时钟作为敏感信号的描述方式有两种:
 时钟信号显式地出现在PROCESS语句后面的
敏感信号表中。
 时钟信号没有显式地出现在PROCESS语句后
面的敏感信号表中,而是出现在WAIT语句的后
面。
127
上升沿描述
描述1:
label1:PROCESS(clk)
BEGIN
IF(clk’EVENT AND clk = ‘1’)THEN
┇
AND PROCESS;
描述2:
label2:PROCESS(clk)
BEGIN
WAIT UNTIL clk = ‘1’;
┇
AND PROCESS;
128
下降沿描述
描述1:
label1:PROCESS(clk)
BEGIN
IF(clk’EVENT AND clk = ‘0’)THEN
┇
AND PROCESS;
描述2:
label2:PROCESS(clk)
BEGIN
WAIT UNTIL clk = ‘0’;
┇
AND PROCESS;
129
JK触发器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY JKff_v1 IS
PORT(J,K: IN STD_LOGIC;
clk: IN STD_LOGIC;
set: IN STD_LOGIC;
reset: IN STD_LOGIC;
Q,QB: OUT STD_LOGIC);
END JKff_v1;
ARCHITECTURE behave OF JKff_v1 IS
SIGNAL Q_temp,QB_temp: STD_LOGIC;
130
BEGIN
PROCESS (clk,set,reset)
敏感列表
BEGIN
IF (set ='0' AND reset ='1')THEN
Q_temp <= '1';
置1
QB_temp <= '0';
ELSIF (set ='1' AND reset ='0')THEN
Q_temp <= '0';
置0
QB_temp <= '1';
ELSIF (clk'EVENT AND clk = '1')THEN
上升沿触发
IF(J='0' AND K='1')THEN
Q_temp <= '0';
QB_temp <= '1';
J=0 K=1
131
ELSIF(J='1' AND K='0')THEN
Q_temp <= '1';
J=1 K=0
QB_temp <= '0';
ELSIF(J='1' AND K='1')THEN
Q_temp <= NOT Q_temp ;
QB_temp <= NOT QB_temp;
J=1 K=1
END IF;
END IF;
Q <= Q_temp;
QB <= QB_temp;
进程语句内部是顺序执行
END PROCESS;
END behave;
132
JK触发器仿真波形
133
时序逻辑设计
 触发器
 计数器
134
60进制递增计数器
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
ENTITY cntm60v IS
PORT( en : IN
std_logic;
clear : IN
std_logic;
load : IN
std_logic;
dl,dh : IN
std_logic_vector(3 downto 0);
clk : IN
输入
std_logic;
cout : out std_logic;
ql : buffer std_logic_vector(3 downto 0);
qh : buffer std_logic_vector(3 downto 0) );
缓冲
135
END cntm60v;
ARCHITECTURE behave OF cntm60v IS
signal ent2 : std_logic;
BEGIN
PROCESS (clk)
敏感列表
VARIABLE tmpl,tmph :std_logic_vector(3 downto 0);
BEGIN
IF(clear='0') THEN
tmpl:="0000";
同步清零
tmph:=“0000”;
ELSIF(clk'EVENT AND clk = '1') THEN
上升沿触发
136
IF load='0' THEN
tmpl:=dl;
同步置数
tmph:=dh;
elsif(en='1') then
if (tmpl="1001") then
tmpl:=“0000”;
if(tmph="0101") then
tmph:=“0000”;
个位计数器9+1=0
十位计数器5+1=0
else
tmph:=tmph+1;
end if;
else
tmpl:=tmpl+1;
end if;
137
end IF;
END IF;
--end lf (load)
--end if clear
ql <= tmpl;
ent2 <= tmpl(3) and tmpl(0) and en;
qh<=tmph;
cout<=tmph(2) and tmph(0) and ent2;
- -计数器为59时进位信号 cout 输出‘1’。
END PROCESS;
END behave ;
138
思考:
 PROCESS(clk)
 同步计数器
 PROCESS(clk,en,clear,load)
 异步计数器
139
60进制计数器波形仿真
140