电子与信息技术一体化教材 - EDA -...

143
第第 EDA 第第第第 电电电电电电电 电电电 一体 电电电电电电电电 EDA 第第第第第第第第 () 第第 第第第 第第第第第第第第第第第 - 1 -

Transcript of 电子与信息技术一体化教材 - EDA -...

Page 1: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第一章 EDA技术概述

电 子 与 信 息 技 术 一 体 化 教 材张 渚 职 中 校 本 课 程

EDA( 电 子 设 计 自 动 化 )主编:卢卫平

宜兴市张渚职业高级中学

- 1 -

Page 2: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

前 言本套教材紧密结合高职高专教育特点,主动适应社会实际需要,突出应用性、

针对性,加强实践能力的培养。内容叙述力求深入浅出,将知识点与能力点有机结合,注重培养学生的工程应用能力和解决现场实际问题的能力:内容编排力求简洁明快、形式新颖、目标明确。利于促进学生的求知欲和学习主动性。从20世纪中叶到21世纪初,电子系统的设计经历了手工设计、计算机辅助设计、

计算机辅助工程设计及电子设计自动化四个阶段。而电子设计自动化(EDA)技术的发展更是给电子系统设计带来了革命性的变化。而将EDA 技术引入高等职业技术教育的电子类教学中是编写此书的目的。本书着重介绍运用EDA 技术进行电子系统设计的有关知识和相关EDA 工具

的应用,即如何应用EDA 工具完成电路设计、印制电路板设计、数字电路设计方法;用可编程逻辑器件进行数字系统设计、仿真和测试;以及在系统可编程模拟器件的应用,从而对EDA 技术有一个较全面的了解。本书第一、二、三章介绍如何应用EDA 工具完成电路原理图设计、印制电路

板设计。目前已有很多CAD 软件可以辅助进行印制电路板的设计,如ORCAD 等,在此选择目前广泛使用的Protel 99SE来进行学习。第四、五、六、七、八章介绍应用EDA 工具对可编程逻辑器件进行设计,包括数字电路设计方法、可编程逻辑器件、VHDL语言、EDA 开发工具使用、可编程模拟器件及应用,此部分内容在编写时分别介绍了Altera 公司的MAX+plusⅡ 、Lattice公司的ispDesignExpert 两种较新的开发系统软件,并介绍了新型的模拟可编程逻辑器件(PAC) 及其开发工具,读者可以根据需要选择某一种或几种同时学习,编写时重点突出了开发工具的使用方法和应用实例,即突出了实用性和操作性。本书可以作为电子技术的加深课程或作为电子技术工程师参考用书。本书的读者是大学在读的大学生、电子技术工程技术人员。在本书的编写过程中,得到了南京伟福实业有限公司葛士忠工程师的大力帮

助在此特别表示对他的致谢,此外还得到了同事、朋友的大力支持,在此也一并向他们表示感谢。

由于EDA 技术发展快,更新快,加之作者水平有限,时间仓促,疏漏或错误之处,敬请读者批评指正。加之由于时间仓促、资料缺乏,有错误之处请读者原谅。

- 2 -

编者2005 年 4 月

Page 3: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第一章 EDA技术概述

目 录第一章 EDA 技 术 概 述

························································································· 1第一节 EDA 技 术 的 发

展····················································································1第二节 EDA 技 术 的 基 本 特

征············································································1第三节 EDA 技 术 的 基 本 设 计 方

法····································································7第二章 可 编 程 逻 辑 器 件

·····················································································11第一节 概 述

·····································································································11

第二节 可 编 程 逻 辑 器 件 简介···········································································12

第三章 VHDL 硬 件 描 述 语言···············································································19

第一节 学 好 VHDL 的 重 要性··································.··········································19

第二节 VHDL 语言·················································.············································20

第四章 MAX+plus II 开 发 环 境 应 用 简介····························································75

第一节 概述·······································································································75

第二节 Max+plusⅡ 功 能 简介···········································································75

第三节 Max+plusⅡ 设 计 过程···········································································77

第五章 实 验 系 统 的 硬 件 结构···············································································81

- 3 -

Page 4: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第一节 总 体 结 构 ·····························································································83

第二节 外 部 设 备 ·····························································································85

第三节 FPGA/EPLD 适配板 ·········································································· 88

第四节 实验系统模式选 ··················································································90

第五节 逻辑分析仪 ··························································································90

第六节 实验系统的自检 ··················································································90

第六章 伟 福 EDA2000 调 试 软 件 使 用 ································································93

第七章 EDA 实 验 与 课 程 设计··············································································105

第一节 原 理 图 输 入 实验···················································································105

实验一 3-8 译 码 器 ·······················································································105

实验二 组 合 逻 辑 电 路 设 计 ··········································································119

第二节 VHDL 硬 件 描 述 语 言 实验····································································122

实验一 1 位 全 加 器 ·······················································································122

实验二 2 选 1 多 路 选 择 器 ············································································123

实验三 8 位 硬 件 加 法 器 ···············································································123

实验四 7 段 数 码 显 示 译 码 器 ·······································································124

实验五 8 位 串 入 并 出 寄 存 器 ·······································································125

实验六 8 位 并 入 串 出 寄 存 器 ·······················································.···············126

实验七 译 码 扫 描 显 示 电 路 设 计 ··································································127

实验八 用 状 态 机 实 现 ADC0809 的 采 样 控 制 电 路 - 4 -

Page 5: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第一章 EDA技术概述·································128

实验九 硬 件 电 子 琴 电 路 设 计 ····································································130

实验十 秒 表 ································································································133

第三节 课 程 设 计 课题 ······················································································137

课题一 交 通灯······························································································137

课题二 具 有 整 点 报 时 的 数 字钟···········································································139

- 5 -

Page 6: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第 一 章 EDA 技 术 概 述    人类社会已进入到高度发达的信息化社会,信息社会的发展离不开电子产品的进步。 现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐 也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。前者以微细加工 技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管;后者 的核心就是EDA技术。EDA 是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化 技术最新成果而研制成的电子CAD 通用软件包,主要能辅助进行三方面的设计工作:IC设计, 电子 电路设计以及PCB设计。没有EDA 技术的支持,想要完成上述超大规模集成电路的设计制造是不可 想象的,反过来,生产制造技术的不断进步又必将对EDA 技术提出新的要求。

第 一 节 EDA 技 术 的 发 展回顾近30年电子设计技术的发展历程,可将EDA 技术分为三个阶段。(1) 七十年代为CAD 阶段,这一阶段人们开始用计算机辅助进行IC版图编辑和

PCB布局布线,取代了手工操作,产生了计算机辅助设计的概念。(2) 八十年代为CAE阶段,与CAD 相比,除了纯粹的图形绘制功能外,又增加了电路功能设 计和结构设计,并且通过电气连接网络表将两者结合在一起,以实现工程设计,这就是计算机辅助 工程的概念。CAE的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。

(3) 九十年代为ESDA 阶段。尽管CAD/CAE 技术取得了巨大的成功,但并没有把人从繁重的 设计工作中彻底解放出来。在整个设计过程中,自动化和智能化程度还不高,各种EDA 软件界面千 差万别,学习使用困难,并且互不兼容,直接影响到设计环节间的衔接。基于以上不足,人们开始 追求贯彻整个设计过程的自动化,这就是ESDA 即电子系统设计自动化。

  第 二 节 EDA 技 术 的 基 本 特 征EDA 代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员

按照" 自顶 向下" 的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成 电路(ASIC )实现,然后采用硬件描述语言- 6 -

Page 7: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第一章 EDA技术概述(HDL )完成系统行为级设计,最后通过综合器和适配 器生成最终的目标器件。这样的设计方法被称为高层次的电子设计方法,具体流程还将在4.2 节中 做深入介绍。下面介绍与EDA 基本特征有关的几个概念。

(1) " 自顶向下" 的设计方法10 年前,电子设计的基本思路还是选择标准 集成电路 " 自底 向

上" (Bottom-Up )地构 造出一个新的系统,这样的设计方法就如同一砖一瓦地建造金字塔,不仅效率低、成本高而且还容易出错。(2) 高层次设计高层次设计给我们提供了一种" 自顶向下" (Top-Down )的全新的设计

方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要 仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。(3) ASIC 设计现代电子产品的复杂度日益加深,一个电子系统可能由数万个中小规模集

成电路构 成,这就带来了体积大、功耗大、可靠性差的问题,解决这一问题的有效方法就是采用ASIC (Application Specific Integrated Circuits) 芯片进行设计。ASIC 按照设计方法的不同可分 为:全定制ASIC ,半定制ASIC ,可编程ASIC (也称为可编程逻辑器件)。 ---- 设计全定制ASIC 芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最 后将设计结果交由IC厂家掩膜制造完成。优点是:芯片可以获得最优的性能,即面积利用率高、速 度快、功耗低。缺点是:开发周期长,费用高,只适合大批量产品开发。 ---- 半定制ASIC 芯片的版图设计方法有所不同,分为门阵列设计法和标准单元设计法,这 两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间。 可编程逻辑芯片与上述掩膜ASIC的不同之处在于:设计人员完成版图设计后,在实验 室内就可以烧制出自己的芯片, 无须IC厂家的参与,大大缩短了开发周期。 ---- 可编程逻辑器件自七十年代以来,经历了PAL、GAL 、CPLD 、FPGA 几个发展阶段,其中 CPLD/FPGA 属高密度可编程逻辑器件,目前集成度已高达200 万门/ 片,它将掩膜ASIC 集成度高的 优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发, 使产品能以最快的速度上市,而当市场扩大时,它可以很容易的转由掩膜ASIC 实现,因此开发风 险也大为降低。 ---- 上述ASIC 芯片,尤其是CPLD/FPGA 器件,已成为现代高层次电子设计方法的实现载体。

- 7 -

Page 8: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

(4) 硬件描述语言硬件描述语言(HDL-Hardware Description Language )是一种用于设计硬

件电子 系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传 统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,利用图形输入软件 需要输入500 至1000个门,而利用VHDL语言只需要书写一行A=B+C 即可,而且VHDL语言可读性强, 易于修改和发现错误。早期的硬件描述语言,如ABEL-HDL、AHDL,是由不同的EDA 厂商开发的,互相不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上缺陷, 1985年 美国国防部正式推出了VHDL(Very High Speed IC Hardware Description Language) 语言, 1987 年IEEE 采纳VHDL为硬件描述语言标准(IEEE STD-1076 )。 ---- VHDL 是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个 设计层次, 支持结构、数据流、行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件 描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。另外,VHDL 还 具有以下优点: VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功 能的实现与调试,只需花较少的精力用于物理实现。 VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计 结果的交流、保存和重用。 VHDL的设计不依赖于特定的器件,方便了工艺的转换。 VHDL是一个标准语言,为众多的EDA 厂商支持,因此移植性好。(5) 系统框架结构

EDA 系统框架结构(Framework) 是一套配置和使用EDA 软件包的规范,目前主要的 EDA 系统都建立了框架结构,如Cadence 公司的Design Framework ,Mentor公司的Falcon Framework 等,这些框架结构都遵守国际CFI 组织(CAD Framework Initiative) 制定的统一技术 标准。Framework 能将来自不同EDA 厂商的工具软件进行优化组合,集成在一个易于管理的统一的 环境之下,而且还支持任务之间、设计师之间在整个产品开发过程中实现信息的传输与共享,这是 并行工程和Top-Down 设计方法的实现基础。

第 三 节 EDA 技 术 的 基 本 设 计 方 法EDA 技术的每一次进步,都引起了设计层次上的一个飞跃。物理级设计主要指IC版图设计,一般由半导体厂家完成,对电子工程师并没有

太大的意义,因此本文重点介绍电路级设计和系统级设计。(1) 电路级设计电子工程师接受系统设计任务后,首先确定设计方案,同时要选择能实现该方

案的合适 元器件,然后根据具体的元器件设计电路原理图。接着进行第一次仿真,- 8 -

Page 9: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第一章 EDA技术概述包括数字电路的逻辑模 拟、故障分析、模拟电路的交直流分析、瞬态分析。系统在进行仿真时,必须要有元件模型库的支 持,计算机上模拟的输入输出波形代替了实际电路调试中的信号源和示波器。这一次仿真主要是检 验设计方案在功能方面的正确性。 ---- 仿真通过后,根据原理图产生的电气连接网络表进行PCB板的自动布局布线。在制作 PCB板之前还可以进行后分析,包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并 且可以将分析后的结果参数反标回电路图,进行第二次仿真,也称为后仿真,这一次仿真主要是检 验PCB板在实际工作环境中的可行性。

由此可见,电路级的EDA 技术使电子工程师在实际的电子系统产生之前,就可以全面地 了解系统的功能特性和物理特性,从而将开发过程中出现的缺陷消灭在设计阶段,不仅缩短了开发 时间,也降低了开发成本。(2) 系统级设计进入90年代以来,电子信息类产品的开发出现了两个明显的特点:一是产品的

复杂程 度加深,二是产品的上市时限紧迫。然而电路级设计本质上是基于门级描述的单层次设计,设计的 所有工作(包括设计输入,仿真和分析,设计修改等)都是在基本逻辑门这一层次上进行的,显然 这种设计方法不能适应新的形势,为此引入了一种高层次的电子设计方法,也称为系统级的设计方法。高层次设计是一种" 概念驱动式" 设计,设计人员无须通过门级原理图描述电

路,而是 针对设计目标进行功能描述,由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造性的概 念构思与方案上,一旦这些概念构思以高层次描述的形式输入计算机后,EDA 系统就能以规则驱动 的方式自动完成整个设计。这样,新的概念得以迅速有效的成为产品,大大缩短了产品的研制周期。不仅如此,高层次设计只是定义系统的行为特性,可以不涉及实现工艺,在厂家综合库的支持 下,利用综合优化工具可以将高层次描述转换成针对某种工艺优化的网表,工艺转化变得轻松容易。具体的设计流程见图3 。高层次设计步骤如下:第一步:按照" 自顶向下" 的设计方法进行系统划分。 第二步:输入VHDL 代码,这是高层次设计中最为普遍的输入方式。此外,还可以采用

图形输入方式(框图,状态图等),这种输入方式具有直观、容易理解的优点。第三步:将以上的设计输入编译成标准的VHDL文件。对于大型设计,还要进行代

码级的功能仿真,主要是检验系统功能设计的正确性,因为对于大型设计,综合、适配要花费数小时,在综合前 对源代码仿真,就可以大大减少设计重复的次数和时间,一般情况下,可略去这一仿真步骤。第四步:利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网表文件,

这是将高层次 描述转化为硬件电路的关键步骤。- 9 -

Page 10: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

综合优化是针对ASIC 芯片供应商的某一产品系列进行的,所以综合的过程要在相应的 厂家综合库支持下才能完成。综合后,可利用产生的网表文件进行适配前的时序仿真,仿真过程不 涉及具体器件的硬件特性,较为粗略。一般设计,这一仿真步骤也可略去。 ---- 第五步: ---- 利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,包括底 层器件配置、逻辑分割、逻辑优化和布局布线。适配完成后,产生多项设计结果:① 适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;

②适配后的仿真模型;② 器件编程文件。 根据适配后的仿真模型,可以进行适配后的时序仿真,

因为已经得到器件的实际硬件特性(如时延 特性),所以仿真结果能比较精确地预期未来芯片的实际性能。如果仿真结果达不到设计要求,就 需要修改VHDL源代码或选择不同速度品质的器件,直至满足设计要求。

第六步:将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片

FPGA 或CPLD 中。 如果是大批量产品开发,通过更换相应的厂家综合库,可以很容易转由ASIC 形式实现。

    EDA 技术是电子设计领域的一场革命,目前正处于高速发展阶段,每年都有新的EDA 工 具问世,我国EDA 技术的应用水平长期落后于发达国家,因此,广大电子工程人员应该尽早掌握这 一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竟争与发展的需要。

- 10 -

Page 11: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第二章 可编程逻辑器件

第 二 章 可 编 程 逻 辑 器 件

第 一 节 概 述

当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电路本身在不断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC ,几万门以上) 以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC 的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC 芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD) ,其中应用最广泛的当属现场可编程门阵列 (FPGA) 和复 杂可编程逻辑器件(CPLD) 。     早期的可编程逻辑器件只有可编程只读存贮器 (PROM) 、紫外线可按除只读存贮器(EPROM) 和电可擦除只读存贮器(EEPROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。     其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD) ,它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与一或”表达式来描述,所以, PLD能以乘积和的形式完成大量的组合逻辑功能。   这一阶段的产品主要有PAL(可编程阵列逻辑) 和GAL( 通用阵列逻辑) 。 PAL 由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输.出可以通过触发器有选择地被置为寄存状态。 PAL 器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM 技术和EEPROM 技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA) ,它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。 PLA器件既有现场可编程的,也有掩膜可编程的。 在PAL 的基础上,又发展了一种通用阵列逻辑GAL

(Generic Array Logic),如GAL16V8,GAL22V10 等。它采用了EEPROM 工艺,实现了电可按除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。 这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,

- 11 -

典型的 PLD的部分结构(实现组合逻辑的部分)

Page 12: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

但其过于简单的结构也使它们只能实现规模较小的电路。     为了弥补这一缺陷,20世纪80年代中期。 Altera 和Xilinx 分别推出了类似于PAL结构的扩展型 CPLD(Complex Programmab1e Logic Dvice) 和与标准 门阵列类似的 FPGA(Field Programmable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。 这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其它ASIC(Application Specific IC) 相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产( 一般在10,000件以下) 之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA 和CPLD 器件。(注:不同厂家的叫法不尽相同,Xilinx 把基于查找表技术,SRAM工艺,要外挂配置用的EEPROM 的PLD叫FPGA ;把基于乘积项技术,Flash (类似EEPROM 工艺)工艺的PLD叫CPLD; Altera 把自己的PLD 产品:MAX 系列(乘积项技术,EEPROM 工艺),FLEX系列(查找表技术,SRAM工艺)都叫作CPLD,即复杂PLD(Complex PLD), 由于FLEX 系列也是SRAM工艺, 基于查找表技术,要外挂配置用的EPROM, 用法和Xilinx 的FPGA 一样,所以很多人把Altera 的FELX 系列产品也叫做FPGA.) 

第 二 节 可 编 程 逻 辑 器 件 简 介

1. PLD 介绍 可编程逻辑器件PLD(Programable Logic Device)是允许用户编程( 配置) 实现所需逻辑功能的电路, 它与分立元件相比, 具有速度快、容量大、功耗小和可靠性高等优点。由于集成度高,设计方法先进、现场可编程,可以设计各种数字电路,因此,在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域内得到了广泛应用。不久的将来将全部取代分立数字元件,目前一些数字集成电路生产厂商已经停止了分立数字集成电路的生产。因此应该学会PLD的设计技术。 PLD 电路早期代表产品由XLINX公司推出的门阵列,称为FPGA (Field Programable Gate Array ), 随后ALTERA 公司推出以并行走线的PLD产品,称为CPLD (Complex Programable Logic Device ),这些早期产品价格高达万元,其开发软件价格高达几十万元。但是随着生产技术水平的提高,现在PLD产品的价格已大大降低,一片5000 门、具有5K X 8 的SRAM电路作配置、84 脚封装、速度达40—200MHz 的PLD的价格已经下降到一百元以下。每一片这样的PLD可以设计成单片机、或者是CPU 等,并且可以在外部接线完成以后还可以重新进行设计多次。 目 前 在 我 国 常 见 的 PLD 生 产 厂 家 有XILINX 、ALTERA 、ACTEL 、LATTIC 、ATMEL 、MICROCHIP 和AMD 等等,其中XILINX 和ALTERA 为两个主要生产厂,XILINX 的产品为FPGA ,ALTERA 的产品称为CPLD ,各有优缺点,但比较起来ALTERA 的产品略有长处:

① 同样具有EPROM 和SRAM的结构;② 对于SRAM结构的产品,ALTERA 公司PLD的输出电流可达25mA,而XILINX 的

- 12 -

Page 13: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第二章 可编程逻辑器件FPGA 只有16mA;

③ ALTERA 公司的PLD延时时间可预测,弥补了FPGA 的缺点;④ XILINX 公司的开发软件 FOUNDATION 功能全,但是不如ALTERA 公司的

MAX+PLUS 软件使用简单,特别是对于学校的学生学习VHDL语言和PLD设计;⑤ ALTERA 公司的产品价格稍微便宜;⑥ ALTERA 公司新推出的FLEX 10K10E 系列的产品具有更大的集成度;

PLD的结构分为两类: 逻辑单元阵列(LCA),包括逻辑快、互连阵列和I/O 块 复合PLD结构,包括逻辑块和互连矩阵开关XLINIX 、ACTEL 公司的产品采用LCA结构,而ALTERA 、AMD 的MACH系列采用的是复合PLD结构。2. ALTERA 公司MAX7000 系列(1 ) 特点 该系列是以第二代多阵列结构为基础,高性能的CMOS器件 高密度,600—5000 个可用门的EPLD 系列 MAX7128E :提供5000 个门,其中可用门数2500,128个宏单元,最大I/O 引脚104, 引脚到引脚的时延6ns, 计数器工作频率151MHz 可配置的扩展乘积项,允许向每个宏单元提供52 个乘积项 44 到208个引脚的各种封装,引线塑料载体(PLCC )、针栅阵列(PGA )扁平封装(QFP)

3.3V 或5V 的电源电压 可编程保密位 ALTERA MAX+PLUS 软件提供开发支持该 系 列 型 号 :EPM7032,EPM7032V,EPM7064,EPM7096,EPM7128E,EPM7160,EPM7192,EPM7256

(2 )结构 MAX7000 的结构图2.1.1 ,其中I/O 为输入输出模块,FB 为逻辑阵列模块(LAB),这些模块由可编程互连矩阵相互连接。

- 13 -

Page 14: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

图2.1.1 专用输入信号包含4 个专用输入信号, 它们能用作专用输入或每一个宏单元和I/O 引脚的全局控制信号: 时钟, 清除和输出使能

逻辑阵列块(LAB)每个LAB由16 个宏单元组成, 多个LAB通过可编程连线阵列互连,每一个LAB有来自PIA 的36 个信号、用于寄存器辅助功能的控制信号和I/O 引脚到寄存器的直接通道

宏单元宏单元可以单独配置为组合逻辑和时序逻辑工作方式,它由三个功能块组成:逻辑阵列、乘积项选择矩阵和可编程触发器

扩展乘积项扩展乘积项可以使一个宏单元实现更复杂的逻辑函数,而不使使用两个宏单元

可编程连线阵列该阵列将各个LAB互连在一起,构成所需的逻辑功能 I/O 控制块允许每个I/O 引脚可以单独配置为输入、输出或是双向工作方式3. FLEX 8000 系列 FLEX 是Flexible Logic Element Matrix 的缩写,该系列采用0.8μm CMOS SRAM 或0.65μm CMOS SRAM 集成电路制造工艺制造。(1) 特点 最大门数32000 ,具有2500 ~16000 个可用门和282~1500 个触发器

- 14 -

Page 15: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第二章 可编程逻辑器件 在线可重配置 可预测在线时间延迟的布线结构 实现加法器和计数器的专用进位通道 3.3V 和5V 电源 MAX+PLUS 软件支持自动布线和布局 84 到304个引脚的各种封装常用型号:EPF8282,EPF8452,EPF8636,EPF8820,EPF81188,EPF81500

2.4 FLEX 10K10 系列 该系列采用0.5μm CMOS SRAM 或0.25μm CMOS SRAM(10K10E 系列) 集成电路制造工艺制造。(1) 特点 具有7000—31000个可用门、6144 位RAM 、720个触发器和最大I/O 数150 在线可重配置 可预测在线时间延迟的布线结构 实现加法器和计数器的专用进位通道 3.3V 和5V 电源 MAX+PLUS 软件支持自动布线和布局 84 到562个引脚的各种封装常 用 型 号 :EPF10K10,EPF10K20,EPF10K30,EPF10K40,EPF10K50,EPF10K70,EPF10K100 等2.5 PLD 的配置(1) MAX7000系列

由于MAX7000系列的配置程序是固化在芯片内的EEPROM 中, 所以该器件不需要专用的配置存储器, 所有MAX7000系列产品都由ALTERA 公司提供的编程硬件和软件进行编程。编程硬件:编程卡、主编程部件(MPU—Master Programming Unit )和配套的编程适配器编程软件:MAX+PLUSⅡ(2) FLEX8000系列和FLEX10K10 系列 该系列产品的配置信息是存放在芯片内的SRAM中,当掉电后,配置信息将全部丢失,所

以这些配置信息需要存放在其它EPROM 中,ALTERA 公司提供了与该系列芯片配套使用的EPROM 。所以对芯片的编程就是对EPROM 的编程,

芯片开始工作时,进入命令状态,在该状态将配置信息从EPROM 中读到自己的SRAM中,然后进入用户状态,在用户状态器件就可以按照配置的功能进行工作,整个配置过程全部自动进行,也可以靠外部逻辑控制进行,时钟可由器件自己提供,也可由外部时钟控制。

所以整个器件只要更换EPROM 中的配置信息就可以更换功能,其灵活性是不言而喻的。该器件有如下配置方式:

- 15 -

Page 16: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

主动串行配置(AS ) 主动并行升址和降址配置(APU/APD ) 被动并行同步配置(PPS) 被动并行异步配置(PPA) 被动串行配置(PS )1 ) 主动串行配置(AS ) 该配置使用ALTERA 公司提供的配置EPROM (如EPC1213 )作为器件的配置数据源,配置EPROM 以串行位流(bit-stream )方式向器件提供数据,见典型电路图2.5.1.

