CPLD实验教案

Download Report

Transcript CPLD实验教案

一、复杂可编程逻辑器件
CPLD
Complex Programmable Logic Device
1. PLD器件简介
由大量(高至几百万个)独立的与门阵列、或门阵列
、触发器和可配置的连线构成的单片通用CMOS大规模集
成电路。
使用方法:
根据所要求的特定功能,通过编程选择内部器件并
连线
特定功能的专用芯片
FPGA(现场可编程门阵列):
PLD
分类
有大量触发器,更易设计时序
电路。编程数据只需通过简单设
备即可下载到芯片中,实现现场
编程功能。
CPLD(复杂可编程逻辑器件):
大量门电路,更易设计组合电路。
编程数据通过计算机下载到芯片中。
在系统编程芯片,可在电路板上直
接对芯片编程。
PLD优点
高集成度、高可靠性:可将整个系统集成于同一
芯片中,实现所谓片上系统。
通用芯片有固定逻辑功能,其构成的电路技术很
难保护。专用芯片是电路设计者自己制造出来的,
而且很容易设置保密位,从而形成电路设计者自
己的知识产权。
2.EPM7128SLC84器件介绍
EPM7128S器件系列是美国ALTERA公司生产的
在系统可编程CPLD器件。在实验中使用该器件是
很方便的。其优点是可以反复编程,能多达百余
次,而且不必拆下芯片就可以直接在电路板上编
程。
EPM 7 128 S
LC 84-6
全局时钟到输出端的时延为6ns
7000系列产品
塑封包装
84个外端子
有128个逻辑宏单元
在线可编程器件
每个宏单元包含:
一个可编程的“与”阵列和固定的“或”阵列以及一个触发器
GND
I/O.TMS
12
13
73
14
72
15
71
16
70
17
69
19
GND
67
20
66
21
65
MAX
22
6个VCCI0:I/O输出电路电源,
接5V或3.3V
VCCIO
64
63
23
25
GND
I/O.TD0
68
ALTERA
18
(同名端内部均连通)
3 2 1 84 83 82 81 80 79 78 77 76 75
74
24
VCCIO
7 6 5 4
VCCIO
VCCIO
I/O.TDI
VCCINT
GND
INPUT/GCLK1
INPUT/OE1
INPUT/GCLRn
INPUT/OE2/GCLK2
GND
11 10 9 8
16个电源和地脚:
62
EPM7128SLC84
I/O.TK
61
26
60
27
59
28
58
29
57
30
56
31
55
GND
2个VCCINT:内部电路和输入
缓冲器电源,
接5V
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
VCCIO
GND
VCCINT
GND
VCCIO
8个接地端
下载板中正电源统一都为+5V,由实验箱提供,并与
实验箱共地。
GND
7 6 5 4
VCCIO
VCCIO
I/O.TDI
VCCINT
GND
INPUT/GCLK1
INPUT/OE1
INPUT/GCLRn
INPUT/OE2/GCLK2
GND
11 10 9 8
4个专用输入端
3 2 1 84 83 82 81 80 79 78 77 76 75
12
74
13
73
14
72
15
71
16
70
17
69
68
ALTERA
18
19
67
66
20
I/O.TMS
22
VCCIO
GND
64
63
23
24
25
VCCIO
65
MAX
21
GND
I/O.TD0
62
EPM7128SLC84
对于时序电路:
1脚:
全局清零端
I/O.TK
61
26
60
27
59
28
58
29
57
30
56
31
55
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
GND
2、83脚:
2个全局时钟输入端
VCCIO
GND
VCCINT
GND
VCCIO
获得最高的工作速度
专用输入脚,不用时不允许悬空,防止CMOS器件输入
击穿损坏。
GND
I/O.TMS
GND
3 2 1 84 83 82 81 80 79 78 77 76 75
12
74
13
73
14
72
15
71
16
70
17
69
19
67
20
66
21
65
MAX
22
CPU编程数据通过此端口下
载到CPLD中的
VCCIO
64
63
23
25
GND
I/O.TD0
68
ALTERA
18
24
VCCIO
7 6 5 4
VCCIO
VCCIO
I/O.TDI
VCCINT
GND
INPUT/GCLK1
INPUT/OE1
INPUT/GCLRn
INPUT/OE2/GCLK2
GND
11 10 9 8
 4个在系统编程专用输入、输出端口
