第四章eda技术与可编程asic的设计实现 - ustcstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf ·...

273
第四章 EDA技术与可编程ASIC的设计实现 第四章 EDA技术与可编程ASIC的设计实现 4.1 集成电路与ASIC 4.2 可编程ASIC及其发展 4.3 MAX+PLUS II及其应用 4.4 Xilinx公司器件与Foundation应用 4.5 Xilinx XC95系列在电压信号测量A/D中的应用 4.6 CPLD/FPGA在数字系统设计中的应用 复习思考题

Upload: others

Post on 10-Oct-2020

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

第四章 EDA技术与可编程ASIC的设计实现

4.1 集成电路与ASIC

4.2 可编程ASIC及其发展

4.3 MAX+PLUS II及其应用

4.4 Xilinx公司器件与Foundation应用

4.5 Xilinx XC95系列在电压信号测量A/D中的应用

4.6 CPLD/FPGA在数字系统设计中的应用

复习思考题

Page 2: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.1 集成电路与ASIC

4.1.1 集成电路及其分类

集成电路按集成度可分为小规模、中规模、大规模、超大

规模(军用的称超高速)、 极大规模和巨大规模集成电路。集成

度是标志集成电路的一个重要指标,一般是指在一定尺寸的芯

片上能做出多少个晶体管。通常将集成度少于 100 个元件的集

成块称为小规模集成电路(简称SSI);把集成度在100~1000个元

件的称为中规模集成电路(简称MSI);以此类推。

Page 3: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

集成电路按制作工艺可分为膜集成电路、半导体集成电路

和混合型集成电路。其中,膜集成电路又分为薄膜集成电路和

厚膜集成电路两类, 薄膜集成电路制作方法主要采用淀积方

法, 如真空蒸发、溅射、电解氧化等方法,把需要的各种材料

覆盖在陶瓷或玻璃片上,然后用光刻的方法获得电路;厚膜集

成电路主要采用丝网漏印的方法, 像印刷画报那样把电路印制

在陶瓷上。半导体集成电路是在半导体材料的晶圆片上制作出

电路。 混合型集成电路是采用薄膜集成电路和半导体集成电路

制作工艺联合制作出电路。

Page 4: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

集成电路按功能可分为数字集成电路、 模拟集成电路(线

性集成电路和非线性集成电路)、微波集成电路和专用集成电路

(ASIC)。 所谓的数字集成电路就是传递、 加工、处理数字信

号的集成电路。数字集成电路可分为通用数字集成电路和专用

集成电路。通用数字集成电路是指那些用户众多、使用领域广

泛、 标准型的电路。专用集成电路是指为特定的用户、某种专

门或特别的用途而设计的电路。具体分类如下:

Page 5: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

Page 6: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

其中,通用数字集成电路由于采用的晶体管不同,可分为双极

型集成电路和场效应集成电路两种。这两大系列中主要由TTL和CMOS为代表。 高阈值晶体管逻辑电路(HIL)、发射极耦合逻

辑电路(ECL)、集成注入逻辑电路(IIL)、N沟道场效应管逻辑电

路(NMOS)和P沟道场效应管逻辑电路(PMOS)等系列,使用较少。

反映数字集成电路的现状和应用水平的是存储器、微处理器及

微控制器和专用集成电路。 存储器是典型的数字集成电路,也

一直是集成电路的主要产品, 其技术发展代表着集成电路发展

水平。另外,数字集成电路的发展历程是和计算机的命运紧紧

连在一起的,它应计算机的需要而诞生,并随电子技术的不断

进展而发展。计算机的核心是微处理器和微控制器。数字集成

电路发展到数字系统也与其和计算机、通信、网络等逐渐融

合,密不可分。

Page 7: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

模拟集成电路是指能对电压、电流等模拟量进行放大与转

换的集成电路。 输入信号与输出信号呈线性关系的电路称为

线性集成电路; 输入信号与输出信号不成线性关系的电路称

为非线性集成电路; 微波集成电路是近些年迅速发展的高频

集成电路, 由于工作频率高(大于300 MHz), 导致其电路结构、

元件类型、 材料、 工艺途径以及应用范围都大不相同, 形成

了单独的一大类型集成电路。

Page 8: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.1.2 ASIC及其分类

ASIC(Application Specific Integrated Circuits, 专用集成电路)是相对于标准逻辑、通用存储器、 通用微处理器等电路而言的。

它是面向专门用途, 根据某一用户的特定要求,以低研制成本、

短周期交货的全定制或半定制集成电路。 

ASIC从20世纪60年代提出概念,到20世纪80年代后期随着

半导体集成电路工艺技术、支持技术、设计技术和测试评价技

术的发展而得到充分发展。尤以设计专用性、成本低、开发周

期短、工具先进、 可靠性好、 保密性好、 工作速度高、功耗低、

芯片体积小和重量轻等各方面的优势, 很快发展起来。 用ASIC

取代中小规模集成电路来组成电子系统或整机已成为热潮,目

前在集成电路市场中的ASIC占有率已达1/3。

Page 9: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

按照设计方法不同,ASIC分为全定制和半定制。全定制是

基于晶体管的设计方法,针对 高速、 低功耗和 省面积的

芯片,它必须从晶体管的版图尺寸位置及连线开始设计。通常

设计成本高,周期长,只适用于性能要求很高或批量很大的芯

片。半定制则是一种约束性设计方法, 约束的主要目的是简化

设计,缩短设计周期以及提高芯片成品率,并尽可能采用已有

的规则结构的版图,牺牲芯片的面积和性能方面的要求,用

短的时间设计出芯片,产品占领市场后再予以改进。

Page 10: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

半定制方法分为门阵列法、标准单元法和可编程ASIC。门

阵列法又称母片法,是在半成品母片上将已有的规则单元相互

连接实现电路要求, 并有较高自动化的设计软件。门阵列法成

本低、 周期短, 但门的利用率低,芯片性能不高。 标准单元

法是以精心设计的标准单元库为基础,调用库单元版图,利用

自动布局布线完成电路到版图一一对应的设计, 它的成本周期、

性能指标都较高。前几种ASIC方法都必须到集成电路厂家去加

工流片才能完成,设计制造周期较长,而且一旦出错,需要重

新修改设计和流片, 周期成本必然大大增加。 可编程逻辑器件

是一种已完成全部工艺制造,可直接从市场购得的产品,用户

只需对它编程就能实现电路功能,设计人员在实验室即可设计

和制造出芯片, 而且可以反复编程,使硬件的功能像软件的功能

一样通过编程来修改。

Page 11: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

可编程ASIC发展到现在, 芯片上包含的资源越来越丰富, 可

实现的功能越来越强, 已成为当今电子系统设计的重要手段。

目前, 在电子系统开发阶段的硬件验证过程中,一般都采用

可编程ASIC, 以期尽快开发产品, 迅速占领市场。可编程

ASIC尤其适合实验室中的科研和教学, 不仅投入低,开发时

间短, 而且灵活性大, 能够有效提高学生的设计能力。可编

程逻辑器件的分类如图 4 - 1所示。

Page 12: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-1 可编程逻辑器件分类示意图

PLD

简单的PLD,如PLA、PROM、PAL、GAL等

复杂的PLD(Complex PCPLD)

现场可编程门阵列FPGA

电可擦除的PLD(EPLD)

Page 13: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

可编程ASIC按复杂程度大致分为可编程逻辑器件(PLD,

Programmable Logic Device),复杂可编程逻辑器件 (CPLD,

Complex Programmable Logic Device) ,现场可编程门阵列

(FPGA, Field Programmable Gate Array)。 PLD由“与阵列”和“或阵列”组成,可用来实现任何“以积之和”形式表示的各种布

尔逻辑函数; CPLD在PLD的基础上增加密度, 扩充功能,以

实现复杂逻辑; FPGA则具有类似于半定制门阵列的通用结构,

即由逻辑功能块排列成阵列组成,并由可编程的互连资源连接

这些逻辑功能块来实现所需的设计。进入20世纪90年代后,复

杂可编程逻辑器件CPLD已经成为可编程ASIC的主流产品,在

ASIC市场占有了较大的份额,它一般具有可重编程特性,实现

的工艺有EPROM、 Flash EPROM和E2PROM。 CPLD采用连续

互连方式,能够方便地预测设计时序,同时保证高速性能。

Page 14: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

全定制电路芯片完全由设计者自己开发设计,集成度高,

可以针对所设计的电子系统进行优化,使性能达到 优,但是

其芯片设计、 制作的成本都比较高,并且设计开发的周期较

长, 所以全定制电路芯片一般只用于大规模生产,在电子系统

的设计开发过程中不使用全定制电路芯片。对于半定制电路芯

片,设计者不需从头设计,只需将所需功能用开发系统“写”入

半定制电路芯片,如EPLD、CPLD、FPGA等,因而在性能上虽

然不能达到 优,但是设计制作的成本较低,开发周期短,比

较适合于在电子系统的设计开发中使用。 

一般在进行复杂数字系统全定制设计时,完成全定制电路

芯片设计后,还是要进行FPGA的仿真测试,以 大程度地保证

电路的可靠性。因为电路设计完成后,仿真结果通过,并不等

于版图就一定能够通过(即和电路仿真结果一致),所以须用

FPGA验证流片。

Page 15: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.2 可编程ASIC及其发展

4.2.1 可编程逻辑器件的发展历程

随着微电子技术的发展,设计与制造集成电路的任务已不

完全由半导体厂承担,系统设计师们更愿意通过Fabless模式来

自行设计ASIC芯片,而且希望ASIC的设计周期尽可能短, 好

在实验室就能设计出合格的ASIC芯片并立即投入使用,因而出

现了现场可编程逻辑器件(FPLD),其中应用 广泛的当属现场

可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。

Page 16: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

早期的可编程逻辑器件只有可编程只读存储器(PROM)、

紫外线可擦除只读存储器 (EPROM)和电可擦除只读存储器

(E2PROM)三种, 由于结构限制,只能完成简单的数字逻辑。

其后,出现了一类结构上较复杂的可编程芯片,即可编程逻辑

器件(PLD),它能够完成各种数字逻辑功能。主要产品有可编程

逻辑阵列(PLA)和通用逻辑阵列(GAL)。PLA器件既有现场可编

程的, 也有掩模可编程的。在PLA基础上,又发展了GAL,它

采用E2PROM工艺,实现了电可擦写,其输出结构是可编程的逻

辑宏单元,因而在当时用它进行电路设计具有很强的灵活性。

Page 17: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.2.2 FPGA和CPLD的比较

FPGA和CPLD是半定制芯片的杰出代表。它们兼容了PLD

和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。

与门阵列等其它ASIC相比,它们的规模随着集成电路的发展

越来越大,并且可反复擦写,适合正向设计,对知识产权的保

护也很有利。 设计人员用它们进行电路设计开发周期更短,

研发费用低,并且不需要具备专门的集成电路深层次的知识。

Page 18: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

1. FPGA的优势

可编程逻辑器件替代专用集成电路和专用标准电路

(ASSP,Application Specific Standard Products)的趋势主要是因

为FPGA有许多明显的优点,这些器件在逻辑密度、性能和特

性上有惊人的增长,而且成本又低。目前,高容量的FPGA可

以达到每提供10万门且运行频率在100 MHz以上,而费用不

到10美元。

Page 19: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. CPLD的优势 

(1) 布线能力。 Altera CPLD独特的内连线结构使其内连率很

高, 不需要人工布局布线来优化速度和面积。 这与Xilinx FPGA有限的布线线段相比,更适合于电子系统设计自动化中芯片设

计的可编程器件验证。 

(2) 延迟可预测能力。Altera CPLD的连续式布线结构决定了

它的时序延迟是均匀的和可预测的,这更方便学生做设计。 

(3) 适用场合。虽然CPLD和FPGA均可集成千门以上的数字

逻辑电路, 但相比较而言,CPLD更适合于完成各类算法和组合

逻辑及小规模的时序逻辑。FPGA则更适合于时序较多的时序逻

辑电路设计。

Page 20: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.2.3 PLD/FPGA入门

CPLD、FPGA两者的功能基本相同,只是实现原理有所

不同,有时我们可以忽略这两者之间的区别,统称为PLD或

CPLD/FPGA,下面我们以PLD来统称它们。  

PLD能做什么呢? 它们能完成几乎所有数字器件的功能,

上至高性能CPU,下至简单的74系列电路。用户可以通过传统

的原理图输入法,或是硬件描述语言自由地设计一个数字系统。

通过软件仿真,可以事先验证设计的正确性。在PCB完成以

后, 还可以利用PLD的在线调试能力,随时修改设计而不必改

动硬件电路。

Page 21: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

如何使用PLD呢? 使用PLD比学习单片机要简单得多, 有

一定数字电路基础,会使用计算机,就可以进行相应的开发。

开发PLD需要了解PLD器件和相应的开发软件。  

由于PLD软件已发展得相当完善,用户甚至可以不用详细

了解PLD的内部结构, 而用自己熟悉的方法(如原理图输入或

VHDL语言)即可完成相当优秀的PLD设计。所以对初学者,

首先应了解PLD开发软件和开发流程。而进一步了解PLD的内

部结构,将有助于提高我们设计的效率和可靠性。

Page 22: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

PLD产品一般分为:基于乘积项(Product-Term)技术的

E2PROM(或Flash)工艺的中小规模PLD; 基于查找表

(Look-Up Table)技术的SRAM工艺的大规模PLD/FPGA。

E2PROM工艺的PLD密度小,多用于5 000门以下的小规模设

计,适合做复杂的组合逻辑,如译码。SRAM工艺的FPGA密

度高,触发器多,多用于10 000门以上的大规模设计, 适合做

复杂的时序逻辑,如数字信号处理和各种算法。目前有多家公

司生产CPLD/FPGA, 大的几家是Altera、 Xilinx、 Lattice和

Actel。

Page 23: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

在PLD/FPGA开发软件中完成设计以后,软件会产生一个

终的编程文件(如.pof)。下面介绍将编程文件烧到PLD芯片中

去的方法。 

(1)对于基于乘积项(Product-Term)技术的E2PROM(或Flash)工艺的PLD(如Altera的MAX系列、Lattice的大部分产品、

Xilinx 的 XC9500 系列 ) ,厂家提供编程电缆,如 Altera 叫Byteblaster, 电缆一端装在计算机的并行打印口上,另一端接在

PCB板上的一个十芯插头。 PLD芯片有四个管脚(编程脚)与插头

相连,它向系统板上的器件提供配置或编程数据,这就是所谓

的在线可编程(ISP)。Byteblaster使用户能够独立地配置PLD器

件, 而不需要编程器或任何其它编程硬件。编程电缆可以向代

理商购买,也可以根据厂家提供的编程电缆的原理图自己制

作,成本仅需一二十元。目前的PLD都可以用ISP在线编程,也

可用编程器编程。

Page 24: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 对于基于查找表(Look-Up Table)技术的SRAM工艺

的FPGA(如Altera的所有FLEX、ACEX、APEX系列,Xilinx的

Spartan、 Virtex), 由于SRAM工艺的特点,掉电后数据会消

失,因此调试期间可以用下载电缆配置PLD器件,调试完成

后, 需要将数据固化在一个专用的E2PROM中(用通用编程器

烧写),由这片E2PROM先对PLD加载数据,十几毫秒后,

PLD即可正常工作。

Page 25: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) 反熔丝(Anti-fuse)技术的FPGA,如Actel、 Quicklogic及

Lucent的部分产品就采用这种工艺。用法与E2PROM的PLD一

样, 但这种的PLD是不能重复擦写的,所以初期开发过程比较

麻烦, 费用也比较高。但反熔丝技术也有许多优点:布线能力

更强, 系统速度更快,功耗更低,同时抗辐射能力强,耐高低

温,可以加密, 所以在一些有特殊要求的领域中运用较多,如

军事及航空航天领域。

Page 26: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.2.4 可编程ASIC的发展趋势 

1. CPLD和FPGA的发展方向

CPLD和FPGA未来的发展呈现出以下几方面趋势:  