图2.5.1在图中,FLEX8000的nCONFIG 引脚接电源,使该器件有开机自动配置能力,2 )主动并行升址和降址配置(APU/APD ) 在该方式,FLEX8000提供驱动外部PROM地址输入的连续地址,PROM则在数据引脚DATA[7 。。。0] 上送回相应的字节数据,FLEX8000器件产生连续地址直至加载完成。对于APU 方式,计数顺序是上升的(00000H到3FFFFH )对于APD 方式,计数顺序是下降的。 使用并行EPROM 以APU 或APD 方式配置FLEX8000的一般电路图2.5.2. 图2.5.2

- 16 -

Page 17: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第二章 可编程逻辑器件 所有FLEX8000芯片通过自己的18 条地址线向EPROM 提供地址。3 ) 被动串行配置(PS ) 被动串行配置方式采用外部控制器,通过串行位(BIT )流来配置FLEX8000,FLEX8000以从设备的方式通过5 条线与外部控制器连接。外部控制器有如下几种: ALTERA 公司的PL-MPU编程部件和FLEX 卸栽电缆(DOWNLOAD CABLE ) 智能主机(微机或单片机) ALTERA 公司的Bit Blaster 电缆,该电缆与RS232 接口兼容使用ALTERA 的FLEX 卸栽电缆进行被动串行配置图2.5.3.

图2.5.3FLEX 的卸栽电缆一端接MPU 主编程部件的EPROM 适配器,另一端与要编程的目的板中待配置FLEX 器件连接起来,向FLEX 器件提供5 个信号,配置数据取自MAX+PLUSⅡ 软件编译形成的SRAM目标文件(* 。SOF)4 ) 在线重新配置 FLEX8000进入用户状态后,随时都可以置换器件内的配置数据,这个过程叫做在线重新配置,(in-circuit-configuration )或在系统编程(isp—in system programmable)

5 ) MAX+PLUSⅡ 配置与编程支持该软件可以产生4 种不同的类型的编程文件: SRAM文件 该文件(SRAM Object File )(*.SOF)用于被动串行配置,可使用MAX+PLUSⅡ 编程

- 17 -

Page 18: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

器、FLEX 卸栽电缆和ALTERA 编程部件将数据直接装入系统中的FLEX8000,利用该文件可以生成POF、TTF和HEX 文件 编程目标文件 该文件(Programer Object File)(*.POF)用于主动串行配置(AS )ALTERA 的配置EPROM ,MAX+PLUSⅡ 软件为每一个设计自动生成一个POF文件。 十六进制文件(Inter 格式文件) 该文件(Hexadecimal File )(*.HEX) 是Inter HEX 格式的ASCⅡ 文件,使用 APU 或APD 方式配置FLEX8000时需使用标准的并行EPROM ,通用烧录器可以完成此项工作, 列表文本文件 该文件(Tabular Text File)(*.TTF) 是一个表格式的文件,它提供的是逗号分割开的文件,可以用于PPA、PPS和一位宽的PS 方式配置数据。6 ) 配置过程见第四章。

- 18 -

Page 19: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言

第 三 章 VHDL 硬 件 描 述 语 言

第 一 节 学 好 VHDL的 重 要 性近十年由于超大规模集成电路和软件技术的快速发展,使数字系统集成到一片集成电路内

成为可能,Altera 、Xilinx 、AMD 等公司都推出了非常好的CPLD 和FPGA 产品,并为这些产品的设计配备了设计、下载软件,这些软件除了支持图形方式设计数字系统外,还支持设计多种数字系统的设计语言,使数字系统设计起来更加容易,可以说数字电子技术的设计进入了一个新时代。在小规模数字集成电路就要淘汰的今天,作为一个电类专业的毕业生应该熟悉VHDL语言

和CPLD 、FPGA 器件的设计,阎石教授新编写的教材也加入了VHDL语言方面的内容,可见使用VHDL语言将数字系统集成到一块集成电路中是现在数字电子技术教学的重要内容。要让同学学会VHDL,教师首先应该自己先学会,但是学习VHDL语言需要能提供文件输

入,逻辑综合、编译和仿真的语言环境,现在向各位推荐一个语言环境—ALTERA公司的Max+plusⅡ 软件,该软件可以以图形方式、文本方式和波形方式输入数字电路设计文件,其中文本方式支持VHDL、AHDL和VERILOG 硬件描述语言,该软件中有多个元件库(全系列TTL, 宏功能,巨功能库),可以指定MAX7000和10K10 系列的两个ALTERA 器件、器件管脚和逻辑综合方式等等,经过编译形成的下载文件可以通过编程硬件对器件进行编程,该软件可以进行错误定位和设计规则检查,该功能使设计更加简单易行。该软件支持VHDL,87 和93 两个版本,并具备有全部VHDL 支持库。该软件可以帮助学习使用ALTERA公司CPLD 产品,ALTERA公司CPLD 产品代表着PLD

的发展方向,与XILINX 公司的FPGA 产品水平互见高低,尤其是该公司的AHDL语言使设计数字系统更加容易。该软件是该软件系列中的10.2学生版(目前工业版是8.0 ,售价2000元,只能一个用户使

用),已经被解密,因而可以容易的安装到任何计算机上使用,这一点特别适用于教学。该软件可以完成输入设计文件、指定器件和管脚、编译,仿真和下载(需要硬件)全过程。

若无硬件除下载不能进行外,其它步骤都可以进行,可见对于教学使用是非常好的一个软件。该软件由WINDOWS 95 平台支持,占硬盘空间120 兆左右,菜单精练,使用简便,实在

是一个不可多锝的学习VHDL语言的环境。为方便各位老师使用该软件,为软件编写了配套教材《数字系统设计》,该教材共170 页,

其中包含VHDL语言、CPLD 介绍、AHDL语言和Max+plusⅡ 软件四部分,教材中有大量的有关VHDL、AHDL语言使用的例题,特别是一步一步学习软件、使用VHDL、AHDL语言的例题可以帮助您达到事半功倍的学习效果。教材中每一个例题都经过Max+plusⅡ 软件编译以证明该例题的正确性,大部分例题给出了

仿真结果。该软件和教材可以帮助您学会VHDL语言并开展CPLD 的教学工作,使教学更上一个台阶,满足培养跨世纪人才的需求。

- 19 -

Page 20: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第 二 节 VHDL 语 言

数字系统设计分为硬件设计和软件设计 , 但是随着计算机技术、超大规模集成电路( CPLD 、 FPGA )的 发展 和硬 件描 述语 言( HDL, Hardware Description Language)的出现,软、硬件设计之间的界限被打破,数字系统的硬件设计可以完全用软件来实现,只要掌握了HDL 语言就可以设计出各种各样的数字逻辑电路。

1.1 老的硬件设计方法老的硬件设计方法有如下几个特征:

(1 ) 采用自下而上的设计方法 使用该方法进行硬件设计是从选择具体元器件开始,并用这些元器件进行逻辑电路设计,从而完成系统的硬件设计,然后再将各功能模块连接起来,完成整个系统的硬件设计,(2 ) 采用通用逻辑元器件

通常采用74 系列和CMOS4000 系列的产品进行设计(3 ) 在系统硬件设计的后期进行调试和仿真

只有在部分或全部硬件电路连接完毕,才可以进行电路调试,一旦考虑不周到,系统设计存在较大缺陷,则要重新设计,使设计周期延长。

(4 ) 设计结果是一张电路图当设计调试完毕后,形成电原理图,该图包括元器件型号和信号之间的互连关系等等。

老的硬件设计方法已经使用了几十年,是广大电子工程师熟悉和掌握的一种方法,但是现在这种方法老了,不仅方法老了,就连使用的元器件也老了。

1.2 使用HDL 的硬件设计方法 所谓硬件描述语言,就是利用一种人和计算机都能识别的语言来描述硬件电路的功能,信号连接关系及定时关系,它可以比电原理图更能表示硬件电路的特性。该方法有如下特征:

(1 ) 支持自顶向下的设计方法 所谓自顶向下的设计方法就是从系统的总体要求出发,自顶向下分三个层次对系统硬件进行设计。 第一个层次是行为描述,所谓行为描述,实际就是对整个系统的数学模型的描述,在行为描述阶段,并不真正考虑其实际操作和算法怎么实现,而是考虑系统的结构和工作过程是否能达到系统设计规格书的要求。 第二个层次是数据流描述,又称为寄存器描述或RTL方式描述,该描述比行为描述更

- 20 -

Page 21: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言注重硬件的具体实现,通过该描述可以导出系统的逻辑表达式,为逻辑综合作准备,当然进行逻辑综合和逻辑综合工具的能力有关,当然设计人员还必须了解逻辑综合工具的说明和规定, 第三个层次为逻辑综合。该层次把RTL 描述的程序转换成基本逻辑元件表示的文件,该文件就象老的设计方法中的电原理图。(2 ) 采用大量的ASIC 芯片(3 ) 早期仿真以确定系统的可行性(4 ) 使设计更容易

只需写出系统的HDL 源程序文件,其它由计算机去做(5 ) 全部设计文件就是HDL 源程序文件

1.3 VHTL 硬件设计语言 当前ASIC 制造商都自己开发了HDL 语言,但是都不通用,只有美国国防部开发的VHDL语言成为了IEEE. STD_1076标准,并在全世界得到了承认。该语言集成了各种HDL 语言的优点,使数字系统设计更加简单和容易。VHDL语言

是一个规模庞大的语言, 在使用它之前完全学会它是很难的, 本书介绍的只是VHDL语言的一部分。

1.4 VHDL 语言的基本结构VHDL 语 言 通 常 包 含 实 体 (Entity) , 构 造 体 (Architecture) , 配 置

(Configuration) ,包集合(Package),和库(Library) 五部分. 其中实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;建立输入和输出之间的关系;配置语句安装具体元件到实体—结构体对,可以被看作是设计的零件清单;包集合存放各个设计模块共享的数据类型、常数和子程序等;库是专门存放预编译程序包的地方。如下详细介绍。1.4.1 基本设计单元

VHDL的基本设计单元就是实体,无论数字电路复杂还是简单,都是由实体和构造体组成。

(1) 实体说明实体说明有如下结构:ENTITY 实体名 IS[ 端口说明]END 实体名;(VHDL 语言中不分大小写字母)

其中: 端口说明是对设计实体中输入和输出借口进行描述,格式如下: PORT (端口名(,端口名):方向 数据类型名;

- 21 -

Page 22: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

: : 端口名(,端口名):方向 数据类型名) ; 端口名是赋予每个系统引脚的名称,一般用几个英文字母组成。端口方向是定义引脚是输入还是输出,见下表:方向 说明IN 输入到实体OUT 从实体输出输出INOUT 双向BUFFER 输出(但可以反馈到实体内部)LINKAGE 不指定方向常用的端口数据类型有两种:BIT 和BIT_VECTOR ,当端口被说明为BIT 时,只能

取值“1” 或“0” ,当端口被说明为BIT_VECTOR 时,它可能是一组二进制数。例: PORT(n0, n1, select: IN BIT; q: OUT BIT; bus: OUT BIT_VECTOR(7 DOWNTO 0));本例中,n0, n1, select 是输入引脚,属于BIT 型,q 是输出引脚,BIT 型,bus

是一组8 位二进制总线,属于BIT_VECTOR, 例: LIBRARY IEEE; USE IEEE.STD_LOGIC.1164.ALL; ENTITY mm IS PORT(n0,n1,select: IN STD_LOGIC; Q : OUT STD_LOGIC; Bus : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END mm;在此例中端口数据类型取自IEEE 标准库(该库中有数据类型和函数的说明),其中

STD_LOGIC 取值为“0” ,“1” ,“X” 和“Z” 。因为使用了库所以在实体说明前要增加库说明语句。

(2) 构造体 构造体是实体的一个重要部分,每一个实体都有一个或一个以上的构造体。

1) 一般说明构造体格式如下:ARCHITECTURE 构造体名 OF 实体名 IS[ 定义语句] 内部信号,常数,数据类型,函数等的定义

- 22 -

Page 23: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言BEGIN [并行处理语句]END 构造体名;例: ENTITY nax IS PORT(a0,a1 : IN BIT; Sel : IN BIT; Sh : OUT BIT); END nax; ARCHITECTURE dataflow OF nax IS BEGIN sh<=(a0 AND sel) OR (NOT sel AND a1); END dataflow;构造体描述设计实体的具体行为,它包含两类语句: 并行语句 并行语句总是在进程语句(PROCESS )的外部,该语句的执行与书写顺序无关,总是同时被执行

顺序语句 顺序语句总是在进程语句(PROCESS )的内部,从仿真的角度,该语句是顺序执行的

一个构造体包含几个类型的子结构描述,这些描述是:* BLOCK 描述(块描述)* PROCESS 描述(进程描述)* SUNPROGRAMS 描述(子程序描述)

2) BLOCK 语句描述使用BLOCK 语句描述的格式如下:块标号:BLOCK BEGIN : : END BLOCK 块标号:例: 二选一电路 ENTITY mux IS PORT (d0,d1,sel: IN BIT; q: OUT BIT); END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp1,tmp2,tmp3: BIT; BEGIN cale:

- 23 -

Page 24: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

BLOCK BEGIN tmp1<=d0 AND sel; tmp2<=d1 AND (NOT sel); tmp3<=tmp1 OR tmp2; q<=tmp3; END BLOCK cale; END connect;在对程序进行仿真时,BLOCK 中的语句是并行执行的,与书写顺序无关,这一点和

构造体中直接写的语句是一样的。3 ) 进程(PROCESS )描述进程描述的格式如下:[ 进程名] :PROCESS (信号1 ,信号2 ,。。。)BEGIN : :END PROCESS 进程名;* 一般用于组合电路进程模式:__进程标记:PROCESS (__ 信号名, __ 信号名, __ 信号名)VARIABLE __ 变量名 : STD_LOGIC;VARIABLE __ 变量名 : STD_LOGIC;BEGIN-- 指定信号-- 指定变量-- 过程调用-- 如果语句-- CASE 语句-- 循环语句END PROCESS __ 进程标记;* 用于时序电路进程模式:__进程标记:PROCESS (__ 信号名, __ 信号名, __ 信号名)VARIABLE __ 变量名 : STD_LOGIC;VARIABLE __ 变量名 : STD_LOGIC;BEGINWAIT UNTIL __ 时钟信号 = '1';-- 指定信号-- 指定变量

- 24 -

Page 25: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言-- 过程调用-- 如果语句-- CASE 语句-- 循环语句END PROCESS __ 进程标记;例:

ENTITY mux1 IS PORT (d0,d1,sel: IN BIT; q : OUT BIT); END mux1; ARCHITECTURE connect OF mux1 ISBEGIN cale: PROCESS(d0,d1,sel) VARIABLE tmp1,tmp2,tmp3 : BIT;-- 在进程中定义的变量 BEGIN tmp1:=d0 AND sel; -- 输入端口向变量赋值 tmp2:=d1 AND (NOT sel); tmp3:=tmp1 OR tmp2; q<=tmp3; END PROCESS cale; END connect;在PROCESS 中的语句是顺序执行的,这一点和BLOCK 中的语句是不一样的。当PROCESS 所带的信号量发生变化时,PROCESS 中的语句就会执行一遍。4) 子程序描述子程序的概念和其它高级程序中子程序的概念相同,在VHDL中有两种类型: 过程(Procedure ) 函数(Function )

1. 过程的格式:PROCEDURE 过程名(参数1 ,参数2 。。。。) IS[ 定义变量语句]BEGIN [ 顺序处理语句]END 过程名;例: PROCEDURE vector_to_int (z : IN STD_LOGIC_VECTOR; x_flag : OUT BOOLEAN; q : IN INTEGER) IS

- 25 -

Page 26: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

BEGIN q:=0; x_flag:=FALSE; FOR i IN z RANGE LOOP q:=q*2; IF(z(i)=1) THEN q:=q+1; ELSEIF (z(i)/=10) THEN x_flag:=TRUE; END IF; END LOOP;END vector_to_int;在过程中,语句是顺序执行的。2 .函数函数的格式:FUNCTION 函数名(参数1 ,参数2 。。。。) RETURN 数据类型名 IS[ 定义变量语句]BEGIN [ 顺序处理语句]RETURN [返回变量名] ;END 函数名;

在VHDL 语言中函数的参数都是输入信号,例:

FUNCTION min(x,y:INTEGER ) RETURN INTEGER ISBEGIN IF X<Y THEN RETURN(x); ELSE RETURN(y); END IF;END min;

1.4.2 2 包、库和配置

(1) 库库是经编译后的数据的集合,它存放包定义、实体定义、构造定义和配置定义。在设计单元内的语句可以使用库中的结果,所以,库的好处就是设计者可以共享已经

编译的设计结果,在VHDL中有很多库,但他们相互独立。- 26 -

Page 27: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言IEEE 库:在IEEE 库中有一个STD_LOGIC 的包,它是IEEE 正式认可的包。STD 库:STD 库是VHDL的标准库,在库中有名为STANDARD 的包,还有TEXTIO包。若使用STANDARD 包中的数据可以不按标准格式说明,但是若使用TEXTIO 包,则需要按照如下格式说明:

LIBRARY STD ;USE STD.TEXTIO.ALL另外还有ASIC 库、WORK 库和用户自定义库等。

库的使用:在使用库之前,一定要进行库说明和包说明,库和包的说明总是放在设计单元的前面:LIBRARY 库名;USE LIBRARY name.package.name.ITEM.name

例:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL该例说明要使用IEEE 库中的1164 包中所有项目

库的作用范围:库的作用范围从一个实体说明开始到它所属的结构体、配置为止,当有两个实体时,

第二个实体前要另加库和包的说明。(2) 包 通常在一个实体中对数据类型、常量等进行的说明只可以在一个实体中使用,为使这些说明可以在其它实体中使用,VHDL 提供了程序包结构,包中罗列VHDL中用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义,它是一个可编译的设计单元,也是库结构中的一个层次,使用包时可以用USE语句说明,例如: USE IEEE.STD_LOGIC_1164.ALL程序包分为包头和包体,包结构的格式如下:1) 包头格式:PACKAGE 包名 IS [ 说明语句]END 包名包头中列出所有项的名称。2) 包体格式:PACKAGE BODY 包名 IS [ 说明语句]END 包名;包体给出各项的具体细节。例:包头USE STD.STD.LOGIC.ALLPACKAGE logic IS TYPE three_level_logic IS (‘0’,’1’,’z’); // 数据类型项目

- 27 -

Page 28: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

CONSTANT unknown_value : three_level_logic :=’0’;//常数项目 FUNCTION invert (input: three_level_logic)// 函数项目 RETURN three_level_logic;END logic;例:包体PACKAGE BODY logic IS FUNCTION invert (input: three_level_logic)// 函数项目描述 BEGIN CASE input IS WHEN ‘0’ => RETURN ‘1’; WHEN ‘1’ => RETURN ‘0’; WHEN ‘Z’ => RETURN ‘Z’; END CASE; END invert;END logic该包使用例:USE logic.three_level_logic, logic.invert; //使用数据类型和函数两个项目ENTITY inverter IS PORT(x: IN three_level_logic ; y: OUT three_level_logic);END inverter;ARCHITECTURE inverter_body OF inverter ISBEGIN kk: PROCESS BEGIN Y<=invert(x) AFTER 10ns; WAIT ON x; END PROCESS; END inverter_body;

(2) 配置用于在多构造体中的实体中选择构造体,例如,在做RS 触发器的实体中使用了两个

构造体,目的是研究各个构造体描述的RS 触发器的行为性能如何,但是究竟在仿真中使用哪一个构造体的问题就是配置问题。

配置语句格式:CONFIGURATION 配置名 OF 实体名 IS[ 说明语句]END  配置名;

- 28 -

Page 29: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言例:最简单的配置

CONFIGURATION 配置名 OF 实体名 IS FOR 被选构造体名 END FOR ; END  配置名;  

例:ENTITY rs ISPORT(set,reset:IN BIT; q,qb: BUFFER BIT);END rs;ARCHITECTURE rsff1 OF rs IS COMPONENT nand2 PORT(a,b: IN BIT; c: OUT BIT); END COMPONENT;BEGIN U1:nand2 PORT MAP(a=>set, b=>qb, c=>q) U2:nand2 PORT MAP(a=>reset, b=>q, c=>qb)END rsff1;

ARCHITECTURE rsff2 OF rs ISBEGIN q<=NOT(qb AND set); qb<=NOT(q AND reset);END rsff2

两个构造体, 可以用配置语句进行设置:CONFIGRATION rscon OF rs IS //选择构造体rsff1FOR rsff1END FOR;END rscon;

1.4.3 VHDL 中使用的数据类型和运算操作VHDL可以象其它高级语言一样定义数据类型,但还可以用户自己定义数据类型。

(1) 信号、常量和变量信号:通常认为信号是电路中的一根线常数:可以在数字电路中代表电源、地线等等变量:可以代表某些数值1 . 常数

- 29 -

Page 30: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

常数的描述格式:CONSTANT 常数名:数据类型:=表达式

例: CONSTANT Vcc: REAL:=5.0; CONSTANT DALY: TIME:=100ns; CONSTANT FBUS: BIT_VECTOR:=”0101”;2 . 变量变量只能在进程、函数和过程中使用,一旦赋值立即生效。变量的描述格式:VARIABLE 变量名:数据类型 约束条件:=表达式

例: VARIABLE x, y: INTEGER; VARIABLE count: INTEGER RANGE 0 TO 255:=10;3 . 信号

信号除了没有方向的概念以外几乎和端口概念一致。信号的描述格式:SIGNAL 信号名:数据类型 约束条件:=表达式

例: SIGNAL sys_clk: BIT:=’0’; SIGNAL ground: BIT:=’0’在程序中,信号值输入信号时采用代入符”<=” ,而不是赋值符“:=” ,同时信号可以附加延时。信号传送语句: s1<=s2 AFTER 10ns信号是一个全局量,可以用来进行进程之间的通信4 . 信号与变量的区别

信号赋值可以有延迟时间,变量赋值无时间延迟信号除当前值外还有许多相关值,如历史信息等,变量只有当前值进程对信号敏感,对变量不敏感信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见

信号可以看作硬件的一根连线,但变量无此对应关系

1.4.4 VHDL 中的数据类型(1 ) 标准数据类型1 . 整数(INTEGER )范围:-2147483547---2147483646

2 . 实数(REAL )范围:-1.0E38---1.0E38

书写时一定要有小数。- 30 -

Page 31: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言3 . 位(BIT )在数字系统中,信号经常用位的值表示,位的值用带单引号的‘1’和‘0’来表示明确说明位数值时:BIT‘(‘1’)

4 .位矢量(BIT_VECTOR ) 位矢量是用双引号括起来的一组位数据 “010101”5 . 布尔量(BOOLEAN)只有“真”和“假”两个状态,可以进行关系运算

6 . 字符(CHARACTER ) 字符量通常用单引号括起来,对大小写敏感明确说明1 是字符时:CHARACTER‘ (‘1’)

