Top Banner
复复复复复复复复复 一、 复复复复复复复复复 一、 CPLD CPLD Complex Programmable Logic Device
27

一、复杂可编程逻辑器件 CPLD

Feb 05, 2016

Download

Documents

leal

一、复杂可编程逻辑器件 CPLD. Complex Programmable Logic Device. 1. PLD 器件简介. 由大量(高至几百万个)独立的与门阵列、或门阵列、触发器和可配置的连线构成的单片通用 CMOS 大规模集成电路。. 使用方法:. 根据所要求的特定功能,通过编程选择内部器件并连线. 特定功能的专用芯片. FPGA ( 现场可编程门阵列):. 有大量触发器,更易设计时序电路。编程数据只需通过简单设备即可下载到芯片中,实现现场编程功能。. PLD 分类. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 一、复杂可编程逻辑器件 CPLD

一、复杂可编程逻辑器件一、复杂可编程逻辑器件CPLD CPLD

Complex Programmable Logic Device

Page 2: 一、复杂可编程逻辑器件 CPLD

1. PLD 器件简介

由大量(高至几百万个)独立的与门阵列、或门阵列、触发器和可配置的连线构成的单片通用 CMOS 大规模集成电路。

根据所要求的特定功能,通过编程选择内部器件并连线

特定功能的专用芯片

使用方法:

Page 3: 一、复杂可编程逻辑器件 CPLD

CPLD (复杂可编程逻辑器件):

FPGA (现场可编程门阵列):

PLD

分类

有大量触发器,更易设计时序电路。编程数据只需通过简单设备即可下载到芯片中,实现现场编程功能。

大量门电路,更易设计组合电路。

编程数据通过计算机下载到芯片中。

在系统编程芯片,可在电路板上直

接对芯片编程。

Page 4: 一、复杂可编程逻辑器件 CPLD

PLDPLD 优点优点

高集成度、高可靠性:可将整个系统集成于同一芯片中,实现所谓片上系统。 通用芯片有固定逻辑功能,其构成的电路技术很难保护。专用芯片是电路设计者自己制造出来的,而且很容易设置保密位,从而形成电路设计者自己的知识产权。

Page 5: 一、复杂可编程逻辑器件 CPLD

2.2.EPM7128SLC84EPM7128SLC84 器件介绍器件介绍

EPM7128S器件系列是美国 ALTERA公司生产的在系统可编程 CPLD器件。在实验中使用该器件是很方便的。其优点是可以反复编程,能多达百余次,而且不必拆下芯片就可以直接在电路板上编程。EPM 7 128 S LC 84EPM 7 128 S LC 84

-- 667000 系列产品

有 128 个逻辑宏单元 在线可编程器件

塑封包装84 个外端子

全局时钟到输出端的时延为 6ns

每个宏单元包含:

一个可编程的“与”阵列和固定的“或”阵列以及一个触发器

Page 6: 一、复杂可编程逻辑器件 CPLD

11 10

9 8 7 6 5 4 3 2 1 84 83 82 81 80 79 78 77 76 75

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

ALTERA

MAX

EPM7128SLC84

VCC

INT

GN

D

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

74

73

72

71

70

69

68

67

66

65

64

63

62

61

60

59

58

57

56

55

54

I/O.TDI

I/O.TMS

VCC

INT

GN

D

GN

D VCC

IO

VCCI

O

GND

VCCI

O

GND

VCC

IO VCC

IOGN

D

GND

VCCI

O

GNDI/O.TD0

I/O.TK

INP

UT

/GC

LR

nIN

PU

T/O

E2/G

CL

K2

INP

UT

/GC

LK

1IN

PU

T/

OE

1 16 个电源和地脚:

(同名端内部均连通)

6 个 VCCI0 : I/O输出电路电源,

接 5V 或 3.3V

2 个 VCCINT :内部电路和输入

缓冲器电源, 接 5V

8 个接地端 下载板中正电源统一都为+ 5V,由实验箱提供,并与实验箱共地。

Page 7: 一、复杂可编程逻辑器件 CPLD

11 10

9 8 7 6 5 4 3 2 1 84 83 82 81 80 79 78 77 76 75

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

ALTERA

MAX

EPM7128SLC84

VCC

INT

GN

D

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

74

73

72

71

70

69

68

67

66

65

64

63

62

61

60

59

58

57

56

55

54

I/O.TDI

I/O.TMS

VCC

INT

GN

D

GN

D VCC

IO

VCCI

O

GND

VCCI

O

GND

VCC

IO VCC

IOGN

D

GND

VCCI

O