(1) 向高密度、超大规模的方向发展。目前高密度可编程

ASIC已具备了片上系统SoC的集成能力,产品性能发生了巨大

飞跃。 

(2) 向系统内可重构方向发展。系统内可重构是指可编程

ASIC在置入用户系统后仍具有改变其内部功能的能力,从而在

电子系统中引入“软硬件”的全新概念,极大地提高了电子系统

的灵活性和适应性。 

Page 27: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) 向低电压、低功耗的方向发展。 可编程ASIC作为电子

系统的重要组成部分,不可避免地向3.3/2.5/1.8 V的标准靠拢,

扩大应用范围,满足节能要求。 

(4) 向高速可预测延时器件的方向发展。可编程ASIC产品

如果要在高速系统中占有一席之地,必然要求器件向这方面发

展。 

Page 28: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(5) 向混合可编程的技术方向发展。迄今为止,有关可编

程ASIC的研究和开发的大部分工作基本上都集中在数字逻辑电

路上,未来的局面将会有所改变,模拟电路和混合电路的可编

程技术将得到发展。可编程模拟ASIC作为今后模拟电子电路设

计的一个发展方向,必将翻开模拟电路设计的新篇章,使得模

拟电子系统的设计也和数字系统设计一样简单易行。 

可编程ASIC是一门正在发展的技术,未来发展的动力仍来

自于实际应用的要求和制造商之间的竞争。可编程ASIC在结构、

密度、 功能、 速度和灵活性方面将得到进一步发展,在现代

电子系统设计中将起到越来越重要的作用。

Page 29: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. 可编程SoC 

近年来,PLD一直呈现出很好的发展态势。PLD灵活方

便, 不仅性能、速度、 连接具有优势, 而且可以缩短上市时

间, 因此, 应用领域在不断拓展。 随着通信设备、 数据传

输,以及计算技术的高速化和复杂化,对PLD的集成度和性能

也提出了越来越高的要求,因此可编程片上系统或平台,即可

编程SoC就应运而生。

Page 30: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

为了在潜力巨大的通信市场占有更大的份额,业界重要的

可编程逻辑器件制造商都先后推出了自己的系统级产品。概括

起来大致是采用两种方法来实现可编程SoC:一种是在可编程

器件FPGA中嵌入CPU内核, 获得可编程系统平台; 另一种是

将可编程模块置入ASIC之中, 得到具有可配置功能的ASIC。下面分别介绍各公司的SoC典型产品。 

(1) Actel公司的VariCore内核和ProASIC Plus FPGA。 Actel公司是反熔丝(一次性烧写)PLD的领导者,由于反熔丝PLD

抗辐射,耐高低温,功耗低,速度快,所以在军品和宇航级上

有较大优势。

Page 31: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) Altera公司的Excalibur 嵌入处理器方案和Stratix 器件。

Altera的StratixTM器件是构建在新的MultiTrackTM布线结构之上

的, 是一种基于模块的设计,使用户能够方便地以一些小功能

模块构建复杂的设计。其性能比Altera的APEXTM II器件提升了

40%,内核尺寸比以前的体系小35%, 提供多达10 MB的RAM

和114 140个逻辑单元,是相近产品存储容量的3倍,逻辑单元多

出21 000个。 另外,Stratix器件包括了专用DSP功能,能够实现

比一般PLD快两倍的DSP和复杂计算应用,是容量大且速度快的

可编程逻辑 器件。

Page 32: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) Atmel公司的Fpslic系列产品。Atmel公司推出的AT94K和

AT94S系列现场可编程系统级芯片(Fpslic),将组成基本系统所需

的逻辑、外设、存储器和微控制器等嵌入式系统模块集成在一片

基于SRAM的现场可编辑器件上,实现单芯片可编程SoC。 

Fpslic把AT40K FPGA和一个高性能AVR 8位RISC MCU结合

在一起,在一个芯片上集成有两个UART、一个时钟计数器、可

编程I/O、36 K SRAM,能节约70%的芯片面积,50%的功耗, 同

时性能也提高了50%。Fpslic可在FPGA内对附加的外围设备和定

制逻辑电路进行编程,与使用分立元件的和其它类型方案相比,

可以加快产品面市时间。AVR微控制器和FPGA逻辑电路的微码

可以无数次地重新配置,从而使Fpslic器件成为开发基于单集成

电路的多端产品的理想平台。

Page 33: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(4) Lattice公司的FPSC和ORCA FPGA。莱迪思半导体

(Lattice Semiconductor)公司在集成ASIC宏单元和FPGA门于

同一个硅片的方法方面处于领先位置。 它们将该技术称之为单

片现场可编程系统(FPSC)。 与带有嵌入式FPGA门的ASIC相

比, FPSC器件是提供系统解决方案的器件。FPSC器件将

ORCA Series 4型FPGA可编程逻辑结构与总线接口、高速线路

接口及高速收发器等内嵌的IP核组合起来,形成优化的ASIC门。

这意味着FPSC器件不仅是单芯片系统,而且还是集使用灵活性

和高性能于一身的针对复杂功能的强大的IP载体。嵌入式宏单

元拥有工业标准IP核,诸如PCI、高速线接口和高速收发器。当

这些宏单元与成千上万的可编程门结合起来时, 它们可应用在

各种不同的高级系统设 计中。 

Page 34: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

Lattice公司的ORCA现场可编程门阵列(FPGA)是构建在所

熟悉的优化重组单元阵列(FPGA)结构上的、新的现场可编程门

阵列(FPGA)系列。这种FPGA器件系列提供了许多新的特征和

架构增强特性,而早期的FPGA不具备这些特点。结合灵活的基

于SRAM的可编程逻辑强有力的系统特征,丰富的布线层次和

互连资源,以及融合多接口标准, FPGA的ORCA FPGA系列可

以适用于大多数复杂、高性能的设计。关于FPSC 和 ORCA

FPGA的更多信息, 请浏览公司网站:

www.lattice.com,www.latticesemi.com和www.latticesemi.com.cn。

Page 35: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(5) QuickLogic公司的QuickMIPS。 QuickLogic的优势是连

接逻辑门的方法, 该公司使用一种称作ViaLink的无晶体管连

接方法, 可以放入更多的信号绕线开关。 该公司早在1999年

就推出了在FPGA中集成了类似微处理器和高速串行接口功能

的嵌入式标准产品(ESP)。 

QuickLogic公司新推的QuickMIPS产品系列采用了嵌入式

MIPS处理器以及其它专用内核。

Page 36: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(6) 赛灵思 (Xilinx)公司的Virtex II Pro FPGA。赛灵思

(Xilinx)公司是FPGA的发明者,他们推出的Virtex-II ProTM FPGA系列产品,采用0.13 μm工艺,9层金属结构, BGA封装,是基

于Virtex-II系列基础的高端FPGA。其主要特点是在Virtex II上增加了高速I/O接口能力和嵌入了IBM公司的PowerPC处理器,

以解决高性能系统结构所面临的挑战。IBM和Xilinx合作,利用

IP植入(IP Immersion)技术,在Virtex-II结构中植入领先的嵌

入式处理器结构 IBM PowerPC。Virtex-II Pro系列支持 多达4个运行频率高达300 MHz的PowerPC 405处理器。 这种植入方法

允许硬IP核心分布在Virtex结构中的任何位置, 同时可保持与周

围逻辑阵列的平滑集成。 IP植入技术将核心中的所有高速总线

与可编程结构直接密切耦合,从而获得了比同样的分立处理器

高得多的系统级性能。

Page 37: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

Virtex-II Pro FPGA还集成了RocketIOTM技术,这是支持多

端口的3.125 Gb/s串行接口的可编程解决方案。 这一集成为高性

能接口标准, 如千兆位以太网、 10G以太网、 3GIO、

SerialATA、Infiniband和FibreChannel提供了一个完全的解决方

案。 

Virtex-II 结 构 还 包 括 了 先 进 的 主 动 互 连 ( Active

Interconnect)、 块RAM(BlockRAM)和时钟管理功能。关于

Virtex-II Pro FPGA的更多信息,请浏览http://www.Xilinx.com。

Page 38: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

综上所述,可编程SoC已经逐渐成可编程器件的发展趋

势。 ASIC与FPGA融合的概念得到越来越多的可编程器件厂

商的认同,尽管FPGA和ASIC各具特点, 但这些融合产品逐

渐模糊了两者之间的界限。目前,虽然有许多这种融合的高

性能ASIC替代产品进入市场,而且今后的发展方向也可能是

两者进一步融合,但是, 据预测,在今后一段时间内ASIC仍

然会占据高端芯片市场。

Page 39: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.3 MAX+PLUS II及其应用

4.3.1 MAX+ PLUS II软/硬件环境

1. MAX+PLUS II简介

Altera公司的MAX+PLUSII开发软件系统是一个完全集成化、

易学易用的可编程逻辑设计环境, 它可以从网上自由下载, 并

可去Altera公司申请非商用的版权许可证文件(license.dat), 基本

满足万门级设计需求。该软件具有以下优点: 

(1) 开放的界面。

Page 40: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 与结构无关。

(3) 多平台。

(4) 完全集成化。

(5) 丰富的设计库。

(6) 开放核(OpenCore)特性。

Page 41: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. 如何选择合适的芯片 

(1) 一般情况下,尽可能选用速度等级 低的芯片,尽可能

选用电压比较低的芯片(性价比较好),尽可能选用贴片封装的芯

片。 

(2) 如果设计中不需要使用容量较大的内嵌式存储器,或超

过256个宏单元的设计尽量选用FLEX6000系列的芯片,否则要

用FLEX10K或1K。  

(3) 如果设计中需要较大的存储器和比较简单的外围逻辑电

路, 而且对速度、总线宽度和PCB板面积无特殊要求的情况

下,尽量选用一片MAX7000或3000系列的芯片和外接存储器。

Page 42: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(4) 在速度较高的双向总线上尽量采用MAX7000或3000系

列的芯片。 

(5) 如设计规模需要超过10万门或需要PLL、LVDS、 CAM

等新技术, 则可以选择APEX20KE。 为保证及时供货和性价

比 , 新设计应优先选择以下型号 : MAX7032SLC44-10 、

7064SLC44-10 、 7128SLC84-15 、 7128STC100-15 、

7128AETC100-10、7128AETC144-10、FLEX6016AQC208-3、

6016ATC144-3 、 10K20TC144-4 、 10K30EQC208-3 、

10K50EQC240-3 以 及 刚 刚 推 出 的 MAX3032ALC44-10 、

3064STC100-10、APEX20KE、 ACEX1K等。 好先和代理商

沟通,再确认所需型号。

Page 43: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

3. 交通灯芯片选择实例 

(1) 综合考虑上面的这些因素,以及开设其它EDA实验的需要,我们所要设计交通灯控制器实验所用的芯片选用Altera公司的MAX7000S系列中的EPM7128SLC84 15。 

(2) MAX7000系列是工业界中速度较快的高集成度可编程逻辑器件系列。它是在Altera公司的第二代MAX结构基础上,采用先进的CMOS E 2PROM技术制造的, 可百分之百模仿TTL。MAX7000系列(包括MAX7000E、 MAX7000S和MAX7000A器件)的集成度为600~5000可用门, 使用5 V或3.3 V电源,有32~256个宏单元和36~155个用户I/O引脚。能够提供组合传输延迟快至5.0 ns,16位计数器的频率为178 MHz,遵守PCI规定,可编程宏单元触发器具有专用清除、置位、时钟和时钟使能控制。

此外,它们输入寄存器的建立时间非常短,能提供多个系统时钟且有可编程的速度/功率控制。另外还有编程保密位,全面保护专利设计。

Page 44: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) MAX7000S是MAX7000的增强型,具有高集成度,还

有6个由引脚或逻辑驱动的输出使能,2个可选为反向工作的全

局时钟信号; 并且改善了布局布线,增加了连线资源,加快了

从 I/O 引 脚 到 宏 单 元 寄 存 器 的 专用路径的建立时间。

EPM7128SLC84 15有2500个可用门、84个引脚 , 其中输入输

出的引脚为68个。MAX7000S包括逻辑阵列块(LAB)、宏单

元(Macro Cells)、 扩展乘积项(共享和并联)、可编程连线阵列

(PIA)和I/O控制块五部分。另外,MAX7000结构中还包括4个专

用输入,它能用作通用输入或作为每个宏单元和I/O引脚的高速

的、全局的控制信号,即时钟(Clock),清除(Clear)和输出使

能(Output Enable)。 器件方框图如图 4-2所示。

Page 45: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-2 MAX7000S的结构方框图

INPUT/GCLK1INPUT/OE2/GCLK2

INPUT/OE1

INPUT/GCLRn

36

36

LAB C

16···

6

PIA

宏单元1~16

LAB A

16···

6~166

I/O控制块

宏单元17 ~32 6 ~16 I/O 引脚

LAB B2~16

16···

6

36

LAB D

16···

6

36

··· ···

2~16

5个全局使能信号 6个全局使能信号

6 ~16

6~16

6 ~16

6 ~16

6~16

6~16

6 ~16 I/O 引脚

6 ~16 I/O 引脚

6 ~16 I/O 引脚

宏单元33~48

宏单元19~64 I/O

控制块

I/O控制块

I/O控制块

6~16

6~16

6~16

Page 46: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现4.3.2 MAX+PLUS II的设计过程

MAX+PLUS II 10.1是由设计输入、设计处理、设计校验

和器件编程四部分组成,如图 4-3所示。

图 4-3 MAX+PLUS II的设计流程

MAX+PLUS II文本编辑器

MAX+PLUS II图形编辑器

编译器网表提取器

设计输入

数据库建库器

逻辑综合器

适配

项目编译

MAX+PLUS II时间分析器

MAX+PLUS II编程器

MAX+PLUS II信息处理器

和层次显示

Page 47: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

1. 设计输入

MAX+PLUS II设计输入的方法有多种,包括原理图输入方

式、文本设计输入方式、高级设计输入方式、波形设计输入方

式、 层次设计输入方式和底层设计输入方式。 常用的是原理

图输入和文本输入两种方式。 

(1) 原理图输入是指用MAX+PLUS II提供的各种原理图库进

行设计输入,是一种 直观的输入方式,但是输入效率低。 

(2) 文本设计输入是指设计者用VHDL、Verilog HDL 或AHDL(ALTERA自己开发的硬件描述语言)编写HDL源程序进

行输入。采用这种方法描述的优点是效率高, 结果也较容易仿

真,在不同设计库之间的转换非常方便。

Page 48: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. 项目编译 

MAX+PLUS II处理一个设计时,Compiler在设计文件中

读取信息并产生编译文件和仿真文件,Timing Analyzer可分

析设计定时, Message Processor可自动定位错误。 

(1) 自动错误定位。 Message Processor与MAX+PLUS II的

所有应用程序通信,可以给出信息(错误、警告等)。设计

者可以利用它打开有错误源的文件,并以高亮显示。

Page 49: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 逻辑综合与试配。MAX+PLUS II Compiler的Logic Synthesize(逻辑综合)模块对设计方案进行逻辑综合并能看到真

正的结果。 Fitter(试配)模块应用试探法可把经过综合的设计

恰当地用一个或多个器件实现,使设计者得以从冗长的布局布

线工作中解脱出来,生成报告文件(.rpf), 该文件显示设计的具体

实现以及器件中未使用的资源, 并说明用户的定时要求是如何

具体实现的。 

(3) 设计规则检查。Compiler中的Design Doctor程序能检查

每一个设计文件。 用户可以选择预先定义好的三组检查规则中

的一种,也可以建立自己的规则。 

(4) 编译文件的产生。 Assemble(装配程序)模块为已编译的

设计创建烧写文件(.pof)。

Page 50: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

3. 设计校验

(1) 仿真。 电路设计输入完之后,首先须检验输入是否正

确, 这是一项简单的逻辑检查。MAX+PLUS II提供了功能编译

选项,此时,只运行仿真网表的提取, 而不做布局布线。所有

延时为零延时,在仿真时需加入激励信号,激励信号可以用波形