7 . 字符串(STRING) 字符串是双引号括起来的一串字符: “laksdklakld”8 . 时间(TIME )时间的单位:fs,ps,ns,ms,sec,min,hr例: 10 ns整数数值和单位之间应有空格

9 . 错误等级(SEVERITY LEVEL )用来表示系统的状态,它共有4 种:NOTE(注意)WARNING(警告)ERROR (错误)FAILURE (失败)

10. 大于等于零的整数(NATURAL) 、正整数(POSITIVE )只能是正整数

数据除定义类型外,有时还需要定义约束范围。例: INTEGER RANGE  100 DOWNTO 0 BIT_ VECTOR (3 DOWNTO 0) REAL RANGE 2.0 TO 30.0

(2) 用户定义的数据类型用户定义的数据类型的一般格式:TYPE 数据类型名 { ,数据类型名} 数据类型定义不完整的数据类型格式:TYPE 数据类型名 { ,数据类型名} ;可由用户定义的数据类型为:* 枚举(ENUMERATED)

- 31 -

Page 32: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

格式:TYPE 数据类型名 IS(元素、元素、…);例1 : TYPE week IS(Sun,Mon,Tue,wed,Thu,Fri,Sat);例2 : TYPE STD_LOGIC IS (‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-‘) ;* 整数(INTEGER )格式:TYPE 数据类型名 IS 数据类型定义 约束范围例:TYPE digit IS INTEGER RANGE 0 TO 9* 实数(REAL )格式:TYPE 数据类型名 IS 数据类型定义 约束范围例:TYPE current IS REAL RANGE -1E4 TO 1E4* 数组(ARRAY )格式:TYPE 数据类型名 IS ARRAY 范围 OF 原数据类型名;例:TYPE word IS ARRAY (1 TO 8) OF STD_LOGIC;

TYPE word IS ARRAY (INTEGER 1 TO 8) OF STD_LOGIC;TYPE instruction IS (ADD,SUB,INC,SRL,SRF,LDA,LDB);SUBTYPE digit IS INTEGER 0 TO 9;TYPE indflag IS ARRAY (instruction ADD TO SRF) OF digit;

数组常在总线、ROM 和RAM 中使用。 * 时间(TIME )格式: TYPE  数据模型名不副实 IS 范围 UNITS 基本单位 单位; END UNITS;TYPE  time RANGE –1E18 TO 1E18UNITS fs;ps=1000 fs;ns=1000 ps;us=1000 ns;ms=1000 us;sec=1000 ms;min=60 sec;hr=60 min;END UNITS;* 记录(RECODE )将不同的数据类型放在一块,就是记录类型数据格式:TYPE 数组类型名 IS RECORD 元素名:数据类型名; 元素名:数据类型名; :

- 32 -

Page 33: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言 :

END RECORD;例:TYPE bank IS RECORD

addr0: STD_LOGIC_VECTOR(7 DOWNTO 0);addr1: STD_LOGIC_VECTOR(7 DOWNTO 0);r0: INTEGER;END RECORD; 存取(ACCESS)文件(FILE )

(3) 数据类型的转换数 据 类 型 转 换 函 数 有 VHDL 语 言 的 包 提 供 , 例 如 :STD_LOGIC_1164,STD_LOGIC_ARITH 等等转换函数见表:函数 说明STD_LOGIC_1164 包TO_STDLOGICVECTOR(A)TO_BITVECTOR(A)TO_LOGIC(A)TO_BIT(A)

由 BIT_VECTOR 转 换 成STD_LOGIC_VECTOR由 STD_LOGIC_VECTOR 转 换 成BIT_VECTOR由BIT 转换成STD_LOGIC由STD_LOGIC 转换成BIT

STD_LOGIC_ARITH 包CONV_STD_LOGIC_VECTOR(A,位长)CONV_INTEGER(A)

由INTEGER,UNSIGNED 和SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED 和SIGNED转换成INTEGER

STD_LOGIC_UNSIGNED 包CONV_INTEGER STD_LOGIC_VECTOR 转换成INTEGER

例:由STD_BIT_VECTOR转换成INTEGERLIBRARY  IEEEUSE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALLENTITY add5 IS PORT(num: IN STD_LOGIC_VECTOR(2 DOWNTO 0); : : ); END add5;ARCHITECTURE rtl OF add5 IS

- 33 -

Page 34: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

SIGNAL in_num: INTEGER RANGE 0 TO 5; : :BEGIN

  In_num<=CONV_INTEGER(num);END rtl;

(5 )有关BIT_VECTOR 和STD_BIT_VECTOR 的语句例:SIGNAL a: BIT_VECTOR(11 DOWNTO 8);SIGNAL b: STD_LOGIC_VECTOR(11 DOWNTO 0);a<=X”A8”; 十六进制可以赋予位矢量b<=X”A8”; 十六进制不可以赋予逻辑矢量,所以此句错,逻辑量中只能赋予二进

制b<=TO_STDLOGICVECTOR(X”AF7”); 十六进制变换b<=TO_STDLOGICVECTOR(O”5177”); 八进制变换b<=TO_STDLOGICVECTOR(B”1010_1111_0111”); 三位二进制变换

(6 ) IEEE 标准“STD_LOGIC” 和”STD_LOGIC_VECTOR”1993 年制定的标准IEEE STD1164 对STD_LOGIC 的值做如下规定:‘U’ 初始值‘X’ 不定‘0’0‘1’1‘Z’ 高阻‘W’ 弱信号不定‘L’ 弱信号0‘H’ 弱信号1‘-’不可能情况1.4.5 VHDL 语言的运算操作符

优先级别 类型 操 作符

说明高 逻辑运算符 AND 逻辑与

OR 逻辑或NAND 逻辑与非NOR 逻辑或非XOR 逻辑异或

关系运算符 = 等号- 34 -

Page 35: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言

/= 不等号< 小于> 大于<= 小于等于>= 大于等于

加、减、并置运算符

+ 加- 减& 并置

正负运算符 + 正- 负

乘除法运算符 * 乘/ 除MOD 取模REM 取余** 指数ABS 取绝对值NOT 取反

(1) 逻辑运算符要求运算符左右的数据类型必须相同,

例:x<=(a AND b) OR (NOT c AND d);x<=b AND a AND d AND e;x<=b OR c OR d OR e;x<=a XOR d XOR e;a<=(x1 AND x2) OR (y1 AND y2);

(2) 算数运算符在使用乘法运算符时,应该特别慎重,因为它可以使逻辑门数大大增加。

(3) 关系运算符应该注意小于等于<= 和代入运算符的不同(从上下文区别)

(4) 并置运算符 并置运算符 ”&” 用于位连接, 例如: y(0)=b(0)&en y(1)=b(1)&en y(2)=b(2)&en y(3)=b(3)&en

- 35 -

Page 36: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

y(4)=a(0) y(5)=a(1) y(6)=a(2) y(7)=a(3)从上可以看出a,b 是四位长度的矢量, 而y 的位长是7 位, 上述情况可以表示成: tmp_b<=b AND (en&en&en&en);

y<= a&tmp_b;若是位连接, 可以简单写为: tmp_b<=b AND (en,en,en,en);

1.4.5 VHDL 语言构造体的描述方式 有三种描述方式:行为描述,RTL 描述和ASIC 描述,采用后两种描述方式可以进行逻辑综合。(1 ) 行为描述

描述数字系统的行为,主要用于仿真和系统工作原理的研究。下面介绍一些专用语句。

1 ) 代入语句格式: 信号量<= 敏感信号量表达式;例如: z<=a NOR(b NAND c);该例中有三个敏感量,无论哪一个发生变化都可以使z 变化。具有时间延迟的代入语句:a<=b AFTER 10 ns表示当b 发生变化10 ns 后a 才变化。例:与门电路

ENTITY and2 IS PORT(a,b : IN BIT; c : OUT BIT); END and2; ARCHITECTURE and2_behave OF and2 IS BEGIN c<=a AND b; END and2_behave;2 )延时语句

VHDL中有两种延时语句:惯性延时和传输延时。* 惯性延时 VHDL 中惯性延时是缺省的,因为逻辑硬件电路总是有时间延迟的,若延迟时间是20ns ,那末输入信号时间若小于20ns ,则输出信号将不跟随输入信号的变化。

- 36 -

Page 37: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言 有时为使延迟时间更逼真实际电路,就专门设置惯性时间:

b<=a AFTER 10 ns;* 传输延时 传输延时常代表总线、连接线的延迟时间,该时间必须专门说明。该传输延时只对信号起纯延时作用。 例: b<=TRANSPORT a AFTER 20 ns;

(2) 数据流描述方式 数据流描述方式是一种可以进行逻辑综合的描述方式,由于要进行逻辑综合所以对使用的语句有一定的限制,VHDL 中的每一个命令和语句都对逻辑综合能力进行了定义,要进行逻辑综合的设计实体就要使用有逻辑综合能力的命令和语句。例:四选一电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux42 IS PORT(input : IN STD_LOGIC_VECTOR(3 DOWNTO 0); Sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0); Y : OUT STD_LOGIC);END mux42;ARCHITECTURE app OF mux42 IS BEGINy<=input(0) WHEN sel=0 ELSE input(1) WHEN sel=1 ELSE input(2) WHEN sel=2 ELSE input(3); END app;使用数据流描述方式应该注意的问题:1 .‘X’ 状态的传递问题 有时‘X’ 状态会逐级传递,造成系统的输出为不确定或者错误,所以要在设计中考虑‘X’ 状态对输出的影响。2. 一些限制 * 禁止在一个进程中使用两个寄存器 * 在IF语句描述寄存器时,禁止ELSE 项

*在寄存器描述中,禁止将变量代入信号 *关连性强的信号应该放在一个进程中

(3) 结构描述方式 注重调用已有的元件、元件或门级电路之间的连线是结构描述的特点, 结构描述可以提高设计效率.

- 37 -

Page 38: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

1) 元件声明语句: 元件声明语句用于调用已生成的元件, 这些元件可能在库中, 也可能是预先编写的元件实体描述.元件语句的格式:COMPONENT 元件名PORT 说明; 端口说明END COMPONENT;元件语句可以在ARCHITECTURE,PACKAGE 和BLOCK 的说明部分.

2) 元件调用:格式: 标号名: 元件名 PORT MAP( 信号,…);两层信号之间的关系为映射关系, 该映射有两种:位置映射例: 有一元件的端口说明为:

port (a,b: in bit; c: out bit);调用该元件时:u2: 元件名 port map(n1,n2,m);这里n1 对应a,n2 对应 b,m对应 c.

名称映射例: 该映射就是将库中已有模块的端口名称, 赋予设计中的信号名. U2: 元件名 port map(a=>n1.b=>n2,c=>m);

1.4.6 VHDL 语言的主要描述语句

(1) 顺序描述语句顺序描述语句只能用在进程和子程序中, 它和其他高级语言一样, 其语句是按照语句

的出现的顺序加以执行的. 如下分别介绍有关的顺序描述语句.

1. WAIT 语句 进程在执行过程中总是处于两种状态: 执行或挂起, 进程的状态变化受等待语句的控制, 当进程执行到等待语句, 就被挂起, 并等待再次执行进程.等待语句的格式:

*WAIT 无限等待* WAIT ON 敏感信号变化格式:WAIT ON 信号[, 信号]例: PROCESS(a,b) BEGIN y<=a AND b;

END PROCESS;- 38 -

Page 39: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言该例中的进程与下例中进程相同:例: PROCESS

BEGIN y<=a AND b;

WAIT ON a,b;END PROCESS;

* WAIT UNTIL 直到条件满足格式: WAIT UNTIL 布尔表达式当进程执行到该语句时, 被挂起; 若布尔表达式为真时, 进程将被启动.例: WAIT UNTIL ((x*10)<100)*WAIT FOR 等到时间到格式: WAIT FOR 时间表达式 当进程执行到该语句时, 被挂起; 等待一定的时间后, 进程将被启动.例: WAIT FOR 20 ns* 多条件WAIT 语句例 : WAIT ON nmi,interrupt UNTIL ((nmi=TRUE) OR (interrupt=TRUE)) FOR 5 us 该等待有三个条件: 第一, 信号nmi和interrupt 任何一个有一次刷新动作 第二, 信号nmi和interrupt 任何一个为真 第三, 等待5 us只要一个以上的条件被满足, 进程就被启动.* 超时等待若在程序中所设置的等待条件永远不会满足, 则进程就永远不能启动, 为防止进入无限等待情况, 应做一些处理.2. 断言语句(ASSERT)格式: ASSERT 条件 [REPORT 输出信息][SEVERITY 级别]执行到断言语句时, 判断条件, 若条件满足就继续执行, 否则输出文字串和错误级别信息.例: ASSERT (tiaojian=’1’)

REPORT “some thing wrong”SEVERITY ERROR;

3. 信号代入语句 格式: 目的信号量<= 信号量表达式例: a<=b;4. 变量赋值语句 格式: 目的变量:= 表达式例: c:=a+d

5. IF 语句1) IF 的门闩控制

- 39 -

Page 40: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

格式:IF 条件 THEN 顺序执行语句 END IF;

例:IF (a=’1’) THENc<=b;END IF;

2) IF 语句的选择控制格式一:IF 条件 THEN 顺序执行语句 ELSE 顺序执行语句 END IF ;

格式二:IF 条件 THEN 顺序执行语句 ELSIF 条件 THEN 顺序执行语句 : : ELSIF 条件 THEN 顺序执行语句 ELSIF 条件 THEN 顺序执行语句 END IF ;

6. CASE 语句常用来描述总线、编码和译码的行为。

格式: CASE 表达式 ISWHEN 条件表达式=> 顺序处理语句END  CASE;

其中WHEN 的条件表达式可以有4 种形式:WHEN 值=> 顺序处理语句WHEN 值| 值| 值|…| 值=> 顺序处理语句WHEN 值TO 值=> 顺序处理语句WHEN OTHERS=> 顺序处理语句

例: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

- 40 -

Page 41: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言 ENTITY mux43 IS PORT(a,b,i0,i1,i2,i3 :IN STD_LOGIC; q : OUT STD_LOGIC); END mux43;

ARCHITECTURE mux4_behave OF mux43 IS SIGNAL sel: INTEGER RANGE 0 TO 3; BEGIN nn: PROCESS(a,b,i0,i1,i2,i3) BEGIN sel<=0; IF (a='1') THEN sel<=sel+1; END IF; IF (b='1') THEN sel<=sel+2; END IF; CASE sel IS WHEN 0 =>q<=i0; WHEN 1 =>q<=i1; WHEN 2 =>q<=i2; WHEN 3 =>q<=i3; END CASE; END PROCESS nn; END mux4_behave;

7. LOOP语句格式一:[标号]: FOR循环变量 IN  离散范围 LOOP 顺序处理语句 END LOOP [ 标号];

例: ASUM: FORi IN 1 TO 9 LOOP sum=1+sum; END LOOP ASUM;例:8位奇偶校验电路 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY pc IS PORT(a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); y : OUT STD_LOGIC);

- 41 -

Page 42: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

END pc; ARCHITECTURE behave OF pc IS BEGIN cbc: PROCESS(a) VARIABLE tmp: STD_LOGIC; BEGIN tmp:='0'; FOR i IN 0 TO 7 LOOP tmp:=tmp XOR a(i); END LOOP; y<=tmp; END PROCESS cbc; END behave;格式二: [标号]: WHILE 条件 LOOP

顺序处理语句 END LOOP [ 标号];

在该语句中, 如果条件为真, 则进行循环, 否则结束循环.例: sum:=0 abcd: WHILE (I<10) LOOP sum:=I+sum; I:=I+1; END LOOP abcd;

8. NEXT语句在LOOP 语句中用NEXT 语句跳出循环.格式: NEXT [ 标号][WHEN 条件];NEXT 语句用于控制内循环的结束.例:PROCESS (a,b)CONSTANT max_limit: INTEGER:=255BEGIN FOR I IN 0 TO max_limit LOOP IF (done(I)=TRUE) THEN NEXT; ELSE done(I):=TRUE; END IF; q(I)<=a(I) AND b(I); END LOOP;

- 42 -

Page 43: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言END PROCESS;

9. EXIT 语句 EXIT 语句用于结束LOOP 循环状态.格式: EXIT [ 标号] [WHEN 条件]例: PROCESS(a)VARIABLE int_a :INTEGER;BEGIN int_a:=a FOR I=0 IN 0 TO max_limit LOOP IF (int_a<=0) THEN EXIT; ELSE int_a:=int_a-1; q(I)<=3.1416/REAL(a*I); END IF END LOOP; y<=q;END PROCESS;

(2) 并发描述语句1. 进程语句在一个构造体中多个PROCESS 语句可以同时并行的执行, 该语句有如下特点:1) 可以和其它进程语句同时执行, 并可以存取构造体和实体中所定义的信号2) 进程中的所有语句都按照顺序执行3) 为启动进程, 在进程中必须包含一个敏感信号表或WAIT 语句4) 进程之间的通信是通过信号量来实现的2. 并发信号代入代入语句在进程中使用是顺序语句, 但是在进程外即在构造体中使用就是并发语句, 相当于一个进程.例: ARCHITECTURE behave OF a_var IS BEGIN Output<=a(I); END behave;可以等效于: ARCHITECTURE behave OF a_var IS BEGIN ss PROCESS(a,I)

- 43 -

Page 44: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

BEGIN Output<=a(I); END PROCESS ss; END behave; 信号代入语句的右边可以是算数表达式, 也可以是逻辑表达式, 还可以是关系表达式,所以可以仿真加法器、乘法器、除法器、比较器和各种逻辑电路。3. 条件信号代入条件代入语句也是并发语句,它可以将符合条件的表达式代入信号量。格式:目的信号量<= 表达式1 WHEN 条件1 ELSE 表达式2 WHEN 条件2 ELSE 表达式3 WHEN 条件3 : ELSE 表达式n;

例: 四选一电路 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux44 IS PORT(i0,i1,i2,i3,a,b:IN STD_LOGIC; q : OUT STD_LOGIC); END mux44; ARCHITECTURE aa OF mux44 IS SIGNAL sel: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN sel<=b & a; q<= i0 WHEN sel="00" ELSE i1 WHEN sel="01" ELSE i2 WHEN sel="10" ELSE i3 WHEN sel="11" ; END aa;

4. 选择信号代入格式: WITH 表达式样 SELECT 目的信号量<= 表达式1 WHEN 条件1 表达式2 WHEN 条件2 : 表达式n WHEN 条件n;该语句很象CASE 语句.例: LIBRARY IEEE;

- 44 -

Page 45: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言 USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux45 IS PORT(i0,i1,i2,i3,a,b :IN STD_LOGIC; q : OUT STD_LOGIC);END mux45;ARCHITECTURE bb OF mux45 IS SIGNAL sel: INTEGER range 0 to 3;BEGIN WITH sel SELECT q<=i0 WHEN 0, i1 WHEN 1, i2 WHEN 2, i3 WHEN 3;sel<=0 WHEN a='0' AND b='0' ELSE 1 WHEN a='1' AND b='0' ELSE 2 WHEN a='0' AND b='1' ELSE 3 WHEN a='1' AND b='1' ;END bb;

5. 并发过程调用语句过程调用语句可以并发执行, 但要注意如下问题:

并发过程调用是一个完整的语句, 在它之前可以加标号 并发过程调用语句应带有IN,OUT 或INOUT 的参数, 他们应该列在过程名后的括号内

并发过程调用可以有多个返回值例: ARCHITECTURE…. BEGIN

vector_to_int(z,x_flag,q);:

END;等同于: ARCHITECTURE…. BEGIN

PROCESS(z,q)BEGIN vector_to_int(z,x_flag,q); :END PROCESS;

END;- 45 -

Page 46: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

1.4.7 基本逻辑电路设计

(1) 组合逻辑电路例1 2输入与非门电路 LIBRARY ieee;USE ieee.std_logic_1164.all;entity xx1 is port(a,b: in std_logic; y: out std_logic); end xx1;architecture nand2pp OF xx1 is begin y<=a nand b; end nand2pp;

例2: 2输入或非门LIBRARY ieee;use ieee.std_logic_1164.all;entity nor2 isport(a,b: in std_logic; y: out std_logic);end nor2;architecture nor_behave of nor2 isbegin y<=a nor b;end nor_behave;

例3 2输入异或门电路library ieee;use ieee.std_logic_1164.all;entity xor2 is port(a,b: in std_logic; y: out std_logic);end xor2;architecture xor_behave of xor2 isbegin y<=a xor b;end xor_behave;

- 46 -

Page 47: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言

例4 3-8 译码器LIBRARY ieee;USE ieee.std_logic_1164.all;entity decoder38 is port(a,b,c,g1,g2a,g2b: in std_logic; y: out std_logic_vector(7 downto 0)); end decoder38;architecture behave38 OF decoder38 issignal indata: std_logic_vector(2 downto 0);begin indata<=c&b&a; process(indata,g1,g2a,g2b) begin if(g1='1' and g2a='0' and g2b='0') then case indata is when "000"=>y<="11111110"; when "001"=>y<="11111101"; when "010"=>y<="11111011"; when "011"=>y<="11110111"; when "100"=>y<="11101111"; when "101"=>y<="11011111"; when "110"=>y<="10111111"; when "111"=>y<="01111111"; when others=>y<="XXXXXXXX"; end case; else y<="11111111"; end if; end process;end behave38;

例5 优先编码器LIBRARY ieee;USE ieee.std_logic_1164.all;entity prior is port( input: in std_logic_vector(7 downto 0); y: out std_logic_vector(2 downto 0)); end prior;architecture be_prior OF prior is

- 47 -

Page 48: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

begin process(input) begin if(input(0)='0') then y<="111"; elsif (input(1)='0') then y<="110"; elsif (input(2)='0') then y<="101"; elsif (input(3)='0') then y<="100"; elsif (input(4)='0') then y<="011"; elsif (input(5)='0') then y<="010"; elsif (input(6)='0') then y<="001"; elsif (input(7)='0') then y<="000"; end if; end process;end be_prior;

例7 四选一选择器LIBRARY ieee;USE ieee.std_logic_1164.all;entity mux4 is port( input: in std_logic_vector(3 downto 0); a,b: in std_logic; y: out std_logic); end mux4;architecture be_mux4 OF mux4 issignal sel: std_logic_vector(1 downto 0);begin sel<=b&a;process(input,sel)beginif(sel="00") then y<=input(0);elsif (sel="01") then

- 48 -

Page 49: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言 y<=input(1);elsif (sel="10") then y<=input(2);else y<=input(3);end if;end process;end be_mux4;

例8 : 加法器LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY adder IS

PORT (op1, op2 : IN UNSIGNED(7 downto 0); result : OUT INTEGER);

END adder;ARCHITECTURE maxpld OF adder ISBEGIN

result <= CONV_INTEGER(op1 + op2);END maxpld;

例9 半加器LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY half IS

PORT (a, b : IN std_LOGIC; s,co : OUT std_LOGIC);

END half;ARCHITECTURE half1 OF half ISsignal c,d :std_logic;BEGIN c<=a or b; d<=a nand b; co<=not d; s<=c and d;end half1;

例10 全加器, 由半加器组成, 以元件方式调用.LIBRARY ieee;

- 49 -

Page 50: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

USE ieee.std_logic_1164.all;ENTITY half IS

PORT (a, b : IN std_LOGIC; s,co : OUT std_LOGIC);

END half;ARCHITECTURE half1 OF half ISsignal c,d:std_logic;BEGIN c<=a or b; d<=a nand b; co<=not d; s<=c and d;end half1;

LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY full IS

PORT (a, b,cin : IN std_LOGIC; s,co : OUT std_LOGIC);

END full;ARCHITECTURE full1 OF full IScomponent half PORT (a, b : IN std_LOGIC;

s,co : OUT std_LOGIC);end component;signal u0_co,u0_s,u1_co:std_logic;begin u0:half port map(a,b,u0_s,u0_co); u1:half port map(u0_s,cin,s,u1_co);co<=u0_co or u1_co;end full1;

例10: 三态门LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY tri IS

PORT (din, en : IN std_LOGIC; dout : OUT std_LOGIC);

END tri;ARCHITECTURE tri1 OF tri IS

- 50 -