62
EPM7128SLC84
I/O.TK
61
26
60
27
59
28
58
29
57
30
56
31
55
60个供用户的普通I/O引脚
GND
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
VCCIO
GND
VCCINT
GND
VCCIO
被编程置为输入的引脚,不用时不允许悬空,防止
CMOS器件输入击穿损坏。
被编程置为输出的引脚不能接VCC或地。
3.CPLD下载板介绍
并行
输出口
数字电路实验箱
LED灯
数据开关
下
载
接
口
+5V 地 位
驱
动
共阳型
信
号
入
CS1
~
/出
76 77
CS4
端
口
位驱动电路
单脉冲
复位
输出
使能
GLCK
GCLR
GOE
入
段驱动信号a~h
79 80
4 5 6 8 9 10 11 81
/出
2 1 84
CPLD芯片
共16个管脚已被定义占用
入/出端口
83
50M
连续
脉冲
端
口
二、CPLD应用开发软件
1. MAX+plusⅡ软件简介
 MAX+plusⅡ软件包是Altera公司研制的一种
CPLD软件开发系统,它为CPLD器件提供了计算机
软件开发平台。
 使用MAX+plusⅡ软件进行电路设计,包括下
述5步:
图形或编程输入方法
新建项目
设计输入
器件的选择
EPM7128SLC84
修改设计
项目编译与仿真
器件管脚分配与编译
器件编程下载
电路设计流程图
2. 数字电路描述语言VHDL简介
 VHDL是一种用普通文本形式设计数字系统的硬
件描述语言(VHSIC Hardware Description
Language),通过描述数字系统的结构、行为、
功能和接口来设计电路。相比传统设计方法,具
有设计简单、阅读方便的特点。 。
外部可视部分
设计
实体
内部不可视部分
输入端口描述
用实体(ENTITY)描述
VHDL
程序
逻辑关系描述
输出端口描述
用结构体 (ARCHITECTURE) 描述
库支持:
定义程序中所涉及的数据类型、元件和子程序等。
实体中定义了一个设计模块的外部输入和输出端口,即模块的外
部特征,描述了一个模块与其他模块之间的连接关系,可以看作是
输入输出信号和芯片管脚信息。
结构体主要用来说明模块内部的具体结构,即对模块内部的逻辑
功能进行描述,是程序设计的核心部分。
输入端口描述
实体(ENTITY)描述
VHDL
程序
逻辑关系描述
输出端口描述
结构体 (ARCHITECTURE) 描述
库支持:
定义程序中所涉及的数据类型、元件和子程序等。
结构体主要用来说明模块内部的具体结构,即对模块内部的逻辑
功能进行描述,是程序设计的核心部分。
VHDL语言对硬件系统的描述,
有三种描述方式:行为描述、
数据流描述、结构化描述。
输入端口描述
实体(ENTITY)描述
VHDL
程序
逻辑关系描述
输出端口描述
结构体 (ARCHITECTURE) 描述
库支持:
定义程序中所涉及的数据类型、元件和子程序等。
几个基本概念
1. 常用数据类型
 位逻辑型(BIT):单线状态,取值逻辑'0′和'1′
 位矢量型(BIT_VECTOR):
总线状态,如总线宽度为8位,取值 "10110101"
 标准逻辑位型(STD_LOGIC)
 标准逻辑位矢量型(STD_LOGIC_VECTOR)
在位型数据基础上,还有高阻、不定、不可能等7 种取值
2. 常用数据对象:变量、 信号
变量说明语句:
变量属于局部量,只能在进程和子程序中定义和使用,主要用
来暂存数据。
如:
VARIABLE
a,b:STD_LOGIC;- -定义a,b为标准逻辑位变量
信号说明语句:
信号有IN、OUT、INOUT、BUFFER4种流动方向。分外部端口和
内部信号,其作用是在设计的单元电路之间实现互连
如:SIGNAL b:BIT; - -定义b为位逻辑型信号
3.变量与信号的赋值语句
变量的说明和赋值限定在顺序区域内,它只能在进程中使用,具
有局部性。
变量赋值语句的格式为:
目的变量:= 表达式;
如给变量a赋值:
PROCESS
- -进程
VARIABLE a:BIT;
- -在进程中定义位逻辑型变量a
BEGIN
a:= ′0′ ;
- -给变量a赋逻辑0值
END PROCESS;
 信号赋值语句具有全局特征,不但可以使数据在设计实体内传递,