编译器直接编译成波形文件,也可以先用文本编辑器按软件给定

的语法规则编辑成文本再转换成波形文件,如检查到错误则需修

改原设计方案。

功能仿真无误后,需要进行后仿真。首先进行完全编译,

每个设计项目都有一个配置文件(.acf),所有配置参数都存放在这

里。 如果需要修改配置, 既可在菜单上修改,也可以直接修改

此文件。对于相对简单的设计,也可以只做一步仿真,即后仿真。

Page 51: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 定时分析。Timing Analyzer可以计算点到点的器件延

时矩阵,确定器件引脚上的建立时间与保持时间,还可以计算

高时钟频率。 Message Processor可以找出Timing Analyzer在

设计文件中已证实的关键路径, 并在适当的设计编辑器中加

以实现。

Page 52: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4. 器件编程 

MAX+PLUS II Programmer 是使用Compiler生成的烧写文

件(.pof)对Altera器件进行编程的。 它可以用来对器件编程、校

验、检查是否空白以及进行功能测试。

Page 53: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.3.3 用MAX+PLUS II设计交通灯控制器

1. 系统功能要求分析和设计方案论证

按照Top-Down设计流程, 首先要进行系统的功能要求分析。

我们假设为某乡村公路(以下简称为F)和高速公路(以下简称

为H)十字路口设置交通灯。 要求两公路均有红黄绿三色灯。

保证H绝对优先,初始状态H绿灯,F红灯。正常状态下,当监

测F有车时, 整个系统启动,经过t1时间以后,H转为黄灯,再

经过t2时间以后,H转为红灯,F转为绿灯。如在以上时间段内,

F上的车绕道行驶,则直接跳变回初状态。在H红灯、F绿灯状态

下,如果监测到F上没车,或者已达到 长通行时间t3,则F转为

黄灯,再经过t2时间以后,H转为绿灯、F转为红灯;紧急状态下

紧急状态显示灯开启,只允许H通车。

Page 54: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

根据系统功能要求,确定系统的输入信号和输出信号。 

输入信号有:系统时钟信号clk, 系统复位信号reset, 紧急状

态信号sp,乡村公路有车信号car_on_farm。 

输出信号有:乡村公路状态信号 farmroad_light[1..0],

高速公路状态信号highway_light[1..0]以及紧急状态显示信号

special_light。 

根据以上设定的输入输出信号关系和对系统功能要求的分

析,可建立如图 4-4所示的系统的状态转换图(ASM)。

Page 55: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-4 交通灯系统状态图

H绿F红

紧急状态

Y

N

Y

N

N

Y

N

Y

N

F有车&t1

H黄F红

F有车

t2

Y

H红F绿

F无车/t1

H红F黄

t3Y

紧急状态

H绿F红,紧急灯亮

N

N

Page 56: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. 系统顶层的VHDL描述和仿真 

状态图分析完毕以后,可以根据它编写顶层的VHDL源程

序,并进行编译仿真。具体过程如下: 

(1) 启动MAX+PLUS II, 建立新文件, 进入文字编译。  

(2) 保存文件: 保存为traffic_con.vhd。 

(3) 选定项目名与文件名相同(Set Project To Current File)。

Page 57: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

library ieee; 

use ieee.std_logic_1164.all; 

use ieee.std_logic_unsigned.all; 

 

entity traffic_con is 

port (car_on_farm :in boolean; 

clk,reset,sp : in stdlogic; 

highway_light :out std_logic_vector(1 downto 0); 

farmroad_light :out std_logic_vector(1 downto 0); 

special_light :out std_logic  

); 

end traffic_con; 

Page 58: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

architecture a of traffic_con is signal high_state :std_logic_vector(1 downto 0) ;  signal farm_state :std_logic_vector(1 downto 0) ;  signal present_state :std_logic_vector(1 downto 0) ;  

begin process (clk) 

variable m ,g :integer range 0 to 30 ∶=30; variable n :integer range 0 to 10 ∶=10; 

begin  if reset=′1′ then 

present_state<=″00″; high_state<=″00″;  farm_state<=″10″;m∶=30;n∶=10; 

elsif clk′event and clk=′1′ then case present_state is 

Page 59: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

when ″00″ =>  if sp=′1′ then 

special_light<=′1′; else special_light<=′0′; if car_on _farm then  

m∶ =m-1;  end if;  if m=0 then present _state<=″01″;high _state<=″01″;m∶=30;

 

end if; end if;

Page 60: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

when ″01″=> if not car_on_farm then 

present_state<=″00″;high_state<=″00″;n∶[KG_*3]=10;  else 

n∶=n-1; end if; if n=0 then 

present_state<=″10″;high_state<=″10″; farm_state<=″00″;n∶=10; 

end if;  

when ″10″ => m∶=m-1; if not car_on_farm or m=0 then 

Page 61: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

present_state<=″11″;farm_state<=″01″; m∶=30; end if;  when others => 

n∶=n-1; if n=0 then  

present_state<= ″00″;high_state<= ″00″; farm_state<=″10″;n∶=10; 

end if;  end case;  

end if; end process; highway_light<=high_state; farmroad_light<=farm_state;  

end a;

Page 62: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-5 MAX+PLUS II编译图示

Page 63: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(5) 指定设计器件:选取窗口菜单Assign→Device,出现对

话框,选择MAX7000S系列EPM7128SLC84 7。 

(6) 保 存 并 检 查 : 选 取 窗 口 菜 单

File→Project→Save&Check, 即可对电路设计文件进行检查。

如有错误,会自动指示错误位置,以便修改。  

(7) 保存并编译:选取File→Project→Save&Compile,即可

进行编译。图 4 -5中有“Compile”对话框即为编译框。 

(8) 编译通过后,就可进行仿真了。从Top-Down设计方法

来看,各个层次上的仿真波形分析必须保持一致。

Page 64: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

3. 8 MHz分频程序 

由于本次试验板上提供的时钟是16 MHz的,所以我们还需

要一个8 MHz分频。其VHDL源程序(div8M_v.VHD)如下:

library ieee;  

use ieee.std_logic_1164.all; 

use ieee.std_logic_unsigned.all;

entity div8M_v is 

port(clki : in std_logic; 

clko : out std_logic 

);

Page 65: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

end div8M _v ; architecture a of div8M _v is signal cou : std _ligic _vector(22 downto 0); begin 

process begin 

wait until clki = ′1′; cou <= cou+1; 

end process; clko <= cou(22); 

end a;

Page 66: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4. 交通灯控制器的顶层模块 

在主程序中调用div8m_v和traffic_con两个模块,就构成了

交通灯控制器的顶层模块。主程序VHDL描述如下:

library ieee; use ieee.std _logic _1164.all; use ieee.std _logic _unsigned.all;  

entity traffic is port (car_on_farm :in boolean; 

clk,reset,sp :in std_logic; highway_light :out std_logic_vector(1 downto 0); farmroad_light :out std_logic_vector(1 downto 0);

Page 67: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

special_light :out std_logic ); end traffic;  

architecture a of traffic is signal clka :std_logic; 

component div8m_v port(  

clki : in std_logic; clko : out std_logic); 

end component; component traffic_con 

port(car_on_farm :in boolean;  clk,reset,sp :in std_logic; highway_light :out std_logic_vector(1 downto 0);

Page 68: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

farmroad _light :out std_logic_vector(1 downto 0);  special _light :out std_logic ); 

end component; begin 

n1 : div8m _v port map (clki=>clk,clko=>clka); 

n2 : traffic_con port map (car_on_farm=>car_on_farm,clk=>clka, reset=>reset,sp=>sp,special_light=>special_light, highway _light=>highway_light, farmroad _light=>farmroad_light); 

end a;

Page 69: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-6 交通灯系统顶层模块示意图

CAR_ON_FARM

CLK

RESET

SP

HIGHWAY_LIGHT[1..0]

FARMROAD_LIGHT[1..0]

SPECIAL_LIGHT

TRAFFIC

CAR_ON_FARM

CLK

RESET

SP

HIGHWAY_LIGHT[1

FARMROAD_LIGHT

SPECIAL_LIGHT

Page 70: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

5. 系统的模块划分及实现

按照Top-Down层次化设计要求,我们需要对顶层系统进行

模块划分,详见图 4 - 7。从图 4_7可见,交通灯系统具体分为

以下几个部分: 交通灯控制部分——traffic_con2,一个8 MHz分

频器 ——div8M_v , 两个减法计数器(十、 三十进制)

count10_v, count30_v。划分好模块以后,我们就可以将各个

具体模块分别的编译仿真, 具体过程和上边顶层模块大同小

异,在此不再赘述。

Page 71: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-7 交通灯系统的模块划分

D[3..0] S[6..0]

D[3..0] S[6..0]

D[3..0] S[6..0]

SEVEN

SEVEN

SEVEN

15

16

14

OUTPUT18 S1[6..0]

S2[6..0]

S3[6..0]

OUTPUT19

OUTPUT20

DA[3..0]CLK

ENLDN

CLRNQA[3..0]RCO

34

CLK1 CLK0DIV8M_V

INPUTVCCclk12

DB[1..0]

CLKEN

LDNCLRN

QB[1..0]RCO

DA[3..0]

QA[3..0]

VCC

GND17

CAR_ON_FARM

CLKRESET

SPLONG_TIME_OUT

SHORT_TIME_OUT

INPUTVCCcar_on_farm5

INPUTVCC

reset6

INPUTVCCsp7

TRAFFIC_CON2COVT30_V

1

OUTPUT9 high_l[1..0]OUTPUT10 f_1[6..0]OUTPUT11 sp

HIGHWAY_LIGHT[1..0]

FARMROAD_LIGHT[1..0]

SPECIAL_LIGHT

LONG_BEGIN

SHORT_BEGIN

COVT10_V 2

13

Page 72: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

6. 主要部分的VHDL源程序 

(1) 十进制减法计数器(count10 _v.vhd): 

library ieee; 

use ieee.std_logic_1164.all; 

use ieee.std_logic_unsigned.all; 

entity cout10_v is 

port(clrn,clk : in std_logic; 

qa : out std_logic_vector(3 downto 0); 

rco : out std_logic ); 

end cout10_v;

architecture a of cout10_v is  

Page 73: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现begin

process (clk) variable tmpa ,tmpb:std_logic_vector(3 downto 0);  begin tmpb∶=not tmpa; if clrn=′0′ then tmpa∶=″1010″; elsif (clk′event and clk=′1′) then  

if tmpa=″0000″ then  tmpa∶=″1001″; 

else tmpa∶=tmpa_1; 

end if;  end if; 

qa <= tmpa;  rco<= tmpb(0)and tmpb(1) and tmpb(2) and tmpb(3) ; 

end process; end a;

Page 74: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 三十进制减法计数器(count30 _v.vhd):library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cout30_v IS 

prot(clrn,clk: in std_logic;  qa : out std_logic_vector(3 downto 0); qb : out std_logic_vector(1 downto 0); rco : out std_logic ); 

end cout30_v;  architecture a of cout30_v is begin 

process (clk) variable tmpa,tmpc:std_logic_vector(3 downto 0); 

Page 75: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

variable tmpb,tmpd:std_logic_vector(1 downto 0);  begin 

tmpc∶ =not tmpa; tmpd∶ =not tmpb; if clrn=′0′ then tmpb∶ =″11″; tmpa∶ = ″1010″; elsif (Clk′event and clk=′1′) then 

if tmpa=″0000″ then tmpa∶ =″1001″; 

if tmpb=″00″ then tmpb∶ =″10″; else tmpb∶ =tmpb_1;  end if; 

else tmpa∶ =tmpa_1; end if;  

end if;

Page 76: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

qa <= tmpa; qb <= tmpb;  

rco<= tmpd(1) and tmpd(0) and tmpc(0) and tmpc(3) and

tmpc(1)and tmpc(2) ; 

end process; 

end a;

Page 77: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) 交通灯控制模块程序:  

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;  entity traffic_con2 is 

port (car_on_farm:in boolean; clk,reset,sp,long_time_out,short_time_out:in std_logic; highway_light:out std_logic_vector(1 downto 0);  farmroad_light:out std_logic_vector(1 downto 0); special_light,long_begin,short_begin:out std_logic); 

end traffic_con2; architecture a of traffic_con2 is signal high_state,farm_state:std_logic_vector(1 downto 0) ;  signal present_state:std_logic_vector(1 downto 0) ;

Page 78: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

begin process (clk)  

begin  if reset=′1′ then 

present_state<=″00″;high_state<=″00″;farm_state<=″10″; elsif clk′event and clk=′1′ then case present_state is 

when ″00″ =>  if sp=′1′ then 

special_light<=′1′; else special _light<=′0′; if car_on_farm then 

long_begin<=′1′; else long_begin<=′0′; end if; 

Page 79: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

if long_time_out=′1′ then present_state<=″01″; high_state<=″01″; long_begin<=′0′; 

end if;  end if;  

when ″01″=> if not car_on _farm then present_state<=″00″; high_state<=″00″; else short_begin<=′1′; 

end if; if short_time_out=′1′ then 

present_state<=″10″; high_state<=″10″;farm_state<=″00″; short_begin<=′0′;

Page 80: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

end if; 

when ″10″ => 

long_begin<=′1′; 

if not car_on_farm or long_time_out=′1′ then 

present_state<=″11″; 

farm_state<=″01″; long_begin<=′0′; 

end if; 

when others => 

short_begin<=′1′;  

if short_time_out=′1′ then  

present_state<= ″00″; 

high_state<= ″00″; farm_state<=″10″; 

Page 81: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

short_begin<=′0′; 

end if;  

end case; 

end if; 

end process; 

highway_light<=high_state; 

farmroad_light<=farm_state;  

end a;

Page 82: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(4) 包文件源程序。各模块编译完成之后,就需要在交通灯

系统主程序中调用,所以需要创建一个包文件。源程序如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;  package traffic_package1 IS 

component cout30_v port(clrn, clk : in std_logic; 

rco : out std_liguc); end component; component cout10_v port(clrn,clk : in std_logic; 

rco : out std_logic); end component; 

Page 83: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

component div8m_v 

port(clki: in std_logic; 

clko: out std_logic);  

end component; 

component traffic_con2  

port(car_on_farm :in boolean; 

clk,reset,sp,long_time_out,short_time_out:in std_logic; 

highway_light,farmroad_light: out std_logic_vector(1 downto 0);  

special_light,long_begin,short_begin: out std_logic); 

end component;  

end traffic_package1;

Page 84: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(5) 主程序。 主程序如下: 

library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;use work.traffic_package1.all;  entity traffic2 is 

port (car _on _farm :in boolean; clka,reset,sp :in std _logic; 

highway_light,farmroad_light :out std_logic_vector(1 downto 0); special_light :out std_logic);

end traffic2; architecture contain of traffic2 is signal lb,sb,lto,sto ,clk :std _logic; begin 

Page 85: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

div8m: div8m _v port map (clki=>clka,clko=>clk); contral1: traffic_con2 port map (car_on_farm=>car_on_farm,clk=>clk, sp=>sp, reset=>reset, long_time_out=>lto,short_time_out=>sto highway_light=>highway_light, farmroad_light=>farmroad_light,long_begin=>lb,special_light=>speci al_lightshort_begin=>sb); 

count30: cout30_v port map (clrn=>lb,clk=>clk,rco=>lto); 

count10: cout10_v port map (clrn=>sb,clk=>clk,rco=>sto);, 

end contain;

Page 86: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

7. 烧写文件 

将以上文件再次进行完全编译。产生烧写文件(.pof)、电路

包含文件(.inc)等。 选择MAXPLUS II中的Hierarchy Display

项, 我们可以以层次树的方式显示整个项目和电路的设计文件。

交通灯控制器的层次树如图 4-8 所示。

Page 87: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-8 交通灯系统的层次显示

Page 88: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

8. 系统的时间分析和仿真 

编译无误之后就可进行系统的时间分析和仿真。 

(1) 电路的时间分析。选取窗口菜单Utilities→Analyze

Timing, 即可看到如图 4-9 所示的延时矩阵。 从延时矩阵上看,

