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

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

  • Upload
    leal

  • View
    237

  • Download
    0

Embed Size (px)

DESCRIPTION

一、复杂可编程逻辑器件 CPLD. Complex Programmable Logic Device. 1. PLD 器件简介. 由大量(高至几百万个)独立的与门阵列、或门阵列、触发器和可配置的连线构成的单片通用 CMOS 大规模集成电路。. 使用方法:. 根据所要求的特定功能,通过编程选择内部器件并连线. 特定功能的专用芯片. FPGA ( 现场可编程门阵列):. 有大量触发器,更易设计时序电路。编程数据只需通过简单设备即可下载到芯片中,实现现场编程功能。. PLD 分类. - PowerPoint PPT Presentation

Citation preview

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保持翻转