GNDI/O.TD0

I/O.TK

INP

UT

/GC

LR

nIN

PU

T/O

E2/G

CL

K2

INP

UT

/GC

LK

1IN

PU

T/

OE

1

1 脚: 全局清零端

2 、 83 脚: 2 个全局时钟输入端

对于时序电路:

4 个专用输入端

获得最高的工作速度

专用输入脚,不用时不允许悬空,防止 CMOS器件输入击穿损坏。

Page 8: 一、复杂可编程逻辑器件 CPLD

11 10

9 8 7 6 5 4 3 2 1 84 83 82 81 80 79 78 77 76 75

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

ALTERA

MAX

EPM7128SLC84

VCC

INT

GN

D

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

74

73

72

71

70

69

68

67

66

65

64

63

62

61

60

59

58

57

56

55

54

I/O.TDI

I/O.TMS

VCC

INT

GN

D

GN

D VCC

IO

VCCI

O

GND

VCCI

O

GND

VCC

IO VCC

IOGN

D

GND

VCCI

O

GNDI/O.TD0

I/O.TK

INP

UT

/GC

LR

nIN

PU

T/O

E2/G

CL

K2

INP

UT

/GC

LK

1IN

PU

T/

OE

1

CPU编程数据通过此端口下载到 CPLD中的

被编程置为输入的引脚,不用时不允许悬空,防止CMOS器件输入击穿损坏。 被编程置为输出的引脚不能接 VCC 或地。

4 个在系统编程专用输入、输出端口

60 个供用户的普通 I/O引脚

Page 9: 一、复杂可编程逻辑器件 CPLD

3.3.CPLDCPLD 下载板下载板介介绍绍

数字电路实验箱并行输出口

+5V 地

下载接口

/出

50M连续脉冲

/出

口入 /出端口

位驱动电路

共阳型

段驱动信号 a~ h

位驱动信号CS1

~CS4

GLCK GOEGCLR

单脉冲 复位输出使能

数据开关

LED灯

2 1 84

83CPLD 芯片4 5 6 8 9 10 11 8176 77 79 80

共 16个管脚已被定义占用

Page 10: 一、复杂可编程逻辑器件 CPLD

二、二、 CPLDCPLD 应用开发软件应用开发软件

Page 11: 一、复杂可编程逻辑器件 CPLD

1. 1. MAXMAX ++ plusplusⅡⅡ软件简介软件简介

MAX+plusⅡ 软件包是 Altera公司研制的一种 CPLD软件开发系统,它为 CPLD器件提供了计算机软件开发平台。

使用 MAX + plusⅡ 软件进行电路设计,包括下述 5步:

Page 12: 一、复杂可编程逻辑器件 CPLD

图形或编程输入方法

EPM7128SLC84

电路设计流程图电路设计流程图

新建项目

设计输入

器件的选择

项目编译与仿真

器件编程下载

修改设计

器件管脚分配与编译

Page 13: 一、复杂可编程逻辑器件 CPLD

2. 2. 数字电路描述语言数字电路描述语言 VHDLVHDL 简简介介

VHDL是一种用普通文本形式设计数字系统的硬件描述语言( VHSIC Hardware Description Language ),通过描述数字系统的结构、行为、功能和接口来设计电路。相比传统设计方法,具有设计简单、阅读方便的特点。 。

Page 14: 一、复杂可编程逻辑器件 CPLD

外部可视部分

逻辑关系描述

内部不可视部分

VHDL程序

设计实体

用结构体 (ARCHITECTURE) 描述用实体 (ENTITY) 描述

输入端口描述 输出端口描述

库支持:定义程序中所涉及的数据类型、元件和子程序等。

Page 15: 一、复杂可编程逻辑器件 CPLD

实体中定义了一个设计模块的外部输入和输出端口,即模块的外部特征,描述了一个模块与其他模块之间的连接关系,可以看作是输入输出信号和芯片管脚信息。

结构体主要用来说明模块内部的具体结构,即对模块内部的逻辑功能进行描述,是程序设计的核心部分。

VHDL程序

结构体 (ARCHITECTURE) 描述实体 (ENTITY) 描述

库支持:定义程序中所涉及的数据类型、元件和子程序等。

逻辑关系描述 输出端口描述输入端口描述

Page 16: 一、复杂可编程逻辑器件 CPLD

结构体主要用来说明模块内部的具体结构,即对模块内部的逻辑功能进行描述,是程序设计的核心部分。

VHDL程序

结构体 (ARCHITECTURE) 描述实体 (ENTITY) 描述