延时 10.1 ns,时间较长,这是由于时钟先通过 8 MHz的分频

器, 将会产生 4 ns的延时,再通过后续模块,又延时 4 ns,模

块组合传输线路延时 2 ns左右,相加为 10 ns。

Page 89: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-9 交通灯时间分析延时矩阵

Page 90: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

如图4-10 所示,在Analysis菜单中选择Register Performance

项,点击Start即可进行时序逻辑电路性能分析。 

在图 4-10 中,Source显示被分析的时钟信号的名称;

Destination显示制约性能的目标节点的名称;Clock period 显示

给定时钟下时序逻辑电路要求的 小时钟信号,交通灯系统的

小周期是 12.4 ns;Frequency 显示给定的时钟信号的 高频

率, 交通灯系统的 高频率是 80.64 MHz。List Paths可打开信

息处理窗口并显示延迟路径。

Page 91: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-10 模块化后的交通灯系统性能分析

Page 92: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-11 自动生成的交通灯系统性能分析

Page 93: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

实际上,我们再次观察图 4_5 可以发现,在顶层模块进行

编译的过程中,已经有适配过程Fitter,并产生了报告文件

( .rpt)和烧写文件( .pof)。说明在顶层编译时已经由

MAX+PLUS II自动配置出一个系统。 但是用时间分析器可以

看出性能上的差别。图 4-11 为顶层模块的系统性能分析。可

以很清楚地看到,经过模块化设计后的交通灯系统,在性能上

有很大提升。

Page 94: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 仿真过程。我们可以用VHDL编写仿真激励文件, 也可

使用波形编辑器。后者更直观一些,下面加以重点介绍。 

① 首先进入波形编辑窗口 :选取窗口菜单 MAX+PLUS

II→Waveform Editor。 

② 引入输入输出脚:选取Node→Enter Nodes From SNF, 出

现对话框,选List按钮,将需要观察的信号拖入右边,并单击

OK按钮就可以了, 如图 4-12 所示。

Page 95: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-12 仿真管脚选择

Page 96: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

③ 管脚选定后就可仿真。我们可以在波形编辑器中设定输

入的变化情况,设定好以后保存文件,选取MAX+PLUS

II→Simulator,出现Time Simulation对话框,单击Start, 出现

Simulator框,单击“确定”按钮,即可完成仿真,仿真结果如图

4-13 所示。

Page 97: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-13 仿真结果示意图

Page 98: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

在图 4-13 中,highway_light和farmroad_light行上的数字0代表绿灯,1代表黄灯, 2代表红灯。 可以看到, 当sp有效时(‘1’

电平),不论小道上有没有车,两路上的灯都不变。当sp‘0’电平

时, special-light变为‘0’,m开始计时, 过一段时间后灯会有

变化。 从图 4-13 中还可以看到, farmroad_light的第二个‘0’值

时间明显比第一个短, 这是因为第一个‘0’值,即第一个

farmroad的绿灯期结束是因为超过一定时间,而第二个绿灯期

结束是因为car_on_farm变为‘0’电平了。从上边分析可以看

到, 系统的仿真是完全正确的。仿真正确以后,就可以进行下

一步的工作——系统烧写。

Page 99: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

9. 系统烧写和演示验证 

(1) 首先打开MAX+PLUS II菜单中的Floorplan Editor,选择

Layout菜单中的Device View,我们可以看到和实物器件相对应

的管脚分配, 选择Current Assignments Floorplan 可以自定义管

脚位置。将屏幕右上角Unassigned Nodes框里的管脚拉到器件上

再编译一次就可以了,如图 4-14 所示。如在Layout中选择Lab

View格式,我们还可以看到器件被利用的情况。

Page 100: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-14 器件管脚配置示意图

Page 101: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 器件管脚分配好并编译以后,就可以进行烧写了。首

先,连接好并行电缆,给实验板接上 5 V 电压,选择

MAX+PLUS II菜单中的Programmer选项,出现Hardware Setup

框和Programmer框,分别如图 4_15、 4_16 所示。 

在Hardware Type中选择ByteBlaster[mv]即可。选好以

后, 在Programmer对话框中,点击Program按钮进行烧写。烧

写成功后,即可施加外部信号,进行演示验证了。去掉电缆,

保留电源,可以看到随着外部条件的变化,交通灯系统的输出

信号也在进行相应变化,至此整个设计结束。

Page 102: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-15 Hardware Setup 对话框

Page 103: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-16 Programmer对话框

Page 104: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.3.4 基于MAX+PLUS II综合的实验

1. 实验目的 

(1) 学习使用EDA集成设计软件MAX+PLUS II, 了解电

路描述、综合、模拟过程。 

(2) 体会用EDA综合过程中电路设计方法和设计思路的不同。

1) 设计的输入 

(1) 图形输入:分两种情况使用标准库元件和自定义元件。

MAX+PLUS II菜单Graphic Editor选项创建一个空的Graphic Editor文件, 在窗口上双击弹出Enter Symbol对话框,选择所需

元件, 基本元件在max2lib/prim库下。对自定义元件,指定路

径即可。

Page 105: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 元件之间的连接使用左侧的各种绘图按钮。 使用自定

义元件之前必须先定义元件。使用下面介绍的“语言输入”办法

创建文件,实现元件的功能,编译通过后,用File选项中的

Create default symbol创建Symbol, 这样就可以被后面的设计引

用了。

Page 106: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) 语言输入:从“File”→“New”, 选择“Text edit file”。

在随后的编辑窗口中输入 VHDL 设计。 在设计时,可以从

“Templates”→“VHDL Templates”中获得VHDL语言各个语句

格式的帮助。 

完 成 后 , 选 择 “ File”→“Save” , 注 意 在 “ Automatic

Extension”中选择文件后 名为“.vhd”,且文件名应与Entity名

称一致,将文件保存到自己的工作目录中。

Page 107: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2) 设计的编译与综合 

选择“File”→“Project”→“Set Project to Current File”, 将要

模拟和综合的设计文件设置为当前的项目 (Project)。选择

“MAX+PLUS II”→“Compiler”,单击“Start”, 软件即开始进

行编译和综合,并包括选择硬件设备进行试装配的过程(此次

实验我们不关注这方面的内容)。如果设计存在错误, 将在

“ Message”窗口中报告,双击其中的错误, 软件将自动定位到

设计源文件中相应的出错位置。请根据所报告的错误信息,对

设计加以修改,直至编译通过。

Page 108: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

3) 仿真波形的输入 

在 进 行 仿 真 之 前 , 必 须 先 设 计 输 入 波 形 。 从

“File”→“New”, 选择“Waveform Editor File”。将出现波形编

辑器“Waveform Editor”。 

给输入信号设置波形,将波形编辑器设置为当前窗口(注

意 : 当 前 窗 口 类 型 不 同 , 则 菜 单 项 不 同 ) 。 选 择

“Node”→“Insert Node”,可以在“Node Name”中直接输入,也

可以单击“List”,从“Nodes & Groups from SNF”列表框中选择

相应的输入信号。此处的详细操作帮助,请按Shift+F1键。在

波形区用鼠标选择一段波形,从菜单中选择适当的命令, 对波

形进行编辑。

Page 109: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

重复上述两步,直至完成所有输入信号波形的设置。然后

将要查看波形的输出结果的节点名加入。(如果不加入,则在

稍后的模拟结果中,将不会出现输出波形。 )选择

“File”>“Save”,文件后 名为“.scf”,文件名应与对应的Entity

名保持一致。

Page 110: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

  4) 设计的模拟 

选择“MAX+PLUS II”→“Simulator”,单击“Start”,软件

即开始进行模拟。模拟完成后,单击“Open SCF”,打开模拟

后的波形窗口, 仔细查看输出波形,分析设计正确与否。如

果不正确,查找原因并进行相应修改,然后重复第2)和第4),

直至确定设计达到预定要求。

Page 111: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. 实验任务

任务1 锁存器 

锁存器原理图 4-17 和图 4-18 等价, 图 4-18 节省了 1 个门

(可任选其一做练习)。

图 4-17:

DcIkDcIkcIkNcIkN

DcIkDcIkN

34

4

+=⋅+=⋅=

+=⋅=

图 4-18:

Page 112: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-17 锁存器原理图之一

N4

N3

qb

q

clk

D

Page 113: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-18 锁存器原理图之二

N4

N3

qb

q

clk

D

Page 114: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

【练习1】 使用Graphic Editor输入图 4-17编译使用Wave Form Editor编辑激励波形模拟分析波形。 

参考波形如下:

保持 跟随 保持 跟随 保持 跟随 保持 跟随 保持 跟随 保持 跟随clk

D

X XQ

Page 115: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

【练习2】 针对图 4_18 做如上练习, 模拟结果应当相同。

  锁存器的VHDL行为描述。 

【练习3】 使用Text Editor输入锁存器的行为描述编译使用

Wave Form Editor编辑激励波形模拟分析波形。

entity latch is begin 

port (D, clk: in std _logic; q, qb out std _logic) 

end latch;  architecture behv of latch is …… begin …… end behv;

Page 116: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

【练习4】 使用Text Editor输入锁存器的结构描述编译 

使用Wave Form Editor编辑激励波形  模拟  分析波形。

完成下列描述:

entity latch is begin port (D, clk: in std_logic; 

q, qb out std_logic) end latch;  

architecture struct of latch is …… 

begin …… 

end struct; 

⇒ ⇒

Page 117: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

任务2 空调机控制器 

1) 控制器的工作原理 

空调机控制器的输入来自温度传感器(参见图 4_19)。当

室温高于预先设定的高限(例如25 ℃)时, 信号temp_high为“1”; 否则为“0”。 当室温低于预先设定的低限(例如17 ℃)

时,信号temp_low为“1”; 否则为“0”。 空调机控制器根据这

两个输入信号值的组合向空调机发出适当的命令:Heat表示加

热,Cool表示制冷。

Page 118: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-19 空调机控制器作用示意图

温 度传感器

temp_high

temp_low

Heat(加热)空调机控制器 Cool(制冷) 空调机

Page 119: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-20 空调机控制器状态迁移图

just_right

Heat <='0'Cool <='0'

too_cold

Heat <='1'Ccool <='0'

too_hot

Heat <='0'Cool <='1'

4

2

1

2 3

1

1

3

Page 120: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

实验任务: 

设计: (1) 输入VHDL代码。 

(2) 编译。 

(3) 模拟。 

检查模拟结果的波形,如果和预期结果不符,则修改设

计,重复以上过程,直至正确。

Page 121: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2) VHDL源代码描述及语法分析 

LIBRARY IEEE;  

USE IEEE.Std_Logic_1164.ALL; --使用IEEE库中的标准包Std_Logic_1164 

ENTITY air_conditioner IS 

PORT(clk: IN Std_ULogic; --时钟输入信号 

temp_high:IN Std_ULogic; --过热传感器输入信号 

temp_low: IN Std_ULogic; --过冷传感器输入信号 

heat: OUT Std_ULogic; --制热输出信号 

cool: OUT Std_ULogic); --制冷输出信号 

 

END air_conditioner;

Page 122: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

ARCHITECTURE style_b OF air_conditioner IS 

TYPE state_type IS (just_right,too_cold,too_hot); 

ATTRIBUTE sequential_encoding: String; --定义state_type的属性 

ATTRIBUTE sequential_encoding OF state_type:TYPE IS ″00 01 10″; 

SIGNAL stvar: state_type; 

ATTRIBUTE state_vector: String; --定义stvar的属性 

ATTRIBUTE state_vector OF style_b:ARCHITECTURE IS ″stvar″; 

BEGIN 

controller1: PROCESS --clk是该进程的敏感信号,为“1”激活进程

BEGIN 

WAIT UNTIL clk=′1′;  

IF (temp_low=′1′) THEN stvar<=too_cold;

--根据temp_low或temp_high的值决定stvar的值

Page 123: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

ELSIF (temp_high=′1′) THEN stvar<=too_hot; 

ELSE stvar<=just_right; 

END IF; 

- -根据stvar的值决定heat和cool的值 

CASE stvar IS 

WHEN just_right=>heat<=′0′;cool<=′0′; 

WHEN too_cold=>heat<=′1′;cool<=′0′; 

WHEN too_hot=>heat<=′0′;cool<=′1′; 

END CASE; 

END PROCESS controller1; 

END style_b;

Page 124: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

3) 测试激励的源程序 

LIBRARY IEEE; Use IEEE.Std_Logic_1164.ALL;  

ENTITY conditioner_stim IS END conditioner_stim ;  ARCHITECTURE stimulation OF conditioner_stim IS   

COMPONENT conditioner port(clk: IN Std_ULogic; 

temp_high:IN Std_ULogic; temp_low: IN Std_ULogic; heat: OUT Std_ULogic; cool: OUT Std_ULogic);

END COMPONENT;

Page 125: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

SIGNAL clk : Std_ULogic; SIGNAL temp_high : Std_ULogic; SIGNAL temp_low : Std_ULogic; SIGNAL heat : Std_ULogic;  SIGNAL cool : Std_ULogic; 

BEGIN 

comp1: conditioner PORT MAP (clk,temp_high,temp_low,heat,cool); conditioner_stim: PROCESS 

BEGIN 

temp_high <= ′1′; temp_low <= ′0′; WAIT UNTIL clk = ′1′; temp_high <= ′0′;

Page 126: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

temp_low <= ′1′; WAIT UNTIL clk = ′1′; temp_high <= ′0′; temp_low <= ′0′; WAIT UNTIL clk = ′1′; temp_high <= ′0′; temp_low <= ′1′; WAIT UNTIL clk = ′1′; temp_high <= ′0′; temp_low <= ′0′; WAIT UNTIL clk = ′1′; temp_high <= ′0′; temp_low <= ′1′; WAIT UNTIL clk = ′1′; temp_high <= ′0′; temp_low <= ′0′; 

Page 127: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

WAIT UNTIL clk = ′1′; temp_high <= ′0′; temp_low <= ′1′; WAIT UNTIL clk = ′1′; temp_high <= ′1′; temp_low <= ′0′; WAIT UNTIL clk = ′1′; temp_high <= ′0′; temp_low <= ′0′; WAIT UNTIL clk = ′1′; temp_high <= ′0′; temp_low <= ′0′; WAIT UNTIL clk = ′1′; temp_high <= ′0′; temp_low <= ′1′;

Page 128: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

WAIT UNTIL clk = ′1′; temp _high <= ′0′; temp _low <= ′1′; WAIT UNTIL clk = ′1′; ASSERT false REPORT ″End of Simulation″ SEVERITY error; 

END PROCESS;  

conditioner_clk: PROCESS BEGIN 

clk <= ′1′; WHILE TRUE LOOP 

clk <= ′0′; WAIT FOR 50 ns; clk <= ′1′;

Page 129: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

WAIT FOR 50 ns; END LOOP; 

END PROCESS; END stimulation;  

 

configuration conditioner_stim_conf of conditioner_stim is for stimulation 

for comp1: conditioner use entity work.air_conditioner(style_b); end for;  

end for;

Page 130: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.4 Xilinx 公司器件与Foundation应用

4.4.1 Xilinx的FPGA/CPLD简介

1. Xilinx的FPGA 

现场可编程门阵列(FPGA, Field Programmable Gate Array)是在

PAL、GAL、 EPLD等可编程器件的基础上进一步发展的产物。它是

作为专用集成电路(ASIC)领域中的一种半定制电路而出现的, 既解

决了定制电路的不足, 又克服了原有可编程器件门电路数有限的缺

点。

Page 131: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

FPGA采用了逻辑单元阵列(LCA,Logic Cell Array)这样一个新概

念,内部包括可配置逻辑模块(CLB,Configurable Logic Block)、 输出/输入模块(IOB, Input Output Block)和内部连线(Interconnect)三个部分。

Xilinx公司的FPGA的基本特点主要有: 

(1) 采用FPGA设计ASIC电路, 用户不需要投片生产, 就能得到

自行设计的芯片。 

(2) FPGA可作为其它全定制或半定制ASIC电路的中试样片。 