Page 51: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言BEGIN tri_gate: process(din,en) begin if (en='1') then dout<=din; else dout<='Z'; end if; end process;end tri1; 例11 三态单向总线LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY bufs IS

PORT (din : IN std_LOGIC_vector(7 downto 0); dout : OUT std_LOGIC_vector(7 downto 0) bus; en : IN std_LOGIC);END bufs;ARCHITECTURE bufs1 OF bufs ISBEGIN process(en,din) begin if (en='1') then dout<=din; else dout<="ZZZZZZZZ"; end if; end process;end bufs1; (2) 时序电路设计1.时钟信号和复位信号1) 时钟信号的描述* 若进程的敏感信号是时钟信号, 这时时钟信号出现在PROCESS 后的括号中.例: process (clock_signal)

begin if (clock_edge_condition) then signal_out<=signal_in :

- 51 -

Page 52: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

其它语句 : end if; end process;* 在进程中用WAIT ON 语句等待时钟 这样的电路没有敏感信号, 进程通常停留在WAIT ON 语句上, 只有时钟信号到来且满足一定条件时, 其余语句才能执行.例: process

begin wait on (clock_signal) until (clock_edge_condition) signal_out<=signal_in; : 其它语句 :

end process;* 敏感表中只能有一个时钟信号* wait on 语句只能放在进程的最前面或者最后面* 时钟的边沿描述 描述时钟一定要指明是上升沿还是下降沿上升沿到来的条件: IF clk=’1’ AND clk’LAST_VALUE=’0’ AND clk’EVENT下降沿到来的条件: IF clk=’0’ AND clk’LAST_VALUE=’1’ AND clk’EVENT关于时钟信号的总结: IF clock_signal=current_value AND

clock_signal’LAST ANDclock_siganl’EVENT

可以简单写为: IF clock_signal=clock_siganl’EVENT AND current_value

例1:对于上升沿D触发器, 其描述为:process(clk,d) begin if(clk’event and clk=’1’) then q<=d; end if; end process;例2:对于上升沿D触发器的另一描述为:process

- 52 -

Page 53: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言 begin

wait until clk’event and clk=’1’; q<=d;

end process;

2.复位信号* 同步复位

当复位信号有效且在给定的时钟边沿到来时, 触发器才被复位.例1: process (clock) begin

if (clock_edge_condition) then if (reset_condition) then signal_out<=reset_value; else signal_out=signal_in; : 其它语句 : end if; end if;

end process;例2: process(clock) if (clock’event and clock=’1’) then if reset=’1’ then count<=’0’; else count<=count+1; end if; end if; end process;此例中, 敏感表中只有时钟信号, 因为只有时钟到来时才能复位.* 异步复位只要复位信号有效, 触发器就被复位, 所以敏感表中除时钟信号外, 还需要复位信号例1: process(reset_signal,clock_signal)

begin if (reset_signal) then signal_out<=reset_value;

- 53 -

Page 54: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

elsif (clock_event and clock_edge_condition) then signal_out<=signal_in; : 其它语句 :end if;

end process;例2: process(clock,reset) begin if reset=’1’ then count<=’0’; elsif clock’event and clock=’1’ then count<=count+1; end if; end process;

3.触发器1) D锁存器LIBRARY ieee;use ieee.std_logic_1164.all;entity dff1 isport(clk,d: in std_logic; q: out std_logic);end dff1;architecture dff1_behave of dff1 isbegin process(clk) begin if (clk'event and clk='1') then q<=d; end if; end process;end dff1_behave;

2) 异步复位D锁存器LIBRARY ieee;use ieee.std_logic_1164.all;entity dff2 is

- 54 -

Page 55: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言port(clk,d,reset: in std_logic; q: out std_logic);end dff2;architecture dff2_behave of dff2 isbegin process(clk,reset) begin if (reset='0') then q<='0'; elsif (clk'event and clk='1') then q<=d; end if; end process;end dff2_behave;

3) 异步复位/ 置位D锁存器LIBRARY ieee;use ieee.std_logic_1164.all;entity dff3 isport(clk,d,reset,set: in std_logic; q: out std_logic);end dff3;architecture dff3_behave of dff3 isbegin process(clk,reset,set) begin if (set='0') then q<='1'; elsif (reset='0') then q<='0'; elsif (clk'event and clk='1') then q<=d; end if; end process;end dff3_behave; 在该例中, 置位优先级最高, 复位次之, 时钟最低.

4) 同步复位/ 置位D触发器LIBRARY ieee;use ieee.std_logic_1164.all;

- 55 -

Page 56: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

entity dff4 isport(clk,d,reset,set: in std_logic; q: out std_logic);end dff4;architecture dff4_behave of dff4 isbegin process(clk) begin if (clk'event and clk='1') then if (set='0') then q<='1'; elsif (reset='0') then q<='0'; else q<=d; end if; end if; end process;end dff4_behave;

5) 异步复/ 置位D触发器LIBRARY ieee;use ieee.std_logic_1164.all;entity jk isport(clk,j,k,reset,set: in std_logic; q,qb: out std_logic);end jk;architecture jk_behave of jk issignal q_s,qb_s: std_logic;begin process(clk,reset,set,j,k) begin if (set='0')and (reset='1') then q_s<='1'; qb_s<='0'; elsif (set='1')and (reset='0') then q_s<='0'; qb_s<='1'; elsif (clk'event and clk='1') then if (j='0') and (k='1') then

- 56 -

Page 57: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言 q_s<='0'; qb_s<='1'; elsif (j='1') and (k='0') then q_s<='1'; qb_s<='0'; elsif (j='1') and (k='1') then q_s<=not q_s; qb_s<=not qb_s; end if; end if; q<=q_s; qb<=qb_s; end process;end jk_behave;

6) 寄存器例ENTITY reginf IS

PORT(

d, clk, clr, pre, load, data : IN BIT;q1, q2, q3, q4, q5, q6, q7 : OUT BIT

);END reginf;

ARCHITECTURE maxpld OF reginf ISBEGIN -- 高电平时钟触发

PROCESSBEGIN WAIT UNTIL clk = '1'; q1 <= d;END PROCESS;-- 低电平时钟触发PROCESSBEGIN WAIT UNTIL clk = '0'; q2 <= d;END PROCESS;-- 上升沿触发/ 同步清除PROCESS (clk, clr)

- 57 -

Page 58: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

BEGIN IF clr = '1' THEN q3 <= '0'; ELSIF clk'EVENT AND clk = '1' THEN q3 <= d; END IF;END PROCESS;

-- 下降沿触发/ 同步清除PROCESS (clk, clr) BEGIN IF clr = '0' THEN q4 <= '0'; ELSIF clk'EVENT AND clk = '0' THEN q4 <= d; END IF;END PROCESS;

--上升沿触发/ 同步预置”1”PROCESS (clk, pre) BEGIN IF pre = '1' THEN q5 <= '1'; ELSIF clk'EVENT AND clk = '1' THEN q5 <= d; END IF;END PROCESS;

-- 上升沿触发/ 同步预置数据-- Register with active-high Clock & asynchronous loadPROCESS (clk, load, data) BEGIN IF load = '1' THEN q6 <= data; ELSIF clk'EVENT AND clk = '1' THEN q6 <= d; END IF;END PROCESS;

-- 上升沿触发/ 同步置”1” 和清除PROCESS (clk, clr, pre)

- 58 -

Page 59: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言BEGIN IF clr = '1' THEN q7 <= '0';

ELSIF pre = '1' THENq7 <= '1';

ELSIF clk'EVENT AND clk = '1' THEN q7 <= d; END IF;END PROCESS;

END maxpld;

7) D触发器组成的8 位移位寄存器.

LIBRARY ieee;use ieee.std_logic_1164.all;entity shift8 isport(a,clk: in std_logic; b: out std_logic);end shift8;architecture shift_behave of shift8 issignal df1,df2,df3,df4,df5,df6,df7: std_logic;begin process(clk) begin if(clk'event and clk='1') then df1<=a; df2<=df1; df3<=df2; df4<=df3; df5<=df4; df6<=df5; df7<=df6; b<=df7; end if;end process;end shift_behave;8) 带请零端的8 位并行输入串行输出移位寄存器(74166)管脚定义: a,b—h 8 位并行输入信号 se 串行输入信号

- 59 -

Page 60: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

q 串行输出信号 clk 时钟信号 fe 时钟信号禁止端 s1 移位装载控制端 reset 复位信号 LIBRARY ieee;use ieee.std_logic_1164.all;entity ttl74166 isport(reset,s1,fe,clk,se,a,b,c,d,e,f,g,h: in std_logic; q: out std_logic);end ttl74166;architecture behave of ttl74166 issignal tmpreg8: std_logic_vector(7 downto 0);begin process(clk,reset,s1,fe) begin if (reset='0') then -- tmpreg8<="00000000"; q<=tmpreg8(7); elsif (clk'event) and (clk='1') then if (fe='0') then if (s1='0') then tmpreg8(0)<=a; tmpreg8(1)<=b; tmpreg8(2)<=c; tmpreg8(3)<=d; tmpreg8(4)<=e; tmpreg8(5)<=f; tmpreg8(6)<=g; tmpreg8(7)<=h; elsif (s1='1') then for i in tmpreg8'high downto tmpreg8'low+1 loop tmpreg8(i)<=tmpreg8(i-1); end loop; tmpreg8(tmpreg8'low)<=se; q<=tmpreg8(7); end if; end if; end if;

- 60 -

Page 61: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言end process;end behave;

9) 十二进制同步计数器引脚定义: reset 复位 en 计数控制 clk 时钟 qa,qb,qc,qd 计数器输出 LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count12 isport(clk,reset,en: in std_logic; qa,qb,qc,qd: out std_logic);end count12;

