EDA & CPLD
第 3章
在系统编程技术 ( ISP)
谭 敏 计算机信息工程系
ISP功能提高设计和应用的灵活性
? 减少对器
件的触摸
和损伤
? 不计较器
件的封装
形式
? 允许一般的
存储
? 样机制造方
便
? 支持生产和
测试流程中
的修改
? 允许现场硬
件升级
? 迅速方便地
提升功能
未编程前先焊
接安装 系统内编程 --ISP 在系统现场重 编程修改
谭 敏 计算机信息工程系
3.在系统编程技术( ISP)
逻辑设计 ( Top – to – Down)
任务:功能描述 ——电路原理图, 功能描述语言
控制器设计 ——逻辑方程, 真值表, 状态图
选择器件,I/O数, 寄存器数, 门数, pin – to – pin,功耗
JEDEC文件 Join – Electronic Device Engineering Council (电子器件工程联
合协会 )创建工业标准
由开发系统软件 /器件公司专用开发工具自动生成 。
编程,.JED文件下载,对器件编程(烧录)
直接在用户设计的目标系统中(在用系统)的 PLD器件进行编程
谭 敏 计算机信息工程系
3,1,isp原理
1、逐行编程
2,与外系统脱离 13=ispEN =0 I/O高阻 脱离外电路
3,编程电缆 ispEN 13 专用引脚
SDI 14 串行数据输入 13=0 接受电缆信息
SCLK 33 串行时钟
MOOD 36 方式信号 13=1 直通输入
SDO 24 串行数据输出
4、编程状态机(控制编程操作):三状态时序电路
控制信号,MOOD SDI
00 器件正常工作 ( 读识别码 10)
11 移位状态 SDI送入的数据 ( 命令 ) 移入寄存器
11 执行状态 每个编程操作完成
谭 敏 计算机信息工程系
编程状态机
5位
串行读出
8位进入水平
移位寄存器
谭 敏 计算机信息工程系
此接口既可作编
程下载口,也可作
JTAG接口
ALTERA 的 ByteBlaster( MV) 下载接口
3,2.编程方式
谭 敏 计算机信息工程系
3,2.编程方式
1、计算机并口 ISP器件(接插件 RJ45)
5个信号线
七芯电缆 地线
目标板电源检测线
2、利用目标板上单片机或微处理器
编程数据 EPROM中
3,目标板上多片 ISP器件
ispEN 对器件分别使能, 其它器件正常工作
ispEN 1/2MUX——输入信号 /编程信号
菊花链下载 Daisy Chain (Lattice)
串行片数不超出接口的驱动能力
器件位置由器件识别码确定
器件前后芯片内寄存器短路 ( 信号直通 )
下载电缆
谭 敏 计算机信息工程系
ispEN 对器件分别使能
谭 敏 计算机信息工程系
ispEN ? MUX——输入信号 /编程信号
谭 敏 计算机信息工程系
菊花链下载 Daisy Chain
串行片数:不超出接口的驱动能力
器件位置:由器件识别码确定 MODE SDI=HL 装载识别码
=LH 识别码移位 从 SDO移出至计算机
器件前后芯片内寄存器短路 ( 信号直通 )
谭 敏 计算机信息工程系3.3 ispGDS
In-System Programmable Generic Digital Switch
重构电路互连关系的开关器件
例,ispGDS22
可供互连用的
端口总数 22 11*11的矩阵可互连
矩阵的交叉点通过编
程接通传输延迟
7.5ns
一, 结构
谭 敏 计算机信息工程系二,ispGDS I/O单元的结构
=0 GDS的输出
=1 输入端使用
共 5种组态
谭 敏 计算机信息工程系三,编程控制信号
MODE
SDI 工作状态受状态机控制
SDO 可以菊花链下载
SCLK
谭 敏 计算机信息工程系四,ispGDS 使用
替代 DIP Double In-line Package
作用,改变硬件系统
改变或重构硬制电路板的连接
实现对目标系统连接关系的重构
没定义的管脚, 编程
时端口自动与开关矩
阵断开
谭 敏 计算机信息工程系
例,
TITLE ‘EXAMPLE’
DEVICE = ispGDS14
―YOCLK =2Hz
PIN20 = PIN1
―Y2CLCK =STEP
PIN18 =PIN9
PIN11 = L
PIN13 = PIN10
谭 敏 计算机信息工程系3.4 CPLD和 FPGA的编程与配置
10芯下载口
引脚 1 2 3 4 5 6 7 8 9 10
PS 模式 D C K GND C O N F _ D O N E V C C n C O N F I G - n S T A T U S - D A T A 0 GND
J A T G 模式 T C K GND T D O V C C T M S - - - T D I GND
接口各引脚信号名称
CPLD,基于 EEPROM or Flash ----program 编程后信息不会丢失,但编程次数有限
FPGA,基于 SRAM查找表 ----configure 掉电后信息丢失,但配置次数无限
PS,Passive Serial 被动串行模式
JTAG,Joint Test Action Group 20世纪 80年代联合测试行动组开发的技术规范
谭 敏 计算机信息工程系
3.4.1 CPLD的 ISP方式编程
CPLD编程下载连接图
TCK,TDO,TMS,TDI为 CPLD的 JTAG口
对 CPLD编程
谭 敏 计算机信息工程系
多 CPLD芯片 ISP编程连接方式
3.4.1 CPLD的 ISP方式编程
谭 敏 计算机信息工程系
3.4.2 Altera公司的 FPGA配置方式与器件系列 器 件 功能描述 封装形式
E P C 2 1695680 × 1 位,3,3 / 5V 供电 20 脚 P L C C, 32 脚 T Q F P
E P C 1 1046496 × 1 位,3,3 / 5V 供电 8 脚 P D I P, 20 脚 P L C C
E P C 14 41 44 0 80 0 × 1 位,3,3 / 5V 供电 8 脚 P D I P, 20 脚 P L C C
E P C 12 13 21 2 94 2 ×位,5V 供电 8 脚 P D I P, 20 脚 P L C C, 32 脚 T Q F P
E P C 10 64 65 53 6 ×位,5V 供电 8 脚 P D I P, 20 脚 P L C C, 32 脚 T Q F P
E P C 10 64 V 65 53 6 ×位,5V 供电 8 脚 P D I P, 20 脚 P L C C, 32 脚 T Q F P
Altera FPGA常用配置器件
谭 敏 计算机信息工程系
DCLK
nCS
nINIT_CONF
OE
DATA
PC机
FPGA
EPC2配置芯片
配置电路
和 JTAG编
程端口
DCLK
CONF_DONE
nCONFIG
nSTATUS
DATA0
TCK
TMS
TDO
TDI
TCK
TMS
TDO
TDI
配置
编程
利用 FLASH结构的 EPC2为 FPGA作配置
谭 敏 计算机信息工程系
将编程完毕的配置
器件插在相应的
电路系统上
谭 敏 计算机信息工程系EDA & CPLD
第 4章
ispLSI 编程
谭 敏 计算机信息工程系
4,ispLSI编程
一、输入设计文件 JEDEC文件 综合器
二,JEDEC文件 烧录芯片 适配器
谭 敏 计算机信息工程系
4,1,isp器件设计步骤
一, 设计准备
I/O口定义:资源是否够用
逻辑资源,GLB 查阅宏单元库 ( 门, 触发器, 计数器, MUX等, 约 200种 )
方程实现部分的估算
资源利用率,( 取 50%)
二, 设计输入
逻辑图
方程
HDL输入 真值表 ( 含状态转换真值表 )
状态图
三, 设计检验
输入文件检验 语法 软件自动生成
规范 输入的逻辑映射到 GLB和 IOC 网表 ( 电路模型 )
最小化
谭 敏 计算机信息工程系
四、布局布线
软件自动完成 布线报告 GLB和 IOC使用情况
GLB的平均输入输出、扇出、复用信号
4,1,isp器件设计步骤
五, 模拟仿真
使用测试向量 结果:文件
波形图
测试向量设定 组合:真值表中抽取代表性的部分
时序:起始状态开始设定输入 ……
原则:遍历, 连续, 最小
六, 熔丝图
不用的 I/O接有源上拉电阻
使用的 I/O可选择有源上拉
七, 下载编程
JEDEC文件 器件中
谭 敏 计算机信息工程系
原理图 /VHDL文本编辑
综合
FPGA/CPLD
适配
FPGA/CPLD
编程下载
FPGA/CPLD
器件和电路系统
时序与功能
门级仿真
1、功能仿真
2、时序仿真
逻辑综合器
结构综合器 1,isp方式下载 2,JTAG方式下载
3、针对 SRAM结构的配置
功能仿真
应用 FPGA/CPLD的 EDA开发流程,
4,1,isp器件设计步骤
谭 敏 计算机信息工程系EDA & CPLD
第 5章
谭 敏 计算机信息工程系
?原理图输入与 VHDL文本输入设计的区别
?Graphic is what you draw is what you get
?,tell me what hardware you want and I will give it to
you”
?VHDL is what you write is what functional you
get
?,tell me how your circuit should behave and the
VHDL compiler will give you the hardware that does
the job”
? but the designer can not control how the circuit
implement
谭 敏 计算机信息工程系什么是 VHDL?
Very high speed integrated Hardware
Description Language (VHDL)
?是 IEEE,工业标准硬件描述语言
?用语言的方式而非图形等方式描述硬件电路
?容易修改
?容易保存
?特别适合于设计的电路有,
?复杂组合逻辑电路,如,
? 译码器、编码器、加减法器、多路选择器、地址译码器 …..,
?状态机
?等等 …….,
谭 敏 计算机信息工程系
VHDL的功能和标准
? VHDL 描述
?输入端口
?输出端口
?电路的行为和功能
?VHDL有过两个标准,
?IEEE Std 1076-1987 (called VHDL 1987)
?IEEE Std 1076-1993 (called VHDL 1993)
谭 敏 计算机信息工程系
5,VHDL语言
支持行为描述与结构描述的混合使用
描述对象:实体 ENTITY 顶级实体 系统模块
低级实体 低层次的设计模块
高级实体可将低级实体作为元件调用
实体描述,
实体说明 ENTITY引导, EDN ENTITY 实体名结束
结构体 ARCHITECHTURE引导, END ARCHITECHTURE 结构体名结束
顺序语句:同普通软件, 按排列顺序执行
并行语句:无论多少行, 同时执行
结构式:电路元件安装 结构 例程序 6.3
行为式:功能和行为 相应结构 例程序 6.6
算法式:电路和逻辑功能都不知 ( 适用于高层模块, 电路实现时可以有多
种不同的实现方案 ) 例程序 6.7
谭 敏 计算机信息工程系VHDL程序基本结构
谭 敏 计算机信息工程系
VHDL Synthesis vs,other
HDLs Synthesis
?VHDL:,tell me how your circuit
should behave and I will give you
hardware that does the job”
?ABEL,PALASM,AHDL,
?,tell me what hardware you want
and I will give it to you”
谭 敏 计算机信息工程系
Why using VHDL instead of
Graphic
?Easy to Modify
?It is more powerful than Graphic
?VHDL is a portable language because
?is device independent
?the same code can be applied to Device
manufactured by Company A or Company B
谭 敏 计算机信息工程系
【例 5-1】
ENTITY mux21a IS
PORT( a,b, IN BIT ;
s, IN BIT;
y, OUT BIT ) ;
END ENTITY mux21a ;
ARCHITECTURE one OF mux21a IS
BEGIN
y <= a WHEN s = '0' ELSE
b ;
END ARCHITECTURE one ;
实体
结构体
5.1 多路选择器 VHDL描述
图 5-1 mux21a实体
图 5-2 mux21a结构体
5.1.1 2选 1多路选择器的 VHDL描述
谭 敏 计算机信息工程系5.1.1 2选 1多路选择器的 VHDL描述
【 例 5-2】
ENTITY mux21a IS
PORT ( a,b, IN BIT;
s, IN BIT;
y, OUT BIT );
END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS
SIGNAL d,e, BIT;
BEGIN
d <= a AND (NOT S) ;
e <= b AND s ;
y <= d OR e ;
END ARCHITECTURE one ;
【 例 5-3】
,,,
ARCHITECTURE one OF
mux21a IS
BEGIN
y <= (a AND (NOT s))
OR (b AND s) ;
END ARCHITECTURE one;
并行语句用 boolean方程表达
谭 敏 计算机信息工程系
5.1.1 2选 1多路选择器的 VHDL描述
【 例 5-4】
ENTITY mux21a IS
PORT ( a,b,s,IN BIT;
y, OUT BIT );
END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS
BEGIN
PROCESS (a,b,s) BEGIN
IF s = '0' THEN
y <= a ; ELSE y <= b ;
END IF;
END PROCESS;
END ARCHITECTURE one ;
顺序语句
谭 敏 计算机信息工程系
5.1.1 2选 1多路选择器的 VHDL描述
四种描述方法 电路结构相同 综合
谭 敏 计算机信息工程系
5.1.1 2选 1多路选择器的 VHDL描述
图 5-3 mux21a功能时序波形
谭 敏 计算机信息工程系
5.1.2 VHDL相关语句说明
1,实体表达 【 例 5-5】 ENTITY e_name IS
PORT ( p_name, port_m data_type;
,.,
p_name, port_m data_type );
END ENTITY e_name;
或,
【 例 5-6】
ENTITY e_name IS
PORT ( p_name, port_m data_type;
,.,
p_namei, port_mi data_type );
END e_name;
93版
87版
谭 敏 计算机信息工程系
5.1.2 VHDL相关语句说明
2,实体名 不可用数字开头、中文、已有实体名
3,PORT语句和端口信号名 信号名唯一
4,端口模式
IN OUT INOUT BUFFER
5,数据类型 BIT ‘0’和 ’ 1’加引号,否则为整数 INTEGER
注,BIT数据类型的定义在标准程序包 STANDARD中,STANDARD在标准库 STD中
谭 敏 计算机信息工程系5.1.2 VHDL相关语句说明
6,结构体表达 【 例 5-7】 ARCHITECTURE arch_name OF e_name IS
(说明语句 )
BEGIN
(功能描述语句 )
END ARCHITECTURE arch_name ;
或,
【 例 5-8】
ARCHITECTURE arch_name OF e_name IS
(说明语句 )
BEGIN
(功能描述语句 )
END arch_name ;
7,信号传输 (赋值 )符号和数据比较符号
A,y<=a 赋值 ; δ 以后发生,理解为延时 ; 两边数据类型相同
B,S=‘0’ 比较;输出结果的数据类型 BOOLEAN,取值 TRUE OR FALSE(‘1’OR ‘0’)
谭 敏 计算机信息工程系5.1.2 VHDL相关语句说明
8,逻辑操作符 7种,AND,OR,NAND,NOR,XOR,XNOR,NOT
要求的操作数(操作对象)的数据类型,BIT,BOOLEAN,STD_LOGIC
9,IF_THEN条件语句 顺序语句
10,WHEN_ELSE条件信号赋值语句 并行赋值
赋值目标 <= 表达式 WHEN 赋值条件 ELSE
表达式 WHEN 赋值条件 ELSE
,.,
表达式 ;
11,PROCESS进程语句和顺序语句 合法的顺序语句必须在进程语句中
一个结构体中可以有任意个进程语句,所有的进程语句都是并行语句,而由任一
进程 PROCESS引导的语句结构属于顺序语句。
12,文件取名和存盘 文件名同实体名,在元件例化语句中元件名同文件名
谭 敏 计算机信息工程系
5.1.3 VHDL设计的基本概念和语句小节
数据类型 信号赋值符 条件比较符 ? 延时
实体 结构体 端口定义 端口模式
逻辑操作符 IF条件语句 并行条件语句 进程语句
顺序语句 并行语句 文件取名 文件存盘
谭 敏 计算机信息工程系5.2 寄存器描述及其 VHDL语言现象
5.2.1 D触发器的 VHDL描述
【 例 5-9】
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY DFF1 IS
PORT (CLK, IN STD_LOGIC ;
D, IN STD_LOGIC ;
Q, OUT STD_LOGIC );
END ;
ARCHITECTURE bhv OF DFF1 IS
SIGNAL Q1, STD_LOGIC ; --类似于在芯片内部定义一个数据的暂存节点
BEGIN
PROCESS (CLK)
BEGIN
IF CLK’EVENT AND CLK = ’1’ --边沿测试语句,有上升沿结果为 true
THEN Q1 <= D ; --if不完整条件语句
END IF;
Q <= Q1 ; --将内部的暂存数据向端口输出
END PROCESS ;
END bhv;
D触发器
谭 敏 计算机信息工程系
5.2.2 D触发器 VHDL描述的语言现象说明
1,标准逻辑位数据类型 STD_LOGIC
BIT数据类型定义,TYPE BIT IS('0','1');
STD_LOGIC数据类型定义,
TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','-');
STD_LOGIC所定义的 9种数据的含义是,
‘ U’表示未初始化的; ‘ X’表示强未知的; ‘ 0’ 表示强逻辑
0; ‘ 1’ 表示强逻辑 1; ‘ Z’表示高阻态; ‘ W’ 表
示弱未知的; ‘ L’表示弱逻辑 0; ‘ H’表示弱逻辑 1;
‘ -’ 表示忽略。
注,在数字器件中实现的有其中 4种,’X’(‘ -’)、‘ 0’、‘ 1’、
‘ Z’
谭 敏 计算机信息工程系5.2.2 D触发器 VHDL描述的语言现象说明
2,设计库和标准程序包
3,SIGNAL信号定义和数据对象
【 例 5-10】
ARCHITECTURE bhv OF DFF1 IS
BEGIN
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK = '1'
THEN Q <= D ;
END IF;
END PROCESS ;
END ;
使用库和程序包的一般定义表式是,
LIBRARY <设计库名 >;
USE < 设计库名 >.<程序包名 >.ALL ;
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
在 IEE库中的 STD_LOGIC_1164程序包
中定义 STD_LOGIC数据类型
SIGNAL Q1, STD_LOGIC ;
SIGNAL:定义某标识符为信号
Q1 数据对象:信号
数据类型,STD_LOGIC
信号,signal
数据对象 变量,variable
常量,constant
谭 敏 计算机信息工程系数据对象
信号 Signal 和变量 Variable
?Signal Assignment
?receive the assign value after a period of time
?Variable Assignment
?happens immediately when the statement is
executed,no delay
谭 敏 计算机信息工程系
Signals vs,Variables
Represent Circuit Represent local storage
Interconnect
Global Scope (anywhere) Local Scope
(inside process)
Updated at end of PROCESS Updated Immediately
(new value not available) (new value available)
SIGNALS VARIABLES
UTILITY,
SCOPE,
BEHAVIOR,
谭 敏 计算机信息工程系
5.2.2 D触发器 VHDL描述的语言现象说明
4,上升沿检测表式和信号属性函数 EVENT
关键词 EVENT是信号属性, VHDL通过以下表式来测定
某信号的跳变边沿,
<信号名 >'EVENT
CLK‘EVENT 对 CLK标识符的信号在 δ 时间内发生事件的情况进行检测
若,CLK的数据类型为 STD_LOGIC,δ 时间内 CLK由 9种值中任意一值向另
一值跳变,则表达式输出 TRUE,否则输出 FALSE。
CLK‘EVENT AND CLK = '1' 边沿测试语句
谭 敏 计算机信息工程系
5,不完整条件语句与时序电路
【 例 5-11】 比较器 ( 组合电路 )
ENTITY COMP_BAD IS
PORT( a1, IN BIT;
b1, IN BIT;
q1, OUT BIT );
END ;
ARCHITECTURE one OF COMP_BAD IS
BEGIN
PROCESS (a1,b1)
BEGIN
IF a1 > b1 THEN q1 <= '1' ;
ELSIF a1 < b1 THEN q1 <= '0' ;-- 未提及当 a1=b1时,q1作何操作
END IF;
END PROCESS ;
END ;
5.2.2 D触发器 VHDL描述的语言现象说明
当条件不满足时应保持 q1的原值不变,为 q1配置一寄存器保持原值
谭 敏 计算机信息工程系5,不完整条件语句与时序电路
图 5-5 例 5-11的电路图
注,A、利用不完整条件语句是 VHDL描述时序电路重要的途径
B、纯组合电路设计时不必要的时序元件:浪费逻辑资源、降低速度,
影响可靠性
谭 敏 计算机信息工程系5,不完整条件语句与时序电路
【 例 5-12】
ENTITY COMP_GOOD IS
PORT(a1, IN BIT;
b1, IN BIT;
q1, OUT BIT );
END ;
ARCHITECTURE one OF COMP_GOOD IS
BEGIN
PROCESS (a1,b1)
BEGIN
IF a1 > b1 THEN q1 <= '1' ;
ELSE q1 <= ‘0’ ; --a1≤b1的情况,完整条件语句
END IF;
END PROCESS ;
END
图 5-6 例 5-12的电路图
谭 敏 计算机信息工程系5.2.3 实现时序电路的 VHDL不同表达方式
【 例 5-13】
..,
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND (CLK='1') AND (CLK'LAST_VALUE='0')
THEN Q <= D ; --确保 CLK的变化是一次上升沿的跳变
END IF;
END PROCESS ;
【 例 5-14】
..,
PROCESS (CLK)
BEGIN
IF CLK='1' AND CLK'LAST_VALUE='0' --同例 5-13
THEN Q <= D ;
END IF;
END PROCESS ;
预定义信号属性,
CLK在 δ时刻前为 0
谭 敏 计算机信息工程系
5.2.3 实现时序电路的 VHDL不同表达方式
【 例 5-15】
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY DFF3 IS
PORT (CLK, IN STD_LOGIC ;
D, IN STD_LOGIC ;
Q, OUT STD_LOGIC );
END ;
ARCHITECTURE bhv OF DFF3 IS
SIGNAL Q1, STD_LOGIC;
BEGIN
PROCESS (CLK)
BEGIN
IF rising_edge(CLK) -- CLK的数据类型必须是 STD_LOGIC
THEN Q1 <= D ;
END IF;
Q <= Q1 ;
END PROCESS ;
END ;
上升沿测试函数
谭 敏 计算机信息工程系5.2.3 实现时序电路的 VHDL不同表达方式
【 例 5-16】,.,
PROCESS
BEGIN
wait until CLK = '1' ; --利用 wait语句
Q <= D ;
END PROCESS;
【 例 5-17】,.,
PROCESS (CLK)
BEGIN
IF CLK = '1'
THEN Q <= D ; --利用进程的启动特性产生对 CLK的边沿检测
END IF;
END PROCESS ;
【 例 5-18】,.,
PROCESS (CLK,D) BEGIN
IF CLK = '1' --电平触发型寄存器
THEN Q <= D ;
END IF;
END PROCESS ;
谭 敏 计算机信息工程系
5.2.3 实现时序电路的 VHDL不同表达方式
图 5-7 边沿型触发器时序波形
图 5-8 电平触发型寄存器的时序波形
谭 敏 计算机信息工程系
5.2.4 异步时序电路设计 【 例 5-19】
..,
ARCHITECTURE bhv OF MULTI_DFF IS
SIGNAL Q1,Q2, STD_LOGIC;
BEGIN
PRO1,PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK='1'
THEN Q1 <= NOT (Q2 OR A);
END IF;
END PROCESS ;
PRO2:PROCESS (Q1)
BEGIN
IF Q1'EVENT AND Q1='1'
THEN Q2 <= D;
END IF;
QQ <= Q2 ;
END PROCESS ;
图 5-9 例 5-19综合的电路
PRO1,PRO2是标注不参加综合
进程 1的赋值信号为进程 2的敏感信号
谭 敏 计算机信息工程系
5.2.5 VHDL设计基本概念和语言现象小节
数据类型
数据对象 信号属性
时钟检测
VHDL库 程序包
时序电路 异步时序
谭 敏 计算机信息工程系
5.3 1位二进制全加器的 VHDL设计
图 5-10半加器 h_adder电路图
图 5-11 全加器 f_adder电路图
谭 敏 计算机信息工程系5.3.1 半加器描述和 CASE语句
a b so co
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
表 5-1 半加器 h_adder逻辑功能真值表
1,CASE语句
CASE语句的一般表式是,
CASE <表达式 > IS
When <选择值或标识符 > => <顺序语句 >;,.,; <顺序语句 > ;
When <选择值或标识符 > => <顺序语句 >;,.,; <顺序语句 > ;
..,
END CASE ;
A、分支条件是互斥的
B、完全覆盖 case 的取值,否则最后一行 others
不是操作符,
含义“于是”
谭 敏 计算机信息工程系
2,标准逻辑矢量数据类型 STD_LOGIC_VECTOR
3,并置操作符 ?
以下是一些并置操作示例,
SIGNAL a, STD_LOGIC_VECTOR (3 DOWNTO 0) ;
SIGNAL d, STD_LOGIC_VECTOR (1 DOWNTO 0) ;
,.,
a <= '1'?'0'?d(1)?'1' ; -- 元素与元素并置,并置后的数组长度为 4
,.,
IF a ? d = "101011" THEN,.,–- 在 IF条件句中可以使用并置符
5.3.1 半加器描述和 CASE语句
在使用 STD_LOGIC_VECTOR中, 必须注明其数组宽度, 即位宽, 如,
B, OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;
或 SIGNAL A, STD_LOGIC_VECTOR(1 TO 4)
谭 敏 计算机信息工程系
5.3.1 半加器描述和 CASE语句
【 例 5-20】
LIBRARY IEEE ;--或门逻辑描述
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY or2a IS
PORT (a,b,IN STD_LOGIC;
c, OUT STD_LOGIC );
END ENTITY or2a;
ARCHITECTURE one OF or2a IS
BEGIN
c <= a OR b ;
END ARCHITECTURE one;
【 例 5-21】
LIBRARY IEEE; --半加器描述 (1)
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY adder IS
PORT (a,b, IN STD_LOGIC;
co,so, OUT STD_LOGIC);
END ENTITY adder;
ARCHITECTURE fh1 OF adder is
BEGIN
so <= a XOR b ;
co <= a AND b ;
END ARCHITECTURE fh1;
谭 敏 计算机信息工程系
【 例 5-22】
LIBRARY IEEE; --半加器描述 (2)
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY h_adder IS
PORT (a,b, IN STD_LOGIC;
co,so, OUT STD_LOGIC);
END ENTITY h_adder;
ARCHITECTURE fh1 OF h_adder is
SIGNAL abc, STD_LOGIC_VECTOR(1 DOWNTO 0) ;
BEGIN
abc <= a & b ;
PROCESS(abc)
BEGIN
CASE abc IS
WHEN "00" => so<='0'; co<='0' ;
WHEN "01" => so<='1'; co<='0' ;
WHEN "10" => so<='1'; co<='0' ;
WHEN "11" => so<='0'; co<='1' ;
WHEN OTHERS => NULL ;
END CASE;
END PROCESS;
END ARCHITECTURE fh1 ;
谭 敏 计算机信息工程系
【 例 5-23】
..,--半加器描述 (3)
SIGNAL abc,cso, STD_LOGIC_VECTOR(1 DOWNTO 0 );
BEGIN
abc <= a & b ; co <= cso(1) ; so <= cso(0) ;
PROCESS(abc)
BEGIN
CASE abc IS
WHEN "00" => cso<="00" ;
WHEN "01" => cso<="01" ;
WHEN "10" => cso<="01" ;
WHEN "11" => cso<="10" ;
END CASE;
END PROCESS;
END ARCHITECTURE fh1;
输出信号合并操作
谭 敏 计算机信息工程系
【 例 5-24】
LIBRARY IEEE; --1位二进制全加器顶层设计描述
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY f_adder IS
PORT (ain,bin,cin, IN STD_LOGIC;
cout,sum, OUT STD_LOGIC );
END ENTITY f_adder;
ARCHITECTURE fd1 OF f_adder IS
COMPONENT h_adder
PORT ( a,b, IN STD_LOGIC;
co,so, OUT STD_LOGIC);
END COMPONENT ;
COMPONENT or2a
PORT (a,b, IN STD_LOGIC;
c, OUT STD_LOGIC);
END COMPONENT;
SIGNAL d,e,f, STD_LOGIC;
BEGIN
u1, h_adder PORT MAP(a=>ain,b=>bin,co=>d,so=>e);
u2, h_adder PORT MAP(a=>e,b=>cin,co=>f,so=>sum);
u3, or2a PORT MAP(a=>d,b=>f,c=>cout);
END ARCHITECTURE fd1;
谭 敏 计算机信息工程系
5.3.2 全加器描述和例化语句
元件例化语句由两部分组成, 第一部分是对一个现成的设计实体定
义为一个元件, 语句的功能是对待调用的元件作出调用声明, 它的最
简表达式如下所示,
COMPONENT 元件名 IS
PORT (端口名表 ) ;
END COMPONENT 文件名 ;
元件例化语句的第二部分则是此元件与当前设计实体 (顶层文件 )中
元件间及端口的连接说明 。 语句的表达式如下,
例化名, 元件名 PORT MAP( [端口名 =>] 连接端口名,...);
谭 敏 计算机信息工程系例:用 VHDL设计 4位计数器
取整数数据类型,为什么?
算术操作符对应的操作数无特殊说明为整数
整数取值范围
端口信号模式取 BUFFER,为什么?
〈 =两边都有 Q,表明 Q为 I/O
BUFFER:输入功能是将自己的输出返回
注意整数和位的不同表达方式!
谭 敏 计算机信息工程系修改后的程序
运算符加载
(重载函数)
注意,信号
端口模式和
数据类型的
改变!
注意,引
进内部信
号矢量!
谭 敏 计算机信息工程系
4位锁存器 组合电路加 1器
锁存信号
输出反馈
谭 敏 计算机信息工程系用 VHDL设计 7段 16进制译码器
用 CASE语句完成真值表的功能
向 7段数码
管输出信号,
最高位控制
小数点
谭 敏 计算机信息工程系
注意,此语句必须加入
4位加法
计数器
7段译码器
8位总线输出




谭 敏 计算机信息工程系例 1
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux4 IS
PORT (i0,i1,i2,i3,a,b, IN STD_LOGIC;
q, OUT STD_LOGIC);
END mux4;
ARCHITECTURE body_mux4 OF mux4 IS
signal muxval, integer;
BEGIN
process(i0,i1,i2,i3,a,b)
begin
muxval <= 0;
if (a = '1') then
muxval <= muxval + 1;
end if;
if (b = '1') then
muxval <= muxval + 2;
end if;
case muxval is
when 0 => q <= i0;
when 1 => q <= i1;
when 2 => q <= i2;
when 3 => q <= i3;
when others => null;
end case;
end process;
END body_mux4;
Why
谭 敏 计算机信息工程系LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux4 IS
PORT (i0,i1,i2,i3,a,b, IN STD_LOGIC;
q, OUT STD_LOGIC);
END mux4;
ARCHITECTURE body_mux4 OF mux4 IS
BEGIN
process(i0,i1,i2,i3,a,b)
variable muxval, integer range 0 to 3;
begin
muxval,= 0;
if (a = '1') then
muxval,= muxval + 1;
end if;
if (b = '1') then
muxval,= muxval + 2;
end if;
case muxval is
when 0 => q <= i0;
when 1 => q <= i1;
when 2 => q <= i2;
when 3 => q <= i3;
when others => null;
end case;
end process;
END body_mux4;
谭 敏 计算机信息工程系
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY h_adder IS
PORT (a,b, IN STD_LOGIC;
co,so, OUT STD_LOGIC);
END ENTITY h_adder;
ARCHITECTURE fh1 OF h_adder I
BEGIN
so <= (a OR b)AND(a NAND b);
co <= NOT( a NAND b);
END ARCHITECTURE fh1;
用一位全加器设计
1位二进制半加器
谭 敏 计算机信息工程系1位二进制全加器
内部端口
外部端口
端口连线
谭 敏 计算机信息工程系
谭 敏 计算机信息工程系VHDL 设计流程, V-S-F-P
VHDL
Entry
Use any Text Editor
to input your design
Synthesis
Use any VHDL
Compiler to convert
your language design
to Gate level with
optimization in term
of Speed / Area
Fitting
Architecture Synthesis
To map the logic
to Altera Device Architecture
e.g,LUT,Carry/Cascade Chain,
EAB......(further logic optimization)
Perogr,
Down
Load
Configure/Programming the Altera Device
and do on board debugging,
prototyping or production
谭 敏 计算机信息工程系
STEP1,建立
工作库文件夹
STEP2,输入设计项目
原理图 /VHDL文本代码
STEP3,存盘,注意
原理图 /文本取名
STEP4,将设计项
目设置成 Project
STEP5,选
择目标器件
STEP11,
硬件测试
STEP9,引脚
锁定并编译
STEP8,仿真测
试和波形分析
STEP7,建立仿
真波形文件
STEP6,
启动编译
STEP10,编程
下载 /配置
VHDL文本输入设计流程