(3) FPGA内部有丰富的触发器和I/O引脚。  

(4) FPGA是ASIC电路中设计周期 短、 开发费用 低、 风险

小的器件之一。  

(5) FPGA采用高速CMOS SRAM工艺,速度快、功耗低,可以与

CMOS、 TTL电平兼容。

Page 132: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的

佳选择之一。目前FPGA的品种很多,如有Xilinx的XC系列、TI公司

的TPC系列、Altera公司的FLEX系列等。 

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因

此, 工作时需要对片内的RAM进行编程。用户可以根据不同的配置

模式, 采用不同的编程方式。  

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配

置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻

辑关系消失,因此, FPGA能够反复使用。 FPGA的编程无需专用的

FPGA编程器,只需用通用的EPROM、PROM编程器, 当需要修改

FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同

的编程数据,可以产生不同的电路功能,因此,FPGA的使用非常灵

活。

Page 133: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

FPGA有多种配置模式:并行主模式为一片FPGA加一片

EPROM的方式; 主从模式可以支持一片PROM编程多片FPGA; 串

行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为

微处理器的外设,由微处理器对其编程。

Page 134: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. Xilinx的开发软件  

Foundation Series 3.3i 是Xilinx公司集成开发的EDA工具。

Foundation Series 支持所有Xilinx的芯片,Foundation Series 采用

自动化的、完整的集成设计环境。 Foundation Series 项目管理

器(Foundation Project Manager)集成了Xilinx实现工具。 此外,

Foundation Series集成Synopsys公司的FPGA Express综合系统,

包含了Synopsys FPGA Express的Foundation Series 可提供混合语

言(VHDL和Verilog HDL)的综合和优化,它的JTAG编程器支持

CPLD和FPGA的下载和配置。

Page 135: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

ISE 5.1i是Xilinx公司新的集成开发的工具。Webpack是

Xilinx提供的免费开发软件, 功能比Foundation少一些,可以

从以下的国内FPGA学习网站下载或直接去Xilinx网站下载。

(1) http://www.fpga.com.cn/ 

(2) License 申请:http://www.Xilinx.com/support/license.htm

(3) Xilinx IP 核: http://www.Xilinx.com/ipcenter/index.htm

Page 136: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.4.2 FPGA /PLD结构与原理 

1. 基于乘积项的CPLD结构 

采用这种结构的CPLD芯片有:Altera的MAX7000,

MAX3000系列(E2PROM工艺), Xilinx的XC9500系列(Flash工艺)

和Lattice、 Cypress的大部分产品(E2PROM工艺)。 

我们先看如图 4-21 所示的这种PLD的总体结构(以

MAX7000S为例,其它型号的结构与此都非常相似)。

Page 137: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-21 基于乘积项的PLD内部结构

INPUT/OE1

36

I/O控制块

36

LAB C

16···

可编程连线

I/O控制块

宏单元1~16

LAB A

16···

8~16

I/O控制块

宏单元17~32 8 ~16

I/O 引脚

LAB B

16···

36

I/O控制块

LAB D

16···

36

8~16

8~16

8~16

8~16

8~16

8~16

8~168~16I/O 引脚

8 ~16 I/O 引脚

8 ~16 I/O 引脚

宏单元33~48

宏单元49~64

INPUT/OE2

INPUT/GCLRnINPUT/GCLK1

··· ···

Page 138: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

这种CPLD可分为三块结构:宏单元(Marocell),可编程

连线(PIA)和I/O控制块。宏单元是CPLD的基本结构,由它

来实现基本的逻辑功能。图 4-21中“LAB”部分是多个宏单元的

集合(因为宏单元较多,没有一一画出)。可编程连线负责信

号传递,连接所有的宏单元。 I/O控制块负责输入/输出的电气

特性控制,比如可以设定集电极开路输出,摆率控制,三态输

出等。图4-21左上角的INPUT/GCLK1,

INPUT/GCLRn,INPUT/OE1,INPUT/OE2 是全局时钟,清零和输

出使能信号。这几个信号有专用连线与CPLD中每个宏单元相

连,信号到每个宏单元的延时相同并且延时 短。

Page 139: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

宏单元的具体结构如图 4-22 所示。其左侧是乘积项阵列,

实际就是一个与或阵列, 每一个交叉点都是一个可编程熔丝,

如果导通就是实现“与”逻辑。 后面的乘积项选择矩阵是一个

“或”阵列。 两者一起完成组合逻辑。图右侧是一个可编程D触

发器,它的时钟、清零输入都可以编程选择, 可以使用专用的

全局清零和全局时钟, 也可以使用内部逻辑(乘积项阵列)产生

的时钟和清零。 如果不需要触发器,也可以将此触发器旁路,

信号直接输出给PIA或输出到I/O脚。 

Page 140: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-22 宏单元结构

36 个来自PIA的信号 16个扩展乘积项

· ·· · ··

乘积项选择矩阵

···

···

共享扩展项

清除选择

全局清零

全局时钟

VCC

时钟/使能选择

CLRNENA

PRND/T Q

去 I/O控制块

去PIA

寄存器旁路

乘积项逻辑阵列

并联扩展项(来自其它宏单元)

可编程D触发器

可编程寄存器

可编程选择开关

Page 141: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. 乘积项结构CPLD的逻辑实现原理 

下面我们以一个简单的电路为例, 具体说明CPLD是如何利

用以上结构实现逻辑的,电路如图 4-23 所示。 

假 设 组 合 逻 辑 的 输 出 (AND3 的 输 出 ) 为 f , 则

f=(A+B)*C*(!D)=A*C*!D + B*C*!D (我们以!D表示D的“非”)。

CPLD将以图 4-24 所示的方式来实现组合逻辑f。

Page 142: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

A、 B、 C、 D由CPLD芯片的管脚输入后进入可编程连线

阵列(PIA), 在内部会产生A、 A反, B、B反, C、 C反, D、

D反 8 个输出。 图 4-24 中每一个交叉点表示相连(可编程熔丝

导通),所以得到: f=f1+f2=(A*C*!D)+(B*C*!D)。这样组合

逻辑就实现了。图 4-23 电路中D触发器的实现比较简单,它是

直接利用宏单元中的可编程D触发器来实现的。时钟信号CLK

由I/O脚输入后进入芯片内部的全局时钟专用通道,直接连接到

可编程触发器的时钟端。 可编程触发器的输出与I/O脚相连,把

结果输出到芯片管脚。这样PLD就完成了图 4-23 所示电路的功

能(以上这些步骤都是由软件自动完成的,不需要人为干预)。

Page 143: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图4-23 的电路是一个很简单的例子,只需要一个宏单元就

可以完成。 但对于一个复杂的电路, 一个宏单元是不能实现

的, 这时就需要通过并联扩展项和共享扩展项将多个宏单元相

连,宏单元的输出也可以连接到可编程连线阵列,再作为另一

个宏单元的输入。这样CPLD就可以实现更复杂的逻辑。

Page 144: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-23 示例用电路图

CLRN

PRND Q

ABCD

CLK

OR2

NOT

AND3 DFF

OUT

Page 145: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-24 CPLD实现组合逻辑示意图

A

AA

B

BB

C

CC

D

DDf 1f 2

f

Page 146: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

3. 查找表的原理与结构 

采用这种结构的可编程逻辑芯片我们称之为FPGA。典型产

品如Altera的FLEX、ACEX、APEX系列,Xilinx的Spartan、Virtex系列。 

查找表(Look-Up-Table)简称为LUT, LUT本质上就是一

个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成是一个有 4 位地址线的 16×1 的RAM。 当用户通过原理

图或HDL语言描述了一个逻辑电路后,PLD/FPGA开发软件会

自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM, 这样, 每输入一个信号进行逻辑运算就等于输入一个地址进行

查表,找出地址对应的内容, 然后输出即可。图 4-25 是一个 4 输入与门的例子。 

Page 147: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-25 查表实现 4 输入与门示例

实际逻辑电路 LUT的实现方式

逻辑输出

0

0

01

地址

0000

0001

…1111

OUT

abcd

输出abcd

地址线

16×1 RAM(LUT)

a,b,c,d输入

0000输入

0001输入

…1111

RAM中存储的内容

0

0

01

Page 148: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4. 基于查找表的FPGA的结构

我们看一看如图 4-26 所示Xilinx Spartan II的内部结构。

Spartan II主要包括CLBs、 I/O块、 RAM块和可编程连线

(未表示出)。在Spartan II中,一个CLB包括两个Slices, 每

个Slices包括两个LUT、 两个触发器和相关逻辑。Slices可以看

成是SpartanII实现逻辑的 基本结构。Altera的FLEX/ACEX等

芯片的结构如图 4-27、 4-28 所示。

Page 149: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-26 Xilinx SpartanII 芯片内部结构

14131211

SODCKEC

R

进位和控制逻辑

O

14131211

SODCKEC

R

进位和控制逻辑

O

COUTYBY

YQ

D触发器

XBX

XQ

D触发器

G4G3G2G1

F51N

BYSR

F4F3F2F1

CINCLK

CE

DLL

BL

OC

K R

AM

CLBs

DLL

BL

OC

K R

AM

CLBs

DLL

BL

OC

K R

AM

CLBs

DLL

BL

OC

K R

AM

CLBs

I/O块

查找表

(LUT)

查找表

(LUT)

Xilinx Spartan-Ⅱ芯片内部结构 Slices 结构

Page 150: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-27 Altera FLEX/ACEX 芯片的内部结构

LABA1

LABA2

LABA3

LAB A5LAB A4

LABB1

LABB2

LABB3

LAB B5LAB B4

级联与进位链

IOEIOEIOEIOEIOEIOE

IOE

IOE

…IOE

IOE

行互连

IOEIOE IOEIOE IOEIOE

IOE

IOE

IOE

IOE

I/O 单元

行连线

列连线

每个LAB由8个逻辑单元(LE)构成

列互连

Page 151: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-28 逻辑单元(LE)内部结构

Look-UpTable(LUT)

CarryChain

CascadeChain

ClaenlPresetLogic

D QPRN

CLRNENA

可编程寄存器寄存器的旁路级联输入进位输入

去快速通道互连

级联链

进位链

data1data2data3data4

labctrl1labctrl2

芯片级复位

labctrl3labctrl4

时钟选择

全局时钟

可编程D触发器

清零和置位逻辑

进位输出 级联输出

查找表(LUT)

去LAB局部互连

Page 152: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

FLEX/ACEX的结构主要包括LAB,I/O块,RAM块(未表

示出)和可编程行/列连线。 在FLEX/ACEX中,一个LAB包括

8 个逻辑单元(LE),每个LE包括一个LUT,一个触发器和相

关的相关逻辑。LE是FLEX/ACEX芯片实现逻辑的 基本结构

(Altera其它系列,如APEX的结构与此基本相同)。

Page 153: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

5. 查找表结构的FPGA逻辑实现原理

在图 4-23 所示的电路中,A、B、C、D由FPGA芯片的管

脚输入后进入可编程连线,然后作为地址线连到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的

数据然后输出, 这样组合逻辑就实现了。该电路中D触发器是

直接利用LUT后面D触发器来实现的,时钟信号CLK由I/O脚输

入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟

端。 触发器的输出与I/O脚相连,把结果输出到芯片管脚, 这

样CPLD就完成了图 4-23 所示电路的功能。对于一个LUT无法

完成的电路,就需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。

Page 154: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.4.3 Xilinx主流芯片简介

1. XC9500 

XC9500是采用Flash工艺的CPLD,常见型号有XC9536、XC9572、 XC95144等。型号后两位数字表示宏单元数量,如表

4-1 所示。 表 4-1

Page 155: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. CoolRunner 

CoolRunner原是Philips的PLD产品,1999 年被Xilinx收购,

特点是功耗很低,可以用于电池供电系统。其它型号还有

XCR3256XL、 XCR3320、 XCR3384、 XCR3960,型号后两位

数字表示宏单元数量,如表 4-2 所示。

Page 156: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

表 4-2

Page 157: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

3. XC4000 

XC4000 主要有 XC4000E(5 V)、XC400XL/XLA(3.3 V)、XC4000XV(2.5 V), 容量从 64 到 8464 个CLB,属较早期的产

品,现基本不使用。  

4. Spartan 

Spartan是较低价格的SRAM工艺的FPGA,如表 4-3 所示。

5. Spartan II 

Spartan II 是Spartan的升级产品,如表 4-4 所示。

Page 158: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

表 4-3

Page 159: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

表 4-4

Page 160: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

6. Virtex Virtex是大规模SRAM工艺的FPGA, 应用较为广泛,如表 4-5 所示。

表 4-5

Page 161: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

7. Virtex-II

VirtexII是大规模SRAM工艺的FPGA,属Virtex的下一代产

品,如表 4-6 所示 .表 4-6

Page 162: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.4.4 Xilinx XC9500器件选用 

Xilinx XC9500器件将复杂可编程逻辑器件的高性能和灵活

性等特点推向一个新的高度(如表 4-7)所示,并具有业界领先的

速度, 同时还具备经过客户验证的增强管脚锁定结构,以及全

面的 IEEE Std.1149.1 JTAG边界扫描支持 ; 内部宏单元数有

36~288 个,等效门有 800~6400 个,封装引脚有 44~352 个; 所

有信号延迟相同而与路径无关,引脚到引脚的传输时间tpd 快

可达 3.5ns, 相应计数器频率fCNT可达 200MHz;采用先进的

CMOS 0.35μm FastfFlash快闪存储技术, 比E2CMOS工艺功耗明

显降低。第三代成熟的CPLD技术可重复编程 1 万次以上,数据

保持时间 20 年。

Page 163: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

表 4-7 XC9500 CPLD特性

Page 164: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

每个XC9500 器件是一个由多个功能块FB(Function Block)

和输入/输出块IOB组成的,并由一个开关矩阵FastConnect完全

互连的子系统。 每个FB提供具有 36 个输入和 18 个输出的可

编程逻辑;IOB提供器件的输入/输出缓冲;FastConnect将所输

入信号及FB的输出连到FB的输入端,每个FB又有12~18 个输

出(取决于封装的引脚数)及相关的输出使能信号直接驱动

IOB。图 4-29 显示了XC9500 系列器件的基本结构。

Page 165: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-29 XC9500 系列器件结构

I/O块

功能块1宏单元1~18

功能块2宏单元1~18

功能块3宏单元1~18

功能块N宏单元1~18

1836

1836

1836

1836

Fas

t C

oNN

EC

T开

关矩

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O3

1

2or

I/O/GCKI/O/GSR

I/O/GTS

JTAG控制器

在系统可编程控制器

3JTAG Port

Page 166: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.4.5 Xilinx Foundation开发系统设计流程简介

Xilinx 公司的设计软件Foundation 3.1是Xilinx公司开发的

EDA工具。此版本的 大特点是支持Xilinx 公司的全部产品,

包括XC3100A/L、XC3000A/L、 XC3100A/L、XC5200、

Spartan、SpartanXL Virtex、XC4000E/L/EX/XL/XV/XLA、

XC9500、XC9500XL以及 新的XC9500XV 等所有的CPLD 和

FPGA 器件。此外Foundation 3.1i 版本已经将Core 产生器工具集

成进软件内,可以在项目管理器原理图编辑器和HDL 编辑器等

图形用户接口的环境下从Tools 的菜单中调用Core 产生器。  

Page 167: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

运行Foundation时,首先进入项目管理器(Project Manager)

窗口,所有的设计输入、实现和仿真都必须在项目管理器中

完成。项目管理器可以对FPGA Express综合工具和设计实现

工具进行初始化。利用合适的用户界面,在项目管理器中就

可以对整个设计开发过程进行管理。

Page 168: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

Foundation提供了多层次的原理图设计流程、HDL设计流

程以及混合语言(VHDL和HDL)的综合优化。软件环境提供

了两种不同的设计输入工具: 原理图和硬件描述语言。此外,

也可以用图表示的状态机输入设计的一部分。每种工具支持一

种特定类型的设计描述并使用一种特定的文本进行工作。HDL