architecture behave of count12 issignal count_4: std_logic_vector(3 downto 0);begin qa<=count_4(0); qb<=count_4(1); qc<=count_4(2); qd<=count_4(3); process(clk,reset) begin if (reset='0') then count_4<="0000"; elsif(clk'event and clk='1') then if(en='1') then if(count_4="1011") then count_4<="0000"; else count_4<=count_4+'1'; end if; end if; end if; end process;end behave;

- 61 -

Page 62: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

10) 4 位二进制可逆计数器管脚定义: reset 复位 clk 时钟 updn 加减计数控制 qa,qb,qc,qd 输出LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity updown isport(clk,reset,updn: in std_logic; qa,qb,qc,qd: out std_logic);end updown;architecture behave of updown issignal count_6: std_logic_vector(3 downto 0);begin qa<=count_6(0); qb<=count_6(1); qc<=count_6(2); qd<=count_6(3); process(clk,reset) begin if (reset='1') then count_6<="000000"; elsif(clk'event and clk='1') then if(updn='1') then count_6<=count_6+'1'; else count_6<=count_6-'1'; end if; end if; end process;end behave;11) 可预置数的六十进制计数器管脚定义: clk 时钟 bcd1wr 个位预置数控制 bcd10wr 十位预置数控制 datain 预置数据

cin 进位输入( 计数脉冲)- 62 -

Page 63: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言 co 进位输出 bcd1p 个位数据输出 bcd10p 十位数据输出

LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count60 isport(clk,bcd1wr,bcd10wr,cin: in std_logic; co: out std_logic; datain: in std_logic_vector(3 downto 0); bcd1p: out std_logic_vector(3 downto 0); bcd10p: out std_logic_vector(2 downto 0));end count60;

architecture behave of count60 issignal bcd1n: std_logic_vector(3 downto 0);signal bcd10n: std_logic_vector(2 downto 0);begin bcd1p<=bcd1n; bcd10p<=bcd10n; kk1: process(clk,bcd1wr) begin if (bcd1wr='1') then bcd1n<=datain; elsif(clk'event and clk='1') then if (cin='1') then if(bcd1n="1001" ) then bcd1n<="0000"; else bcd1n<=bcd1n+'1'; end if; end if; end if; end process kk1;

kk2: process(clk,bcd10wr) begin if (bcd10wr='1') then bcd10n<=datain(2 downto 0); elsif(clk'event and clk='1') then

- 63 -

Page 64: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

if(cin='1') and (bcd1n="1001") then if(bcd10n="101") then bcd10n<="000"; else bcd10n<=bcd10n+'1'; end if; end if; end if; end process kk2;

kk3: process(bcd10n,bcd1n,cin) begin if(cin='1' and bcd1n="1001" and bcd10n="101") then co<='1'; else co<='0'; end if; end process kk3; end behave;

12) 各种计数器例ENTITY counter IS

PORT(

d : IN INTEGER RANGE 0 TO 255; -- 预置数据clk : IN BIT;--时钟信号clear : IN BIT;--计数器清零ld : IN BIT;--计数器预置数enable : IN BIT;--计数使能up_down : IN BIT;--计数器加减控制qa : OUT INTEGER RANGE 0 TO 255;-- 输出端qb : OUT INTEGER RANGE 0 TO 255; :qc : OUT INTEGER RANGE 0 TO 255; :qd : OUT INTEGER RANGE 0 TO 255;qe : OUT INTEGER RANGE 0 TO 255;qf : OUT INTEGER RANGE 0 TO 255;qg : OUT INTEGER RANGE 0 TO 255;qh : OUT INTEGER RANGE 0 TO 255;qi : OUT INTEGER RANGE 0 TO 255;qj : OUT INTEGER RANGE 0 TO 255;

- 64 -

Page 65: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言qk : OUT INTEGER RANGE 0 TO 255;ql : OUT INTEGER RANGE 0 TO 255;qm : OUT INTEGER RANGE 0 TO 255;qn : OUT INTEGER RANGE 0 TO 255 – 输出端

);

END counter;

ARCHITECTURE a OF counter ISBEGIN

-- 有使能端的计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;BEGIN

IF (clk'EVENT AND clk = '1') THENIF enable = '1' THEN

cnt := cnt + 1;END IF;

END IF;

qa <= cnt;END PROCESS;

--同步预置数计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;BEGIN

IF (clk'EVENT AND clk = '1') THENIF ld = '0' THEN

cnt := d;ELSE

cnt := cnt + 1;END IF;

END IF;qb <= cnt;

END PROCESS;

--同步清除计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;- 65 -

Page 66: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

BEGINIF (clk'EVENT AND clk = '1') THEN

IF clear = '0' THENcnt := 0;

ELSEcnt := cnt + 1;

END IF;END IF;qc <= cnt;

END PROCESS;

--加减计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;VARIABLE direction : INTEGER;

BEGINIF (up_down = '1') THEN

direction := 1;ELSE

direction := -1;END IF;

IF (clk'EVENT AND clk = '1') THENcnt := cnt + direction;

END IF;qd <= cnt;

END PROCESS;

--同步预置/ 计数控制计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;BEGIN

IF (clk'EVENT AND clk = '1') THENIF ld = '0' THEN

cnt := d;ELSE

IF enable = '1' THENcnt := cnt + 1;

END IF;END IF;

- 66 -

Page 67: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言END IF;qe <= cnt;

END PROCESS;

--计数控制的加减计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;VARIABLE direction : INTEGER;

BEGINIF (up_down = '1') THEN

direction := 1;ELSE

direction := -1;END IF;

IF (clk'EVENT AND clk = '1') THENIF enable = '1' THEN

cnt := cnt + direction;END IF;

END IF;qf <= cnt;

END PROCESS;

--同步清除/ 计数控制计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;BEGIN

IF (clk'EVENT AND clk = '1') THENIF clear = '0' THEN

cnt := 0;ELSE

IF enable = '1' THENcnt := cnt + 1;

END IF;END IF;

END IF;qg <= cnt;

END PROCESS;

--同步预置/ 清除计数器- 67 -

Page 68: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

PROCESS (clk)VARIABLE cnt : INTEGER RANGE 0 TO 255;

BEGINIF (clk'EVENT AND clk = '1') THEN

IF clear = '0' THENcnt := 0;

ELSEIF ld = '0' THEN

cnt := d;ELSE

cnt := cnt + 1;END IF;

END IF;END IF;qh <= cnt;

END PROCESS;

--同步预置/ 加减计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;VARIABLE direction : INTEGER;

BEGINIF (up_down = '1') THEN

direction := 1;ELSE

direction := -1;END IF;

IF (clk'EVENT AND clk = '1') THENIF ld = '0' THEN

cnt := d;ELSE

cnt := cnt + direction;END IF;

END IF;qi <= cnt;

END PROCESS;

--同步预置/ 计数控制/ 加减计数器PROCESS (clk)

- 68 -

Page 69: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言VARIABLE cnt : INTEGER RANGE 0 TO 255;VARIABLE direction : INTEGER;

BEGINIF (up_down = '1') THEN

direction := 1;ELSE

direction := -1;END IF;

IF (clk'EVENT AND clk = '1') THENIF ld = '0' THEN

cnt := d;ELSE

IF enable = '1' THENcnt := cnt + direction;

END IF;END IF;

END IF;qj <= cnt;

END PROCESS;

--同步清除/ 预置/ 计数控制计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;BEGIN

IF (clk'EVENT AND clk = '1') THENIF clear = '0' THEN

cnt := 0;ELSE

IF ld = '0' THENcnt := d;

ELSEIF enable = '1' THEN

cnt := cnt + 1;END IF;

END IF;END IF;

END IF;qk <= cnt;

END PROCESS;- 69 -

Page 70: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

--同步清除/ 加减计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;VARIABLE direction : INTEGER;

BEGINIF (up_down = '1') THEN

direction := 1;ELSE

direction := -1;END IF;

IF (clk'EVENT AND clk = '1') THENIF clear = '0' THEN

cnt := 0;ELSE

cnt := cnt + direction;END IF;

END IF;ql <= cnt;

END PROCESS;

-- 同步清除/ 计数控制/ 加减计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;VARIABLE direction : INTEGER;

BEGINIF (up_down = '1') THEN

direction := 1;ELSE

direction := -1;END IF;

IF (clk'EVENT AND clk = '1') THENIF clear = '0' THEN

cnt := 0;ELSE

IF enable = '1' THENcnt := cnt + direction;

END IF;- 70 -

Page 71: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言END IF;

END IF;qm <= cnt;

END PROCESS;

A modulus 200 up counter--模为200的计数器PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;CONSTANT modulus : INTEGER := 200;

BEGINIF (clk'EVENT AND clk = '1') THEN

IF cnt = modulus THENcnt := 0;

ELSEcnt := cnt + 1;

END IF;END IF;qn <= cnt;

END PROCESS;END a;

13) 直接调用小规模数字电路例LIBRARY altera;USE altera.maxplus2.ALL;-- 使用Altera的元件库LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY compinst IS

PORT(

data, clock, clearn, presetn : IN STD_LOGIC;q_out : OUT STD_LOGIC;

a, b, c, gn : IN STD_LOGIC;d : IN STD_LOGIC_VECTOR(7 DOWNTO

0);y, wn : OUT STD_LOGIC

);END compinst;

- 71 -

Page 72: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

ARCHITECTURE a OF compinst IS

BEGIN --D 触发器

dff1 : dff PORT MAP (d =>data, q => q_out, clk => clock, clrn => clearn, prn => presetn);

--TTL74151mux : a_74151b PORT MAP (c, b, a, d, gn, y, wn);

END a;

14) 选择信号如果sel 信号为”1” 时, 选择信号input1, 否则选择信号input0. ENTITY condsig IS

PORT(

input0, input1, sel : IN BIT;output : OUT BIT

);END condsig;ARCHITECTURE maxpld OF condsig ISBEGIN

output <= input0 WHEN sel = '0' ELSE input1;END maxpld;

15) 三信号分别控制输出数值输入信号high =1 输出q=3 mid=1 输出q=2 low=1 输出q=1ENTITY condsigm IS

PORT(

high, mid, low : IN BIT;q : OUT INTEGER

);END condsigm;

ARCHITECTURE maxpld OF condsigm ISBEGINq <= 3 WHEN high = '1' ELSE-- when high

2 WHEN mid = '1' ELSE-- when mid but not high- 72 -

Page 73: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言1 WHEN low = '1' ELSE -- when low but not mid or high0; -- when not low, mid, or high

END maxpld;

16) 由状态机方法描述的模4 加减计数器如果updown=0 状态变化为: zeroonetwothree如果updown=1 状态变化为: zerothreetwooneLIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY enumsmch IS

PORT (

updown : IN STD_LOGIC;clock : IN STD_LOGIC;lsb : OUT STD_LOGIC;msb : OUT STD_LOGIC

);END enumsmch;

ARCHITECTURE firstenumsmch OF enumsmch ISTYPE count_state is (zero, one, two, three);ATTRIBUTE ENUM_ENCODING : STRING;ATTRIBUTE ENUM_ENCODING OF count_state : TYPE IS "11 01 10 00";SIGNAL present_state, next_state : count_state;

BEGIN

PROCESS (present_state, updown)BEGIN

CASE present_state ISWHEN zero =>

IF (updown = '0') THENnext_state <= one;lsb <= '0';msb <= '0';

ELSEnext_state <= three;lsb <= '1';msb <= '1';

END IF;WHEN one =>

- 73 -

Page 74: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

IF (updown = '0') THENnext_state <= two;lsb <= '1';msb <= '0';

ELSEnext_state <= zero;lsb <= '0';msb <= '0';

END IF;WHEN two =>

IF (updown = '0') THENnext_state <= three;lsb <= '0';msb <= '1';

ELSEnext_state <= one;lsb <= '1';msb <= '0';

END IF;WHEN three =>

IF (updown = '0') THENnext_state <= zero;lsb <= '1';msb <= '1';

ELSEnext_state <= two;lsb <= '0';msb <= '1';

END IF;END CASE;

END PROCESS;

PROCESSBEGIN

WAIT UNTIL clock'EVENT and clock = '1';present_state <= next_state;

END PROCESS;END firstenumsmch;

16) 状态机例- 74 -

Page 75: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第三章 VHDL 硬件描述语言ENTITY statmach IS

PORT(clk : IN BIT;input : IN BIT;reset : IN BIT;output : OUT BIT);

END statmach;

ARCHITECTURE a OF statmach ISTYPE STATE_TYPE IS (s0, s1);SIGNAL state : STATE_TYPE;

BEGINPROCESS (clk)BEGIN

IF reset = '1' THENstate <= s0;

ELSIF (clk'EVENT AND clk = '1') THENCASE state IS

WHEN s0=>state <= s1;

WHEN s1=>IF input = '1' THEN

state <= s0;ELSE

state <= s1;END IF;

END CASE;END IF;

END PROCESS;output <= '1' WHEN state = s1 ELSE '0';

END a;

- 75 -

Page 76: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第 四 章 MAX+plus II 开 发 环 境 应 用 简 介

第 一 节 概 述

Max+plusⅡ 是Altera 公司提供的FPGA/CPLD 开发集成环境,Altera 是世界上最大可编程逻辑器件的供应商之一。Max+plusⅡ 界面友好,使用便捷,被誉为业界最易用易学的EDA 软件。在Max+plusⅡ 上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。

Max+plusⅡ 开发系统的特点1 、开放的界面Max+plusⅡ 支持与Cadence ,Exemplarlogic,Mentor Graphics,Synplicty,Viewlogic 和

其它公司所提供的EDA 工具接口。2 、与结构无关Max+plusⅡ 系 统 的 核 心 Complier 支 持 Altera 公 司 的

FLEX10K 、FLEX8000 、FLEX6000 、MAX9000 、MAX7000 、MAX5000 和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。

3 、完全集成化Max+plusⅡ 的设计输入、处理与较验功能全部集成在统一的开发环境下,这样可以加快动

态调试、缩短开发周期。4 、丰富的设计库Max+plusⅡ 提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻

辑功能(Macro-Function )以及新型的参数化的兆功能(Mage-Function )。5 、模块化工具设计人员可以从各种设计输入、处理和较验选项中进行选择从而使设计环境用户化。6 、硬件描述语言(HDL )Max+plusⅡ 软件支持各种HDL 设计输入选项,包括VHDL、Verilog HDL 和Altera 自己

的硬件描述语言AHDL。7 、Opencore特征Max+plusⅡ 软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。

第 二 节 Max+plusⅡ 功 能 简 介

1 、原理图输入(Graphic Editor )MAX+PLUSII 软件具有图形输入能力, 用户可以方便的使用图形编辑器输入电路图,

图中的元器件可以调用元件库中元器件, 除调用库中的元件以外, 还可以调用该软件中的符号功能形成的功能块. 图形编辑器窗口见图(一)。

- 76 -

Page 77: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第五章 实验系统的硬件结构2 、硬件描述语言输入(Text Editor )

MAX+PLUSII 软件中有一个集成的文本编辑器 , 该编辑器支 持 VHDL,AHDL和Verilog 硬件描述语言的输入, 同时还有一个语言模板使输入程序语言更加方便, 该软件可以对这些程序语言进行编译并形成可以下载配置数据,文本编辑器窗口见图(二)。

3、波形编辑器( Waveform Editor)在进行逻辑电路的行为仿真时,需要在所设计电路的输入端加入一定的波形,波形编辑器

可以生成和编辑仿真用的波形(*.SCF文件),使用该编辑器的工具条可以容易方便的生成波形和编辑波形。波形编辑器窗口如图(三)所示。使用时只要将欲输入波形的时间段用鼠标涂黑,然后选择工具条中的按钮,例如,如果要某一时间段为高电平,只需选择按钮 ”1” 。

还可以使用输入的波形(*.WDF 文件) 经过编译生成逻辑功能块,相当于已知一个芯片的输入输出波形,但不知是何种芯片,使用该软件功能可以解决这个问题,设计出一个输入和输出波形相同CPLD 电路。4、管脚(底层)编辑窗口(Floorplan Editor)

该窗口用于将已设计好逻辑电路的输入输出节点赋予实际芯片的引脚, 通过鼠标的拖拉,方便的定义管脚的功能。管脚(底层)编辑窗口见图(四)。

5、自动错误定位在编译源文件的过程中,若源文件有错误,Max+Plus2 软件可以自动指出错误类型和

错误所在的位置。6、逻辑综合与适配

该软件在编译过程中,通过逻辑综合 (Logic Synthesizer) 和适配(Fitter) 模块, 可以把最简单的逻辑表达式自动的吻合在合适的器件中。7、设计规则检查

选取Compile\Processing\Design Doctor 菜单,将调出规则检查医生,该医生可以按照三种规则中的一个规则检查各个设计文件,以保证设计的可靠性。一旦选择该菜单,在编译窗口将显示出医生,用鼠标点击医生,该医生可以告诉你程序文件的健康情况。见图(五)。

- 77 -

图三 波形编辑器窗口

图一 图形编辑器窗口 图二 文本编辑器窗口

图四 管脚(底层)编辑窗口

Page 78: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

8、多器件划分(Partitioner)如果设计不能完全装入一个器件,编译器中的多器件划分模块,可自动的将一个设计分成

几个部分并分别装入几个器件中,并保证器件之间的连线最少。9、编程文件的产生 编译器中的装配程序(Assembler) 将编译好的程序创建一个或多个编程目标文件:

EPROM 配置文件(*.POF)例如,MAX7000 S系列SRAM文件(*.SCF)例如,FLEX8000 系列的配置芯片EPROMJEDEC 文件(*.JED)十六进制文件(*.HEX)文本文件(*.TTF)串行BIT 流文件(*.SBF)

10 、仿真当设计文件被编译好, 并在波形编辑器中将输入波形编辑完毕后, 就可以进行行为仿真

了, 通过仿真可以检验设计的逻辑关系是否准确.11 、分析时间(Analyze Timing)

该功能可以分析各个信号到输出端的时间延迟, 可以给出延迟矩阵和最高工作频率. 见图(六)和图(七)。

12 、器件编程当设计全部完成后, 就可以将形成的目标文件下载到芯片中, 实际验证设计的准确性.

第 三 节 Max+plusⅡ 设 计 过 程

一、设计流程使用Max+plusⅡ 软件设计流程由以下几部分组成。如图(八)所示。1 、设计输入:可以采用原理图输入、HDL 语言描述、EDIF 网表输入及波形输入等几

- 78 -

图五 规则检测医生

图六 延迟矩阵 图七 最高工作频率

Page 79: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第五章 实验系统的硬件结构种方式。

2 、编译:先根据设计要求设定编译参数和编译策略,如器件

的选择、逻辑综合方式的选择等。然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合和器件适配,并产生报告文件、延时信息文件及编程文件,供分析仿真和编程使用。

3 、仿真:仿真包括功能仿真、时序仿真和定时分析,可以利用软件的仿真功能来验证设计项目的逻辑功能是否正确。

4 、编程与验证:用经过仿真确认后的编程文件通过编程器(Programmer)将设计下载到实际芯片中,最后测试芯片在系统中的实际运行性能。

在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重复上述过程。

图(九)是 Max+plusⅡ 编译设计主控界面,它显示了Max+plusⅡ 自动设计的各主要处理环节和设计流程,包括设计输入编辑、编译网表提取、数据库建立、逻辑综合、逻辑分割、适配、延时网表提取、编程文件汇编(装配)以及编程下载9 个步骤。

二、设计步骤1 )输入项目文件名(File/Project/Name)2 )输入源文件( 图形、VHDL、AHDL、Verlog 和波形输入方式)

(Max+plusⅡ/graphic Editor ; Max+plusⅡ/Text Editor ; Max+plusⅡ/Waveform Editor)

3 )指定CPLD 型号(Assign/Device)4 )设置管脚、下载方式和逻辑综合的方式

(Assign/Global Project Device Option,Assign/Global Logic Synthesis)5 )保存并检查源文件(File/project/Save & Check)6 )指定管脚(Max+plusⅡ/Floorplan Editor)7 )保存和编译源文件(File/project/Save & Compile)8 )生成波形文件(Max+plusⅡ/Waveform Editor)9 )仿真(Max+plusⅡ/Simulator)

10 )下载配置(Max+plusⅡ/Programmer)三、常用菜单简介(1 )MAX+PLUSⅡ菜单:

- 79 -

图九 编译主控界面

设计输入

编 译

在系统测试编 程

修改设计仿真与定时分析

图八 开发流程图

Page 80: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

MAX+plusII :Hierarchy Display___塔形显示;Graphic Editor______ 图形编辑器;Symbol Editor______符号编辑器;Text Editor_________ 文本编辑器;Waveform Editor____ 波形编辑器;Floorplan Editor_____ 管脚编辑器;Compiler___________ 编译器;Simulator__________ 仿真器;Timing Analyzer_____ 时间分析;Programmer________ 程序下载;Message Processor___ 信息处理;

(2 )文件菜单,该文件菜单随所选功能的不同而不同。File :

Project:Name…_________________项目名称;Set Project to Current File___ 将当前文件设置为项目;Save&Check_____________保存并检查文件;Save&Compile___________保存并编译文件;Save&Simulator__________保存并仿真文件;Save,Compile,Simulator____保存,编译,仿真;

New…_________ 新文件;Open…_________打开文件;Delete File…____ 删除文件;Retrieve…______ 提取文件;Close__________ 关闭文件;Save___________ 保存文件;Save As…______ 换名存文件;Info…_________ 信息;Size…_________ 图纸尺寸;Create Default Symbol______ 创建当前模块图形符号;Edit Symbol_______________ 编辑当前模块图形符号;Create Default Include File___ 创建当前包括文件;Print…___________________ 打印;Print Setup…______________ 打印设置;

(3 )模板菜单,该模板使编写VHDL和AHDL设计文件更容易和方便。Templates :

AHDL Template…_____AHDL 模板;VHDL Template…_____VHDL 模板;Verilog Template…_____VERILOG模板;

(4 )指定菜单Assign:

Device…________________指定器件;Pin/Location/Chip…_______管脚,放置,芯片;

- 80 -

Page 81: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第五章 实验系统的硬件结构Timing Requirements…____时间需要;Clique…________________ 指定一个功能组;Logic Options…__________逻辑选择;Probe…_________________指定探头;Connected Pins…_________ 连接管脚;Global Project Device Options…______ 设定项目中器件的参数;Global Project Parameters…_________ 设置项目参数;Global Project Timing Requirements..___设置时间参数;Global Project Logic Synthesis…______ 设置逻辑综合;Ignore Project Assignments…_________ 忽略项目指定;

Clear Project Assignments…_________ 清除项目指定;Back Annotate Project…_____________ 返回项目指定;Convert Obsolete Assignment Format___ 转换指定格式。

(5 )选择菜单Options :

Font_____________ 字形;Text Size________文本尺寸;Line Style_______ 线型;Rubberbanding_________橡皮筋;Show Parameters_______ 显示参数;Show Probe___________ 显示探头;Show/Pins/Locations/Chips__________ 显示管脚,位置,芯片;Show Cliques&Timing Requirements__ 显示功能组,时间需求;Show Logic Options________________ 显示逻辑设置;Show All_______________ 显示全部;Show Guidelines…_______ 显示向导;User Libraries…_________ 用户库;Color Palette…__________ 调色板;Preferences…___________ 设置。

该软件的菜单繁多,要想都学会有一定的难度,主要原因是资料问题。但是常用的菜单会使用还是可能的。四、如何获得帮助

最直接的帮助来自于Max+plusⅡ 的Help菜单。若需要某个特定项目的帮助信息,可以同时按<Shift>+<F1> 键或者选用工具栏中的快速帮助按钮“ ”。此时,鼠标变为带问号的箭头,点击“特定的项目”就可弹出相应的帮助信息。这里的“特定项目”,可以包含某个器件的图形、文本编辑中的单词,菜单选项,甚至可以是一个弹出的窗口。 注意:在ALTERA 的MAX+Plus II 开发环境中,如果用户在设计中使用了时钟信号、复位信号、输出允许信号等可以全局使用的信号,编译器会自动将这些信号分配到芯片的相应全局信号管脚,如果你锁定的管脚不是全局信号脚,在编译综合时,系统会提示有错,解决的方法是,选择[Assign] 菜单下的[Global Project Synthesis] 功能,在弹出的对话框的“Automatic Global” 栏

- 81 -

去掉全局信号前的“勾”

Page 82: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

内,去掉所使用全局信号前的选中勾,使其不会被自动分配。按“OK”钮确认退出。

第 五 章 实 验 系 统 的 硬 件 结 构 当今,电子电路越来越复杂,数字电路被更多应用到电路设计中,可编程逻辑器件已经广泛地用在电子设计中,而且在电路中的占有比例越来越大,它一方面提高了可靠性,另一方面也增加设计的灵活性和可维护性,使电子电路的设计更加方便快捷。在硬件的设计思路上,要改变原来传统的设计方式,用设计软件的方式方法来设计硬件。在学习新方法的过程中,一款功能强大、使用方便的辅助学习工具必不可少。南京伟福公司结合多年 EDA 开发经验,分析国内外多种EDA 实验系统,取长补短,研发出了伟福EDA2000 型实验系统,伟福EDA2000 实验系统的出现为您学习EDA 提供巨大帮助。综合起来EDA2000 实验系统具有以下多种特点: 软开放: 全开放的实验系统,由学生自己连线,对于学生来讲,费时费力过于麻烦,而且还容易出错,对于所设计的电路来讲,工作频率不会高,干扰大。再看完全不开放的实验系统,接线全部固定,所做的实验就有限,只能局限于设计好的几种实验内容,限制了学生的开发能力。伟福EDA2000 采用软开放式结构,对实际电路接线固定,即能工作高频状态,干扰、辐射也小,但对于学生来说,他又可以用软件方式按设计要求将各IO 脚连接起来。 逻辑分析仪: 在EDA 实验或EDA 设计中,单凭有限的输出设备(数码管、发光二极管)是不能完全发现设计中的错误,更不能观察、理解信号的先后时序关系。在电路工作于高频状态时,这种情况尤其突出。当设计中出现一些不可知的错误,只能拍脑袋苦想,或借助于其它的设备,例如示波器等,操作麻烦,还不一定能和电路同步。伟福EAD2000 提供了8 路逻辑分析仪,采样频率可达50MHz ,采样深度达32K,并可指定采样的触发条件。可以将电路的工作状态采样回来,以波形的方式显示出来,让学生直观地看到电路的工作时序,查出产生错误的原因。 软件连接: 由于是软开放的结构,学生在实验或设计时,需要自己连线,伟福EDA2000 采用“软件配置” 技术,在软件上接好需要的连线,下载到实验系统即可实现接线,如果连线过程有冲突,软件还会给出提示,如果是硬接线,接错线可能导致实验系统故障,甚至是损坏,而“软件配置”技术就能有效避免这种现象。这种软件接线还有一个好处,就是将定义好接线保存在磁盘上,下次做实验或设计时,从盘上读出即可,如果是硬件接线,学校中有很多人共用实验系统,否则根本无法将接线保留下来。伟福EDA2000 实验系统的频率选择也是采用软件方式设置,无需用跳线跳来跳去,使用跳线不仅烦琐,而且容易出错。 智能译码: 在EDA 实验中,最常用到的显示电路,如果显示电路接到固定的IO 脚,占用供实验用的IO 脚,不但如此,这还要求学生在做EDA 实验时,要连显示电路和译码电路一起设计,对于初学者有一定的难度。即使到了学生能熟练地写出译码电路,这些电路也浪费了器件内部大量资源,这些功能本来应该是由实验系统提供的。在提供这些译码显示功能时,大部分实验系统采用的外接译码器件,这种方法接线固定不能改变,使用起来有局限性。伟福EDA2000 实验系统采用智能译码技术,与软件连接技术相似,软件上设置好连译码方式后,下载到实验系统上即可在实验系统实现所要求的译码电路。智能译码不是只提

- 82 -

Page 83: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第五章 实验系统的硬件结构供几种模式由学生,如果超出了这有限的几种接线之外,学生就束手无策。伟福的智能译码技术在安全的条件下,可以由学生任意定义接线方式,灵活多变,而且可以将接线定义保存在磁盘上。 软、硬件结合: 国内外众多的EDA 实验系统几乎都是单硬件工作方式,接线要在实验板上接,模式要在实验板上选择,观察结果只能看板上的LED或八段数码管,如果是高速信号只能看最终的输出结果,工作时序,信号波形一无所知,如果有RAM 相关的实验,因为RAM 数据无法下载,只能以ROM 代替,外部设备的选择只能用跳线来实现或干脆拔掉有冲突的芯片。伟福EDA2000 实验系统采用软、硬件结合技术,可以在PC 机的软件上定义实验所要连线,下载到实验系统上即可。实验系统运行的结果可以在软件上观察到,如果想观察高速信号,就用逻辑分析仪采样,传上来进行分析。软件可以将RAM 的数据下载到实验系统上,供实验系统做VGA 、DAC 等数据输出类实验。也可将ADC 采样的到数据上载到PC 机的软件中,供学生分析、观察、保存。 模式可变:不开放结构的实验系统,由于接线全部固定,模式无法改变,或者在器件中浪费大量资源来设置模式,这样既不实用,也不利于学习;全开放的结构,用手工接线来设置模式,干扰大不说,不小心连错线还会造成仪器的损坏,有些半开放的实验系统,由于不能与上位机相连,只能在硬件实验上选择有限的几种模式,既不灵活,观察也不方便。伟福EDA2000 由于采用“软件配置”技术,可以用软件设置模式,下载到实验系统,灵活多变。在软件设置模式时,如果器件之间有冲突,软件会给出警告,避免接错线的可能。 适配板与实验系统独立: 伟福EDA2000 实验系统采用FPGA/EPLD 适配板与实验系统主体相互独立的结构,实验系统的显示译码、键盘输出均不占用适配板的资源。适配板与实验系统之间用IO 脚连接,从理论上讲,这种结构可以无限扩展FPGA/EPLD 实验种类,只要在FPGA/EPLD 适配板上将正确的IO 信号接到实验系统上,就可以对这种FPGA/EPLD进行实验和设计,加上伟福的“软件配置”技术,更是如虎添翼,不但可扩展性强,使用也灵活,不再束手束脚。采用这种相互独立的结构,可以在适配板上正对每种FPGA/EPLD 来设计制做与芯片完全吻全的编程下载电路,使FPGA/EPLD 的编程下载更加可靠、稳定。可编程下载器件的种类也不会有限制了,只要有该器件的适配板就行。用户所要做的事就是将编程并行口接到实验系统上。 多种外部设备: 实验系统提供了多种常用外部设备,为学生提供典型的学习电路。这些电路包括并行ADC 、串行ADC 、并行DAC 、串行DAC 、VGA 、PS2鼠标、三线EEPROM 读写控制、I2C (二线)EEPROM 读写控制、8X8显示点阵扫描、存储器读写控制等电路,这些电路真实地体现了EDA 设计的高速、时序严格、抗干扰等特点, 用户控制电路: 在EDA 的学习中,应强调真实性和实用性。在实际的EDA 电路中,一般都有CPU 控制电路与之相结合,完成一个应用系统。伟福EAD2000 实验系统提供了一个用户CPU ,并且有外围的键盘、八段数码显示、液晶显示屏。使得学生不仅能做EDA的分部实验和设计,而且可以将各部分组合起来,做完整的系统级的设计。

- 83 -

Page 84: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第 一 节   总 体 结 构

伟福EDA2000 实验系统的功能框图如上图。FPGA/EPLD 为EDA 实验适配板,通过IO脚与外部设备和配置电路连接。外部设备有喇叭( 蜂鸣器) 、并行ADC(ADC0809) 、串行ADC(TLC549) 、并行DAC(DAC0832) 、串行DAC(TLC5620) 、VGA 控制器、PS2鼠标接口、三线EEPROM(93C46) 、二线EEPROM(24C02) 、8x8 显示点阵、存储器。用户控制CPU 与EDA 适配板结合组成完整的系统。“软件配置” 技术由配置电路来实现,配置电路从计算机中的EDA2000 软件开发环境中下载配置定义,将FPGA/EPLD 的IO 脚按用户要求做相应配置,将八段数码管、发光二极管、键盘接到要接的 IO 脚上,如果FPGA/EPLD 在运行状态,配置电路还会将FPGA/EPLD 的各IO 脚的状态传到计算机上,在软件界面中显示。在实验系统上也保存了我们所提供的样例实验的配置定义,即使实验系统没有连接到计算机上,也可以直接在实验系统上根据不同的实验内容,用设置键来选择IO脚配置。实验系统的布局如图,系统的控制、IO 管脚的配置在FPGA/EPLD 适配板的下方。

- 84 -

FPGA

/EPLD

软开放配置电路

外部设备八段数码管

键盘

RS232

PC机

用户控制CPU

IO 管脚

编程电路

打印电缆接口

Page 85: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第五章 实验系统的硬件结构

- 85 -

控制芯片

伟福ED

A2000实验系统布局

FPGA

/EPLD适配板用户控制

CPU

系统控制、IO配置电路

(位于适配板下方)

FPGA

EPLD编程下载打印接口系统配置

232通信口

用户控制芯片232通信口V

GA

显示接口

外部模拟量输入D

A结果输出

PS2鼠标接口

逻辑分析仪探针

UK5 UK4 UK3 UK2 UK1 UK0

Page 86: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第 二 节 外 部 设 备在EDA2000 调试界面中,专门设立了一个用于管理实验系统硬件设备的管理窗口,

如下图所示:

在这个窗口中的每一个外设的相关引脚在正常情况下都通过一个逻辑门与FPGA/EPLD扩展板的特定脚连接,所以这些外设前面都有一个复选框,当该外设处于选中状态,那么与该外设有关的逻辑门全部处于选通状态,外设相当于直接挂接于FPGA/EPLD 扩展板上的目标芯片上,以下逐一介绍各个外设情况。 1 、并行AD 变换电路。并行模数转换芯片采用常用的ADC0809 ,ADC0809有八路AD 输入,本实验系统只用IN0 ,所以三根地址线ADDA、ADDB、ADDC接到GND ,正参考电压接VCC ,负参考电压接GND ,模拟信号从IN0 接入。一般情况下IN0 的信号来自电位器,如果有外部模拟信号从耳机插孔“AD IN” 接入, IN0 的输入信号由耳机插孔提 供。I048~IO55 接 ADC0809 的 数 据 线D0~D7 ,AD 转换起动信号和地址锁存信号ALE接IO37 ,转换结束信号EOC接IO38 ,转换时钟接IO39 ,ADC0809 的ENABLE接系统控制电路,这样,平常不做ADC 实验时,系统禁止ADC 工作,ADC 电路输出为高阻,不会影响到其它电路,当需要做ADC 实验时,在计算机的EAD2000 软件中的“外部设备”窗口选中“并行AD 变换”,系统会充许ADC 工作,转换结束后,可以在数据线上读入AD 转换结果。更详细的使用说明可参考ADC0809 的数据资料。 2 、串行AD 变换电路。串行模数转换芯片采用美国TI公司的TLC549,此芯片为8 脚,

- 86 -

外部设备管理窗口

Page 87: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第五章 实验系统的硬件结构用串行方式控制,在CS~ 片选信号有效时,打入时钟信号,就可以读回上次变换结果、并且启动下次AC 变换。模拟量由芯片2 脚AN 输入,正参考电压接VCC ,负参考电压接GND ,7 脚串行时钟信号CLK接IO38 ,6 脚串行数据信号DATA 接IO37 ,片选信号接IO36 。更详细的使用说明可参考TLC549数据资料,可以从TI公司的网站下载芯片资料。

3 、并行DA 变换电路。并行数模变换芯片采用DAC0832 ,IO40~IO47 分别接芯片的D0~D7 数据线,芯片片选信号接IO32 ,WR2 、WR1 两个写接到IO33 ,变换后的电流模拟量经过运放LM324 转成电压,再用LM324 放大约-6V~+6V 范围内,用耳机插孔“DA OUT” 输出。更详细的使用说明请参考DAC0832 的数据资料。

4 、串行DA 变换电路。串行数模变换芯片采用TI公司的TLC5620 ,芯片为14 脚,有四通道8 位DA 变换器,用串行方式控制,用时钟将DATA 线上的数据(DA通道选择、输出范围控制、数字量)依次打入芯片,用LOAD 信号的下降沿锁存数字量,在LDAC 信号的下降沿,将变换结果输出。模拟量输出的参考电压接VCC ,串行数据线DATA 接IO42 ,串行时钟接IO41 ,数字量锁存信号LOAD 接IO40 ,模拟量输出控制信号LDAC 接IO43 ,本实验系统只用第一路DA 输出信号,模拟量输出接耳机插孔“DA OUT” 。详细的使用说明参考

芯片资料。5 、VGA 显示控制电路。将IO40~IO47 控制信号中IO47 做为VGA 信号的帧同步

信号, IO46 为行同步信号,另外6 路为色彩信号,其中 IO45 、IO44 两位为蓝信号,IO43 、IO42 两位为绿信号,IO41 、IO40 两位为红信号,经过电阻网络DA 变换后可

- 87 -

Page 88: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

提供多达64 色彩色信号。

6、PS2 接口电路。PS2 接口为串行通信接口,除了电源和地之外,只有两根信号线,串行数据线DATA 接IO32 ,串行时钟线CLKIO33 。通过此接口可连接PS2 键盘或PS2鼠标,并其进行控制。 7、三线EEPROM 读写控制电路。三线EEPROM 采用93C46 芯片。该芯片为8 脚封装,片选CS 接IO39 ,串行时钟SK 接IO37 ,串行数据输出DO 和串行数据输入DI 接IO38 ,ORG 脚接GND ,有关93C46 详细的使用方法可参考相关数据资料。 8、二线EEPROM 读写控制电路。二线EEPROM 采用24C02 芯片,此芯片为8 脚封装,采用I2C 控制方式,串行时钟SCL 接IO37 ,串行数据线SDA 接IO38 ,地址线A0接IO39 ,可在实验中用来了解I2C 总线控制的寻址方式,其它地址接GND 。写保护脚WP接地,为允许写操作。24C02 的更详细使用方法请参考其数据资料。 9、8X8显示点阵的控制电路。8X8显示点阵要采用扫描方式驱动,分为8 条行线和8 条列线,行线接IO56~IO63 ,列线接IO8~IO15。列线要经反相驱动后接到显示点阵上。 10 、存储器控制电路。存储芯片采用32Kx8 位的61M256 ,数据线接IO8~IO15,低八位地址线接IO56~IO63 ,高七位地址线接IO0~IO6 ,读信号接IO16 ,写信号接IO17 。

11 、喇叭控制电路。IO7 脚经放大、滤波后驱动喇叭或蜂鸣器发声。控制IO7 输出不同频率的信号,就可以在喇叭上听到音乐。

- 88 -

PS2 接口 三线 EEPROM 二线 EEPROM

Page 89: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第五章 实验系统的硬件结构 12 、用户控制CPU 。 用户控制CPU 通过IO 脚与FPGA/EPLD 相连接,可以通过FPGA/EPLD 控制外部设备,也可以将外部设备产生的数据读回来处理。用户通过译码电路将按键、八段数码管的段码、液晶显示屏按照不同的地址分开。

第 三 节   FPGA/EPLD 适 配 板 伟福EDA2000 实验系统采用FPGA/EPLD 适配板与主实验系统相互独立的结构,适配板与实验系统之间用IO 脚连接,从理论上讲,这种结构可以无限扩展FPGA/EPLD 实验种类,只要在FPGA/EPLD 适配板上将正确的IO 信号接到实验系统上,就可以对这种FPGA/EPLD进行实验和设计。采用这种相互独立的结构,FPGA/EPLD 的编程下载电路做在适配板上,这样设计制做与芯片完全吻全的编程下载电路,使FPGA/EPLD 的编程下载更加可靠、稳定,扩展也方便。用户所要做的事就是将并行口编程电缆接到实验系统上。适配板的接线柱将IO信号和GND 信号接出,可供学生扩展使用或连接到逻辑分析仪上观察信号状态 , 适配板上两排接线柱所连接的信号名在板已有标注。实验系统与适配板之间用三组双排插针将 IO 信号、编程信号连接 起来,如下图, J2、 J3为IO 信号及电源连接插座、J4为编程下载信号插座。J2、J3插座上各管脚的信号定义见随后的原理图,J4插座上PINx 信号分别接打印接口的对应管脚。

- 89 -

液晶显示屏 译码电路

按键

位码

段码

FPGA/EPLD芯片

实验系统和适配板通过 J2、J3、J4 连接图

Page 90: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

实验系统常用四种适配板:Xilinx XCS05/XCS10, Xilinx XC9572/XC95108, Altera Flex10K10, Altera Max7128S 。各种适配板上芯片的实际管脚与实验系统IO 脚之间的对应关系见下面描述。它们可以完成本实验手册中的所有例子。(EX26 只能在FPGA 板上完成) 1 、Xilinx XCS10 FPGA 适配板布局图,及实验系统IO 脚与芯片的管脚对应关系。 2 、Xilinx XC9572/XC95108 EPLD 适配板布局图,及实验系统IO 脚与芯片的管脚对应关系。

3 、 Altera FLEX10K10适配板的布局图,及实验系统IO 脚与芯片管脚的对应关系。

- 90 -

J4为编程下载接口插座,PINx 接打印接口的对应的 x号管脚

J2、J3为 IO 信号及电源连接插座,实 验 系 统 通 过J2、J3将 PFGA/EPLD的管脚接到主板上。

Page 91: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第五章 实验系统的硬件结构 4 、Altera MAX7128S适配板布局图,及实验系统IO 脚与芯片管脚对应关系。

第 四 节   实 验 系 统 的 模 式 设 置 如果实验系统没有连接到计算机上,也可以用按键的方式选择实验系统的模式和两个时钟频率。在实验系统上已存有与各种实验相对应的模式数据,用“模式选择( MODE SELECT)”按键和其它键组合来选择模式和两个时钟的频率。选择模式的方法是按住“模式选择(MODE SELECT )”键不松,八段数码管显示“------XX” ,其中“XX”为当前模式号,按“K7”钮,模式号减1 ,按“K6”钮模式号加1 ,八段数码管同时显示所选择的模式号,当出现需要的模式号时,松开“模式选择(MODE SELECT )”键即可确认。选择时钟频率的方法与选择模式相似,也是按住“模式选择(MODE SELECT )”键不松,按K5 或K4 来选择 CLK0 的频率,CLK0 时钟通过实验系统的IO30 接到适配板上,按K3 或K2 键来选择CLK1 的频率,CLK1 时钟通过实验系统的IO31 接到适配板上,八段数码管会显示选择的频率,频率单位为Hz ,当选择好频率后,松开“模式选择(MODE SELECT)”键即可确认。为了安全起见,模式设置后,实验系统并没有立即工作,需要再次按下、松开MODE SELECT 按钮启动,实验系统才会工作。

第 五 节   逻 辑 分 析 仪 EDA2000 实验系统提供了功能强大的逻辑分析仪,EDA 设计很多都是工作于高速时钟下,单凭肉眼根本无法看到信号的快速变化,如果不把工作波形采样回来,很难对设计的故障、运行的结果做定性分析。伟福EDA 实验系统上逻辑分析仪可采样8 路高达50MHz 的数字信号,并可指定采样条件,采样深度达32K。这样学生在设计好的电路工作时,把想要观察的高速信号采样,可以直观地看到波形的变化,先后时序关系,验证是否符合设计要求。 当需要观察某路逻辑信号状态时,将该路逻辑信号用接线接到8 路逻辑分析仪探针中的一路,如果有多路逻辑信号需要同时观察,可同时将接8 路信号到逻辑分析仪探针的接线柱上。如果实验系统与计算机连接好,逻辑信号的状态就可以传到计算机上,在EAD2000 的软件中观察信号状态,如果学生要观察高速信号及信号时序,将软件中的观察窗口切换到“逻辑分析仪”窗口,选择采样频率和条件(如果需要),按采样键,采样完成后,实验系统就会将波形数据传到计算机上,显示出来。(可参考第五章EDA2000 软件使用)。

- 91 -

Page 92: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第 六 节   实 验 系 统 的 自 检 每种适配板都提供了一个测试程序,供测试EDA2000 实验系统和适配板是否有问题。打开每个适配板的实验样例的目录下的“TEST.VHD” ,综合/ 编译后下载到实验系统上,按住实验系统上的“MODE SELECT” 键不松,再按实验系统上的“TEST” 键(即K0 键),实验系统进行自检,先自动检测所有的IO 管脚,在自动检测过程中,若有IO 管脚连接错误,实验系统在八段数码管上显示错误信息。然后再自动检测八段数码管的位和段,再手工检测LED发光管和键的工作是否正常,按下K0~K8 键,该键上方所对应的L8~L15发光管会从亮变灭,对应的L0~L7 发光管会从灭变亮。 松开键,所对应的L8~L15发光管会从灭变亮,对应的L0~L7 发光管会从亮变灭。

- 92 -

Page 93: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 EAD2000软件使用

第 六 章 EAD2000 软 件 使 用

伟福EDA 实验系统可以通过软件来设定工作模式,并可以对设定的模式进行保存和读入,在软件界面上可以看到IO 脚的当前状态,逻辑分析仪各管脚的状态。EDA2000 软件的主界面如上图,左边为系统功能选择和 IO 脚状态显示,例如模式文件的打开和保存,软件与硬件的连接等。右边为实验系统功能化的窗口显示,分结构框图窗口、逻辑分析窗口、存储器窗口、IO 管脚定义窗口四部分,在结构框图窗口中,可以将八段数码管、发光二极管、键盘连接到所要观察的IO 脚,观察各种工作模式情况下,将IO 脚的状态直观的显示出来,并可以随时改变IO 脚的连接状态。在程序运行时若改变IO 脚的连接,可会引起实验系统故障,所以在改变IO 脚的连接时,会自动将EDA 实验系统断开,设置完成后,重新下载模式,并连接EDA 实验系统。在逻辑分析窗口中,可以用高达50MHz 的频率采样FPGA 或EPLD 的工作波形,在逻辑分析窗口中用波形显示出,供学生分析电路的工作情况,改变了以往在做此类实验时,学生对高速信号茫然不知的情况。即使不采样波形信号,实验系统也会向PC 机回传逻辑探针的状态,这就可以将逻辑分析仪做为逻辑笔来用,用来观察低速的信号。实验系统还提供了一个32K存储器,用于FPGA/EPLD 对存储器的访问实验,在存储器器窗口中,可以对32K的RAM 进行填充、移动、从文件读入、写到文件中等操作这些数据可下载到实验系统上,也可以从实验系统上载数据到存储器窗口,这样在做ADC 、DAC 、VGA 实验时就可以提供不同数据。ADC 、DAC 等外部设备的工作情况可以在外部设备窗口中设定、修改。因为有些外部设置使用相同的 IO 管脚,在设置时若有冲突,软件会给出提示。在IO 管脚定义窗口中,可以观察各种FPGA/EPLD 的管脚与IO脚之间的对应关系,以及各管脚的当前状态。

- 93 -

8段码 连接的 IO脚

系 统 功能 选 择按钮IO 脚的当 前 状态逻 辑 分析 仪 状态时 钟 选择

按键 LED 灯

Page 94: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

连接EDA2000 :设置软件与EDA 实验的串行口连接。当正确连接到实验 后,此按钮处于下陷状态,图标为“绿勾”,表示连接正确;若选择串行口不对,或实验系统没接电,软件与不能正确通信,此按钮

会自动弹起,图标为“红叉”。

启动/ 暂停:下载实验系统工作模式,启动EAD2000 实验系统。启动状态 为按钮下陷,图标为“||” ,表示处于运行状态,当按钮为弹起 状态,图标为“>” ,表示处于暂停状态。在实验系统工作时,若 改变了工作模式,可能会引起实验系统和EDA 适配板的故障,为 了安全起见,软件会自动将实验系统暂停,当模式完全设置好后, 按此键重新启动实验系统。新建模式: 清除原有的模式中的设置,

建立一个新的空模式,让用户重新建立IO 脚的连接关系,定义模式。新建模式时,原有的八段管、发光管、键盘的属性、连接关系会被自动清除。

装入模式: 打开已有的模式设置文件。当模式文件出错或不存在时,软件会建立一个新模式,让用户重新定义。模式文件的缺省后缀为“*.MOD”。

保存模式: 已定义好连接的模式保存到文件中,以便下次打开。

上载存储器:将EDA 实验系统的存储器的内容上载到PC 机的软件中。用此功能可以将实验系统ADC 采样到的数据回传到PC 机,在EDA2000 软件的存储器窗口显示,对数据进行分析。可以用存储器的“写文件”功能将数据保存,便于下次分析比较。

下载存储器:将PC 机EDA 软件的存储器窗口的内容下载到EDA 实验系统的存储器中。用此功能可以将图象数据文件下载到实验系统,用VGA 来显示,也可以将DAC 所需的数据传到实验系统,用DAC 转换成模拟量输出。对不同的应用,EDA2000 软件的存储器窗口可从盘上读取不同的数据文件。

退出:退出EAD2000 软件环境。- 94 -

实验系统处于运行状态

软件与实验系统连机正确

软件与实验系统通信设置对话框。有四个串口可供选择。

Page 95: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 EAD2000软件使用 实验系统共有64 路IO ,分8 组,每组8 路,在上图中G0 至G7 表示8 个组,各组IO脚的当前状态可以实时观察到,后面括号中为该组8 路信号的十六进制值。64 路IO 脚的状态还可以从“IO 管脚定义”窗口中观察到,在该窗口中可以选择不同的EDA 适配板,看到各个EDA 适配板的每个IO 脚对应的FPGA/EPLD 的实际管脚。 实验系统提供了8 路逻辑分析仪,最高采样频可达50MHz ,这8 路逻辑探针还可以做为逻辑笔来观察慢速信号。上图中,LA 显示的是逻辑分析仪的当前状态,通过这里可以观察一些变化较慢的信号,把逻辑分析仪当逻辑笔来用。要想观察高速的逻辑信号,就要在逻辑分析窗口里,对信号实时采样,分析采样到的数据。逻辑分析仪的使用将在后面介绍。 实验系统提供了2 路时钟,用软件的方式进行选择,而无需硬件跳线。供选择的时钟共有50MHz 、25MHz 、10MHz 、1MHz、100KHz、10KHz 、1KHz 、100Hz 、10Hz、1Hz十种。两路时钟信号固定接到IO30 和IO31 ,在连接到EDA 适配板时,这两个时钟做为FPGA/EPLD 的全局时钟输入,方便设计需要。

伟福EAD2000 实验系统为半开放式结构,采用软、硬件结合,智能化软接线方式,用户在软件上设置、连接,下载到实验系统上,就可以将 IO 脚经设定的译码电路接到显示器件(八段管、发光管)上,这样就可以直接观察IO 管脚状态,学生无需在开始做EDA 设计时就要先做译码电路,也不需要手工连接很多繁杂接线。做不同的EDA 设计,只要在软件中按设计需要任意定义不同的IO 脚连接,灵活多变,而不是让学生在固定为几种模式中选择,自己定义的连接可以保存到盘上,供下次实验时使用。结构框图窗口如上图,在此窗口中可以将八段数据管、发光二极管、键盘连接到IO 脚上,直观地观察IO 脚状态。八段数据管有两连接方式:四位数据经译码后显示成十六进制值、八位数据直接驱动八段码。发光二极管也有两种连接方式:直接接到IO 管脚,显示该IO 脚的高低状态、连接相应的键盘上,显示相应键盘的值。发光二极管有四种颜色可选。键盘有四种输出方式:常低(上升沿)、常高(下降沿)、高/ 低反转、四位计数器。在器件(八段管、发光管、键盘)上按下鼠标右键可以改变该器件的属性,这些属性包括是否连接到IO 脚、所连接IO 脚号、连接方式、显示的颜色、器件标记名称等等。设置完成后,会在右边的“FPGA/EPLD” 上显示出该器件连接的IO 管脚号,若器件的某些脚没有接IO 信号,会以“=” 显示。如果软件已经连接到EDA 实验系统,在此界面上按键,同样可以控制实验系统,也会将实验系统

- 95 -

Page 96: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

上显示结果回传到软件界面显示出来。

在八段数码管上按下鼠标右键,就会出现如右图的八段管属性设置对话框,在“连接类型”中有三种选择:不连接、4-16 译码器、8 段发光管。当选择“不连接”时,此八段管

不接到任何IO 脚上;当选择“4-16 译码器”时,会有4 位信号经过译码到八段管显示的示意图,四位输入的信号为Bit3至Bit0,可以用下拉菜单选择四位信号各自连接的 IO 脚,其中的某位也可以选择“不连接”方式,这时此位不接IO 脚,译码时按照低电平译码。“信号名”为此八段管的标记名,显示在软件上便于识别;当选择“8 段发光管”时,会有8 位数据在8 段管的位置的示意图,8 位数据对应a 段至h 段,用下拉菜单选择各自连接的IO 脚,如果某段选择了“不连接”方式,

那么该段不接到任何IO 脚,此段对应的发光管不亮。 在发光二极管上按下鼠标右键,出现如左图的发光管属性设置对话框,在“连接类型”中有三项选择:不连接、连接到对应键、连接到IO 。当选择“不连接”时,此发光管不接到任何IO 脚上,软件中以银白色显示此发光管;当选择“连接到

- 96 -

用八段数码管显示需要观察的数据,有两种译码方式,下方为其命名,方便观察。用发光管观察二进制数据,有四种灯色可选,没有连接的灯以银白色显示。下方为其名称。

用键盘输入控制信号,有四种键工作方式:常低、常高、高低翻转、四位计数器。下方为键盘名称,便于观察、识别。

八段管为 4-16 译码 八段管为 8段直接驱动

Page 97: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 EAD2000软件使用对应键”时,就将此发光二极管接到实验系统下方的对应的键盘上,此时发光管显示的是键盘所连接IO 脚的值(参见随后键盘设置说明);当选择“连接到IO” 时,可用下拉菜单选择所连接的IO 管脚,IO 脚的状态就会在此发光二极管上显示出来。在软件上发光管有四种颜色可供选择,分别为红、绿、蓝、黄,可用下拉菜单选择。信号名处填上此发光二极管的名称,在观察信号时,便于识别。

在键盘上按下鼠标右键,会出现如右图的键盘属性设置的对话框,有五种连接类型:不连接、上升沿( 常低) 、下降沿( 常高) 、高/ 低、4 位计数器。当选择“不连接”时,键盘不接到任何IO 脚上;当选择“上升沿( 常低)”时,可以用下拉菜单选择连接的IO 脚,此IO 脚的状态为常低,当按下键盘时,产生一个上升沿,IO 脚变高,当松开键盘时,IO脚恢复低,产生一个下降沿,如果有发光二极管接对应接到此键,当 IO 脚高时,发光管就亮,反之不亮;当选择“下降沿( 常高)”时,用下拉菜单选择此键连接的IO 脚,此IO 脚的状态为常高,当按下键盘时,产生一个下降沿,IO 状态变低,松开键盘时,IO 脚恢复高,产生一个上升沿,如果有发光二极管接对应接到此键,当 IO 脚高时,发光管就亮,反之不亮;当选择“高/ 低”时,用下拉菜单选择键盘所连接的IO 脚,当按下键盘时,IO脚的状态翻转一次,原来IO 脚为高按键后变为低,若原来IO 脚为低,按键后变为高,松开键盘IO 脚状态不会发生变化,若有发光管接到此键,当IO 脚为高时发光管亮,IO 脚为低时,发光管不亮;当选择“4 位计数器”时,键盘模拟一个4 位的计数器,每按键一次,计数器加1 ,此时键盘有4 位输出,接到4 个IO 脚上,用下接菜单选择计数器各位所连接的IO ,如果其中某位选择了“不连接”,则计数器的相应位就不会输出。若有发光二极管接到此类键,当计数器值为0 时(所有4 位都为低),发光管不亮,计数器值在1 至15 时,发光管为亮。

EDA 实验系统提供了功能强大的逻辑分析仪,EDA 设计很多都是工作于高速时钟下,单凭肉眼根本无法看到信号的快速变化,如果不把工作波形采样回来,很难对设计的故障、运行的结果做定性分析。伟福EDA 实验系统上逻辑分析仪可采样8 路高达50MHz 的数字信号,并可指定采样条件,采样深度达32K。这样学生在设计好的电路工作时,把想要观察的高速信号采样,可以直观地看到波形的变化,先后时序关系,验证是否符合设计要求。上图为逻辑分析窗口,采样的是VGA 显示控制实验中的地址变化和行同步信号。

- 97 -

采样频率

M0,M1时差M1 标 尺 位置

M0 标 尺 位置

放 大 / 缩小

指定条件开始采样

Page 98: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

在采样之前,先要确定信号的大约频率,用下拉菜单选择高于 信 号 频 率 的 采 样 频 率 , 有50MHz 、25MHz 、10MHz 、1MHZ、100KHz、10KHz、1KHz 七种采样频率可选择。按“开始采样”按钮采样,当采样信号满32K后,实验系统将波形数据回传到上位机,在逻辑分析窗口中显示。采样之前也可指定采样条件,在“指定条件”的编辑框中,有8 个X ,分别对应于8 位被采样的信号,‘X’ 表示无条件采样,也就是说在按下“开始采样”钮后立即采样,采样满32K后回传数据,如果想在要某位信号为高时开始采样,就将相应位指定为‘1’,这样在按下“开始采样”钮后,只有当此位信号为高时才开始采样,采样到32K后回传数据。如果想要在某位为低时开始采样信号,就将该位写成‘0’,那么在按下“开始采样”钮后,此位信号为低时,就开始采样,到32K后回传数据。也可组合这些条件,用以控制采样,例如指定采样条件为“X1XXX0XX”,表示在按下“开始采样”钮后,第6 位信号为高并且同时第2 位信号为低时,才开始采样。如果指定的条件出现,采样完成后,回传数据时会显示回传数据量的百分比。如果被指定的条件没有出现,逻辑分析仪就会一直等待,直到条件出现或按下弹出对话框的“终止采样”按钮。 在逻辑分析仪窗口中显示的逻辑波形,可以用放大或缩小来观察波形的细节或全局,并可以用滚动棒平移波形。逻辑分析窗口中提供两个标尺,用来测量波形的时序,可拖动标尺上方的标尺名来移动标尺,把标尺精确定位,其中M0 为全局标尺,可以在所有32K波形中移动,不一定显示在当前可视的窗口中,当用滚动棒平移波形时,MO 标尺会同时移动,保持MO 的时间位置不变。若MO 移出当前可视窗口,可以在逻辑分析窗口下方全局图中来观察,红线表示MO 在全局中的位置。可用弹出菜单的“设置M0” 功能,将MO 标尺设置在当前可视窗口中鼠标的位置。也可用弹出菜单的“转到->M0” 功能,将当前可视窗口转移到以MO 为起点的波形区,观察那里的波形。M1 为局部标尺,只能在当前可视窗口移动,M0 、M1 标尺的位置的数值可以在逻辑分析窗口下面状态栏中读到,“dM” 为两个标尺的时间差。

在逻辑分析窗口中,某信号的位置上按鼠标右键,出现如图的弹出菜单,菜单的各项功能如下:设置MO : 将MO 标尺设置在鼠标所在的位置,若MO 标尺不在当前 可视窗口内,用此法可将MO 召回。

转到M0 : 将当前可视窗口转移到以MO 为起点的波形区。收缩LA : 将8 位逻辑分析信号收缩成总线显示方式,此时信号 显示的值为8 位信号组成的十六进制值,若逻辑信号已处于收缩显示(总线)方式,弹出菜单显示是“展开LA”,执行的功能是将总线展开成8 路信号,以高低电平方式显示信号。重命名A0 : 将鼠标所在的信号名重新命名,以符合信号的实际意义,方便观察。上升沿<A0>:若MO 、M1 标尺之间有时间差,弹出菜单就会显示此内容,“<>” 之间

为鼠标当前所在信号名,后面所显示的值就是该信号在MO 、M1 之间的上升沿数,即脉冲个数。

频率<A0>: 同上,若MO 、M1 标尺之间有时间差,弹出菜单就会显示此内容,“<>”- 98 -

采样完成后,回传数据

正在采样或等条件满足

Page 99: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 EAD2000软件使用之间为鼠标当前所在信号名,随后显示的值为MO 、M1 之间信号的频率。

备份: 用此功能可以将采样到波形数据备份到BACKUP 组,下次采样时,BACKUP 组的内容不会改变,这样就可将备份的波形与采样的波形做比较。

调入波形文件:将保存的波形数据文件读入到逻辑分析窗口中显示,分析。保存波形文件:将采样到的波形数据文件保存在磁盘上,以备下次调用。 采样逻辑波形时,EDA2000 软件要连接上实验系统(软件上“连接EDA2000” 按钮要为连机状态),并且实验系统要处于运行状态(软件上“运行/ 暂停”按钮要为运行状态),除了在软件上要做上述设置外,在EAD2000 实验系统上还要将实验系统上的8 路逻辑探针接到想要观察的IO 脚上,

伟福EDA2000 实验系统上带有32K字节的存储器,用于做与存储器相关的实验。此32K存储器的内容可由软件下载而来,也可以将此存储器的内容上载到PC 机的EDA 软件中去。在EDA 软件中有存储器窗口与之对应。在存储器窗口中可对数据进行读入、修改、保存等操作。在存储器窗口中,左边蓝色的为地址,中间用十六进制显示数据的值,右边以字符方式

显示数据。用鼠标选中想要修改的单元,直接输入数据的十六进制值即可修改该单元,也可以用弹出菜单的“修改”功能输入数据。在窗口中按下鼠标左键并拖动,可以选择一块数据区,用弹出菜单的“块操作”功能,可对数据块移动、填充。

存储器的弹出菜单如图。修改:修改存储单元的值。跳到:将存储器显示切换到指定的地址单元。块操作-> 填充:将指定的数据块按要求填充数据。填充的值可以是相同的数据,也可以按每次加1 的方式填入有变化的数据。块操作-> 移动:将数据块移动到另一地址。

- 99 -

Page 100: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

读文件:从磁盘上读取数据文件。写文件:将数据写到磁盘上列数:可以用不同的列数显示数据。 有4 列、8 列、16 列三种。 在做VGA 实验时,可以从磁盘读出图象数据 ,并下载到实验系统的存储器中,电路工作时就可以在显示器看到图象。在做 ADC 实验时,可以把ADC 采样到的数据上载到存储器窗口,在此窗口中分析数据,也可以将数据保存到磁盘上。

伟福EDA2000 实验系统连接很多外围电路,象AD 变换、DA 变换、VGA 控制、PS2鼠标、E2PROM 、8x8 显示点阵、存储器等,这些设备可能会共用相同的 IO 脚,为避免发生冲突,在软件上要设置好,如果有冲突应加以提示。外部设备窗口就对这些电路提供了管理功能。在做实验时,若要使用某个外部设备,在该设备前的框内选中即可,如果其它与该设备使用相同的IO 脚,软件会给出警告。若设备被选中,且实验系统为运行状态,可即时看到该设备所连接的IO 脚的状态。

- 100 -

Page 101: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 EAD2000软件使用

伟福EDA2000 实验系统有64 个IO 脚,分别对应于不同EDA 适配板上的FPGA/EPLD 的管脚,在IO 管脚定义窗口中,可用下拉菜单选择EDA 适配板,当选择好EDA适配板后,IO 脚与FPGA/EPLD 芯片的管脚对应关系以分组的方式显示出来,当实验系统置于运行状态时,还可以实时观察到该的状态。

- 101 -

Page 102: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

在 伟 福 EDA2000 软 件 环 境 中 设 置 工 作 模 式 下面以“实验1 :全加器”为例,一步一步说明如何在伟福EDA2000 环境中来设置实验系统的工作模式。 1 .启动伟福EDA2000 软件。打开软件后,可能界面上会有以前的工作模式,按“新建模式”钮建立一个空的界面。 2 .设置输入键的工作方式。实验 1 中有三个输入信号“a” 、“ b” 、“ c_in” ,即全加器的“输入 1” 、“输入2” 、“前级进位输入”,我们用K0 、K1 、K2 三个键来代表这三个信号,我们希望每按键一次信号的高低状态变化一次,所以这三个键的工作方式设置为“高/ 低翻转”方式。鼠标移到K0 键上,点击右键,出现如图键属性设置对话框,“连接类型”选择“高 / 低”,在“连接IO” 栏内选择“IO40 脚”,表示K0 键接到实验系统的IO40 脚上,在本例中,实验系统IO40 脚接全加器的“输入1” 也就是“a” 信号上,这样K0 键的状态变化就会加到“a” 信号上,“信号名”处填写“a” ,便于在实验时观察。按“OK”钮确认退出,这样我们就设置好K0键的属性。如此,我们再将K1 键连接到实验系统IO41 脚上,K2 键连接到实验系统IO42脚上。本例中,实验系统的IO41 、IO42 脚分别接到全加器的“输入2” 和“前级进位输入”信号上。 3 .设置发光管的工作方式。为了能显示能显示实验1 中,五个信号(三个输入、两个输出)的状态,可以将信号接到发光管上,用发光管来显示信号的状 态。我 们将 L0 、 L1 、 L2 分别接K0 、K1 、K2 上来显示这三个信号的值,鼠标移到L0 灯上,点击右键,出现如图发光管属性设置对话框,“连接类型”选择为“连接到对应键”,表示将发光管接到相应的键上,这里就是将L0 接到K0 键所接的信号上,也就是输入信号“a” 上。“发光管颜色”指的是在软件中发光管的颜色,在本例中不重要,选择红色即可。“信号名”填上“a” ,表示显示“a” 信号状态,填好后,按“OK”钮确认退出。如此,再将L1 连接到K1 上,L2 连接到K2 上。 输出信号“sum” 、“c_out” 的状态用L8 、L9 来显示。用发光管显示输出信号状态就不能接到对应键上,应该直接接到输出信号上。把鼠标移到L8 灯上,点击右键,出现如图发光管属性设置对话框,“连接类型”选择为“连接到IO” ,在随后的IO 脚选择栏中,选择IO00 ,在表示将发光管接到实验系统的 IO00 脚上,本例中IO00 脚接到全加器的“和”输出信号即“sum” 信号上,这 样IO00 脚上的状态变化,就会在L8 灯上有所显示,“发光管颜色”选红色即可,“信号名”填上“sum” ,表示是显示的是“sum” 信号。如此,将L9 连接到实验系统的IO01脚上,在本例中,实验系统 IO01 脚接全加器的进位输出输出信号“c_out” 上,这样“c_out” 的变化就会在L9 灯上显示。 4 .设置八段数码管的工作方式。八段数码管可以数值的方式来显示信号的状态,显示‘0’表示低电平,显示‘1’表示高电平,我们可以将五个信号都用八段数码管显示其值。在伟福软件中,将鼠标移到S0 八段管上,点击右键,出现如图八段数码管属性设置对话框,“连接类型”选择为“4-16 译码器”,在下方的四个IO 选择栏中,“Bit0” 中选择连接

- 102 -

Page 103: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 EAD2000软件使用IO40 ,表示接到信号“a” 上, 因为“a” 信号只有一位,所以其它几位:“Bit3” 、“Bit2” 、 “Bit1” 都要选择“不连接”,“信号名”处填“a” 。按“OK”确认退出。按此方法,将S1 八段管接到实验系统的IO41 脚,也就是“b” 信号上,将S2 八段管接实验系统的IO42 脚,也就是“c_in” 信号上,将S4 八段管接到实验系统的IO00 脚,也就是“sum” 信号上,将S5 八段管接到IO01 脚,也就是“c_out” 信号上。

5 .选择FPGA/EPLD 适配板。全部的IO 脚设置好后,结构框图如图。现在选择软件中的“IO 管脚定义”页面,可以看到实验系统的IO 脚与各种适配板上芯片的实际管脚的对应关系。在窗口内的“选择FPGA/EPLD 板”的选择框中,选择实验系统上适配板的型号,下面的八组实验系统IO 脚与芯片管脚的对应关系就会显示出来。可以在这里观察到EDA开发环境中锁定的脚是否对应到相应的实验系统的IO 脚。例如在实验1 中,实验系统的IO40 脚对应于全加器的“输入1” ,也就是信号“a”, 那么,对于ALTERA 的MAX7128S适配板,实验系统的IO40 脚对应的芯片管脚为P15脚,我们可以检查在ALTERA 的MAX+Plus II 开发环境中,在设计时,我们是否将全加器的“a” 锁定到了MAX7128S芯片的P15脚上。 6 .保存设置好的工作模式。当实验系统的工作模式设置好了后,应将其保存下来,以便下次调用,选择EDA2000 软件的“保存模式”功能,在弹出的保存对话框中输入模式文件名“EX1.MOD” ,按“保存”钮保存文件。 7 .在伟福软件中连接EDA 实验系统。在模式设置、保存好后,就要用实验系统来做实验了,首先要将伟福EDA 软件和EDA 实验系统用串行口连接起来。用实验系统提供的串行电缆连接计算机的串行口和实验系统的“SYSTEM 232” 串行口,接通实验系统电源。注意:如果适配板上的芯片是FPGA ,在实验系统重新加电后,在EDA 开发环境中要重新编程下载设计生成的数据文件。在伟福软件中选择“连接EDA2000” 功能,弹出串行口选择对话框,选择好连接到实验系统的串行口,按对话框中的“连接EDA2000 实验系统”确认,如果伟福软件能正确连接到EDA2000 实验系统,软件会显示正确连接的状态。

- 103 -

实验系统处于运行状态

软件与实验系统连机正确

软件与实验系统通信设置对话框。有四个串口可供选择。

Page 104: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

8 .下载实验系统工作模式并启动实验系统。伟福软件连接到EDA2000 实验系统后,就可以将前面设置的工作模式下载到实验系统上,让实验系统按设置的模式来工作。在软件中按下“启动/ 暂停”钮,就可以把设置的工作模式下载到实验系统上,并启动实验系统。实验系统处于运行状态时,“启动/ 暂停”按钮显示如上图,此时,实验系统的运行状态可以在软件中显示出来,在软件中按键也可以传到实验系统,改变实验系统上对应按键连接信号的状态,与在实验系统上按键的效果相同。 9 .在实验上验证全加器功能。在实验系统上或软件上按K0 、K1 、K2 按键,分别改变全加器的“a” 、“b” 、“c_in” 信号的状态,观察L8 、L9 或S4 、S5 ,检查全加器输出信号“sum” 、“c_out” 的变化是否正确。

全加器输入信号 全加器输出信号K2(IO4

2)K1(IO4

1)K0(IO4

0)L8(IO00

)L9(IO01

)c_in b a sum c_out0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

- 104 -

Page 105: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计

第 七 章 EDA 实 验 与 课 程 设 计本章将以两个典型EDA 实验和一个课程设计为例详细介绍利用Altera 公司

MaxplusII 10.1 版本软件的基本应用,其它实验将不再赘述。读者在通过本章的学习后将对MaxplusII 软件及CPLD 的设计与应用有一个比较完整的概念和思路。在此因篇幅有限,仅仅介绍了MaxplusII 软件的最基本、最常用的一些基本功能。相信读者在熟练使用本软件以后,你会发现该软件还有好多非常方便、快捷、灵活的设计技巧与开发功能。

第 一 节 原 理 图 输 入 实 验

实 验 一 : 组 合 逻 辑 3-8译 码 器 的 设 计

一 、 实 验 目 的 :1 、掌握用Max+PlusII软件进行原理图输入设计方法。2 、掌握组合逻辑电路的设计方法。3 、初步了解可编程器件的设计全过程。

二 、 实 验 步 骤 :(一)设计输入:

1 、软件的启动:单击“开始”进入“程序”选中“Max+PlusII 10.1 BASELINE” ,打开“ ”MaxplusII 软件,如图7.1-1 所示。

- 105 -图 7.1-1

Page 106: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

2 、启动File\New菜单,弹出设计输入选择窗口,如图7.1-2 所示:3 、选择Graphic Editor File,单击OK ,打开原理图编辑器,进入原理图设计输入电路编

辑状态,如图7.1-3 所示:

4、设计输入1 )放置一个器件在原理图上a 、在原理图的空白处双击鼠标右键,出现图7.1-4 (注:途中的路径、文件名可能不

同):

- 106 -

图 7.1-2

图 7.1-3

Page 107: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计

b 、 在 光 标 处 输 入 元 件 名 称 ( 如 :input ,output ,and2,and3,nand2 ,or2 ,not ,xor ,dff 等)或用鼠标点击库元件,在此输入“74138” ,按下OK 即可。

c 、如果安放相同的元件,只要按住Ctrl 键,同时用鼠标按左键拖动该元件复制即可。d 、一个完整的电路包括:输入端口input 、电路元件集合、输出端口output 。e 、图7.1-5 为3-8 译码器元件安放结果。

2)添加连线到器件的引脚上:把鼠标移到元件引脚附近,则鼠标自动由箭头变为十字,按住鼠标左键拖动,即可画出连线。3-8 译码器原理图连线后如图7.1-6 所示。3)标记输入/输出端口属性