还可以通过信号的赋值操作与其他实体进行数据交流。
信号赋值语句的格式为:
目的信号量 <= 信号表达式;
如:y<=a AND b;
4. 端口描述
ENTITY bmq 8_3 IS
PORT(
I: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Y3,Y2,Y1:OUT STD_LOGIC);
END bmq8_3;
 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
5.常用逻辑运算符:
AND(与)、OR(或)、NAND(与非)、
NOR(或非)、NOT(非)、XOR(异或)
6.常用关系运算符:
=
(相等)
<
(小于)
>
(大于)
例1
用VHDL设计一个非门 y  a
-- 库和程序包部分:定义结构体和实体中要用到的数据类型、元件、子程序等,
放在名为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;
- - 实体结束
-- 结构体部分:描述电路的内部功能,以ARCHITECTUR作开头。
结构描述以BEGIN开始,END结束。
ARCHITECTURE arc OF not IS
- - 结构体名为arc,任意取
BEGIN
y<= NOT a ;
END arc;
- - a取反后传给y
- - 结构体结束
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY not IS
PORT(
a:IN STD_LOGIC;
y:OUT STD_LOGIC);
END not;
not
ARCHITECTURE arc OF not IS
BEGIN
y<= NOT a ;
行为描述:
END arc;
基于表达式
设计步骤
(1) 新建项目;
not
项目取名规则:
由字母、数字和下划线组成;
第一个字符必须是字母;
最后一个字符不能是下划线;
下划线不能连用;
不能与关键词相同:
所有语句以分号结束,程序中
不区分字母的大小写。
(5) 选择器件后编译
(6) 仿真
(7) 编程下载
(8) CPLD逻辑功能验证
(2) 选择并进入文本编辑窗口;
(3) 输入VHDL源程序;
not.vhd
(4) 文件存盘;
*项目名、实体、文件名名必须相同
文件扩展名必须是vhd。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY and2 IS
例2
用VHDL实现 y = a b
- -打开IEEE库,并调用库中STD_ LOGIC_1164程序包
PORT ( a:IN STD_LOGIC; - -定义and2 实体的入/出端口,其信号类型是标准逻
b:IN STD_LOGIC;
辑位型
y:OUT STD_LOGIC);
END and2;
ARCHITECTURE and_arc2 OF and2 IS
BEGIN
- -进程语句,用a、b信号触发进程执行
PROCESS (a,b)
VARIABLE comb:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
- -定义comb为标准逻辑位矢量变量,位宽2位
comb:= a & b;
- -a、b合并为comb变量
CASE comb IS
WHEN ″ 00 ″ =>y<= ′ 0 ′ ;
WHEN ″ 01 ″=>y<= ′ 0 ′ ;
- -根据comb取值,选择Y值
WHEN ″ 10 ″=>y<= ′ 0 ′ ;
WHEN ″ 11 ″=>y<= ′ 1 ′ ;
WHEN others=>y<= ′ X ′ ;
数据流描述:
END CASE;
基于真值表
END PROCESS;
END and_arc2;
时序电路设计
(1)时钟信号
在时序电路中,都以时钟信号为驱动信号,只有在时钟信号边
沿到来时,电路状态才改变。因此,通常用时钟信号触发时序电路
的进程。
PROCESS(cp)
- -进程在时钟信号变化时启动
BEGIN
IF(cp′EVENT AND cp= ′1 ′) THEN - -如果cp上升沿到,
则执行THEN与END IF之间的其他
时序语句,否则状态保持不变
其他时序语句
END IF;
END PROCESS
(2) 异步复位
异步复位是指一旦复位信号有效,时序电路即被复位。其描述方
式有以下要点:
· 作为进程的敏感信号,除时钟信号外,还应加上复位信号;
· 利用IF语句描述复位条件;
· 利用ELSIF语句来描述时钟信号的边沿条件。
PROCESS(cp,reset) - -进程在时钟信号或复位信号变化时启动
BEGIN
IF(reset = ′0′ ) THEN
q< = ′0′ ;
- -如果复位信号有效,则输出置0
ELSIF(cp′ EVENT AND cp= ′1′ ) THEN - -如果复位信号无
效,且cp上升沿到来,
其他时序语句
则执行其他时序语句
END IF;
END PROCESS;
LIBRARY IEEE;
例3 用VHDL实现 T触发器
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 IS
SIGNAL 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
S
R
CP
T
q_temp<=q_temp;
END IF;
0
0
1
×
×
END IF;
1
1
0
×
×
q<= q_temp;
保持
0
0
↑
0
END PROCESS;
翻转
0
0
↑
1
END tcfq _arc ;