的设计流程具体步骤分为创建新项目、创建新的源文件、逻辑

综合、功能仿真、设计实现、 时序仿真和 后的编程下载。原

理图(Schematic)流程与HDL的流程相似,只是不需要对设计

进行综合,分为设计输入、功能仿真、设计实现、时序验证、

器件编程。在这个层次设计中可以产生各种类型的宏单元(包括

基于原理图的宏单元,基于硬件描述语言的宏单元,状态机宏

单元和LogiBLOX 宏单元)。

Page 169: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.5 Xilinx XC95系列在电压信号测量A/D中的应用

4.5.1 XC95108简介

要完成一个设计,会遇到选用什么器件的问题? 本着够用、

好用、价廉、可反复使用的原则, 结合 4.4 节中介绍的主流器

件,设计所采用的芯片是Xilinx CPLD XC9500 系列的XC95108-7-PC84A, 它是如图 4-30 所示的 5 V器件。确定了器件后,就

可使用Xilinx Foundation对芯片编程、烧写,设计后的芯片能产

生驱动ADC0809 工作的START信号,并实现对ADC0809 输出的

8 位二进制信号分高低四位读取和转换到七段译码管显示其对应

的十六进制数的功能。

Page 170: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4-

30XC

95108内部结构

JTAG控制器

在系统可编程控制器

I/O块

功能块1

宏单元1~18

功能块2

宏单元1~18

功能块3

宏单元1~18

功能块4宏单元1~18

功能块5

宏单元1~18

功能块6

宏单元1~18

1836

1836

1836

1836

1836

1836

Fas

t C

onne

ct开

关矩

31JTAG Port

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O3

1

2

I/O/GCKI/O/GSR

I/O/GCK

x5897

Page 171: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

表 4-8 XC95108 芯片配置及特性

Page 172: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

外部电路配置如下: 

(1) 时钟电路:可对时钟进行 4~22 倍分频(原始信号是 4 MHz);从 1 Hz到 0.25 MHz。 

(2) A/D转换器: ADC0809。 

(3) 复位按钮一个。  

(4) 电位器: 用以产生电压信号。  

(5) JTAG下载方式接口。  

(6) JTAG格式并行下载电缆。  

(7) 七段译码管及显示Select信号用的LED灯。 

(8) 5 V直流电源。

Page 173: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.5.2 Xilinx Foundation下的设计流程 

1. Xilinx Foundation的功能模块

Foundation的功能模块由项目管理器、设计输入、设计仿真、

设计实现、库管理器和在线帮助系统组成。 

(1) 项目管理器。 项目管理器是Xilinx Foundation系列软件

系统集成设计环境的入口和主要界面。它将一个项目的各种文

件联系在一起,用以进行管理和跟踪设计项目的进行情况。

Page 174: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 设计输入。设计输入包括用于原理图输入方式的创建和

修改原理图编辑器(Schematic Editor), 用于创建和编辑HDL设计文件的HDL编辑器(HDL Editor), 用于创建器件符号的符号

编辑器(Symbol Editor)以及支持以状态图形式输入设计的有限

状态编辑器(FSM Editor)。有限状态编辑器通常用于描述设计

的一小部分,可将状态图自动编译为所选的HDL语言。

(3) 设计仿真。设计仿真包括用于对设计项目的功能仿

真, 时序仿真的逻辑仿真器(Logic Simulator),用于查看仿真

结果的波形观察器(Waveform Viewer),用于FPGA/CPLD设计

的静态时序分析的时序分析器(Time Analyzer)。

Page 175: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(4) 设计实现。设计实现可根据逻辑设计和所选的器件类型

进行编译、映射、布局和布线,将设计的网表文件转换成能装

入FPGA器件的位流和PROM文件。该过程可以自动地执行,

也可交互式由用户设置有关选项来加以干预。 

(5) 库管理器。库管理器(Library Manager)对在原理图编辑

器中使用的符号库进行管理、浏览和维护,包括符号文件的增

加、删除、拷贝或改名等操作。 

(6) 在线帮助系统。 在整个设计过程中,用户可随时通过

在线帮助系统获取每个菜单、每个程序及选项的“在线帮助”。

Page 176: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. 项目管理器

(1) 窗口组成。Xilinx Foundation窗口类似图 4_31 所示。项

目管理器窗口由 4 部分组成。 第一部分位于窗口的顶部,由标

题栏、 菜单栏、 快捷工具栏构成。第二部分是位于窗口左侧的

层次浏览区,由文件 (Files)和编译 (Versions)两个选项卡构成

(文件选项卡列出诸如原理图、 HDL文件、目标器件等待处理对

象。 编译选项卡用来管理设计实现的编译和修改)。第三部分是

位于窗口左侧的设计流程区, 由流程(Flow)、目录(Contents)、报告(Reports)和综合(Synthesis)选项卡构成。设计流程使整个设

计一目了然,只有完成并通过了上一步设计,它才能进入下一

步设计,它对“上下文”敏感,会随着处理对象类型的不同而自

动调整,并提出设计流程建议。 

Page 177: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-31 项目管理器窗口

Page 178: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-32 新建项目对话框

Page 179: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 启动。在Windows状态下,选择开始/程序/Xilinx

Foundation Series 3.1i/Project Manager,即可启动项目管理器,

也可双击桌面上快捷图标直接启动项目管理器。选择File/New

Project,会弹出如图 4-32 所示新建项目对话框。 

在如图 4-32 所示的新建项目对话框中,要做三件事:一是

在“Name”栏,键入项目名,二是选定设计输入方式,三是选

择目标器件,例如我们选择的是XC9500系列的95108PC84器件。

然后单击“OK”按钮,返回项目管理器,新项目创建完毕。注

意在新建项目对话框中,默认设计方式为原理图输入。

Page 180: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

3. 原理图输入

原理图可用于描述一个功能模块的内部结构及其功能,又

可用于描述整个电路的模块划分和连接。一张原理图一般由代

表各功能部件的器件符号,代表信号连接关系的连线,代表接

口关系的I/O引脚等组成。生成一个原理图的主要步骤有: 

①进入原理图编辑器; 

②输入符号、元件; 

③输入内连线; 

④ I/O引脚及属性标注;  

⑤保存文件。

Page 181: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(1) 本设计首先在File下拉菜单中创建一个基于原理图的

名为t9 的新项目,系统会自动产生缺省扩展名为.SCH的新文

件, 并会分配 3 个库(t9 的项目库,用于仿真的simprims库和

XC9500器件库。详见图 4-33 所示)。

Page 182: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-33 建立项目t9后的管理器窗口

Page 183: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 单击设计流程图中的“Schematic Editor”图标或选择

Tools菜单中的/Design Entry/ Schematic Editor;另外还可以双击

层次浏览区中所要打开的原理图文件名,进入原理图编辑器窗

口,其窗口如图 4-34 所示。 

(3) 单击绘图工具栏中“符号”按钮,打开如图 4-35 所示的

SC Symbol对话框。例如在图 4-35 中,我们已经选中和放置好

“X74-390”、“Xor2”符号,又选中“Xor2”符号,则此时正在将

符号放置在当前光标所在位置。

Page 184: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-34 原理图编辑窗口

Page 185: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-35 SC Symbols窗口及实例原理图

Page 186: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

在对话框的底部键入所要的符号名,也可选中该符号。选

中后的符号粘连在你的光标上,将光标移到绘图区,单击鼠标

左键, 就会将符号放置到当前鼠标所在位置。 放置多个同样的

符号时,只需重复单击该符号(放置该符号), 而不必重复到库

中选取该符号。对放置的符号还可以进行“镜像”和“旋转”变换。

快捷键“Ctrl+M”为镜像,“Ctrl+R”为右旋转90°,“Ctrl+L”为

左旋转90°。 

单击绘图工具栏中“画线”按钮,便开始内连线。双击鼠标

左键可终止连线。单击“选择和拖放”按钮后,可选中符号(被圈

入红框中)或选中连线(连线变成红颜色),之后按住鼠标左键即

可拖动该符号或连线,释放鼠标左键则符号或连线定位,按Del键将删除该符号或连线。

Page 187: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

单击绘图工具栏中“层次连接”按钮,便打开“Hierarchy

Connector”对话框, 选定输入/输出引脚等。每选定一个引脚,

将光标移动到绘图区, 单击鼠标左键, 将选定引脚标注到对

应端。 

在菜单中选Options/ Create Netlist, 可将原理图文件转换

为描述原理图元件之间的连接网表文件(XNF文件)。

Page 188: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(4) 创建符号。 

Xilinx Foundation的原理图编辑器支持多窗口和多层次设

计, 可把一个大设计图自上而下地分成若干个小模块,一层一

层地进行原理图编辑。 这样做对大型设计很重要,可以实现模

块(平面式)和层次(立体式)仿真。实现模块化和层次化的重要手

段是创建符号。符号是由图形、引脚和属性等要素构成。主要

的符号类型有 3 种: 

① 器件符号,即在库文件中预先定义的或由用户自己定义

的器件符号,它代表一定的逻辑功能,也是 常用的符号类型。

② 块符号,它代表一个较低层次的原理图描述,主要用于

层次化设计,可以使用总线型引脚。

Page 189: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-36 创建符号对话框

Page 190: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

③ 图形符号,用于非电路性信息,如表格、标题及注释等。

通过为一原理图创建符号,可得到一个可供反复调用的宏元

件,以便放置在更高一层的原理图中。 如何创建符号呢? 快捷

的方法如下: 

· 打开要设置符号的原理图文件。 

· 从菜单中选Hierarchy/create Macro Symbol Form Current Sheet,可打开创建符号对话框,如图 4-36所示。 

· 单击创建符号对话框中的“OK”按钮。这样当前窗口中的

原理图的宏符号便创建完毕,并且被加入到符号库中,可为任

意设计调用。若要观察下一层次的符号或电路,单击绘图工具

栏中的“H”形状按钮,之后双击该符号,反复操作下去,可看到

底层电路。

Page 191: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

library IEEE;  use IEEE.std_logic_1164.all;  entity displayvalue is 

port ( clk: in STD_LOGIC;  d_in: in STD_LOGIC_VECTOR (7 downto 0);  d_out: out STD_LOGIC_VECTOR (3 downto 0);  sel: out STD_LOGIC );  

end displayvalue;   

architecture displayvalue _arch of displayvalue is signal temp: std _logic;  begin

Page 192: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

-- <<enter your statements here>> --temp<=′0′;  process(clk) 

begin if clk=′1′ and clk′event then 

if temp=′0′ then d_out<=d_in(7 downto 4);  temp<=′1′;  

else  d_out<=d_in(3 downto 0);  temp<=′0′;  

end if;  sel<=temp;  end if;  end process;  

end displayvalue_arch;

Page 193: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

由源程序可知该宏单元是将输入的 8 位信号随时钟激励分

高低 4 位在选择信号控制下输出,其中当sel信号为低时输出低 4 位, sel信号为高时输出高 4 位。编辑完成后进行语法查错

(check syntax),无误后即可创建为宏单元。 

从HDL Editor中选择Project→Create Macro综合保存的HDL代码并创建一个宏单元符号放在t9 项目库中,以供原理图中使

用。 在t91.sch中查看可用库元件清单, 现在可以在清单中找到

DISPLVALUE宏单元,选中它并把它放到t9 原理图中,如图 4-37 所示。 

同理完成另外两个宏单元的编辑输入。

Page 194: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-37 库元件中的DISPLVALUE宏单元

Page 195: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(1) XREADAD : 产 生 ADC0809 的 驱 动 信 号 START ,

ADC0809 启动脉冲 小宽度tws典型值是 100 ns, 大值是 200 ns。在这里实现 100 ns的启动信号。 

(2) XDELED: 将DIPLAYVALUE宏单元输出的 4 位二进制

信号转换到七段译码管(七位驱动信号)显示。它们的源程序如下:

① XREADAD.VHD: 

library IEEE;  

use IEEE.std_logic_1164.all;  

use ieee.std_logic_unsigned.all;  

use ieee.std_logic_arith.all;

Page 196: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

entity xreadad is port ( 

clk: in STD_LOGIC;  reset: in STD_LOGIC;  rdn: out STD_LOGIC );  

end xreadad;   

architecture xreadad _arch of xreadad is signal temp: std_logic_vector(6 downto 0);  

begin process(reset, clk) 

begin

Page 197: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

if reset=′0′ then rdn<=′1′;  temp<=″0000000″;  

else if clk=′1′ and clk′event then 

if temp<99 then temp<=temp+1;  rdn<=′0′;  else temp<=″0000000″;  

rdn<=′1′;  end if;  

end if;  end if;  end process;  

end xreadad_arch;

Page 198: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

② XDELED.VHD:  

library IEEE;  use IEEE.std_logic_1164.all;  entity xdeled is 

port ( d_in: in STD_LOGIC_VECTOR (3 downto 0);  a: out STD_LOGIC;  b: out STD_LOGIC;  c: out STD_LOGIC;  d: out STD_LOGIC;  e: out STD_LOGIC;  f: out STD_LOGIC;  g: out STD_LOGIC ) ;

Page 199: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

end xdeled;  architecture xdeled of xdeled is begin  

process(d_in) type data_out is array(0 to 6) of std_logic;  variable outp: data_out;  begin 

case d_in is when ″0000″ => outp∶ =″1111110″;  when ″0001″ => outp∶ =″0110000″;  when ″0010″ => outp∶ =″1101101″;  when ″0011″ => outp∶ =″1111001″;  when ″0100″ => outp∶ =″0110011″;  when ″0101″ => outp∶ =″1011011″;

Page 200: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

when ″0110″ => outp∶ =″1011111″;  when ″0111″ => outp∶ =″1110000″;  when ″1000″ => outp∶ =″1111111″;  when ″1001″ => outp∶ =″1111011″;  when ″1010″ => outp∶ =″1110111″;  when ″1011″ => outp∶ =″0011111″;  when ″1100″ => outp∶ =″1001110″;  when ″1101″ => outp∶ =″0111101″;  when ″1110″ => outp∶ =″1001111″;  when ″1111″ => outp∶ =″1000111″;  when others => null;  

end case;

Page 201: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

a <= outp(0);  

b <= outp(1);  

c <= outp(2);  

d <= outp(3);  

e <= outp(4);  

f <= outp(5);  

g <= outp(6);  

end process;  

end xdeled;

Page 202: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

三个宏单元加入到t9原理图后,还没有完成连线,彼此独

立。下一步就是进行连线,并规定输入/输出及输入/输出缓冲。

由于输入的是 8 位信号,在这里还将进行分解 8 位输入线和输

入缓冲的原理图的编辑。 后添加输入/输出引脚、 网线注

释, 完成图 4-38、 图 4-39、 图 4-40所示的整个原理图的输入

以及8位输入缓冲和输入管脚宏单元。

Page 203: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-38 已经完成的原理图设计输入

Page 204: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-39 8 位输入缓冲宏单元

O[7 0]∶00

010203

04050607

IBUFIBUFIBUFIBUFIBUFIBUFIBUF

IBUF

10

111213

14151617I[7 0]∶

Page 205: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-40 8 位输入管脚宏单元

I[7 0]∶10

111213

14151617

IPAD

IPADIPADIPAD

IPADIPADIPADIPAD

Page 206: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

5. 功能仿真 

在设计实现前要使用功能仿真来检验所创建的逻辑是否正

确。 Foundation提供逻辑仿真器,它是门级仿真器。 

在基于原理图输入法输入原理图后可以对基于原理图的设

计立即执行功能仿真,启动逻辑仿真器Logic Simulator,点击

设计流程图中的Functional Simulation按钮,软件将会提示因为

原理图已被修改所以要更新原理图网表,点击Yes进行网表更

新,调用逻辑仿真器项目网表自动载入到逻辑仿真器。

Page 207: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

仿真器不仅能对整个原理图仿真,还可以对每个宏单元仿

真,在整个原理图出错时以检查每个宏单元功能的正确性:原

理图打开之后,在原理图输入工具条中点击仿真工具框图表,

打开的原理图浮动工具框有几个按钮可以用来控制原理图输入