- 107 -

图 7.1-4

图 7.1-5

Page 108: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

分别双击输入端口的“PINNAME” ,当变成黑色时,即可输入标记符并回车确认;输出端口标记方法类似。本译码器的三输入端分别标记为:A、B 、C ,还有三个使能输入端分别标记为:G1 、G2AN 、G2BN ,G1 高电平有效,其余低电平有效;八个输出端分别为:Y0 、Y 1 、Y 2 、Y 3 、Y 4 、Y 5 、Y 6 、Y 7 。如图7.1-5 所示。4)保存原理图单击保存按钮图表,对于新建文件,出现类似文件管理器图框,请选择保存路径/ 文件名

称保存原理图,原理图的扩展名为.gdf ,本实验中取名为3-8.gdf。(注意:新建项目,一定要建立一个专门的文件夹保存项目文件,在编译过程中将有大量新文件产生。)5)点击File\Project\Set project to current File 设置此项目为当前项目文件,如图4.1-8 所

示。注意此操作在你打开几个原有项目文件时尤为重要,否则编译时容易出错 。

至此,你已完成了一个电路的原理图的设计输入过程。(二)电路的编译与适配

1 、选择芯片型号选择当前项目文件欲设计实现的实际芯片进行编译适配,单击Assign|Device菜单选择芯片,