库支持:定义程序中所涉及的数据类型、元件和子程序等。

逻辑关系描述 输出端口描述输入端口描述

VHDL 语言对硬件系统的描述,有三种描述方式:行为描述、数据流描述、结构化描述。

Page 17: 一、复杂可编程逻辑器件 CPLD

几个基本概念

位逻辑型( BIT):单线状态,取值逻辑 '0′ 和 '1′ 位矢量型( BIT_VECTOR):

总线状态,如总线宽度为 8位,取值 "10110101"

标准逻辑位型( STD_LOGIC )

标准逻辑位矢量型( STD_LOGIC_VECTOR )

在位型数据基础上,还有高阻、不定、不可能等 7 种取值

1. 常用数据类型

Page 18: 一、复杂可编程逻辑器件 CPLD

2. 常用数据对象:变量、 信号

信号说明语句: 信号有 IN、 OUT、 INOUT、 BUFFER4种流动方向。分外部端口和内部信号 ,其作用是在设计的单元电路之间实现互连

如: SIGNAL b: BIT ; - -定义 b 为位逻辑型信号

如:VARIABLE a , b : STD_LOGIC ; - -定义 a,b为标准逻辑

位变量

变量说明语句: 变量属于局部量,只能在进程和子程序中定义和使用,主要用来暂存数据。

Page 19: 一、复杂可编程逻辑器件 CPLD

3.变量与信号的赋值语句

变量的说明和赋值限定在顺序区域内,它只能在进程中使用,具有局部性。变量赋值语句的格式为: 目的变量: = 表达式;如给变量 a 赋值: PROCESS - - 进程 VARIABLE a : BIT ; - - 在进程中定义位逻辑型

变量 a BEGIN a : = ′0′ ; - - 给变量 a 赋逻辑 0 值 END PROCESS ;信号赋值语句具有全局特征,不但可以使数据在设计实体内传递,还可以通过信号的赋值操作与其他实体进行数据交流。信号赋值语句的格式为: 目的信号量 <= 信号表达式; 如: y<=a AND b ;

Page 20: 一、复杂可编程逻辑器件 CPLD

I 被定义为具有 8 位位宽的标准逻辑位矢量型输入信号,最左边是 I ( 7 ),最右边是 I ( 0 )。如通过赋值语句I< = "00000010" ,使 I7I6 ~ I1I0=00000010。 Y2 , Y1 , Y0被定义为标准逻辑位型 输出信号。如通过赋值语句Y2<= '0′、 Y1<= '0′、 Y0<='1′,使 Y2Y1Y0=001 。 8 线一 3 线普通编码器

bmq 8_3

4. 端口描述ENTITY bmq 8_3 IS

PORT( I : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;

Y3 , Y2 , Y1 : OUT STD_LOGIC) ;END bmq8_3 ;

Page 21: 一、复杂可编程逻辑器件 CPLD

5.常用逻辑运算符:

AND(与)、 OR(或)、 NAND(与非)、

NOR(或非)、 NOT(非)、 XOR(异或)

6.常用关系运算符:

= (相等)

< (小于)

> (大于)

Page 22: 一、复杂可编程逻辑器件 CPLD

-- 结构体部分:描述电路的内部功能,以 ARCHITECTUR 作开头。 结构描述以 BEGIN 开始, END 结束。ARCHITECTURE arc OF not IS - - 结构体名为 arc ,任意取BEGIN

y<= NOT a ; - - a 取反后传给 y END arc ; - - 结构体结束

ay 例 1 用 VHDL 设计一个非门

-- 库和程序包部分:定义结构体和实体中要用到的数据类型、元件、子程序等, 放在名为 IEEE 的库中。 LIBRARY IEEE ; - - 打开 IEEE 库 USE IEEE.STD_LOGIC_1164.ALL ; - - 调用库中 STD_ LOGIC_1164 程序包 -- 实体部分:描述电路单元对外的管脚信息。 以 ENTITY 开头, END 结束。 ENTITY not IS - - 实体名为 not ,必须与项目名相同 PORT( - - 端口说明 a : IN STD_LOGIC ; - - 定义 a 为输入端口,标准逻辑型数据 y : OUT STD_LOGIC) ; - - 定义 y 为输出端口,标准逻辑型数据END not ; - - 实体结束

Page 23: 一、复杂可编程逻辑器件 CPLD

LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;

ENTITY not IS PORT( a : IN STD_LOGIC ; y : OUT STD_LOGIC) ;END not ;

ARCHITECTURE arc OF not ISBEGIN y<= NOT a ;END arc ;