工具内的仿真。若功能仿真出错,则需要回到设计输入阶段进

行修改, 直到功能仿真正确为止。图 4-41是对整个设计的原理

图进行仿真调试通过后的波形图。

Page 208: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-41 功能仿真波形图

Page 209: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

设计的编译和仿真的步骤如下: 

(1) 加入信号。在进行电路的逻辑仿真前, 必须为电路加入

仿真激励信号。Foundation主要提供了3种编辑法:信号波形编

辑法、不在线测试向量编辑法、测试向量宏编辑法。 

信号波形编辑法是每个信号波形被指定,从时间t0直到仿真

结束。它直观地显示出所选信号相对时间的行为。测试向量编

辑法以离散时间方式描述所有信号,并给出在任选时间距离的

信号间的严格关系。总体来说,使用信号波形编辑法比使用测

试向量编辑法要容易。当设计处于不断调整阶段,处理时钟和

基本信号时,多用信号波形编辑法;当为一个提高和完善了的

设计验证时,测试向量编辑法更适用。

Page 210: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-42 测试向量选择对话框

Page 211: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-42 显示 初 4 种基本逻辑状态,如果希望看到仿真

器支持所有状态,可单击“More”按钮。在标准模式(Normal

Mode)下, 拖动鼠标在波形区选定某信号的任一矩形区,然后

单击窗口中某一状态钮,则所选区域被定义为这个状态。 如果

所选信号是一复合总线,在Bus State中输入的十六进制值将被

分配到该总线选择区。 而快(Fast)模式 适合在草图或次要图

上创建新波形。在快模式下,在波形区单击鼠标左键,所单击

的波形区自动被选定,然后单击所要选的状态钮即可。单击鼠

标右键将直接翻转所选定区的状态。 如果所选的信号为一复合

总线,则所有总线成员将被选定为同一状态或所有总线成员将

被翻转。 

Page 212: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

在仿真窗口的主菜单中,选Waveform/Insert Formula, 或

在波形区单击鼠标右键,从弹出的快捷菜单中选 Insert

Formula, 打开输入方程(Insert Formula)对话框,如图 4-43 所

示。选定要编辑波形的信号之一,在对话框中输入t0(Start Time)

和输入模型, 之后单击Insert按钮,该信号波形便被编辑完毕。

Page 213: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-43 输入方程对话框

Page 214: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) 信号选择。从菜单中选择Signal/Add Signals,将打开如

图 4-44 所示的波形选择(Component Selection for Waveform

Viewer)对话框。 

双击信号选择栏中的信号名,各信号被转移到波形观察器

窗口中的信号名区,或选中栏中信号名(变为黑底色)。单击对

话框下面的Add按钮, 亦可将信号一个个转移到波形观察器窗

口中。

Page 215: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-44 信号选择对话框

Page 216: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-45 激励选择对话框

Page 217: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) 加入激励。从菜单中选择Signal/Add Stimulators,打开

如图 4-45 所示的激励选择(Stimulator Selection)对话框。 激励

选择对话框有四个选择激励区。 

① Keyboard区, 其A~Z键都能分配给信号作为设计激励

用。当某键被选为激励键,它就像一个反复开关,在仿真进程

中,作为直接硬件控制。通过单击这个键来控制该激励在逻辑

0~1 之间变化。

Page 218: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

② Clocks区,这是一个方程式选择分支。它确保基本信号

波形方程式的跟踪实施,并允许用来产生描述工作周期的时钟。

③ Bc和NBc区,由 16 个黄灯组成,代表 16 位二进制计数

器输出信号。 它能用作基本设计激励或时钟选用,使用起来非

常简单。它被限制为 50%工作周期。 

④ Formula区,允许成套地定义任何信号波形。它是一个简

单而有效的方法,用于复杂设计激励信号。 

选择激励有两种方法:在波形观察窗口中选定一个信号(底色变成蓝色),再在激励选择对话框中单击所要的激励;或从激

励选择对话框中拖动一个所要激励,放到波形观察器窗口的对

应信号上。

Page 219: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(4) 运行仿真。波形图中d8 是添加八位输入信号, 给予 00

(0~16 μs)、01(16~24 μs)、 02(24~32 μs),FF(32

μs以上)的信号激励, 观察作为七段译码显示管的a、b、c、

d、 e、 f、 g信号的变化, 这时 8 位信号读取时钟ckdsp的周期

是 4 μs,我们看到select信号随着时钟的触发以 8 μs为周期高

低电平变化,并伴随出现七段译码显示管随选择信号切换显示

着输入的 8 位数字信号的高低 4 位的十六进制值。

Page 220: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

6. 设计实现

电路板的设计实现包括以下几个步骤(由系统自动完成):转

换合并所有的输入网表;把逻辑放置和布线到目标器件当中; 时

序分析,生成时序信息;生成可供编程用的目标器件配置文件。

点击设计流程图中实现阶段(Implementation)的按钮,如果提

示问“因为原理图是较新的,是否要更新EDIF 网表文件”, 回答

Yes,便可以更新EDIF网表文件。 

下一步会看到实现设计的对话框,用这个对话框可以选择目

标器件和各种实现的选项。目标器件已经设置为XC95108-7PC84A, 因为这是创建Foundation设计项目时选择的器件,

Version Revision区域已经自动填入。在设计实现后可以在项目管

理器版本标记中找到这些版本和再版的名称。

Page 221: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

在设置所需的实现选项之后准备开始实现设计: 

(1) 在原理图实现设计中点击Run流程引擎将显示实现开

始, 流程引擎是执行设计实现的工具。设计流和它的状态用图

形表示,过程的记录在流程引擎底部的表板上指示出来。  

(2) 当实现完成时,流程引擎自动关闭转到Foundation 项目

管理器, 一个对话框打开,此提示也可以看到实现的记录。如

果在实现中遇到任何错误,将在底部的控制窗口中记录文件错

误的细节,详见图 4-46。 

Page 222: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-46 设计实现流程图

Page 223: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

检查实现结果,如前所述Foundation项目管理器保持对整体

设计实现版本的管理,可以从项目管理器直接观察和分析这些

实现。 

(1) 点击在项目管理器左侧的Versions 版本标记, 可以看到

刚才运行的实现的层次。 

(2) 用选择的 新版本点击“项目管理器”右侧的“Report”选项卡,显示当前已有的与所选设计版本有关的报告和记录。 

(3) 例如,双击“Implementation Report Files”图标, 则弹出

如图 4 - 47 中所示的“Report Browse”, 其中列出各种与实现有

关的报告。当我们双击“Fitting Report”图标后,可得到如图

4_47 所示的“t9.rpt 写字板”报告。

Page 224: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

又如,在Xilinx报告浏览器中双击“Post Fitting Timing

Report(布线后时序报告)”, 检查这个报告,可找出本设计的

大系统时钟频率为125 MHz,再查看实际布局布线后的每个宏单

元延迟以及时钟到 后管脚输出的延迟,给出的 大延迟是由

ckdsp时钟信号到七段译码管输出的延迟 16 ns。 

一个粗略的规律称为所谓的“50/50”规则,即在任何通道上

的逻辑功能块延时将占设计布线后总通道延时的 50%。当然这

仅是一个规律,设计的情况虽然千变万化,但是可给出一些估

算, 以预测在完成布局和布线之前设计的时序是否已接近要求

的目标。

Page 225: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-47 查看设计实现报告

Page 226: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(4) 系统设计实现完成后,系统建议自动分配引脚。预分配

引脚位置有时会降低布局布线工具的性能。通常在某点锁定一

个设计的引脚输出,以便结合到PCB(印刷电路 板)中。  

点击“Tools”菜单中的“Implementation”命令,可点击拖曳

出“Constraints Editor”命令,即可查看引脚分配生成的ucf文

件,详见图 4-48。 

点击“Tools”菜单中的“Implementation”命令,可点击拖曳

出“CPLD chipViewer”命令,即可查看引脚分配生成的ucf文

件,从文件中可查看引脚在实际芯片中的位置。

Page 227: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-48 引脚在芯片上的实际位置

Page 228: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

7. 时序仿真

时序仿真使用布线后的器件所给出的模块和连线的延时

信息,在 坏情况下对电路的行为作出较准确的估价。因

此, 时序仿真在设计被布局和布线之后执行。时序仿真的步

骤与功能仿真基本类似,不同之处在仿真参数的设置上,时

序仿真要设置延时参数,如 小延时、平均延时、 大延时

和零延时。

Page 229: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(1) 点击工程项目管理流程图中的“Timing Simulation”按

钮, 调用时序仿真器。时序仿真使用的仿真器和功能仿真使

用的仿真器是相同的, 惟一的差别是为时序仿真加载到仿真

器的设计包括基于实际布局和布线设计的 坏情况布线延时。

功能仿真是利用包括键盘激励格式和使用内部二进制计数

器等各种方式进行仿真, 而时序仿真却是利用稿本文件激励。

设计稿本文件包括了激励输入显示信号和预先仿真的指令。

在稿本文件中输入指令,然后按一个按钮运行整个仿真。

(2) “Tools”菜单中的“Script Editor”命令是一个文本编辑

器,它用来输入编辑和检查稿本文件以及运行仿真。

Page 230: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) 在仿真器内下拉菜单中选择“Tools”→“Script Editor”调用 Script Editor; 选择 “ Use Sctipt” Wizard 调用 Script

Wizard; 进入初始化页进行初始化; 定义矢量; 定义输入激

励; 选择作观察的矢量;点击Finish可以在稿本编辑器中看到

完全的稿本文件,从稿本编辑器选择Execute→Go直接执行仿

真,录入的执行指令出现在稿本编辑器的底部,在波形观察器

中观察仿真结果。 

例如,在图 4-49 所示的波形图中我们看到输出信号在输入

信号的下降沿变化,与功能仿真不同的是,输出有了 5.5 ns的时间延迟。在实际中, 针对不同的电路作进一步分析和调整设

计,可以改变这个延时值。

Page 231: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-49 时序仿真放大图

Page 232: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

8. 器件编程下载 

当设计输入生成设计网表文件XNF时,设计实现生成布局

布线的LCA文件并转化为设计位流文件Bits。再要进行的就是

FPGA 器 件 开 发 过 程 的 后 一 步 —— 器 件 编 程 (Device

Programming)。 

编程方式有三种:JTAG编程器、PROM文件格式器和硬件

调试器(Hardware Debugger)。 一般多采用由JTAG方式进行器

件编程下载烧写。 在设计实现时, 我们已经产生了这个设计

的位流文件, 现在利用此位流文件来配置Xilinx开发板上的

CPLD目标器件(XC95108-7-PC84A)。

Page 233: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(1) 点击设计流程图中的“Programming”,或在“Tools”菜

单“Device Programming”中选择“JTAG Programmer”命令。我

们已经事先连接好下载电缆(Xilinx JTAG并行电缆),点击下拉

菜单“Output”中的“Cable auto connect”命令, 系统会自动识别

电缆属性并提示连线成功,点击下拉菜单“ Operation”中

“Program”命令后, 开始下载,在窗口中可以看到下载进度,

完成后提示下载成功,详见图 4-50。

Page 234: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-50 连接电缆

Page 235: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) JTAG编程是使用JTAG命令序列执行编程和检验操作的。

用户只需要选择希望的操作,Xilinx将明确地执行全部需要的

JTAG命令。 JTAG的主要操作有: 编程(Program)、 检验(Verify)、

擦除(Erase)、基本测试(Functional Test)、取消检查(Blank Check)、

回读JEDEC(Readback JEDEC)、 获得器件ID.(Get Device ID.)、

获得器件检查概要(Get Device Checksum)等。 

(3) JTAG编程要用到支持JTAG下载模式的Xilinx的下载电

缆, 下载电缆可以花一百多元钱买一根,也可对照如图 4-51 所

示的原理图(EDA俱乐部网站上还提供相应的PCB板线路图)自行

制作。

Page 236: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-51 Xilinx下载电缆的原理图

VCC SENSER1100 D2

IN5817R14100

R2100DONE 2

U2AMC74CH25A3

R85.1 k

U1AMC74HC125A2 3

R3300

D1

IN5817R135.1 k

C510 NF

VCC

GND

C1100 PF1

PROG

R9100 J2TD0

(D/P)

U1BMC74HC125A5 6

R5300

C2100 PF4

CTRL

R10100 J2TD1

(DIN)

R4300DIN

U1CMC74HC125A9 8

C3100 PF10

R11100 J2TCK

(CCLK)

R6300CLK

U1DMC74HC125A12 11

C4100 PF13

R12100 J2TMS

(/PROG)

R7300TMS IN

5

9

12

410

13

11

U2DMC74HC125

U2CMC74HC125

8

U2BMC74HC125

6

VCCGNDJ2TCK

123456789

J2TD0J2TD1J2TMS

(CCLK)

(D/P)(DIIN)(/PROG)

CON9

VCCGND

J2TCK

123456789

J2TD0J2TD1

J2TMS

CON9

J1

J2

VCC SENSEDONEPROGDINCTRLCLKTMS INGNDGND

123456789

CON9

J3ERROR(WHITE)/SEL(BROWN)D4(BLUE)D0(RED)D3(GREEN)D1(ORANGE)D2(YELLOW)GND(BLACK)GND(BLACK)

Page 237: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

9. 下载后的芯片功能验证

按图 4-52 进行芯片与外部器件的连接。 

(1) 芯片clk信号接 0.25 MHz(分频系数为4); ckdsp信号接

1 kHz(分频系数是 12); D[7, 0] 接ADC0809 D-7~D-0;start信号接ADC0809 的STA;A~G信号和select信号分别接七段译码显

示管和LED灯。 

(2) ADC0809的clk信号接 0.25 MHz(分频系数为4) ;OE端接

VCC(5 V) ;ALE信号接 1 Hz(分频系数是22);AD-A~AD-C接

GND。

Page 238: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) 电位器两端分别接VCC和GND,中间抽头接ADC的IN0。

电位器(0~5 V可调)输入模拟电压信号到ADC0809, ADC0809

在烧制好的器件驱动下工作, 输出 8 位数字信号并送入芯片中。

芯片交替读取高低 4 位并送译码管显示, 接通直流电源, 手调

电位器输出,可看到七段译码显示管交替显示 8 位数字信号的

高低 4 位,即可实现对模拟电压信号的测量。  

(4) 例如,当译码管显示A0时,表示 8 位数字信号低 4 位是

0000, 高 4 位是 1010,对应的十进制数是 160,则模拟电压信

号V0=(160/255)×5 V=3.14 V( 大值 5 V对应的数字信号十进

制数是 255)。

Page 239: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-52 演示板电路连接示意图

Page 240: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

10. 设计总结

本设计使用Xilinx公司的CPLD可编程逻辑器件XC95108-7-

PC84A和Xilinx提供的Foundation Series EDA软件开发系统。使

用该系统完成了一个驱动ADC0809模数转换器进行模拟电压信

号测量的芯片设计。由这个设计过程可掌握基于Xilinx的半定

制芯片设计方法和具体流程,掌握之后,便于进一步熟悉数字

系统的设计方法,可有效提高我们的设计能力。 

整个设计过程的关键部分集中在Xilinx Foundation下的设计

输入部分,这个层次是用户的主要工作,它要完成对器件进行

功能描述的编程,并决定整个芯片系统所要实现的功能。

Page 241: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

在这里我们力争采用 简明的方法来实现 好的系统性

能, 两种设计输入方法(原理图的输入和HDL语言输入)各有利

弊。 原理图的输入方法由于支持了各种不同宏单元的描述方

法,将系统功能进行层次划分和任务分配, 因此在设计中更具

灵活性, 顶层的原理图也比HDL输入更为直观。 但是对于有

较多宏单元时一旦仿真中功能出错, 就必须在诸多的宏单元中

逐个查错, 修改时也必须进入宏单元的原始设计, 从 底层

改起, 显得较为繁琐。HDL语言输入方法可直接进入HDL代码

的编辑页面改错,比较方便。

Page 242: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

另外,在时序仿真阶段我们也可以通过对系统项目库中