如图7.2-1 所示。

如果此时不选择适配芯片的话,该软件将自动把所有适合本电路的芯片一一进行编译适配,这将费你许多时间。该实验中我 们选用CPLD 芯 片来实现,如用MAX7000S系列的EPM7128SLC84-15 芯片;同样也可以用FPGA 芯片来实现,你只需在下面的对话框中指出具体芯片型号即可。注意如果将该列表下方标有“Show only Fastest Speed Grades” 选项的“√”消去,以便显示出所有速度级别的器件。完成选择后单击“OK”按钮。

2 、编译适配- 108 -

图 4.1-8

图 7.2-1

Page 109: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计启动MaxplusII\Compiler 菜单,按Start开始编译,并显示编译结果,生成下载文件。如果

编译时选择的芯片是CPLD ,则生成*.pof 文件;如果是FPGA 芯片的互阿,则生成*.sof文件,以被硬件下载编程时调用。同时生成*.rpt 报告文件,可详细察看编译结果。如果有错误待修改后再进行编译适配,如图7.2-2 所示。注意此时在主菜单栏里的Processing 菜单下有许多编译时的选项,视实际情况选择设置。

如果你设计的电路顺利地通过了编译,在电路不复杂的情况下,就可以对芯片进行编程下载,测试硬件。如果你的电路有足够复杂,那么其仿真就显得非常必要。(三)电路仿真与时序分析

MaxplusII 教学版软件支持电路的功能仿真(或称前仿真)和时序分析(或称后仿真)。众所周知,开发人员在进行电路设计时,非常希望有比较先进的高效的仿真工具出现,这将为你的设计过程节约很多时间和成本。由于EDA 工具的出现,和它所提供的强大的(在线)仿真功能迅速地得到了电子工程设计人员的青睐,这也是当今EDA(CPLD/FPGA) 技术非常火爆的原因之一。下面就MaxpluII软件仿真功能的基本应用在本实验中作一初步介绍,在以后的实验例程中将不再一一介绍。

一)添加仿真激励波形1 、启动MaxplusII\Wavefrom Editor 菜单,进入波形编辑窗口,如图7.3-1 所示。

2 、将鼠标移至空白处并单击右键,出现如图7.3-2 所示对话窗口。

- 109 -

图 7.2-2

图 7.3-2

图 7.3-1

Page 110: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

3 、选择Enter Nodes from SNF 选项,并按左键确认,出现7.3-3 所示对话框,单击“”和“ ”按钮,选择欲仿真的I/O 管脚。

4 、单击OK 按钮,列出仿真电路的输入、输出管脚图,如图7.3-4 所示。在本电路中,3-8 译码器的输出为网格,表示未仿真前输出是未知的。5 、调整管脚顺序,符合常规习惯,调整时只需选中某一管脚(如 )并按住鼠标左

键拖到相应的位置即可完成。调整后如图7.3-5 所示。

- 110 -

图 7.3-3

图 7.3-4

Page 111: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计

6 、准备为电路输入端添加激励波形。选中欲添加信号的管脚,窗口左边的信号源即可变成可操作状态,如图7.3-6 中箭头和圆括号所示。根据实际要求选择信号源种类,在本电路中选择时钟信号就可以满足仿真要求。

7 、选择仿真时间:视电路实际要求确定仿真时间长短,如图7.3-7 所示。本实验中,我们选择软件的默认时间1us 就能观察到3-8 译码器的8 个输出状态。

- 111 -

图 7.3-5

图 7.3-6

Page 112: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

8 、为A、B 、C 三输入端添加信号:先选中A 输入端“ ”,然后再点击窗口左侧的时钟信号源图标“ ”添加激励波形,出现图7.3-8 所示的对话窗口。

9 、在本例程中,我们选择初始电平为“0” ,时钟周期倍数为“1” (时钟周期倍数只能为1 的整数倍)并按OK 确认。经上述操作我们已为A 输入端添加完激励信号,点击全屏显示如图7.3-9 所示。

- 112 -

图 7.3-8

图 7.3-7

图 7.3-9

Page 113: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计10、根据电路要求编辑另外两路输入端激励信号波形,在本实验中, 3-8 译码器的

A、B 、C 三路信号的频率分别为1 、2 、4 倍关系,其译码输出顺序就符合我们的观察习惯。按上述方法为B 、C 两路端口添加波形后单击左边全屏显示图表“ ”,三路激励信号的编辑结果为图7.3-10 所示。

11、 保存激励信号编辑结果:使用 File | Save ,或关闭当前波形编辑窗口时均出现图7.3-11 会话框,注意此时文件名不要随意改动,单击OK 按钮保存激励信号波形。

二)电路仿真电路仿真有前仿真(功能仿真)和后仿真(时序仿真)两种,时序仿真覆盖了功能仿真,

在该例程中我们直接使用时序仿真。读者可以自行使用功能仿真,对比其区别。

- 113 -

图 7.3-11

图 7.3-10

Page 114: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

1、选择Maxplus2|Simulator 菜单,弹出其对话窗口,如图7.3-12 所示。

2 、确定仿真时间,End Time为“1”的整数倍。注意:如果在添加激励信号完成后设置结束时间的话,此时仿真窗口中就不能修改End Time参数了。在该例程中,我们使用的是默认时间,单击Start开始仿真,如有出错报告,请查找原因,一般是激励信号添加有误。本电路仿真结果报告中无错误、无警告,如下图7.3-13 所示。

3 、观察电路仿真结果,请单击“确定”后单击激励输出波形文件“Open SCF”图标。如图7.3-14 所示。

- 114 -

图 7.3-12

图 7.3-13

Page 115: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计

4 、从上图可见,我们所设计的3-8 译码器顺利地通过了仿真, 设计完全正确。点击“”将上图放大,仔细观察一下电路的时序,在空白处单击鼠标的右键,出现测量标尺,然后将标尺拖至欲测量的地方,查看延时情况,如图7.3-15 所示。

从上图可以看到,我们这个电路在实际工作时,激励输出有15.6个ns的延迟时间。至此,你已完成和掌握了软件的仿真功能。

- 115 -

图 7.3-14

图 4.3-15

Page 116: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

(四)管脚的重新分配与定位:启动MaxplusII\Floorplan Editor 菜单命令,(或按“ ”快捷图标)出现图7.4-1 所示的

芯片管脚自动分配画面,点击“ ”图标,所有管脚将会在“ ”

中显示。读者可在芯片的空白处试着双击鼠标左键,你会发现这样的操作可在芯片和芯片内部之间

进行切换,可观察到芯片内部的逻辑块等。Foolrplan Editor 展示的是该设计项目的管脚分配图。这是由软件自动分配的。用户可随意

改变管脚分配,以方便与你的外设电路进行匹配。管脚编辑过程如下:1 、按下窗口左边手动分配图标“ ”,所有管脚将会出现在窗口中,如图7.4-2 中箭

头所指。

2 、用鼠标按住某输入| 输出端口,并拖到下面芯片的某一管脚上,松开鼠标左键,便可- 116 -

图 7.4-1

图 7.4-2

Page 117: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计完成一个管脚的重新分配(读者可以试着在管脚之间相互拖曳,你会觉得非常方便)。注意:芯片上有一些特定的管脚不能被占用,进行管脚编辑时一定要注意。另外,在芯片器件选择中,如果选的时Auto,则不允许对管脚进行再分配。当你对管脚进行二次调整以后,一定要再编译一次,否则程序下载以后,其管脚功能还是当初的自动分配状态。(五)、器件下载编程与硬件实现

一)实验电路板上的连线用三位拨码开关代表译码器的输入端 A、B 、C ,将之分别与EPM7128SLC84-15 芯片

的相应管脚相连;用LED灯来表示译码器的输出,将D0...D7 对应的管脚分别与8 只LED灯相连。试验结果如下:

A B C LED0LED1

LED2

LED3

LED4LED5

LED6

LED7

0 0 0 亮 灭 灭 灭 灭 灭 灭 灭1 0 0 灭 亮 灭 灭 灭 灭 灭 灭0 1 0 灭 灭 亮 灭 灭 灭 灭 灭1 1 0 灭 灭 灭 亮 灭 灭 灭 灭0 0 1 灭 灭 灭 灭 亮 灭 灭 灭1 0 1 灭 灭 灭 灭 灭 亮 灭 灭0 1 1 灭 灭 灭 灭 灭 灭 亮 灭1 1 1 灭 灭 灭 灭 灭 灭 灭 亮

二)器件编程下载1 、启动MaxplusII\Programmer 菜单,如果是第一次启用的话,将出现如图4.5-1 所示的

对话框,请你填写硬件类型,请选择“ByteBlaster(MV)” 并按下OK 确认即可。

2 、启用JTAG\Multi-Device JTAG Chain Setup... 菜单项,按Select Programming File... 按钮,- 117 -

图 4.5-1

Page 118: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

选择要下载的*.pof 文件。然后按Add加到文件列表中,如图4.5- 2所示(如果编译时选择的是FPGA 芯片,此时要选择的下载文件为*.sof)如果不是当前要下载编程的文件的话,请使用Delete 将其删除。

3 、选择完下载文件后,单击OK 确定,出现下图4.5- 3所示的下载编程界面。

4 、单击Pogram 按钮,进行下载编程,如不能正确下载,请点击图4. 5- 2的Detect JTAG chain info 按钮进行JTAG 测试,查找原因,直至完成下载,最后按OK 退出。至此,你已经完成了可编程器件的从设计到下载实现的整个过程。

5 、结合电路功能,观察设计实现的正确结果。说明:通过对本实验的学习,相信读者对 MaxplusII 软件已经有了一定的认识,同样对

- 118 -

图 4.5-2

图 7.5-3

Page 119: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计CPLD 可编程器件的整个设计过程也有了一个完整的概念和思路。

- 119 -

Page 120: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

实 验 二 组 合 逻 辑 电 路 的 设 计

一 、 试 验 目 的1、掌握组合逻辑电路的设计方法。2、掌握组合逻辑电路的静态测试方法。3、熟悉CPLD 设计的过程,比较原理图输入和文本输入的优劣。

二 、 实 验 的 硬 件 要 求1、输入:按键开关(常高)4个;拨码开关4位。2、输出:LED灯。3、主芯片:Altera EPM7128SLC84-15。

三 、 实 验 内 容1、设计一个四舍五入判别电路,其输入为8421BCD 码,要求当输入大于或等于5时,

判别电路输出为1,反之为0。2、设计四个开关控制一盏灯的逻辑电路,要求改变任意开关的状态能够引起灯亮灭状态

的改变。(即任一开关的合断改变原来灯亮灭的状态)3、设计一个优先排队电路,其框图如下:排队顺序:

A=1 最高优先级B=1 次高优先级C=1 最低优先级

要求输出端最多只能有一端为“1”,即只能是优先级较高的输入端所对应的输出端为“1”。

四 、 实 验 连 线1、四位拨码开关连 D3 、D2 、D1 、D0 信号对应的管脚。

OUT 输出信号管脚接LED灯。2、四位按键开关分别连 K1 、K2 、K3 、K4 信号对应的管脚。

OUT 输出信号管脚接LED灯。3、A、B 、C 信号对应管脚分别连三个按键开关。输出A_Out、B_Out 、C_Out 信号对

应的管脚分别连三个LED灯。(具体管脚参数由底层管脚编辑决定)

五 、 参 考 原 理 图1 、①原理图,如图5-1 所示:

- 120 -

Page 121: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计

②AHDL 硬件描述语言输入:SUBDESIGN t5_1(

d0,d1,d2,d3:INPUT; out: OUTPUT;

)BEGIN

IF( (d3,d2,d1,d0) >= 5 ) THEN out=VCC; ELSE out=GND; END IF;

END;2 、①原理图,如图5-2 所示:

②AHDL 硬件描述语言输入:SUBDESIGN t5_2(

k0,k1,k2,k3:INPUT; out: OUTPUT;

)BEGIN

TABLE (k3,k2,k1,k0) => out;

B"0000" => GND;B"0001" => VCC;B"0011" => GND;B"0010" => VCC;B"0110" => GND;

- 121 -

图 5-2

图 5-1

Page 122: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

B"0111" => VCC;B"0101" => GND;B"0100" => VCC;B"1100" => GND;B"1101" => VCC;B"1111" => GND;B"1110" => VCC;B"1010" => GND;B"1011" => VCC;B"1001" => GND;B"1000" => VCC;

END TABLE;END;

3 、①原理图,如图5-3 所示:

②AHDL 硬件描述语言输入:SUBDESIGN t5_3( a,b,c : INPUT; a_out,b_out,c_out : OUTPUT;)BEGIN IF a THEN a_out=VCC; b_out=GND; c_out=GND; ELSIF b THEN a_out=GND; b_out=VCC; c_out=GND; ELSIF c THEN a_out=GND; b_out=GND; c_out=VCC; ELSE a_out=GND; b_out=GND; c_out=GND; END IF;END;

六 、 实 验 报 告 要 求1 、对于原理图设计要求有设计过程。