所有语句以分号结束,程序所有语句以分号结束,程序中不区分字母的大小写。中不区分字母的大小写。

行为描述:基于表达式

项目取名规则:由字母、数字和下划线组成;第一个字符必须是字母;最后一个字符不能是下划线;下划线不能连用;不能与关键词相同:

设计步骤 (1) 新建项目;

( 2) 选择并进入文本编辑窗口; ( 3) 输入 VHDL 源程序;

( 4) 文件存盘; * 项目名、实体、文件名名必须相同 文件扩展名必须是 vhd 。

not

not . vhd

not

(5) 选择器件后编译(6) 仿真(7) 编程下载(8) CPLD 逻辑功能验证

Page 24: 一、复杂可编程逻辑器件 CPLD

LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;

ENTITY and2 IS

PORT ( a : IN STD_LOGIC ; b : IN STD_LOGIC ; y : OUT STD_LOGIC) ; END and2  ;

ARCHITECTURE and_arc2 OF and2 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<= ′ 0 ′ ; WHEN ″ 10 ″=>y<= ′ 0 ′ ; WHEN ″ 11 ″=>y<= ′ 1 ′ ; WHEN others=>y<= ′ X ′ ; END CASE ; END PROCESS ; END and_arc2 ;

数据流描述:基于真值表

例 2 用 VHDL 实现 y = a b

- - 进程语句,用 a 、 b 信号触发进程执行

- - 定义 comb 为标准逻辑位矢量变量,位宽 2位

- - 打开 IEEE 库,并调用库中 STD_ LOGIC_1164程序包- - 定义 and2 实体的入 / 出端口,其信号类型是标准逻辑位型

- -a 、 b 合并为 comb 变量

- - 根据 comb 取值,选择 Y值

Page 25: 一、复杂可编程逻辑器件 CPLD

PROCESSPROCESS(cp)(cp) - -- - 进程在时钟信号变化进程在时钟信号变化时启动时启动

BEGINBEGIN

IFIF(cp′(cp′EVENT ANDEVENT AND cp= ′1 ′)cp= ′1 ′) THENTHEN - - -- 如果如果 cpcp 上升上升沿到,沿到,

则执行则执行 THENTHEN 与与 END IFEND IF 之间的其之间的其他他

时序语句,否则状态保持不变时序语句,否则状态保持不变

其他时序语句其他时序语句 END IFEND IF ;;

END PROCESSEND PROCESS

时序电路设计时序电路设计(1)(1)时钟信号时钟信号

在时序电路中,都以时钟信号为驱动信号,只有在时钟信号边 在时序电路中,都以时钟信号为驱动信号,只有在时钟信号边沿到来时,电路状态才改变。因此,通常用时钟信号触发时序电路沿到来时,电路状态才改变。因此,通常用时钟信号触发时序电路的进程。的进程。

Page 26: 一、复杂可编程逻辑器件 CPLD

PROCESS(cp , reset) - - 进程在时钟信号或复位信号变化时启动BEGIN IF(reset = ′0′ ) THEN q< = ′0′ ; - -如果复位信号有效,则输

出置 0 ELSIF(cp′ EVENT AND cp= ′1′ ) THEN - - 如果复位

信号无 效,且 cp上升沿到来,其他时序语句 则执行其他时序语句

END IF;END PROCESS;

(2) 异步复位异步复位是指一旦复位信号有效,时序电路即被复位。其描述方式有以下要点:· 作为进程的敏感信号,除时钟信号外,还应加上复位信号;· 利用 IF语句描述复位条件;· 利用 ELSIF语句来描述时钟信号的边沿条件。

Page 27: 一、复杂可编程逻辑器件 CPLD

LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;ENTITY tcfq IS PORT(s , r ,cp , t : IN STD_LOGIC ; q : OUT

STD_LOGIC );END tcfq  ;ARCHITECTURE tcfq _arc OF tcfq ISSIGNAL q_temp : STD_LOGIC ;BEGIN PROCESS(s , r , cp , T) BEGIN IF(s= ′0′ AND r= ′1′ ) THEN q_temp<= ′0′ ; ELSIF(s= ′1′ AND r= ′0′ )THEN q_temp<= ′1′ ; ELSIF(cp ′EVENT AND cp= ′1′ )THEN IF(T= ′1′ )THEN q _temp<=NOT q_temp ; ELSE q_temp<=q_temp ; END IF ; END IF ; q<= q_temp ; END PROCESS ;END tcfq _arc ;

例 3 用 VHDL 实现 T 触发器

S R CP T Q

0100

1000

××↑↑

××01

01保持翻转