的每个器件进行时间参数的设置,以期布局布线后得到 佳

的时序,一般情况下由于时序仿真后的延迟在可以接受的范

围内,这部分工作可以被略去。而在更复杂的系统中,为得

到器件 优的时序延迟一定要慎重考虑, 综合优化各项指标。

Page 243: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.6 CPLD/FPGA在数字系统设计中的应用

4.6.1 Xilinx网上设计方案的学习 

在Xilinx的网站www.xilinx.com上有一个栏目,提供了基于

Xilinx各款FPGA/CPLD芯片的典型应用设计方案。 每份设计方

案都含有设计原理、 结构、适用芯片,Verolog或VHDL源代码。

该网页地址为: http://university.xilinx.com/apps/xapp.htm。 

例如,我们因工作需要制作 11 位Gold码发生器, 通过网

络搜索查到http://university.xilinx.com/apps/xapp.htm处有如表 4-9

所示各种方案(原方案很多,这里仅给出一小部分)。

Page 244: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现表 4-9 CPLD/FPGA各类应用方案示意表(部分)

Page 245: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

从表 4-9 中,我们可以得到Gold Code Generators in Virtex

Devices v1.1 (01/10/01)方案文件XAPP217.PDF, 该方案指导我

们采用Xilinx的Virtex、 Virtex II、Spartan-II系列芯片制作

Gold码产生器。提供的源程序有PC用的,也有UNIX工作站用

的,既提供了VHDL也提供了Verilog源代码。

Page 246: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.6.2 Gold码简介 

Gold码是R.Gold于 1967 年提出的。产生Gold码的方法有

两种,它是用一对优选的周期和速率相同的m序列的移位寄存

器串联或并联后得到的。 通常多使用并联结构,即将两个m序

列进行模 2 加后输出。其构成原理如图 4-53 所示。

Page 247: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-53 Gold码产生器原理图

m序列发生器1

m序列发生器2

时钟Gold码输出

Page 248: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

当选用伪随机序列作为码分多址通信的地址码时,m序列有

很大的局限性。 这主要是因为由m序列组成的互相关特性好的

互为优选的序列集很少。 例如, 9 级移位寄存器产生的m序列

有 48 个,取出其中的一个序列,只能找到12个m序列与这个序

列相关的互相关 大值为 33。 但找不到多于 3 个序列的组,其

中任意两序列之间的互相关 大值为 33。 如果要求的地址数

多, 只有降低对互相关的要求。 例如, 当互相关值不超过 65

时,可以从 48 个序列中挑选出几组由 6 个m序列组成的集。

Page 249: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

Gold码具有良好的自、互相关特性,而且可以用作地址码

的数量比m序列要多得多。因此,Gold码在码分多址通信,组

网工作的雷达及报警系统等许多工程领域得到了广泛的应用。

在本例介绍的设计中,Gold码发生器的基本单元为线性反

馈移位寄存器LFSR(Liner Feedback Shift Registers)。本例在

Xilinx的VitexTM、Vitex-E、Vitex-EM、Vitex-II和SpartanTM-II

系列器件中下载实现。通过使用Vitex/Vitex-II系列和SpartanTM-

II系列器件的SRL16 宏单元的LFSR,可以实现高效的Gold码发

生器。

Page 250: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.6.3 DS-SS系统中的PN序列

一个PN码序列是正交有限长的二进制序列。在理想情况

下, 一个PN码序列能够与该序列的任意位移序列正交。PN码

序列在DS-SS系统中主要有以下三个方面的应用:  

(1) 扩展被调制信号到一个宽带无线频谱上。 

(2) 在多路访问系统,对使用同一个发射带宽的不同用户

信号进行惟一的编码。 

(3) 同步没有全局时钟参考信号的WCDMA系统。 

若要完成以上应用, PN码序列需要特殊的自相关性和互

相关性。

Page 251: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

1. 自相关 

自相关是指某一序列与该序列的任意位移序列的相关性的

度量。对一个有限长的离散信号而言,其自相关特性可定义为

∑=

=L

0nxx T)-x(n)x(n)T(r (未归一化)

式中,T为时间间隔,L为序列长度。当自相关值为正时,

说明信号很难或不能与其时移信号区分开;当自相关值为负

时, 说明信号可以与其时移信号区分开;当自相关值为0

时,说明信号与其时移信号是正交的。

Page 252: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

2. 互相关 

互相关是指两个不同序列之间的相关性的度量。对一个有

限长的离散信号而言,其互相关特性可定义为

)Tn(y)(x)T(r0

xy −= ∑=

L

n

n (未归一化)

在长度相同的码序列中,有些序列有较好的互相关性,这

些序列则被用来编码用户信号。在理想情况下,用来编码用户

信号的PN码序列应互为正交码。可以选择一组互相关性小的m序列, 再选择一组 大长度的序列,两者通过一个异或门产生

Gold码序列。PN码序列的集合元素彼此间要有足够小的互相关

值,以减少同波道干扰。如果两组PN码序列的互相关性较大,

则有可能使用户之间互相干扰。

Page 253: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.6.4 LFSR的实现结构 

Gold码发生器中的基本功能块是LFSR,由n个寄存器的

LFSR可以构成 2n-1 阶LFSR序列。在每个时钟周期,这些寄存

器的内容右移 1 位。 来自预先确定的寄存器或者抽头与 左

端的寄存器通过一个异或门连接起来形成反馈结构。n越大,

PN码序列重复一次的时长越长,即对于定长型移位寄存器,PN

码序列的时长由n决定。 

LFSR的实现结构有以下两种:

Page 254: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(1) Galois型结构的LFSR,如图 4_54 所示。 数据流从左

到右, 而反馈路径从右到左。生成的多项式g(x)=1+x4+x17,从

生成多项式中可以确定移位寄存器中哪些抽头被反馈。

图 4-54 Galois型结构

0 1 2 3

阶数

数据流

x17

16151413121110987654

x0 x4

g(x)=1+x4+x17

Page 255: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) Fibonacci型结构的LFSR 如图 4-55 所示。这种结构的

LFSR数据流和反馈路径与第一种结构相同,不同的是生成多项

式g(x)=x17+x4+1,其中x0成了多项式的 后一项。

图 4-55 Fibonacci型结构

16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

阶数

数据流

x17 LFSR多项式g(x)=x17+x14+1

x0

Page 256: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.6.5 Gold码发生器 

R.Gold认为, 对两个预先确定系数码的LFSR的输出结果

进行模2加, 能够产生相关值足够小的PN码序列集合。图 4-56

所示是用两个加载了配对的系数且等长的LFSR, 将它们的输

出异或就得到了适合于在CDMA系统中应用的码序列。

Page 257: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-56 Gold码发生器

Gold码输出

LFSR 1

LFSR 2

Page 258: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-57 所示为一个 8 级 4 阶的Gold码发生器。其中,

LFSR1多项式为g(x)1=x8+x6+x5+x3+1;LFSR2多项式为g(x)2=x 8+x4+x3+x2+1。 

图 4-58所示为一个 41 级 2 阶的Gold码发生器。在Virtex器

件中, 每个CLB中包含 4 个逻辑单元,每个逻辑单元包括 1

个 4 输入的查找表、1 个进位逻辑和 1 个存储单元。 每 16

位的LFSR使用 1 个Slice, 1 个CLB中则有 2 个Slice。在

Virtex II器件中, 每个CLB含有 4 个相同的Slice, 每个Slice

都包含 2 个 4 输入的查找表、 2 个寄存器、 进位逻辑和其它专

用逻辑。

Page 259: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-57 8 级 4 阶Gold码发生器

SRL 16Din

x3

CLK

0 A00 A11 A20 A3

O15Q15O14

O0O1

Q0TapA1

SRL 16Din

x6

CLK

1 A00 A10 A20 A3

O15Q15O14

O0O1

Q0TapB1

Slice S0

ParityGenxratcr

Tap A1

Tap B1

Tap C1

Tap D1

FILL DATA

FILL ENABLE

SRL 16Din

x5

CLK

0 A01 A10 A20 A3

O15Q15O14

O0O1

Q0TapC1

SRL 16Din

x0

CLK

1 A01 A11 A20 A3

O15Q15O14

O0O1

Q0TapD1

Slice S1

LFSR1

SRL 16Din

x2

CLK

0 A00 A11 A20 A3

O15Q15O14

O0O1

Q0TapA2

SRL 16Din

x3

CLK

0 A00 A11 A20 A3

O15Q15O14

O0O1

Q0TapB2

Slice S0

ParityGenxratcr

Tap A2

Tap B2

Tap C2

Tap D2

FILL DATA

FILL ENABLE

SRL 16Din

x4

CLK

0 A01 A10 A20 A3

O15Q15O14

O0O1

Q0TapC2

SRL 16Din

x0

CLK

1 A01 A11 A20 A3

O15Q15O14

O0O1

Q0TapD2

Slice S1

LFSR2

g(x)2g(x)1 Gold 码序列输出

LFSR 1多项式

LFSR 2多项式

g(x)1=x8+x6+x5+x3+1

g(x)2=x8+x4+x3+x2+1

Page 260: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

4.6.6 VHDL源程序

对应图 4-58 所示的Gold码发生器的VHDL程序。在设计中

使用了Virtex器件的SRL16 结构以获得高效的实现结果。SRL16

是Virtex器件中的一个移位寄存器查找表,它有 4 个输入用来选

择输出序列的长度。使用XCV50-6 器件可实现以下程序,共占

用 5 个Slice。 

(1) vhd_suba.vhd:

library ieee;  

use ieee.std_logic_1164.all;

Page 261: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

entity LFSR _A is 

generic (cycleA0: integer∶ =26;  

cycleA3: integer∶ =4;  

width:integer∶ =1);  

port ( Clk:in std_logic;  

Enable: in std_logic;  

Fill_En: in std_logic;  

New_Fill: in std_logic_vector(width _1 downto 0);  

DelayA0:out std_logic_vector(width _ 1 downto 0));  

attribute clock_node:boolean;  

attribute clock_node of Clk: signal is TRUE;  

end LFSR_A;

Page 262: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

type my_type2 is array (0 to cycleA3 _1) of std_logic_vector(width _1 downto 0);  signal int_sigA3:my_type2;   

begin  

main:process (Clk) begin if Clk′event and Clk = ′1′ then 

if (Enable = ′1′) then int_sigA0 <= Data_In_A & int_sigA0(0 to cycleA0 _ 2);int_sigA3 <= Data_In_A & int_sigA3(0 to cycleA3 _ 2);  

Page 263: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

end if;  if (Fill_En = ′0′) then 

Data_In_A <= DelayA3 xor DelayA0_int;  else 

Data_In_A <= New_Fill;  end if;  

end if;  end process main;  

 

delayA0 _int <= int_sigA0(cycleA0 _1);  delayA3 <= int_sigA3(cycleA3 _ 1);  delayA0 <= delayA0_int;  

 

end LFSR_A_ARCH;

Page 264: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(2) vhd_subb.vhd:library ieee;  use ieee.std_logic_1164.all;   

entity LFSR _B is generic (cycleB0: integer∶ =26;  

cycleB20: integer∶ =21;  width:integer∶ =1);  

port ( Clk:in std_logic;  Enable: in std_logic;  

Fill_En: in std_logic;  New_Fill: in std_logic_vector(width _1 downto 0);  DelayB0:out std_logic_vector(width _ 1 downto 0));  

attribute clock_node:boolean;  attribute clock_node of Clk: signal is TRUE;  

end LFSR_B;  

Page 265: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现architecture LFSR_B_ARCH of LFSR _B is  

signal Data_In_B: STD_LOGIC_VECTOR(width _1 downto 0);  signal DelayB20: STD_LOGIC_VECTOR(width _1 downto 0);  signal DelayB0_int: STD_LOGIC_VECTOR(width _1 downto 0);   

type my_type is array (0 to cycleB0 _1) of std_logic_vector(width _1 downto 0);  signal int_sigB0:my _type;   

type my_type2 is array (0 to cycleB20 _1) of std_logic_vector(width _1 downto 0);  signal int_sigB20:my_type2;   

begin 

Page 266: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

main:process (Clk) 

begin 

if Clk′event and Clk = ′1′ then 

if (Enable = ′1′) then 

int_sigB0 <= Data_In_B & int_sigB0(0 to cycleB0- 2);

  int_sigB20 <= Data_In_B & int_sigB20(0 to cycleB20 - 2);  

end if;  

if (Fill-En = ′0′) then 

Data-In-B <= DelayB20 xor DelayB0-int;  

else 

Data-In-B <= New-Fill;

Page 267: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

end if;  

end if;  

end process main;  

 

delayB0 _int <= int_sigB0(cycleB0 _1);  

delayB20 <= int_sigB20(cycleB20 _ 1);  

delayB0 <= delayB0_int;  

 

end LFSR_B_ARCH;

Page 268: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

(3) vhd_top.vhd:library ieee;  use ieee.std_logic_1164.all;   

entity Gold_Code is generic (width: integer∶ =1);  port ( Clock:in std_logic;  

Enable: in std_logic;  Fill_En_A: in std_logic;  Fill_En_B: in std_logic;  

Rst: in std_logic;  New_Fill_A: in std_logic_vector(width _1 downto 0);

  New_Fill_B: in std_logic_vector(width _1 downto 0);  Gold_Code:out std_logic_vector(width _ 1 downto 0));

Page 269: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

attribute clock_node:boolean;  attribute clock_node of Clock: signal is TRUE;  

end Gold_Code;   

architecture Gold_Code_Arch of Gold_Code is  

component LFSR_A port  (Clk: in std_logic;  Enable: in std_logic;  Fill_En: in std_logic;  New_fill:in std_logic_vector(width_1 downto 0);  delayA0: out std_logic_vector(width_1 downto 0));  

end component;

Page 270: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

component LFSR_B port (Clk: in std_logic;  Enable: in std_logic;  Fill_En: in std_logic;  New_Fill: in std_logic_vector(width_1 downto 0);  delayB0: out std_logic_vector(width_1 downto 0));  

end component;   

signal DelayA_top: std_logic_vector(width _1 downto 0);  signal DelayB_top: std_logic_vector(width _1 downto 0);  

 

begin 

Page 271: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

U0: LFSR_A port map (Clk => Clock, Enable => Enable,  Fill_En => Fill_En_A,  New_Fill => New_Fill_A,  delayA0 => delayA_top);  

 

U1: LFSR_B port map (Clk => Clock, Enable => Enable,  Fill_En => Fill_En_B,  New_Fill => New_Fill_B,  delayB0 => delayB_top);  

 

Gold_Code <= delayB_top xor delayA_top;   

end Gold_Code_Arch;

Page 272: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

图 4-58 41 级 2 阶Gold码发生器

Dly16

A3A2A1A0

(0 0 1 1 )

Dly16

Dly9

A3A2A1A0

(1 0 0 0 )Slice Slice

LUT

10

填充使能新填充数据

g(x)=x41+x20+1

Dly16

A3A2A1A0

(0 0 1 1 )

Dly16

Dly9

A3A2A1A0

(1 0 0 0 )Slice Slice

LUT

10

填充使能新填充数据

g(x)=x41+x3+1

LUT

Tap 20

Tap 3

Gold码PN序列

Tapo

Page 273: 第四章EDA技术与可编程ASIC的设计实现 - USTCstaff.ustc.edu.cn/~wangxfu/lab0/41.pdf · 第四章eda技术与可编程asic的设计实现 4.1 集成电路与asic 4.1.1 集成电路及其分类

第四章 EDA技术与可编程ASIC的设计实现

复 习 思 考 题

1. PLD与CPLD/FPGA有何区别,如何选用?  

2. FPGA的LCA包括哪些主要结构? 各有什么作用?  

3. 上机在MAX+PLUS II开发环境中验证交通灯控制的

VHDL描述并进行波形分析。  

4. 上机在Xilinx Foundation开发环境中验证CPLD器件驱动

ADC0809的VHDL描述并进行波形分析。  

5. 上网下载CPLD/FPGA在某领域应用方案,并进行相应的

分析、仿真。