- 122 -

图 5-3

Page 123: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第七章 EDA实验与课程设计2 、详细论述实验步骤。3 、写一些对比两种硬件设计输入法的优劣的心得。

- 123 -

Page 124: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第 二 节 VHDL 硬 件 描 述 语 言 实 验

本实验手手册中的所有例子完全用VHDL语言编写,因此可以用于各种EPLD/FPGA芯片。用户须注意的是:不同的芯片封装是不一样的,在使用例子程序时要根据所使用的芯片进行管脚锁定。 不同的实验程序所需的逻辑门数不一样,有一些实验所需的逻辑门数较多(如:实验26 八位CPU),只能在逻辑门较多的FLEX10K10 或XCS10中实现,而无法在逻辑门数较少的MAX7128S或XC95108中实现。遇到这种情况,我们会在例子特别指出,如例子中未加说明,则表示该实验可在所有的EPLD/FPGA 中实现。“..\FLEX”目录下为FLEX10K10的实验样例,“..\MAX” 目录下为MAX7128S的实验样例,“..\XC95” 目录下为XC95108的实验样例,“..\XCS10” 目录下为XCS10的实验样例。 为了方便用户的使用,我们为每一个实验都设定了相应的配置模式。配置模式与实验使用相同的编号,如实验一的VHDL 程序名为EX1.VHD ,相应的配置模式文件名为M1.MOD。在实验机上的模式编号为1 。我们建议用户使用我们设定的配置模式,用户也可自行定义专用模式(详见第35页模式定义)。我们设置好的配置模式文件存在“..\MODE” 目录下。实验一 1 位全加器要求:将a, b, c_in 相加,输出和sum 及进位c_out

输入:a 加数 IO40b 被加数 IO41c_in 进位输入 IO42

输出:sum 和 IO00 c_out 进位输出 IO01

EX1.VHD 程序LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;

ENTITY EX1 ISPORT ( a : IN STD_LOGIC; -- IO40 b : IN STD_LOGIC; -- IO41

- 124 -

配置模式 1

Page 125: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验 c_in : IN STD_LOGIC; -- IO42 sum : OUT STD_LOGIC; -- IO00 c_out: OUT STD_LOGIC -- IO01);END EX1;

ARCHITECTURE behv OF EX1 ISBEGIN sum <= a XOR b XOR c_in; c_out <= (a AND b) OR (c_in AND (a OR b));END behv;

实验二 2 选1 多路选择器要求:当选择输入s 为0 时,y 输出a, 当s 为1 时,y 输出b

输入:a 输入a IO40b 输入b IO41s 选择 IO42

输出:y 结果输出 IO00

EX2.VHD 程序LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;

ENTITY EX2 ISPORT ( a: IN STD_LOGIC; -- IO40 b: IN STD_LOGIC; -- IO41 s: IN STD_LOGIC; -- IO42 y: OUT STD_LOGIC -- IO00);END EX2;

ARCHITECTURE behv OF EX2 ISBEGIN y <= a WHEN s = '0' ELSE b;END behv;

- 125 -

配置模式 2

Page 126: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

实验三 8 位硬件加法器要求:将8 位加数a(7 downto 0) 与8 位被加数b(7 downto 0) 相加,结果 输出到sum(7 downto0)

输入:a 输入a IO47..IO40b 输入b IO55..IO48

输 出 : y 结 果 输 出 IO15..IO08

EX3.VHD 程序LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY EX3 ISPORT ( a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO47..IO40 b : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO55..IO48 sum : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -- IO15..IO08);END EX3;

ARCHITECTURE behv OF EX3 ISBEGIN sum <= a + b;END behv;

实验四 7 段数码显示译码器要求:将4 位二制数输入转换为对应的八段数码 管 输出。如0000 输出’0’, 1111l 输出’F’

输入:A 二进制输入 IO43..IO40输 出 : LED7S 八 段 管 输 出

- 126 -

配置模式3

配置模式 4

Page 127: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验IO14..IO08

EX4.VHD 程序LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;

ENTITY EX4 ISPORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- IO43..IO40 LED7S: OUT STD_LOGIC_VECTOR(6 DOWNTO 0) -- IO14..IO08);END EX4;

ARCHITECTURE behv OF EX4 ISBEGIN PROCESS(A) BEGIN CASE A(3 DOWNTO 0) IS WHEN "0000" => LED7S <= "0111111"; WHEN "0001" => LED7S <= "0000110"; WHEN "0010" => LED7S <= "1011011"; WHEN "0011" => LED7S <= "1001111"; WHEN "0100" => LED7S <= "1100110"; WHEN "0101" => LED7S <= "1101101"; WHEN "0110" => LED7S <= "1111101"; WHEN "0111" => LED7S <= "0000111"; WHEN "1000" => LED7S <= "1111111"; WHEN "1001" => LED7S <= "1101111"; WHEN "1010" => LED7S <= "1110111"; WHEN "1011" => LED7S <= "1111100"; WHEN "1100" => LED7S <= "0111001"; WHEN "1101" => LED7S <= "1011110"; WHEN "1110" => LED7S <= "1111001"; WHEN "1111" => LED7S <= "1110001"; WHEN OTHERS => NULL; END CASE; END PROCESS;END behv;

- 127 -

Page 128: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

实验五 8 位串入并出寄存器要求:将sin 输入的串行数据转换为8 位并

行数据sout

输入:sin 串行数据输入 IO40 clk 移位时钟 IO41输 出 : sout 并 行 输 出 IO15..IO08

注意:此实验中,使用了时钟信号,请关闭时钟信号管脚的自动锁定功能,在ALTERA的开发环境中,参考第18 页的注意事项。在Xilinx开发环境中,参考第26 页的注意事项。EX5.VHD 程序LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;

ENTITY EX5 ISPORT ( sin : IN STD_LOGIC; -- IO40 clk : IN STD_LOGIC; -- IO41 sout : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0) -- IO15..IO08);END EX5;

ARCHITECTURE behv OF EX5 ISBEGIN PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN sout(7 DOWNTO 0) <= sout(6 DOWNTO 0) & sin; END IF; END PROCESS;END behv;

- 128 -

配置模式 5

Page 129: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验

- 129 -

Page 130: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

实验六 8 位并入串出寄存器要求:将8 位并行输入数据din 转换为串行数据由sout 输出

输 入 : din 8 位 并 行 数 据 输 入 IO47..IO40 load 并行数据打入驶 IO49 clk 移 位 时 钟 IO48输 出 : sout 串 行 输 出 IO00

注意:此实验中,使用了时钟信号,请关闭时钟信号管脚的自动锁定功能,在ALTERA 的开发环境中,参考第18 页的注意事项。在Xilinx开发环境中,参考第26 页的注意事项。EX6.VHD 程序LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;

ENTITY EX6 ISPORT ( din : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO47..IO40 clk : IN STD_LOGIC; -- IO48(P36) load : IN STD_LOGIC; -- IO49(P35) sout : OUT STD_LOGIC -- IO00(P54));END EX6;

ARCHITECTURE behv OF EX6 ISBEGIN PROCESS(clk) VARIABLE reg8: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF clk'EVENT AND clk = '1' THEN IF load = '1' THEN reg8 := din; ELSE

- 130 -

配置模式 6

Page 131: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验 reg8(6 DOWNTO 0) := reg8(7 DOWNTO 1); END IF; END IF; sout <= reg8(0); END PROCESS;END behv;

- 131 -

Page 132: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

实验七 用状态机对ADC0832 电路控制实现SIN

要求:用ADC0832 产生一个SIN 波形(16 点)

输入:clk 时钟输入 IO30rst 复位输入 IO48wr 写信号 IO33cs 片选信号 IO32

输出:dout DA 数据输入 IO40..IO47

EX13.VHD程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY EX13 ISPORT ( clk : IN STD_LOGIC; -- IO30 rst : IN STD_LOGIC; -- IO48 wr : OUT STD_LOGIC; -- IO33 cs : OUT STD_LOGIC; -- IO32 dout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -- IO47..IO40);END EX13;

ARCHITECTURE behv OF EX13 ISSIGNAL cnt : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN

cs <= '0'; wr <= '0'; PROCESS(rst, clk) BEGIN IF rst = '1' THEN cnt <= "0000"; ELSIF clk'EVENT AND clk = '1' THEN cnt <= cnt + 1; END IF;

- 132 -

配置模式 7在外部设备窗口中选中“并行DA变换”

Page 133: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验 END PROCESS; -- 16 byte sin data dout <= "10000000" WHEN cnt = "0000" ELSE -- 128 "10101110" WHEN cnt = "0001" ELSE -- 174 "11011001" WHEN cnt = "0010" ELSE -- 217 "11110101" WHEN cnt = "0011" ELSE -- 245 "11111111" WHEN cnt = "0100" ELSE -- 255 "11110101" WHEN cnt = "0101" ELSE -- 245 "11011001" WHEN cnt = "0110" ELSE -- 217 "10101110" WHEN cnt = "0111" ELSE -- 174 "10000000" WHEN cnt = "1000" ELSE -- 128 "01001011" WHEN cnt = "1001" ELSE -- 75 "00100010" WHEN cnt = "1010" ELSE -- 34 "00001000" WHEN cnt = "1011" ELSE -- 8 "00000000" WHEN cnt = "1100" ELSE -- 0 "00001000" WHEN cnt = "1101" ELSE -- 8 "00100010" WHEN cnt = "1110" ELSE -- 34 "01001011"; -- 75END behv;

实验八 用状态机实现ADC0809 的采样控制电路要求:用ADC0809 采样电压( 由电位器产生)

原理:ADC0809 的控制信号如下图: 启动信号START 高电平开始AD 转换,此时转换结束标志变为0 当EOC由低变高,表示转换结束。

此时可以置OE 为1 ,ADC0809 输出转换结果

输入:clk 时钟输入 IO30din AD结果输出 IO48..IO55eoc 转换结束 IO38

输出:q AD 结果保存 IO08..IO15clock AD0809时钟 IO39start 启动AD0809 IO37

- 133 -

配置模式 8在外部设备窗口中选中“并行 AD变换”

Page 134: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

oe 输出AD 结果 IO34

EX14.VHD程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

ENTITY EX14 ISPORT ( din : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO55..IO48 clk : IN STD_LOGIC; -- clock input for state -- IO30 q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO15..IO08 eoc : IN STD_LOGIC; -- IO38 clock: OUT STD_LOGIC; -- clock output for ADC0809 -- IO39 start: OUT STD_LOGIC; -- IO37 oe : OUT STD_LOGIC -- IO34);END EX14;

ARCHITECTURE behv OF EX14 ISTYPE st_type IS (st0, st1, st2, st3, st4);SIGNAL lock: STD_LOGIC;SIGNAL current_state, next_state: st_type := st0;BEGIN clock <= clk; PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN current_state <= next_state; END IF; END PROCESS; PROCESS(lock) BEGIN IF lock'EVENT AND lock = '1' THEN q <= din; END IF; END PROCESS;

- 134 -

Page 135: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验 PROCESS(current_state, eoc) BEGIN CASE current_state IS WHEN st0 => start <= '0'; oe <= '0'; lock <= '0'; next_state <= st1; WHEN st1 => start <= '1'; oe <= '0'; lock <= '0'; next_state <= st2; WHEN st2 => start <= '0'; oe <= '0'; lock <= '0'; IF eoc = '1' THEN next_state <= st3; ELSE next_state <= st2; END IF; WHEN st3 => start <= '0'; oe <= '1'; lock <= '0'; next_state <= st4; WHEN st4 => start <= '0'; oe <= '1'; lock <= '1'; next_state <= st0; WHEN OTHERS => start <= '0'; oe <= '0'; lock <= '0'; next_state <= st0; END CASE;

- 135 -

Page 136: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

END PROCESS;

END behv;

实验九 硬件电子琴电路设计要求:根据键入发出不同的音价.

原理:一个音的音阶由频率决定,基本音阶的频率如下表:音阶 1 2 3 4 5 6 7 高音 1

频率 440.00 493.88 554.37 587.33 659.26 739.99 830.61 880.00

周期

1136.4

us

1012.4u

s901.9us 851.3us

758.4u

s

675.7u

s

602.0u

s

568.2u

s

要发出“1” 的音,只需产生440Hz (周期为1136.4us x 2 )的频率即可。 模块speaker 实现此功能,speaker 是一个带预置的减法计数器,用于产生指定周期的脉冲,speaker 的基准时钟是10M(100ns ), 当tone为11364 时,每1136.4us x 2 ,产生一个脉冲。 模块tone根据用户的键入,输出相应的周期数供speaker 产生脉冲。当用户按下K0 时,输出tone 11364, 按下K1 时输出tone 10124, …

输入:clk 时钟输入 IO30p_keyin 键输入 IO40..IO47

输出:p_code 键入显示 IO00..IO02

- 136 -

配置模式 9在外部设备窗口中选中“喇叭”

Page 137: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验p_high 高音指示 IO03p_speaker 音输出 IO07

EX16.VHD程序LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;

ENTITY EX16 ISPORT ( clk : IN STD_LOGIC; -- 10M clock input -- IO30 p_keyin : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO47..IO40 p_code : OUT INTEGER RANGE 0 TO 7; -- IO02..IO00 p_high : OUT STD_LOGIC; -- IO03 p_speaker : OUT STD_LOGIC -- IO07);END EX16;

ARCHITECTURE behv OF EX16 IS

COMPONENT tone PORT ( keyin : IN STD_LOGIC_VECTOR(7 DOWNTO 0); tone : OUT INTEGER RANGE 0 TO 12000; code : OUT INTEGER RANGE 0 TO 7; high : OUT STD_LOGIC);END COMPONENT;

COMPONENT speakerPORT ( clk : IN STD_LOGIC; -- 10M clock input tone : IN INTEGER RANGE 0 TO 12000; speak_out: OUT STD_LOGIC);END COMPONENT;

SIGNAL p_tone : INTEGER RANGE 0 TO 12000;

BEGIN- 137 -

Page 138: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

u_tone: tone PORT MAP ( keyin => p_keyin, tone => p_tone , code => p_code , high => p_high ); u_speaker: speaker PORT MAP ( clk => clk , tone => p_tone , speak_out => p_speaker ); END behv;

--SPEAKER.VHD 程序LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;

ENTITY speaker IS PORT ( clk : IN STD_LOGIC; -- 10M clock input tone : IN INTEGER RANGE 0 TO 12000; speak_out: OUT STD_LOGIC );END speaker;

ARCHITECTURE behv OF speaker ISSIGNAL speak_t : STD_LOGIC;BEGIN PROCESS(clk) VARIABLE tone_cnt: INTEGER RANGE 0 TO 12000; BEGIN IF clk'EVENT AND clk = '1' THEN IF tone_cnt = 0 THEN tone_cnt := tone;

- 138 -

Page 139: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验 speak_t <= '1' ; ELSE tone_cnt := tone_cnt - 1; speak_t <= '0'; END IF; END IF; END PROCESS;

PROCESS(speak_t) VARIABLE speak_d : STD_LOGIC; BEGIN IF speak_t'EVENT AND speak_t = '1' THEN speak_d := NOT speak_d; END IF; speak_out <= speak_d; END PROCESS;END behv;

--TONE.VHD 程序LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;

ENTITY tone ISPORT ( keyin : IN STD_LOGIC_VECTOR(7 DOWNTO 0); tone : OUT INTEGER RANGE 0 TO 12000; code : OUT INTEGER RANGE 0 TO 7; high : OUT STD_LOGIC);END tone;

ARCHITECTURE behv OF tone ISBEGIN PROCESS(keyin) BEGIN CASE keyin IS WHEN "00000001" => -- '1' 440.00 1136.4us

- 139 -

Page 140: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

tone <= 11364; code <= 1 ; high <= '0' ; WHEN "00000010" => -- '2' 493.88 1012.4us tone <= 10124; code <= 2 ; high <= '0' ; WHEN "00000100" => -- '3' 554.37 901.9us tone <= 9019; code <= 3 ; high <= '0' ; WHEN "00001000" => -- '4' 587.33 851.3us tone <= 8513; code <= 4 ; high <= '0' ; WHEN "00010000" => -- '5' 659.26 758.4us tone <= 7584; code <= 5 ; high <= '0' ; WHEN "00100000" => -- '6' 739.99 675,7us tone <= 6757; code <= 6 ; high <= '0' ; WHEN "01000000" => -- '7' 830.61 602.0us tone <= 6020; code <= 7 ; high <= '0' ; WHEN "10000000" => -- '1' 880.00 568.2us tone <= 5682; code <= 1 ; high <= '1' ; WHEN OTHERS => -- no sound tone <= 0 ; code <= 0 ; high <= '0' ; END CASE; END PROCESS;

END behv;

- 140 -

Page 141: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验实验十 秒表要求:实现秒表功能, 要求有分, 秒,1% 秒显示. 输入:p_clk 100Hz 基准时钟输入 IO30

p_rst 复位输入 IO41p_ena 秒表启/ 停 IO40

输出:s100l 1%秒低位显示 IO08..IO11s100h 1% 秒高位显示 IO12..IO15s1l 秒低位显示 IO16..IO19s1h 秒高位显示 IO20..IO22m1l 分低位显示 IO32..IO35m1h 分高位显示 IO36..IO38

EX18.VHD程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY EX18 ISPORT ( p_clk: IN STD_LOGIC; -- 100Hz -- IO30 p_rst: IN STD_LOGIC; -- IO41 p_ena: IN STD_LOGIC; -- IO40 s100l: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- IO11..IO08 s100h: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- IO15..IO12 s1h : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); -- IO22..IO20 s1l : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- IO19..IO16 m1h : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); -- IO38..IO36 m1l : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) -- IO35..IO32);END EX18;

ARCHITECTURE behv OF EX18 IS

SIGNAL clks10 : STD_LOGIC;SIGNAL clks1 : STD_LOGIC;SIGNAL clk10s : STD_LOGIC;

- 141 -

配置模式 10

Page 142: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

SIGNAL clk1m : STD_LOGIC;SIGNAL clk10m : STD_LOGIC;

COMPONENT cnt10PORT ( clk : IN STD_LOGIC; rst : IN STD_LOGIC; ena : IN STD_LOGIC; outy: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout: OUT STD_LOGIC);END COMPONENT;

COMPONENT cnt6PORT ( clk : IN STD_LOGIC; rst : IN STD_LOGIC; ena : IN STD_LOGIC; outy: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); cout: OUT STD_LOGIC);END COMPONENT; BEGIN

u_s100l: cnt10 PORT MAP ( clk => p_clk , rst => p_rst , ena => p_ena , outy => s100l , cout => clks10 );u_s100h: cnt10 PORT MAP ( clk => clks10, rst => p_rst , ena => p_ena , outy => s100h ,

- 142 -

Page 143: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验 cout => clks1 );u_s1l: cnt10 PORT MAP ( clk => clks1 , rst => p_rst , ena => p_ena , outy => s1l , cout => clk10s );u_s1h: cnt6 PORT MAP ( clk => clk10s, rst => p_rst , ena => p_ena , outy => s1h , cout => clk1m );u_m1l: cnt10 PORT MAP ( clk => clk1m , rst => p_rst , ena => p_ena , outy => m1l , cout => clk10m );u_m1h: cnt6 PORT MAP ( clk => clk10m, rst => p_rst , ena => p_ena , outy => m1h );

END behv;

--CNT10.VHD 程序LIBRARY IEEE;

- 143 -

Page 144: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY cnt10 ISPORT ( clk : IN STD_LOGIC; rst : IN STD_LOGIC; ena : IN STD_LOGIC; outy: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout: OUT STD_LOGIC);END cnt10;

ARCHITECTURE behv OF cnt10 ISSIGNAL cqi: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(clk, rst, ena) BEGIN IF rst = '1' THEN cqi <= "0000";

cout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN IF ena = '1' THEN IF cqi = "1001" THEN cqi <= "0000"; cout <= '1'; ELSE cqi <= cqi + 1; cout <= '0'; END IF; END IF;

END IF;outy <= cqi;

END PROCESS;END behv;

--CNT6.VHD 程序LIBRARY IEEE;

- 144 -

Page 145: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY cnt6 IS PORT ( clk : IN STD_LOGIC;

rst : IN STD_LOGIC; ena : IN STD_LOGIC; outy: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);

cout: OUT STD_LOGIC );END cnt6;

ARCHITECTURE behv OF cnt6 ISSIGNAL cqi: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN PROCESS(clk, rst, ena) BEGIN IF rst = '1' THEN cqi <= "000";

cout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN IF ena = '1' THEN IF cqi = "101" THEN cqi <= "000"; cout <= '1'; ELSE cqi <= cqi + 1; cout <= '0'; END IF; END IF;

END IF;outy <= cqi;

END PROCESS;END behv;

- 145 -

Page 146: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第 三 节 课 程 设 计 课 题课题一  交通灯

1 .设计要求有一条主干道和一条支干道的汇合点形成十字交叉路口,主干道为东西向,支干道为

南北向。为确保车辆安全,迅速地通行,在交叉道口的每个入口处设置了红,绿,黄3 色信号灯。要求:(1 )主干道绿灯亮时,支干道红灯亮,反之亦然,两者交替允许通行,主干道每次放行35s ,支干道每次放行25s 。每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡。

- 146 -

Page 147: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验(2 )能实现正常的倒计时显示功能。(3 )能实现总体清零功能:计数器由初始状态开始计数,对应状态的指示灯亮。(5 ) 能实现特殊状态的功能显示:进入特殊状态时,东西、南北路口均显示红灯状

态。

⒉.设计思路交通灯控制器原理框图如图1 所示,包括置数模块、计数模块、主控制器模块和译码

器模块。置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。其中,核心部分是主控制模块。

(1 )控制器模块设计依设计要求,可画出交通灯点亮规律的状态转换表,如表1 所示。根据状态图进行主控制器的设计。主控制器的输入信号为S (特殊状态),T (计时时间到信号),CLK,CLR;主控制器的输出AR (主干道红灯亮),AG (主干道绿灯亮),AY (主干道黄灯亮),BR (支干道红灯亮),BG (支干道绿灯亮),BY (主干道黄灯亮)分别控制主干道,支干道的3 个信号灯;LD 控制计数器的启动。COUT[1..0] 控制置数模块选择待置数据。此模块用VHDL语言进行设计。结构体中包含3 个进程,第1个进程描述时序逻辑,第2 与第3 个进程描述组合逻辑。第1 个进程与第2 个进程一起实现状态的转换,第3 个进程由状态的输出确定输出信号的值。(2 )置数模块,计数模块,译码模块

由于系统要进行35s ,5s,25s 3 种定时,所以本系统采用一个置数模块由主控模块输出的信号控制定时时间的选择。定时计数器采用倒序计时的方式,由主控模块输出的信号控制定时的开始,定时时间结束

- 147 -

Page 148: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

时输出定时时间结束信号到主控模块,通过主控模块控制交通灯的开、闭。译码模块把计数器输出的信号CLOW[3..0],CHIGH[3..0] 分别进行译码,输出译码信号CLOW[6..0] 。CHIGN[6..0] 分别与数码管相连,由数码管显示当前计数值。(3 )顶层原理图及其仿真结果本系统分模块由VHDL语言编程实现,总系统则采用原理图实现,各分模块相连组成交通灯控制系统。顶层原理图如图2 所示。

在MAXPLUSII 中进行仿真,系统仿真结果见图3 。

- 148 -

Page 149: 电子与信息技术一体化教材 - EDA - pudn.comread.pudn.com/downloads137/doc/project/588327/EDA.doc · Web view电子与信息技术一体化教材 张渚职中校本课程

第六章 VHDL 硬件描述语言实验由仿真结果分析:主干道黄灯亮,支干道红灯亮,计数器从5s倒计数,计到零,主干

道红灯亮,支干道绿灯亮;计数器计时25s 后,主干道保持红灯不变,支干道亮5s黄灯;主干道亮绿灯,支干道亮红灯,计时35s 可见本系统实现了交通灯控制器的设计要求。

课题二  具有整点报时的数字钟设计要求(数字钟的功能):1 .用CPLD/FPGA 完成设计。2 .具有时、分、秒,计数显示功能,以24 小时循环计时。3 .具有清零,调节小时、分钟功能。4 .具有整点报时功能,报时频率必须标准。

- 149 -