EDA技术概述整套课件完整版电子教案最全ppt整本书课件全套教学教程最新

上传人:工**** 文档编号:568809116 上传时间:2024-07-27 格式:PPT 页数:734 大小:8.75MB
返回 下载 相关 举报
EDA技术概述整套课件完整版电子教案最全ppt整本书课件全套教学教程最新_第1页
第1页 / 共734页
EDA技术概述整套课件完整版电子教案最全ppt整本书课件全套教学教程最新_第2页
第2页 / 共734页
EDA技术概述整套课件完整版电子教案最全ppt整本书课件全套教学教程最新_第3页
第3页 / 共734页
EDA技术概述整套课件完整版电子教案最全ppt整本书课件全套教学教程最新_第4页
第4页 / 共734页
EDA技术概述整套课件完整版电子教案最全ppt整本书课件全套教学教程最新_第5页
第5页 / 共734页
点击查看更多>>
资源描述

《EDA技术概述整套课件完整版电子教案最全ppt整本书课件全套教学教程最新》由会员分享,可在线阅读,更多相关《EDA技术概述整套课件完整版电子教案最全ppt整本书课件全套教学教程最新(734页珍藏版)》请在金锄头文库上搜索。

1、 【要求要求】 理解可编程逻辑器件和理解可编程逻辑器件和EDA技术的初步知识。技术的初步知识。 【知识点知识点】l理解理解EDA技术的概念技术的概念l理解理解EDA技术的发展技术的发展l理解理解EDA技术的主要内容技术的主要内容l理解可编程逻辑器件的发展理解可编程逻辑器件的发展l理解可编程逻辑器件的分类与结构及原理理解可编程逻辑器件的分类与结构及原理l理解面向理解面向CPLD/FPGA的设计流程的设计流程 【重点和难点重点和难点】lEDA技术的概念和发展技术的概念和发展l可编程逻辑器件的分类与结构可编程逻辑器件的分类与结构第第1章章 EDA技术概述技术概述下一页第第1章章 EDA技术概述技术概

2、述1.1 EDA历史与发展历史与发展1.2 可编程逻辑器件可编程逻辑器件1.3 本章小结本章小结上一页一、一、EDA技术的概念技术的概念 电子设计自动化电子设计自动化(Electronic Design Automation, EDA)技术技术已经成为现代电子设计技术的核心,广泛应用于集成电路已经成为现代电子设计技术的核心,广泛应用于集成电路IC、复杂电、复杂电了电路和了电路和PCB的设计。的设计。EDA技术的发展,使得技术的发展,使得ASIC设计得到了快速设计得到了快速的发展。的发展。 什么是什么是EDA技术技术? EDA技术是现代电了产品设计技术中的一门综技术是现代电了产品设计技术中的一门

3、综合性新技术,包括广义和狭义的合性新技术,包括广义和狭义的EDA技术。技术。 广义的广义的EDA技术,包括计算机辅助分析技术,包括计算机辅助分析CAA技术技术(EWB, MATLAB等等),印制电路板计算机辅助设计,印制电路板计算机辅助设计PCB-CAD技术技术(Protel, Or CAD等等),专用集成电路设计,专用集成电路设计ASIC技术等。技术等。 1.1 EDA历史与发展历史与发展下一页下一页上一页 1.1 EDA历史与发展历史与发展 狭义的狭义的EDA技术是指技术是指IES/ASIC自动化设计技术,是以计算自动化设计技术,是以计算机为基本工作平台,以硬件描述语言为系统逻辑描述的主要

4、表达方机为基本工作平台,以硬件描述语言为系统逻辑描述的主要表达方式,以式,以EDA工具软件为开发环境,以大规模可编程逻辑器件为设工具软件为开发环境,以大规模可编程逻辑器件为设计载体,以专用集成电路计载体,以专用集成电路ASIC (Application Special Integrated Circuit)、单片电子系统、单片电子系统SOC (System On Chip)芯片为目标器件,以电子系统设计为应用方向的电子产品设芯片为目标器件,以电子系统设计为应用方向的电子产品设计自动化过程。计自动化过程。 电子系统设计的自动化过程主要包括有电子系统设计的自动化过程主要包括有:逻辑编译、逻辑化简、

5、逻辑编译、逻辑化简、逻辑综合及优化、逻辑布局布线、逻辑仿真、逻辑适配等过程。逻辑综合及优化、逻辑布局布线、逻辑仿真、逻辑适配等过程。 本书讨论的对象专指狭义的本书讨论的对象专指狭义的EDA技术。技术。下一页上一页 1.1 EDA历史与发展历史与发展二二、EDA技术的历史与发展技术的历史与发展 EDA技术随着计算机技术、微电子技术、电子系统设计技术的技术随着计算机技术、微电子技术、电子系统设计技术的发展,主要经历了发展,主要经历了3个发展阶段个发展阶段: 计算机辅助设计计算机辅助设计(Computer-Aided Design CAD)阶段阶段 计算机辅助工程设计计算机辅助工程设计(Comput

6、er-Aided Engineering Design CAED)阶段;阶段; 电子系统设计自动化电子系统设计自动化(Electronic System Design Automation, ESDA)阶段。阶段。 下一页上一页 1.计算机辅助设计计算机辅助设计CAD阶段阶段 20世纪世纪70年代,年代,MOS工艺得到了广泛的应用,中、小规模的工艺得到了广泛的应用,中、小规模的集成电路有了新的发展。可编程逻辑技术和可编程逻辑器件的出集成电路有了新的发展。可编程逻辑技术和可编程逻辑器件的出现,可以应用计算机技术,将平面图形设计与分析工具现,可以应用计算机技术,将平面图形设计与分析工具CAD代替代

7、替乎工制图、布线等,出现了第一代乎工制图、布线等,出现了第一代EDA技术。由于受计算机工作技术。由于受计算机工作平台的技术条件制约,当时的计算机辅助设计技术还比较差。平台的技术条件制约,当时的计算机辅助设计技术还比较差。2.计算机辅助工程设计计算机辅助工程设计CAED阶段阶段 20世纪世纪80年代,随着个人工作站计算机平台的出现和集成电年代,随着个人工作站计算机平台的出现和集成电路设计路设计CMOS时代的到来、时代的到来、FPGA的出现等,极大地推动的出现等,极大地推动EDA工工具发展,使得计算机工作平台技术得到迅速发展。出现了以计算具发展,使得计算机工作平台技术得到迅速发展。出现了以计算1.

8、1 EDA历史与发展历史与发展机仿真技术和自动布线技术为核心的第一代机仿真技术和自动布线技术为核心的第一代EDA技术。设计工程技术。设计工程师可以通过软件工具来完成产品开发的设计、分析、生产、测试师可以通过软件工具来完成产品开发的设计、分析、生产、测试等各项工作。但是,基于原理图进行设计开发的等各项工作。但是,基于原理图进行设计开发的CAE工具,仍然工具,仍然不能满足高集成度的复杂电了系统设计的要求,设计工程中的系不能满足高集成度的复杂电了系统设计的要求,设计工程中的系统优化设计也被固定的具体化的电路元件所制约。统优化设计也被固定的具体化的电路元件所制约。3.电子系统设计自动化电子系统设计自动

9、化ESDA阶段阶段 20世纪世纪90年代,设计工程师在产品设计过程中,从使用硬件年代,设计工程师在产品设计过程中,从使用硬件转向设计硬件,从电路级电子产品开发转向系统级电子产品开发。转向设计硬件,从电路级电子产品开发转向系统级电子产品开发。硬件描述语言的标准化及基于计算机技术的面向用户的低成本大硬件描述语言的标准化及基于计算机技术的面向用户的低成本大规模规模ASIC设计技术的应用,集成电路设计工艺进入到了超深亚微设计技术的应用,集成电路设计工艺进入到了超深亚微下一页上一页1.1 EDA历史与发展历史与发展米阶段,使得米阶段,使得SEDA技术得到了全新的发展。技术得到了全新的发展。SEDA工具软

10、件以系工具软件以系统级设计为核心,集成了系统行为描述与结构综合、系统仿真与测统级设计为核心,集成了系统行为描述与结构综合、系统仿真与测试、系统划分与指标分配、系统决策与文件生成等完整的电了系统试、系统划分与指标分配、系统决策与文件生成等完整的电了系统设计自动化工具,极大地提高了电子系统设计的效率。设计自动化工具,极大地提高了电子系统设计的效率。 EDA技术在进入技术在进入21世纪后,得到了更大的发展,主要表现在世纪后,得到了更大的发展,主要表现在以下几个方面以下几个方面: 使电子设计成果以自主知识产权的方式得以明确表达和确认使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能。成为可能

11、。 在仿真和设计两方面支持标准硬件描述语言的功能强大的在仿真和设计两方面支持标准硬件描述语言的功能强大的EDA软件不断推出。软件不断推出。 下一页上一页1.1 EDA历史与发展历史与发展 电子技术全方位纳入电子技术全方位纳入EDA领域。领域。 EDA使得电子领域各学科的界限更加模糊,更加互为包容。使得电子领域各学科的界限更加模糊,更加互为包容。 更大规模的更大规模的FPGA和和CPLD器件的不断推出。器件的不断推出。 基于基于EDA工具的工具的ASIC设计标准单元已涵盖大规模电了系统及设计标准单元已涵盖大规模电了系统及 复杂复杂IP核核(IP: Intellectual Property,知识

12、产权的简称,常指,知识产权的简称,常指公司开发的硬件设计包公司开发的硬件设计包)模块。模块。 SoC高效低成本设计技术的成熟。高效低成本设计技术的成熟。 系统级、行为验证级硬件描述语言系统级、行为验证级硬件描述语言(如如System C)的出现,使的出现,使复杂电子系统的设计和验证简单化。复杂电子系统的设计和验证简单化。 新一代的新一代的EDA技术将会向着功能强大、简单易学以及使用方便的技术将会向着功能强大、简单易学以及使用方便的方向发展。方向发展。下一页上一页1.1 EDA历史与发展历史与发展下一页上一页1.1 EDA历史与发展历史与发展三、三、EDA技术的主要内容技术的主要内容 EDA技术

13、的主要内容包括技术的主要内容包括:硬件描述语言、可编程逻辑器件和硬件描述语言、可编程逻辑器件和EDA软件工具。硬件描述语言是软件工具。硬件描述语言是EDA技术的主要描述与表达方式,可编程技术的主要描述与表达方式,可编程逻辑器件是逻辑器件是EDA技术的主要目标器件,技术的主要目标器件,EDA软件工具是软件工具是EDA技术的技术的开发平台。它们是开发平台。它们是EDA技术的主要内容,是技术的主要内容,是EDA设计的主要支撑。设计的主要支撑。 1.硬件描述语言硬件描述语言 硬件描述语言硬件描述语言(Hardware Description Language ) HDL是是EDA技术的重要组成部分,是

14、技术的重要组成部分,是EDA各种描述方法中最能体现各种描述方法中最能体现EDA优优越性的描述方法。越性的描述方法。 所谓硬件描述语言,就是一个描述工具,用以描述设计系统的逻所谓硬件描述语言,就是一个描述工具,用以描述设计系统的逻辑功能,实现该功能的算法、电路结构及约束条件等。它要求既能描辑功能,实现该功能的算法、电路结构及约束条件等。它要求既能描述系统的行为,又能描述系统的结构。常见的述系统的行为,又能描述系统的结构。常见的HDL有有VHDL, Verilog HDL, System Verilog, System C等。其中,等。其中,Sy stemVerilog和和System C这两种这

15、两种HDL还处于不断完善的过程中。还处于不断完善的过程中。而而VHDL和和VerilogHDL在在EDA设计中使用最多,几乎所有的主流设计中使用最多,几乎所有的主流EDA工具都支持。工具都支持。VHDL是电子设计主流硬件的描述语言之一,本书是电子设计主流硬件的描述语言之一,本书主要以主要以VHDL为学习的重点。为学习的重点。 VHDL是是VHSIC(Very High Speed Integrated Circuit) Hardware DescriptionLanguage,即超高速集成电路硬件描,即超高速集成电路硬件描述语言的简称,是美国国防部于述语言的简称,是美国国防部于1983年开发创

16、建的,并由年开发创建的,并由IEEE(下一页上一页1.1 EDA历史与发展历史与发展The Institute of Electrical and Electronic Engineers)进一步发展,在进一步发展,在1987年被确定为标准化的硬件描述语言。年被确定为标准化的硬件描述语言。1993年年IEEE对对VHDL进行了修订,从更高的抽象层次和系统描述能力进行了修订,从更高的抽象层次和系统描述能力上扩展了上扩展了VHDL内容,公布了新版本内容,公布了新版本VHDL,即,即IEEE 1076-1993版本。现在,最新的版本。现在,最新的VHDL标准版本是标准版本是IEEE 1076-200

17、2。 VHDL已经成为系统描述的国际公认标准,得到众多已经成为系统描述的国际公认标准,得到众多EDA公司的支公司的支持,更多的硬件设计者使用持,更多的硬件设计者使用VHDL描述数字系统。描述数字系统。 VHDL具有与具体硬件电路无关、与设计平台无关的特性,并具有与具体硬件电路无关、与设计平台无关的特性,并具有强大的电路行为描述和系统的能力,支持硬件的设计、验证、具有强大的电路行为描述和系统的能力,支持硬件的设计、验证、综合和测试,在语言易读性和层次化设计等方面都具有很强的生命综合和测试,在语言易读性和层次化设计等方面都具有很强的生命力和应用潜力。力和应用潜力。下一页上一页1.1 EDA历史与发

18、展历史与发展 VHDL能在多个级别上对同一逻辑功能进行描述,如可以在寄能在多个级别上对同一逻辑功能进行描述,如可以在寄存器级别上对电路结构进行描述,也可以在行为描述级别上对电路存器级别上对电路结构进行描述,也可以在行为描述级别上对电路功能与性能进行描述,各个描述都能利用综合工具将描述转化为硬功能与性能进行描述,各个描述都能利用综合工具将描述转化为硬件结构。件结构。 VHDL的基本结构含有一个实体和一个结构体,而一个完整的的基本结构含有一个实体和一个结构体,而一个完整的VHDL结构还应该包括程序包、库与配置。用结构还应该包括程序包、库与配置。用VHDL进行电路设计进行电路设计描述时,通常采用的是

19、描述时,通常采用的是“自顶向下自顶向下”的结构化的设计方法。的结构化的设计方法。 VHDL的特点概括起来有以下几点的特点概括起来有以下几点: VHDL具有强大的功能,覆盖面广,描述能力强。具有强大的功能,覆盖面广,描述能力强。VHDL支支持门级电路的描述,支持以寄存器、存储器、总线及运算单元等构持门级电路的描述,支持以寄存器、存储器、总线及运算单元等构成的寄存器传输级电路的描述,还支持以行为算法和结构的混合描成的寄存器传输级电路的描述,还支持以行为算法和结构的混合描 下一页上一页1.1 EDA历史与发展历史与发展述为对象的系统级电路的描述。述为对象的系统级电路的描述。 VHDL具有良好的可读性

20、。它可以被计算机接受,也很容易被读具有良好的可读性。它可以被计算机接受,也很容易被读者理解。者理解。VHDL源文件,既是程序又是文档,是工程技术人员间交换源文件,既是程序又是文档,是工程技术人员间交换信息的文件。信息的文件。 VHDL具有良好的可移植性。作为被具有良好的可移植性。作为被IEEE承认的工业标准,承认的工业标准,VHDL实队、上己成为通用的硬件描述语言,可以在各种实队、上己成为通用的硬件描述语言,可以在各种EDA的设计的设计环境和开发平台中使用。环境和开发平台中使用。 VHDL提高了设计效率,缩短了设计周期。提高了设计效率,缩短了设计周期。VHDL描述的硬件电描述的硬件电路可以与工

21、艺无关,设计者只需考虑功能即可。路可以与工艺无关,设计者只需考虑功能即可。 VHDL采用采用“自顶向下自顶向下”的设计方法及对已有设计的再利用。的设计方法及对已有设计的再利用。 下一页上一页1.1 EDA历史与发展历史与发展 VHDL可描述复杂电路系统,支持对大规模设计的分解,由多人、可描述复杂电路系统,支持对大规模设计的分解,由多人、多项目组共同完成。标准化规则和设计风格,为设计的再利用提供了多项目组共同完成。标准化规则和设计风格,为设计的再利用提供了有力的支持。有力的支持。 VHDL设计有利于保护知识产权。设计有利于保护知识产权。VHDL设计的设计的ASIC,在将,在将设计文件下载到设计文

22、件下载到ASIC芯片时,可以采用加密的保护措施,有效保护芯片时,可以采用加密的保护措施,有效保护设计成果。设计成果。2.可编程逻辑器件可编程逻辑器件 可编程逻辑器件可编程逻辑器件(Programmable Logic Device ) PLD是一种由是一种由用户编程实现某种逻辑功能的新型逻辑器件。自用户编程实现某种逻辑功能的新型逻辑器件。自20世纪世纪70年代问世年代问世后,就以其速度快、集成度高、可加密和重新定义编程、上万次的编后,就以其速度快、集成度高、可加密和重新定义编程、上万次的编程次数等优点得到了广泛应用。程次数等优点得到了广泛应用。 下一页上一页1.1 EDA历史与发展历史与发展

23、可编程逻辑器件由可编程逻辑器件由PLA到到CPLD/FPGA,到,到SoC,在高速度、高,在高速度、高集成度、高可靠性方面得到了快速的发展。片上系统集成度、高可靠性方面得到了快速的发展。片上系统(System on a Chip, SoC)指的是以嵌入式系统为核心,集软硬件于一体,内嵌复指的是以嵌入式系统为核心,集软硬件于一体,内嵌复杂功能模块的集成芯片。杂功能模块的集成芯片。3. EDA软件工具软件工具 EDA工具在工具在EDA技术应用中占据极其重要的位置,技术应用中占据极其重要的位置,EDA的核心是的核心是利用计算机完成电路设计的全程自动化,因此,基于计算机环境下的利用计算机完成电路设计的

24、全程自动化,因此,基于计算机环境下的EDA工具软件的支持是必不可少的。工具软件的支持是必不可少的。 由于由于EDA整个流程涉及不同技术环节,每一个环节中必须有对应整个流程涉及不同技术环节,每一个环节中必须有对应的软件包或专用的软件包或专用EDA工具独立处理,包括对电路模型功能模拟、对工具独立处理,包括对电路模型功能模拟、对VHDL行为描述逻辑综合等。行为描述逻辑综合等。下一页上一页1.1 EDA历史与发展历史与发展 EDA工具大致可以分为设计输入编辑器、仿真器、工具大致可以分为设计输入编辑器、仿真器、HDL综合器、综合器、适配器适配器(或布局布线器或布局布线器)、下载器、下载器(或编程器或编程

25、器)5个模块。这个模块。这5个模块不同个模块不同程度地集成综合在各个程度地集成综合在各个EDA公司自己开发的公司自己开发的EDA开发软件工具中。开发软件工具中。 目前在国内比较流行的目前在国内比较流行的EDA软件工具主要有软件工具主要有Altera公司的公司的MAX+plus II 和和Quartos II , Lattice公司的公司的Expert LEVER和和 Synario, Xilinx公司的公司的Foundation和和 Alliance, Actel公司公司的的Actel Designer等。等。 Altera其主要产品有其主要产品有MAX7000/9000, FELXIOK,

26、APEX20K, ACEXIK, Cyclone等系列。等系列。Altera公司在公司在20世纪世纪90年代后发展很快,认为他们的开发工具年代后发展很快,认为他们的开发工具MAX+plus II是最成功是最成功 下一页上一页1.1 EDA历史与发展历史与发展的的EDA开发平台之一,开发平台之一,Quartos II是是MAX+plus II的升级版本。的升级版本。 Xilinx是是FPGA的发明者,其产品种类比较齐全,主要有的发明者,其产品种类比较齐全,主要有XC9500/4000,Spartan, Virtex, Coolrunner等。等。Xilinx和和Altera是主要的可编程逻辑器件

27、供应商,在欧洲,使用是主要的可编程逻辑器件供应商,在欧洲,使用Xilinx公司产品的人较多公司产品的人较多;在日本及亚太地区,使用在日本及亚太地区,使用Altera公司产品的人公司产品的人较多较多;在美国,则是平分秋色。这两大供应商提供了全球在美国,则是平分秋色。这两大供应商提供了全球60%以上以上的的PLD/FPGA产品。可以说,产品。可以说,Altera和和Xilinx共同决定了共同决定了PLD技技术的发展方向。术的发展方向。 Lattice是是ISP(在系统可编程在系统可编程)技术的发明者,其主要产品有技术的发明者,其主要产品有ispLSI2000/5000/8000, MACH4/5,

28、 ispMACH4000等。等。下一页上一页1.1 EDA历史与发展历史与发展 与与Altera公司和公司和 Xilinx公司相比,公司相比,Lattice公司的开发工具公司的开发工具略逊一筹,但其中小规模略逊一筹,但其中小规模PLD比较有特色。比较有特色。Lattice公司于公司于1999年推出可编程模拟器件,并收购了、年推出可编程模拟器件,并收购了、Vantis(原原AMD了公司了公司),成为第二大可编程逻辑器件供应商。成为第二大可编程逻辑器件供应商。 Actel是反熔丝是反熔丝PLD技术的领导者。由于反熔丝技术的领导者。由于反熔丝PLD抗辐射,抗辐射,耐高低温,功耗低,速度快,所以在军工

29、产品和宇航产品上有较耐高低温,功耗低,速度快,所以在军工产品和宇航产品上有较大优势。大优势。Altera和和Xilinx则一般不涉足军工产品和宇航产品市场。则一般不涉足军工产品和宇航产品市场。 本书主要是以本书主要是以Altera公司的公司的Quartos II为开发平台,以可为开发平台,以可编程逻辑器件为目标器件,以编程逻辑器件为目标器件,以VHDL为描述的为描述的EDA技术学习。技术学习。 返 回上一页1.1 EDA历史与发展历史与发展一、可编程逻辑器件的发展过程一、可编程逻辑器件的发展过程 20世纪世纪70年代,熔丝编程的年代,熔丝编程的PROM和和PLA是最早的可编是最早的可编程逻辑器

30、件。程逻辑器件。 20世纪世纪70年代末,年代末,AMD公司对公司对PLA进行改进,推出了进行改进,推出了PAL器件。器件。 20世纪世纪80年代初,年代初,Lattice公司发明电可擦写的、比公司发明电可擦写的、比PAL使用更灵活的使用更灵活的GAL器件。器件。 20世纪世纪80年代中期,年代中期,Xilinx公司提出现场可编程概念,公司提出现场可编程概念,产生了世界上第一片产生了世界上第一片FPGA。下一页1.2 可编程逻辑器件可编程逻辑器件 同期,同期,Altera公司推出公司推出EPLD器件,比器件,比GAL具有更高的集成具有更高的集成度,可以用紫外线或电擦除。度,可以用紫外线或电擦除

31、。 20世纪世纪80年代末,年代末,Lattice公司提出在系统可编程技术,公司提出在系统可编程技术,并推出一系列具备在系统可编程能力的并推出一系列具备在系统可编程能力的CPLD器件,将可编程逻辑器件,将可编程逻辑器件的性能和应用技术推向了全新的高度。器件的性能和应用技术推向了全新的高度。 进入进入20世纪世纪90年代后,可编程逻辑集成电路技术进入了高年代后,可编程逻辑集成电路技术进入了高速发展的时期。器件的可用逻辑门数超过百万门,出现了内嵌复杂速发展的时期。器件的可用逻辑门数超过百万门,出现了内嵌复杂功能模块功能模块(如加法器、乘法器、如加法器、乘法器、RAM, CPU核、核、DSP核、核、

32、PLL等等) SoPC。 下一页上一页1.2 可编程逻辑器件可编程逻辑器件下一页上一页二、可编程逻辑器件分类二、可编程逻辑器件分类 可编程逻辑器件的种类很多,都具有自身的结构特点。对其进行可编程逻辑器件的种类很多,都具有自身的结构特点。对其进行分类,主要的分类方法有分类,主要的分类方法有: 按集成度分、按结构分、按编程工艺分。按集成度分、按结构分、按编程工艺分。 按集成度分,一般可用分成两大类按集成度分,一般可用分成两大类: 可用逻辑门数大约在可用逻辑门数大约在500以下,称为简单以下,称为简单PLD。如早期的。如早期的PROM, PLA,PAL, GAL等。等。 集成度较高的,称为复杂集成度

33、较高的,称为复杂PLD。如现在大量使用的。如现在大量使用的CPLD /FPGA。 按结构分,一般也分为两大类按结构分,一般也分为两大类: 乘积项结构器件。其基本结构为乘积项结构器件。其基本结构为“与与-或或”阵列的器件,大部分阵列的器件,大部分简单简单PLD和和CPLD都属于这类。都属于这类。1.2 可编程逻辑器件可编程逻辑器件下一页上一页 查找表结构器件。由简单的查找表组成可编程门,再构成阵列查找表结构器件。由简单的查找表组成可编程门,再构成阵列 形式的器件,形式的器件,FPGA属于这类。属于这类。 按编程工艺分,大致有按编程工艺分,大致有: 熔丝熔丝(Fuse)型。早期的型。早期的PROM

34、采用熔丝结构,编程过程中根据采用熔丝结构,编程过程中根据设计的熔丝图文件来烧断对应的熔丝,达到编程的目的。设计的熔丝图文件来烧断对应的熔丝,达到编程的目的。 反熔丝反熔丝 ( Antifuse)型。这是对熔丝技术的改进,在编程处通型。这是对熔丝技术的改进,在编程处通过击穿漏层使得亮点间导通。与熔丝烧断获得开路相反。过击穿漏层使得亮点间导通。与熔丝烧断获得开路相反。Actel公司的公司的FPGA采用的就是这种技术。采用的就是这种技术。 EPROM型。型。EPROM型称为紫外线擦除电可编程逻辑器件,型称为紫外线擦除电可编程逻辑器件,可多次编程。可多次编程。 EEPROM型。型。EEPROM型称为电

35、可擦写编程逻辑器件,是型称为电可擦写编程逻辑器件,是1.2 可编程逻辑器件可编程逻辑器件下一页上一页1.2 可编程逻辑器件可编程逻辑器件对对EPROM工艺的改进。现有的大部分工艺的改进。现有的大部分CPLD和和GAL器件采用这器件采用这样的工艺。样的工艺。 SRAM型。即型。即SRAM查找表结构器件,大部分查找表结构器件,大部分FPGA采用这采用这样的结构。样的结构。 Flash型。采用型。采用Flash工艺的工艺的FPGA 可以实现多次可编程,可以实现多次可编程,掉电后也不需要重新配置。掉电后也不需要重新配置。三、可编程逻辑器件的结构和原理三、可编程逻辑器件的结构和原理 可编程逻辑器件从结构

36、上划分,可以分为乘积项结构和查找表可编程逻辑器件从结构上划分,可以分为乘积项结构和查找表结构。结构。 下面分别介绍基于这两种结构的可编程逻辑器件的内部结构和下面分别介绍基于这两种结构的可编程逻辑器件的内部结构和实现原理。实现原理。下一页上一页1.2 可编程逻辑器件可编程逻辑器件 1.基于乘积项基于乘积项(Product-Term)的的PLD结构结构 简单的简单的PLD和和CPLD都采用这种结构,都采用这种结构,Altera公司的公司的MAX7000S系列具有一定的典型性,下面以此为例介绍基于乘积项系列具有一定的典型性,下面以此为例介绍基于乘积项的的PLD的结构,如的结构,如图图1-1所示。所示

37、。 这种这种PLD的结构可以分为二个部分的结构可以分为二个部分:宏单元宏单元(Macrocell) ,可编程可编程连线连线(PIA )用用I /O端子控制块。端子控制块。 宏单元是宏单元是PLD的基本结构,多个宏单元组成一个逻辑阵列块的基本结构,多个宏单元组成一个逻辑阵列块(LAB)。 可编程连线可以传递信号,连接所有的宏单元。可编程连线可以传递信号,连接所有的宏单元。I/O端子控制块端子控制块负责输入负责输入/输出端子的电气特性控制。宏单元的结构如输出端子的电气特性控制。宏单元的结构如图图1-2所示。所示。 下一页上一页 2.乘积项结构乘积项结构PLD的逻辑实现原理的逻辑实现原理 下面以一个

38、简单的例了,具体说明下面以一个简单的例了,具体说明PLD是如何利用其结构实现组合是如何利用其结构实现组合逻辑的。逻辑的。利用利用PLD实现下列逻辑函数实现下列逻辑函数: PLD将以如将以如图图1-3所示的方式来实现组合逻辑所示的方式来实现组合逻辑 由由PLD的的I/O引脚进入可编程连线阵列引脚进入可编程连线阵列(PIA) ,在内部会产生,在内部会产生 6个输出。图中的个输出。图中的“点点”和和“叉叉”都表示相连都表示相连(可编程熔可编程熔丝导通丝导通)1.2 可编程逻辑器件可编程逻辑器件所以有所以有: 这样就实现了需要的组合逻辑。这样一个简单的组合逻辑,一个这样就实现了需要的组合逻辑。这样一个

39、简单的组合逻辑,一个宏单元就可以完成。但是对于一个比较复杂的电路,一个宏单元是宏单元就可以完成。但是对于一个比较复杂的电路,一个宏单元是不能实现的,这样就需要通过并行扩展项和共享逻辑扩展项将多个不能实现的,这样就需要通过并行扩展项和共享逻辑扩展项将多个宏单元连接,通过将一个宏单元的输出再输入到另一个宏单元的输宏单元连接,通过将一个宏单元的输出再输入到另一个宏单元的输入,这样就可以实现更复杂的逻辑了。入,这样就可以实现更复杂的逻辑了。1.2 可编程逻辑器件可编程逻辑器件下一页上一页 3.基于查找表基于查找表(Look-Up-Table)的的FPGA结构结构 FPGA器件采用的是这种结构。器件采用

40、的是这种结构。 查找表查找表(LUT)实际上就是一个实际上就是一个RAM。FPGA多数使用的是多数使用的是4输入输入的的LUT,每一个,每一个LUT可以看成一个可以看成一个4位地址线的位地址线的16X 1的的RAM。 用户通过原理图或用户通过原理图或HDL描述了一个逻辑电路后,描述了一个逻辑电路后,PLD/FPGA开发软件就会自动计算逻辑电路的所有可能的结果,并把结果预先写开发软件就会自动计算逻辑电路的所有可能的结果,并把结果预先写入入RAM。 这样,每一个输入信号进行逻辑运算就等于输入一个地址进行这样,每一个输入信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,输出结果。查表,

41、找出地址对应的内容,输出结果。 图图1-4是是Altera的的FLEX l OK芯片的内部结构芯片的内部结构(其他系列的其他系列的FPGA结构也基本相同,只以结构也基本相同,只以FLEXIOK为例为例)。1.2 可编程逻辑器件可编程逻辑器件下一页上一页下一页上一页1.2 可编程逻辑器件可编程逻辑器件 其主要包括其主要包括LAB, I/O块、块、RAM块块(图中未表小出图中未表小出)、可编程行、可编程行/列列连线。连线。LE是是FLEX/ACEX系列芯片实现逻辑的最基本结构,其结构系列芯片实现逻辑的最基本结构,其结构如如图图1-5所示。一个所示。一个LAB又包括又包括8个逻辑单元个逻辑单元(LE

42、)、一个、一个LE有一个有一个LUT,一个触发器和相关的逻辑。一个触发器和相关的逻辑。 4.查找表结构的查找表结构的FPGA逻辑实现原理逻辑实现原理 仍以简单的例子进行说明仍以简单的例子进行说明:用用FPGA实现下列逻辑函数实现下列逻辑函数: A, B, C由由FPGA的的I/O引脚输入后进入可编程连线引脚输入后进入可编程连线(PIA),然后作,然后作为地址连线连接到为地址连线连接到LUT, LUT中已经事先写入所有可能的逻辑结果。中已经事先写入所有可能的逻辑结果。 通过地址查找到相应的数据,然后输出,这样,组合逻辑就实通过地址查找到相应的数据,然后输出,这样,组合逻辑就实现了。这些实现的步骤

43、都是由软件自动完成的,不需要人为的干预。现了。这些实现的步骤都是由软件自动完成的,不需要人为的干预。这是一个简单的逻辑电路,只需要一个这是一个简单的逻辑电路,只需要一个LUT就可以完成。对于一个就可以完成。对于一个LUT无法完成的复杂电路,需要通过进位链将多个单元连接,一同无法完成的复杂电路,需要通过进位链将多个单元连接,一同实现复杂的逻辑功能。实现复杂的逻辑功能。 由于由于LUT适合适合SRAM工艺生产,所以大部分工艺生产,所以大部分FPGA都是基于都是基于SRAM工艺的。工艺的。SRAM工艺的芯片在断电后信息会丢失,所以需要工艺的芯片在断电后信息会丢失,所以需要外加一片专用配置芯片,在通电

44、的时候,由该配置芯片把数据信息外加一片专用配置芯片,在通电的时候,由该配置芯片把数据信息加载到加载到FPGA中,中,FPGA才可以正常工作。由于配置芯片进行配置才可以正常工作。由于配置芯片进行配置的时间很短,不会影响系统正常工作。有少数的时间很短,不会影响系统正常工作。有少数FPGA采用反熔丝或采用反熔丝或Flash工艺,这样就不需要外加专用配置芯片了。工艺,这样就不需要外加专用配置芯片了。1.2 可编程逻辑器件可编程逻辑器件下一页上一页四、面向四、面向CPLD/FPGA的的EDA设计流程设计流程 EDA设计的大部分工作都是在设计的大部分工作都是在EDA软件工具平台上进行的,面软件工具平台上进

45、行的,面向向CPLD/FPGA的的EDA设计流程如设计流程如图图1-6所示。所示。EDA设计流程包设计流程包括设计准备、设计输入、设计实现、器件编程括设计准备、设计输入、设计实现、器件编程4个步骤,以及相应的个步骤,以及相应的功能仿真、时序仿真、硬件测试功能仿真、时序仿真、硬件测试3个设计验证过程。个设计验证过程。 1.设计准备设计准备 设计准备是设计者在进行系统设计之前,根据任务要求,确定系设计准备是设计者在进行系统设计之前,根据任务要求,确定系统所要实现的功能及复杂度,进行器件资源的利用、成本等准备工作。统所要实现的功能及复杂度,进行器件资源的利用、成本等准备工作。如进行方案论证、系统设计

46、分解、器件选择等。如进行方案论证、系统设计分解、器件选择等。1.2 可编程逻辑器件可编程逻辑器件下一页上一页 2.设计输入设计输入 设计输入是设计者将系统的设计按照设计输入是设计者将系统的设计按照EDA开发软件的要求以某种开发软件的要求以某种形式描述表达出来,并被计算机所接收。设计输入主要有原理图输入形式描述表达出来,并被计算机所接收。设计输入主要有原理图输入方式、采用方式、采用HDL描述的文本输入方式、波形输入方式、文本和图形描述的文本输入方式、波形输入方式、文本和图形混合的设计输入方式。也可以采用混合的设计输入方式。也可以采用“自顶向下自顶向下”的层次结构化设计法,的层次结构化设计法,将多

47、个输入文件合并成一个设计文件。将多个输入文件合并成一个设计文件。 (1)原理图输入方式原理图输入方式 原理图输入是图形输入编辑方式,是一种最直接的描述表达方式。原理图输入是图形输入编辑方式,是一种最直接的描述表达方式。使用软件系统提供的元器件库和各种符号连线设计成系统电路的原理使用软件系统提供的元器件库和各种符号连线设计成系统电路的原理图,形成图形输入文件。其优点是易于实现仿真,便于信号的观察。图,形成图形输入文件。其优点是易于实现仿真,便于信号的观察。1.2 可编程逻辑器件可编程逻辑器件下一页上一页 (2)硬件描述语言输入方式硬件描述语言输入方式 硬件描述语言输入是文本输入编辑方式,是一种行

48、为描述表达方式。硬件描述语言输入是文本输入编辑方式,是一种行为描述表达方式。硬件描述语言输入方式具有很强的逻辑描述和功能仿真,可实现与工硬件描述语言输入方式具有很强的逻辑描述和功能仿真,可实现与工艺无关的编程设计。设计者在系统设计、逻辑验证阶段便可确立方案艺无关的编程设计。设计者在系统设计、逻辑验证阶段便可确立方案的可行性,输入效率高。运用的可行性,输入效率高。运用VHDL或或Verilog HDL硬件描述语言硬件描述语言进行设计已是当前的趋势。进行设计已是当前的趋势。 (3)波形图输入方式波形图输入方式 波形图输入方式主要用于建立和编辑波形设计文件及输入仿真向波形图输入方式主要用于建立和编辑

49、波形设计文件及输入仿真向量和功能测试向量。波形图输入适用于时序逻辑仿真,开发软件平台量和功能测试向量。波形图输入适用于时序逻辑仿真,开发软件平台可以根据用户定义的输入波形自动生成输出与输入的逻辑关系。可以根据用户定义的输入波形自动生成输出与输入的逻辑关系。1.2 可编程逻辑器件可编程逻辑器件下一页上一页3.设计实现设计实现 设计实现是面向设计实现是面向CPLD/FPGA的的EDA设计的核心环节。在这个设计的核心环节。在这个环节,开发软件平台将对设计输入文件进行逻辑化简、综合优化、环节,开发软件平台将对设计输入文件进行逻辑化简、综合优化、自动适配,最后产生编程用的编程文件。设计实现过程主要包括设

50、自动适配,最后产生编程用的编程文件。设计实现过程主要包括设计编译检查、逻辑综合优化、适配分割、布局布线、生成编程数据计编译检查、逻辑综合优化、适配分割、布局布线、生成编程数据文件等。文件等。 (1)设计编译检查设计编译检查 设计输入完成之后,要进行编译。编译过程将进行语法检查,有设计输入完成之后,要进行编译。编译过程将进行语法检查,有错误的会提出错误信息报告,供设计者修改。编译后进行设计规则错误的会提出错误信息报告,供设计者修改。编译后进行设计规则检查,指明设计有无违反规则及是否存在潜在不可靠情况,供设计检查,指明设计有无违反规则及是否存在潜在不可靠情况,供设计者纠正。者纠正。 1.2 可编程

51、逻辑器件可编程逻辑器件下一页上一页 (2)逻辑综合优化逻辑综合优化 逻辑优化主要是面积优化和时间优化。面积优化的目的是使设逻辑优化主要是面积优化和时间优化。面积优化的目的是使设计所占用的计所占用的PLD中的逻辑元件中的逻辑元件(LE)数最少。时间优化的目的是使数最少。时间优化的目的是使设计的系统传输延迟时间最小。综合的目的是将多个模块化设计文设计的系统传输延迟时间最小。综合的目的是将多个模块化设计文件合并为一个网表文件。件合并为一个网表文件。 (3)适配分割适配分割 适配是将综合器产生的网表文件针对具体的日标器件进行逻辑适配是将综合器产生的网表文件针对具体的日标器件进行逻辑映射操作。分割工作也

52、在适配的过程中自动实现,主要是在整个设映射操作。分割工作也在适配的过程中自动实现,主要是在整个设计不能装入一片器件时,自动分割成多块并装入同一系列的多片器计不能装入一片器件时,自动分割成多块并装入同一系列的多片器件中。件中。 1.2 可编程逻辑器件可编程逻辑器件下一页上一页 (4)布局布线布局布线 布局布线工作是在设计验证通过后由软件自动完成的,能以最布局布线工作是在设计验证通过后由软件自动完成的,能以最优的方式对逻辑元件进行布局,实现元件间的布线互连。布局布线优的方式对逻辑元件进行布局,实现元件间的布线互连。布局布线完成后,软件自动生成布线报告,为设计者提供设计中资源利用的完成后,软件自动生

53、成布线报告,为设计者提供设计中资源利用的相关信息。相关信息。 (5)生成编程数据文件生成编程数据文件 软件最后会自动生成可供器件编程使用的数据文件。目标器件软件最后会自动生成可供器件编程使用的数据文件。目标器件若是若是CPLD,则是生成熔丝图文件,则是生成熔丝图文件(JEDEC文件,也简称文件,也简称JED文件文件),若是,若是FPGA,则是生成位流数据文件,则是生成位流数据文件(BG文件文件)。1.2 可编程逻辑器件可编程逻辑器件返 回上一页 1.3 本章小结本章小结返 回EDA技技术术概概论论面向面向CPLD/FPGA的的EDA设计流程设计流程EDA技术的主要内容技术的主要内容可编程逻辑器

54、件的结构和原理可编程逻辑器件的结构和原理可编程逻辑器件的分类可编程逻辑器件的分类可编程逻辑器件的发展可编程逻辑器件的发展EDA技术的历史与发展技术的历史与发展EDA技术的概念技术的概念可编程逻辑器件可编程逻辑器件EDA历史与发展历史与发展图图1-1 基于乘积项的基于乘积项的PLD内部结构内部结构返 回 图中是乘积项阵列,实际上就是一个与阵列,每一个交义点都是一个可编程熔丝,若导通则实现的是与逻辑。中间的乘积项选择矩阵是一个或阵列,与阵列一起完成组合逻辑。图图1-2 宏单元结构宏单元结构返 回 该图是一个D触发器,它的时钟、清零信号都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用内部

55、逻辑产生的时钟和清零。若不需要触发器,则可将其旁路信号直接给PIA或I/O端子。图图1-3 实现组合逻辑实现组合逻辑返 回图图1-4 Altera的的FLEX l0K芯片的内部结构芯片的内部结构返 回 图图1-5 逻辑单元逻辑单元 (LE) 内部结构内部结构返 回 图图1-6 CPLD/FPGA设计流程设计流程返 回设计准备设计输入原理图硬件描述语言波形图设计实现综合、优化适配、分割布局、布线时序仿真功能仿真硬件测试设计完成器件编程 【要求】【要求】 掌握掌握VHDL语言的基本知识和运用语言的基本知识和运用VHDL语言设计逻辑电路的语言设计逻辑电路的基本方法。基本方法。 【知识点】【知识点】理

56、解理解VHDL程序的基本结构程序的基本结构理解理解VHDL程序的顺序语句程序的顺序语句理解理解VHDL程序的并行语句程序的并行语句理解理解VHDL程序的语言要素程序的语言要素第2章 VHDL设计入门下一页 【重点和难点】【重点和难点】 VHDL程序的顺序结构程序的顺序结构 VHDL程序的并行结构程序的并行结构【引言】【引言】 HDL文本输入设计法是文本输入设计法是Quartus II的一个重要输入的一个重要输入设计法设计法 ,本书主要介绍,本书主要介绍VHDL文本输入法。本章讨论文本输入法。本章讨论VHDL语言的基本知识和运用语言的基本知识和运用 VHDL语言设计逻辑电路的语言设计逻辑电路的方

57、法,在以后各章再对方法,在以后各章再对VHDL文本输入设计法及其应用作文本输入设计法及其应用作进一步的讨论。进一步的讨论。 本章先介绍本章先介绍VHDL程序的基本结构、顺序语句和并行程序的基本结构、顺序语句和并行 语句,最后对语句,最后对VHDL程序的语言要素做一个总结。程序的语言要素做一个总结。第2章 VHDL设计入门下一页上一页第2章 VHDL设计入门2.1 VHDL程序的基本结构程序的基本结构2.2 VHDL程序的顺序语句程序的顺序语句2.3 VHDL程序的并行语句程序的并行语句2.4 VHDL程序的语言要素总结程序的语言要素总结2.5 本章小结本章小结上一页 VHDL程序包含实体程序包

58、含实体(ENTITY ) 、结构体、结构体(ARCHITECTURE ) 、配、配置置( CONFIGURATION)、程序包、程序包(PACKAGE、库、库(LIBRARY)5个部个部分。分。 简单的实体是由实体和结构体两部分组成的。简单的实体是由实体和结构体两部分组成的。 实体用于描述设计系统的外部接口信号,结构体用于描述系统实体用于描述设计系统的外部接口信号,结构体用于描述系统的行为、系统数据的流程或者系统组织结构形式。的行为、系统数据的流程或者系统组织结构形式。 设计实体是设计实体是VHDL程序的基本单元,是电子系统的抽象。程序的基本单元,是电子系统的抽象。 简单的实体可以是一个与门电

59、路简单的实体可以是一个与门电路( AND GATE),复杂的实体,复杂的实体可以是一个微处理器或一个数字电了系统。可以是一个微处理器或一个数字电了系统。 实体由实体说明和结构体说明两部分组成。实体由实体说明和结构体说明两部分组成。2.1 VHDL程序的基本结构下一页下一页上一页2.1 VHDL程序的基本结构 【例【例2.1】以下是一个简单的】以下是一个简单的VHDL源程序,可以归纳出源程序,可以归纳出VHDL程序的基本结构。程序的基本结构。 ENTITY m yand2 IS -实体名称为实体名称为and2 PORT (a,b:IN BIT; -a, b是两个输入引脚是两个输入引脚 c:OUT

60、 BIT); -c为输出引脚为输出引脚 END m yand2; ARCHITECTURE examl OF myand2 IS -结构体结构体 BEGIN exam 1是对实体是对实体and2的内部的内部 c=a AND b; 描述,描述了描述,描述了and2器件的内部器件的内部 功能为实现一个功能为实现一个2输入与门输入与门 END exam1; 下一页上一页 由例由例2.1可以看出,可以看出,VHDL程序由两部分组成程序由两部分组成: 第第1部分为实体说明部分为实体说明. 第第2部分为结构体。部分为结构体。 VHDL程序结构更抽象、更基本、更简练的表示如程序结构更抽象、更基本、更简练的表

61、示如图图2-1所示。所示。 设计实体用关键字设计实体用关键字ENTITY来标识,结构体来标识,结构体ARCHITECTURE来标识。来标识。 系统设计中的实体提供该设计系统的公共信息,结构体定义了各系统设计中的实体提供该设计系统的公共信息,结构体定义了各个个 模块内的操作特性。模块内的操作特性。 一个设计实体必须包含一个结构体或含有多个结构体。一个电子一个设计实体必须包含一个结构体或含有多个结构体。一个电子系统的设计模型如系统的设计模型如图图2-2所示。所示。2.1 VHDL程序的基本结构程序的基本结构下一页一、实体一、实体 实体由实体名、类型说明、端口说明、实体说明部分和实体语句实体由实体名

62、、类型说明、端口说明、实体说明部分和实体语句部分组成。部分组成。1.实体语句结构实体语句结构根据根据IEEE标准,实体组织的一般格式为标准,实体组织的一般格式为: ENTITY实体名实体名IS GENERIC(类型说明类型说明); PORT(端口说明端口说明); 实体说明部分实体说明部分: BEGIN 实体语句部分实体语句部分; END ENTITY实体名实体名;2.1 VHDL程序的基本结构程序的基本结构上一页 实体名是设计者自己给设计实体的命名,其他设计实体可对该设实体名是设计者自己给设计实体的命名,其他设计实体可对该设计实体进行调用。中间在方括号内的语句描述,在特定的情况下并非计实体进行

63、调用。中间在方括号内的语句描述,在特定的情况下并非是必须的。是必须的。 2.类型说明类型说明 类型说明是实体说明中的可选项,放在端口说明之前,其一般使写类型说明是实体说明中的可选项,放在端口说明之前,其一般使写格式为格式为: GENERIC CONSTANT名字表名字表: 1N了类型标识了类型标识:一静态一静态表达式表达式, 举例举例: GENERIC(m:TIME: =3ns) 这个参数说明是指在这个参数说明是指在VHDL程序中,结构体内的参数程序中,结构体内的参数m的值为的值为3ns。 下一页上一页2.1 VHDL程序的基本结构程序的基本结构 类型说明和端口说明是实体说明的组成部分,用于说

64、明设计实体和类型说明和端口说明是实体说明的组成部分,用于说明设计实体和外部通信的通道。利用外部通信通道,参数的类型说明为设计实体提外部通信的通道。利用外部通信通道,参数的类型说明为设计实体提供信息。参数的类型用来规定端口的大示、供信息。参数的类型用来规定端口的大示、I/O引脚的指派、实体中引脚的指派、实体中子元件的数口和实体的定时特性等信息。子元件的数口和实体的定时特性等信息。 3.端口说明端口说明 端口说明是对设计实体与外部接口的描述,是设计实体和外部环境端口说明是对设计实体与外部接口的描述,是设计实体和外部环境动态通信的通道,其功能对应于电路图符号的一个引脚。实体说明中动态通信的通道,其功

65、能对应于电路图符号的一个引脚。实体说明中的每一个的每一个I/O信号被称为一个端口,一个端口就是一个数据对象。端信号被称为一个端口,一个端口就是一个数据对象。端口可以被赋值,也可以当做变量用在逻辑表达式中。定义实体的一组口可以被赋值,也可以当做变量用在逻辑表达式中。定义实体的一组端口称作端口说明。端口称作端口说明。 下一页上一页2.1 VHDL程序的基本结构程序的基本结构 端口说明的组织结构必须有一个名称、一个通信模式和一个数据类端口说明的组织结构必须有一个名称、一个通信模式和一个数据类型。端口说明的一般格式为型。端口说明的一般格式为: Port(端口名,端口名端口名,端口名:模式模式 数据类型

66、名数据类型名 端口名,端口名端口名,端口名:模式模式 数据类型名数据类型名); 端口名是赋于每个外部引脚的名称,名称的含义要明确,如端口名是赋于每个外部引脚的名称,名称的含义要明确,如D开头开头的端口名表示数据,的端口名表示数据,A开头的端口名表示地址等。端口名通常用几个英开头的端口名表示地址等。端口名通常用几个英文字母或一个英文字母加数字表示。文字母或一个英文字母加数字表示。 下面是合法的端口名下面是合法的端口名:CLK, RESET, A0, D3。 模式用来说明数据、信号通过该端口的传输方向。端口模式有模式用来说明数据、信号通过该端口的传输方向。端口模式有IN, OUT,BUFFER,

67、1NOUT。下一页上一页2.1 VHDL程序的基本结构程序的基本结构下一页上一页 (1)输入输入(IN) 输入仅允许数据流入输入模式主要用于时钟输入、控制输入输入仅允许数据流入输入模式主要用于时钟输入、控制输入(如如RESET, ENABLE, CLK)和单向的数据输入,如地址信号和单向的数据输入,如地址信号(ADDRESS)。不用的输入一般接地,以免浮动引入干扰噪声。不用的输入一般接地,以免浮动引入干扰噪声。 (2)输出输出(OUT) 输出仅允许数据流从实体内部输出。端口的驱动源是由被设计的实输出仅允许数据流从实体内部输出。端口的驱动源是由被设计的实体内部进行的。输出模式不能用于被设计实体的

68、内部反馈,因为输出体内部进行的。输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看做可读的。输出模式常用于计数输出、单向数据端口在实体内不能看做可读的。输出模式常用于计数输出、单向数据输出、设计实体产生的控制其他实体的信号等。一般而言,不用的输输出、设计实体产生的控制其他实体的信号等。一般而言,不用的输出端口不能接地,避免造成输出高电平时烧毁被设计实体。出端口不能接地,避免造成输出高电平时烧毁被设计实体。 2.1 VHDL程序的基本结构程序的基本结构 (3)缓冲缓冲(BUFFER) 缓冲模式的端口与输出模式的端口类似,只是缓冲模式允许内部引缓冲模式的端口与输出模式的端口类似,只是

69、缓冲模式允许内部引用该端口的信号。缓冲端口既能用于输出,也能用于反馈。用该端口的信号。缓冲端口既能用于输出,也能用于反馈。 缓冲端口的驱动源可以是缓冲端口的驱动源可以是: 设计实体的内部信号源设计实体的内部信号源; 其他实体的缓冲端口。其他实体的缓冲端口。 缓冲不允许多重驱动,不与其他实体的双向端口和输出端口相连。缓冲不允许多重驱动,不与其他实体的双向端口和输出端口相连。 内部反馈的实现方法有内部反馈的实现方法有: 建立缓冲模式端口建立缓冲模式端口; 建立设计实体的内部节点。建立设计实体的内部节点。 下一页上一页2.1 VHDL程序的基本结构程序的基本结构 缓冲模式用于在实体内部建立一个可读的

70、输出端口,例如计数器输缓冲模式用于在实体内部建立一个可读的输出端口,例如计数器输出,计数器的现态被用来决定计数器的次态。实体既需要输出,又需要出,计数器的现态被用来决定计数器的次态。实体既需要输出,又需要反馈,这时设计端口模式应为缓冲模式。反馈,这时设计端口模式应为缓冲模式。 (4)双向模式双向模式(INOUT) 双向模式可以代替输入模式、输出模式和缓冲模式。双向模式可以代替输入模式、输出模式和缓冲模式。 在设计实体的数据流中,有些数据是双向的,数据可以流入该设计在设计实体的数据流中,有些数据是双向的,数据可以流入该设计实体,也有数据从设计实体流出,这时需要将端口模式设计为双向端口。实体,也有

71、数据从设计实体流出,这时需要将端口模式设计为双向端口。 双向模式的端口允许引入内部反馈,所以双向模式端口还可以作为双向模式的端口允许引入内部反馈,所以双向模式端口还可以作为缓冲模式用。由上述分析可见,双向端口是一个完备的端口模式。缓冲模式用。由上述分析可见,双向端口是一个完备的端口模式。下一页上一页2.1 VHDL程序的基本结构程序的基本结构二、结构体二、结构体 结构体具体指明了该设计实体的行为,定义了该设计实体的结构体具体指明了该设计实体的行为,定义了该设计实体的功能,规定了该端口。输入信号的驱动源由设计实体的数据流程,功能,规定了该端口。输入信号的驱动源由设计实体的数据流程,指派了实体中内

72、部元件的连接关系。指派了实体中内部元件的连接关系。 用用VHDL语言描述结构体有语言描述结构体有4种方法种方法: 行为描述法行为描述法:采用进程语句,顺序描述被称设计实体的行为。采用进程语句,顺序描述被称设计实体的行为。 数据流描述法数据流描述法:采用进程语句,顺序描述数据流在控制流作采用进程语句,顺序描述数据流在控制流作用下被加工、处理、存储的全过程。用下被加工、处理、存储的全过程。 结构描述法结构描述法:采用并行处理语句描述设计实体内的结构组织采用并行处理语句描述设计实体内的结构组织和元件互连关系。和元件互连关系。 下一页上一页2.1 VHDL程序的基本结构程序的基本结构 采用多个进程采用

73、多个进程(PROCESS)、多个模块、多个模块(BLOCKS)、多个子程序、多个子程序(SUBPROGRAMS)的子结构方式。的子结构方式。 结构体的一般书写格式为结构体的一般书写格式为: ARCHITECTURE结构体名结构体名OF实体名实体名IS 定义语句,内部信号,常数,数据类型,函数定义定义语句,内部信号,常数,数据类型,函数定义 BEGIN 并行处理语句并行处理语句; 进程语句进程语句; END结构体名结构体名; 下一页上一页2.1 VHDL程序的基本结构程序的基本结构 一个结构体的组织结构从一个结构体的组织结构从“ARCHITECTURE结构体名结构体名OF实体名实体名IS”开开始

74、,到始,到“END结构体名结构体名”结束。结束。 结构体名称由设计者自由命名,是结构体的唯一名称。结构体名称由设计者自由命名,是结构体的唯一名称。OF后面的实体后面的实体名称表明该结构体属于哪个设计实体,有些设计实体中可能含有多个结名称表明该结构体属于哪个设计实体,有些设计实体中可能含有多个结构体。这些结构体的命名可以从不同侧面反映结构体的特色,让人一目构体。这些结构体的命名可以从不同侧面反映结构体的特色,让人一目了然。例如了然。例如: ARCHITECTURE behacvioral OF mux IS -用结构体行为命名用结构体行为命名 ARCHITECTURE dataflow OF m

75、ux IS -用结构体的数据流命名用结构体的数据流命名 下一页上一页2.1 VHDL程序的基本结构程序的基本结构 ARCHITECTURE structural OF mux IS -用结构体的组织结构命名用结构体的组织结构命名 ARCHITECTURE bool OF mux IS -用结构体的数学表达方式命名用结构体的数学表达方式命名 ARCHITECTURE latch OF mux IS -用结构体的功能来定义用结构体的功能来定义 上述几个结构体都属于设计实体上述几个结构体都属于设计实体mux,每个结构体有着不同的,每个结构体有着不同的名称,使得阅读名称,使得阅读VHDL程序的人能直接

76、从结构体的描述方式了解程序的人能直接从结构体的描述方式了解功能,定义电路行为。功能,定义电路行为。下一页上一页2.1 VHDL程序的基本结构程序的基本结构三、程序包三、程序包 实体中定义的各种数据类型、子程序和元件调用说明只能局限在实体中定义的各种数据类型、子程序和元件调用说明只能局限在该实体内或结构体内调用,其他实体不能使用。该实体内或结构体内调用,其他实体不能使用。 程序包的语句格式如下程序包的语句格式如下: PACKAGE程序包名程序包名IS -程序包首开始程序包首开始 程序包首说明语句程序包首说明语句 END程序包名程序包名; -程序包首结束程序包首结束 PACKAGE BODY程序包

77、名程序包名IS -程序包体开始程序包体开始 程序包体说明语句程序包体说明语句 END程序包名程序包名; -程序包体结束程序包体结束 下一页上一页2.1 VHDL程序的基本结构程序的基本结构 STD_LOGIC_1164程序包是程序包是IEEE库中最常用的程序包,是库中最常用的程序包,是IEEE的标准程序包。其中包括了一些数据类型、了类型和函数的定的标准程序包。其中包括了一些数据类型、了类型和函数的定义,这些定义将义,这些定义将VHDL扩展为一个能描述多值逻辑扩展为一个能描述多值逻辑(即除具有即除具有“0”和和“1”以外还有其他的逻辑量,如高阻态以外还有其他的逻辑量,如高阻态“Z、不定态、不定态

78、“X”等等)的硬的硬件描述语言。件描述语言。 程序包结构中,程序包体并非是必须的,程序包首可以独立定义程序包结构中,程序包体并非是必须的,程序包首可以独立定义和使用。和使用。 例如例如: PACKAGE PAC1 IS -程序包首开始程序包首开始 TYPE BYTE IS RANGE 0 TO 255; -定义数据类型定义数据类型BYTE 下一页上一页2.1 VHDL程序的基本结构程序的基本结构 SIGNAL ADDEND: NIBBLE; -定义信号定义信号ADDEND END PAC1; -程序包首结束程序包首结束 如果要使用这个程序包中的所有定义,可用如果要使用这个程序包中的所有定义,可

79、用USE语句访问此程序语句访问此程序包包: USE WORK.PAC1.ALL;四、库四、库 在利用在利用VHDL进行工程设计中,为了提高设计效率以及使设计遵循进行工程设计中,为了提高设计效率以及使设计遵循某些统一的语言标准或数据格式,有必要将一些有用的信息汇集在一个某些统一的语言标准或数据格式,有必要将一些有用的信息汇集在一个或几个库中以供调用。这些信息可以是预先定义的数据类型、子程序等或几个库中以供调用。这些信息可以是预先定义的数据类型、子程序等设计单元的集合体设计单元的集合体(程序包程序包),或预先设计好的各种设计实体,或预先设计好的各种设计实体(元件库程元件库程序包序包)。因此,可以把

80、库看成是一种用来存储预先完成的程序包和数据。因此,可以把库看成是一种用来存储预先完成的程序包和数据集合体的仓库。集合体的仓库。 上一页下一页2.1 VHDL程序的基本结构程序的基本结构 库的语句格式如下库的语句格式如下: LIBRARY库名库名: 这一语句相当于为其后的设计实体打开了以次库名命名的库,以便这一语句相当于为其后的设计实体打开了以次库名命名的库,以便设计实体可以利用其中的程序包。如语句设计实体可以利用其中的程序包。如语句“LIBRARY_IEEE;”表示打开表示打开IEEE库。库。 1.库的种类库的种类 (1)IEEE库库 IEEE库是库是VH支持工业标准的程序包。支持工业标准的程

81、序包。IEEE库中的标准程序包主要库中的标准程序包主要包含包含STD_LOGIC_1164, STD_LOGIC_ARITH, STD_LOGIC_SIGNED , STD_LOGIC_UNSIGNED程序包。程序包。 上一页下一页2.1 VHDL程序的基本结构程序的基本结构 (2)STD库库 STD库是库是VHDL的标准库,的标准库,VHDL在编译过程中自动使用这个库,在编译过程中自动使用这个库,所以使用时不需要语句说明,类似所以使用时不需要语句说明,类似“LIBRARY_STD”这种语句是不必要这种语句是不必要的。的。 (3)WORK库库 WORK库是用户的库是用户的VHDL设计的现行工作

82、库,用于存放用户设计和设计的现行工作库,用于存放用户设计和定义的一些设计单元和程序包。因此,自动满足定义的一些设计单元和程序包。因此,自动满足VHDL的语言标准,实的语言标准,实际调用中,也不需要语句说明。际调用中,也不需要语句说明。 2.库的用法库的用法 在在VHDL中,库的说明语句是放在实体单元的前面,而目库语言一中,库的说明语句是放在实体单元的前面,而目库语言一般必须与般必须与USE语言同用。库语言关键词语言同用。库语言关键词LIBRARY,指明所使用的库,指明所使用的库上一页下一页2.1 VHDL程序的基本结构程序的基本结构名。名。USE语句指明库中的程序包。一旦说明了程序包,整个设计

83、实体都语句指明库中的程序包。一旦说明了程序包,整个设计实体都可以进入访问和调用,但其作用范围仅限于所说明的设计实体。可以进入访问和调用,但其作用范围仅限于所说明的设计实体。 USE语句的使用将使说明的程序包对本设计实体部分全部开放,语句的使用将使说明的程序包对本设计实体部分全部开放, USE语句的使用有两种常用格式语句的使用有两种常用格式: USE库名库名.程序包名程序包名.项目名项目名; USE库名库名.程序包名程序包名.ALL; 例如例如: LIBRARY IEEE; -打开打开IEEE库库 USE IEEE.STD_LOGIC_1164.ALL; -使用使用IEEE库内的库内的STD_L

84、OGIC_1164 上一页下一页2.1 VHDL程序的基本结构程序的基本结构 USE IEEE.STD_LOGIC_UNSIGNED.ALL; -使用使用IEEE库内的库内的STD LOGIC UNSIGNED程序包内程序包内 的所有资源的所有资源五、配置五、配置 配置可以把特定的结构体指定给一个确定的实体。为了满足不同设配置可以把特定的结构体指定给一个确定的实体。为了满足不同设计阶段或不同场合的需要,对某一个实体,我们可以给出几种不同形式计阶段或不同场合的需要,对某一个实体,我们可以给出几种不同形式的结构体描述,这样在其他实体调用该实体时,就可以根据需要选择其的结构体描述,这样在其他实体调用

85、该实体时,就可以根据需要选择其中某一个结构体,选择不同的结构体以便进行性能对比试验,确认性能中某一个结构体,选择不同的结构体以便进行性能对比试验,确认性能最佳的结构体。以上这些工作就由配置来完成。最佳的结构体。以上这些工作就由配置来完成。 上一页下一页2.1 VHDL程序的基本结构程序的基本结构配置语句的一般语句如下配置语句的一般语句如下: CONFIGURATION 配置名配置名 OF 实体名实体名 IS 配置语句说明配置语句说明 END 配置名配置名; 例例2.2在描述一个与非门在描述一个与非门NAND的设计实体中会有两个不同的逻的设计实体中会有两个不同的逻辑描述方法构成的结构体。用配置语

86、句来为特定的结构体击求作配置指辑描述方法构成的结构体。用配置语句来为特定的结构体击求作配置指定。定。LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MYNAND IS 上一页下一页2.1 VHDL程序的基本结构程序的基本结构 PORT (A:IN STD_LOGIC; B: IN STD_LOGIC; C: OUT STD_LOGIC); END ENTITY MYNAND; ARCHITECTURE ART1 OF MYNAND IS BEGIN C=NOT(A AND B); END ARCHITECYURE ART1; ARCHITEC

87、TURE ART2 OF MYNAND IS BEGIN 上一页下一页2.1 VHDL程序的基本结构程序的基本结构 C=1 WHEN (A=0)AND(B=0) ELSE 1 WHEN (A=0)AND(B=1) ELSE 1 WHEN (A=1)AND(B=0) ELSE 0 WHEN (A=1)AND(B=1) ELSE 0; END ARCHITECTURE; CONFIGURATION SECOND OF IS FOR ART2 END FOR; END SECOND; 上一页下一页2.1 VHDL程序的基本结构程序的基本结构 CONFIGURATION FIRST OF IS FOR

88、 ART1 END FOR; END FIRST; 在本例中,若指定配置名为在本例中,若指定配置名为SECOND,则为实体,则为实体NAND配置的结配置的结构体为构体为ART2;若指定配置名为若指定配置名为FIRST,则为实体,则为实体NAND配置的结构体配置的结构体为为ARTl。两种结构的描述方式不同,但是逻辑功能相同。两种结构的描述方式不同,但是逻辑功能相同。 上一页返 回2.1 VHDL程序的基本结构程序的基本结构 顺序语句是顺序语句是VHDL程序设计中很贡要的语句系列之一,它能够从程序设计中很贡要的语句系列之一,它能够从多个侧面完整地描述数字系统的硬件结构和基本逻辑功能。顺序语句多个侧

89、面完整地描述数字系统的硬件结构和基本逻辑功能。顺序语句与传统软件要指的是语句的执行与传统软件要指的是语句的执行(指仿真执行指仿真执行)顺序与它们书写顺序基顺序与它们书写顺序基本一致。本一致。 顺序语句只能出现在进程顺序语句只能出现在进程(PROCESS)或了程序或了程序(PROCEDURE)、函数、函数(FUNCTION)中使用,按程序书写的顺序自上而下、一个一个语句地执中使用,按程序书写的顺序自上而下、一个一个语句地执行。进程本身属于并行语句,这就是说在同一设计实体中,所有的进行。进程本身属于并行语句,这就是说在同一设计实体中,所有的进程都是并行执行的,每一个进程内部的语句是顺序执行的。程都

90、是并行执行的,每一个进程内部的语句是顺序执行的。 本节主要介绍赋值语句、本节主要介绍赋值语句、IF语句、语句、CASE语句、语句、LOOP语句。语句。 2.2 VHDL程序的顺序语句下一页一、顺序赋值语句一、顺序赋值语句 顺序语句中的赋值语句分变量赋值语句和信号赋值语句。其用途是顺序语句中的赋值语句分变量赋值语句和信号赋值语句。其用途是将一个值或者表达式的运算结果传递给一个变量、信号或者由它们组成将一个值或者表达式的运算结果传递给一个变量、信号或者由它们组成的数组。但一者是有区别的,变量赋值时间延迟为零,而信号赋值一定的数组。但一者是有区别的,变量赋值时间延迟为零,而信号赋值一定存在时间延迟。

91、存在时间延迟。 1.变量赋值语句变量赋值语句 格式格式:口标变量名口标变量名:一赋值源一赋值源(表达式表达式): 例如例如:x:=5.0; z:=x+y; 其中其中x和和z都是变量,都是变量,:=表示给变量赋值。表示给变量赋值。 上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 2.信号赋值语句信号赋值语句 格式格式:口标信号名口标信号名=赋值源赋值源: 例如例如:y=3; b(3 TO 4)=c(1 TO 2); 其中其中y为信号,而为信号,而b则为数组型信号,则为数组型信号,=表示给信号赋值。表示给信号赋值。 二、二、IF语句语句 IF语句的书写格式如下二种语句的书写格式如下二种

92、: 1.简化的简化的IF语句语句 IF条件表达式条件表达式THEN 顺序语句顺序语句: END IF: 上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 第一种语句的执行情况是,当程序执行到该语句时,首先检测关键第一种语句的执行情况是,当程序执行到该语句时,首先检测关键词词IF后的后的“条件表达式条件表达式”的布尔值是否为真的布尔值是否为真(TURE。如果为真,那么。如果为真,那么THEN将顺序执行将顺序执行“顺序语句顺序语句”中的各条语句,直到中的各条语句,直到“END IF: ;如果如果为假为假CFALSE),则不执行,则不执行“顺序语句顺序语句”,直接到跳到,直接到跳到“END

93、 IF ,结,结束束IF语句的执行。语句的执行。 【例【例2.3 】用】用IF语句描述一个简单的语句描述一个简单的D触发器。触发器。 ENTITY dffl IS PORT(d,c1k:IN BIT; q:ouT BIT); END dffl; 上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 ARCHITECTURE one OF dffl IS BEGIN PROCESS(clk) BEGIN IF (clkevent AND clk=1) THEN q=d; END IF; END PROCESS; END one;上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 2

94、.两分支结构两分支结构 IF 条件表达式条件表达式 THEN 顺序语句顺序语句; ELSE 顺序语句顺序语句; END IF; 两分支结构的执行情况是,当关键词两分支结构的执行情况是,当关键词“IF”后的后的“条件表达式条件表达式”为为真时,则顺序执行其下面的真时,则顺序执行其下面的“顺序语句顺序语句”中的各条语句,当中的各条语句,当“顺序语句顺序语句”执行完成后,直接跳到执行完成后,直接跳到“END IF: ”,结束,结束IF语句的执行语句的执行;当当“IF ”)西的西的“条件表达式条件表达式”为假时,则程序直接跳到关键词为假时,则程序直接跳到关键词“ELSE”,执,执行其下面的顺序语句,直

95、到行其下面的顺序语句,直到“END IF; ”。因此它是一种两分支的结构。因此它是一种两分支的结构。 上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 【例【例2.4】用】用IF语句描述一个语句描述一个2输入端的与门。输入端的与门。 ENTITY mvand2 IS PORT(a,b:IN BIT; y:OUT BIT); END mvand2; ARCHITECTURE one OF mvand2 IS BEGIN PROCESS(a,b) BEGIN IF (a=1 AND b=1) THEN 上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 y=1; ELSE y=0

96、; END IF; END PROCESS; END one; 3.多分支结构多分支结构 IF 条件表达式条件表达式 THEN 顺序语句顺序语句; ELSIF 条件表达式条件表达式 THEN 顺序语句顺序语句;上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 ELSE 顺序语句顺序语句; END IF; 多分支结构通过关键词多分支结构通过关键词“ ELSIF”设定了多个判断条件设定了多个判断条件(条件表达条件表达式式),这些判断条件的优先顺序,这些判断条件的优先顺序(从高到低从高到低)与书写与书写“条件表达式条件表达式”的先的先后顺序一致。当某一判断条件为真时,则顺序执行其后的后顺序

97、一致。当某一判断条件为真时,则顺序执行其后的“顺序语句顺序语句”,执行完成后,直接跳到,执行完成后,直接跳到“END IF;”当某一判断条件为假时,则跳过当某一判断条件为假时,则跳过其后的其后的“顺序语句顺序语句”,再测试下一个条件表达式。当所有的条件表达式,再测试下一个条件表达式。当所有的条件表达式都为假时,则执行关键词都为假时,则执行关键词ELSE”下的顺序语句下的顺序语句”。因此它是一种多分。因此它是一种多分支结构,功能与并行语句中的条件信号赋值语匀类似。支结构,功能与并行语句中的条件信号赋值语匀类似。上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 【例【例2.5】 8线一线

98、一3线优先编码器的设计线优先编码器的设计 LIBRARY IEEE; USE IEEE.STD_LOGIC 1164.ALL; ENTITY coder IS PORT(a: IN STD_LOGIC_VECTOR(0 TO 7); v: OUT STD_LOGlC_VECTOR(2 DOWN TO 0); END coder; ARCHITECTURE rtl OF coder IS BEGIN PROCESS(a) BEGIN上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 IF a(7) =0 THEN y= 111“; ELSIF (a(6)=0) THEN y=110; E

99、LSIF (a(5)=0) THEN y=101; ELSIF (a(4)=0) THEN y=100; ELSIF (a(3)=0) THEN y=011; ELSIF (a(2)=0) THEN y=010; ELSIF (a(1)=0) THEN y=001; ELSE y顺序语句顺序语句; When选择值选择值=顺序语句顺序语句; When OTHERS=顺序语句顺序语句; END CASE; 注意注意: “=”不是运算符,相当不是运算符,相当“THEN “。 上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句说明说明: 语句执行时,首先计算语句执行时,首先计算“表达式表达式”

100、的值,然后执行与的值,然后执行与“表达式表达式”值相同的值相同的“选择值选择值”)后的后的“顺序语句顺序语句”,最后,最后END CASE。这单要。这单要注意,注意,“=”不是操作符,它只相当于不是操作符,它只相当于“THEN”的作用。从这一点上来的作用。从这一点上来说,说,CASE语句和并行选择信号赋值语句的功能相当。语句和并行选择信号赋值语句的功能相当。 条件句中的条件句中的“选择值选择值”必须在必须在“表达式表达式”的取值范围内,并目要的取值范围内,并目要完全覆盖完全覆盖“表达式表达式”的所有取值。当的所有取值。当“选择值选择值”不能完全覆盖不能完全覆盖“表达式表达式”的所有取值时,则最

101、后一个条件语句中的的所有取值时,则最后一个条件语句中的“选择值选择值”必须用必须用OTHERS”表示,以表示表示,以表示“选择值选择值”未能列出未能列出“表达式表达式”的其他取值。的其他取值。关键词关键词OTHERS”只能出现一次,目只能作为最后一种条件取值。这一只能出现一次,目只能作为最后一种条件取值。这一点对于定义成点对于定义成STD LOGIC和和STD LOGIC VECTOR的数据类型尤为的数据类型尤为重要。重要。 上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 “选择值选择值”可以有以下四种不同的表达方式可以有以下四种不同的表达方式: 单个数值,如单个数值,如4;数值数

102、值选择范围,如选择范围,如(2 TO 4),表示取值为,表示取值为2, 3 和和 4;并列数值,如并列数值,如35,表示取值为表示取值为3或或5;混合方式,以上三种方式的混合。混合方式,以上三种方式的混合。 每一条件语句中的每一条件语句中的“选择值选择值”只能出现一次,不能有相同只能出现一次,不能有相同“选择选择值值”的条件语句。的条件语句。 与与IF语句相比,语句相比,CASE语句组的程序可读性比较好,这是因为它语句组的程序可读性比较好,这是因为它把条件中把条件中“表达式表达式”的所有取值都列了出来,可执行条件一目了然。但的所有取值都列了出来,可执行条件一目了然。但对相同的逻辑功能描述,综合

103、后,用对相同的逻辑功能描述,综合后,用CASE语句描述比语句描述比IF描述耗用更多描述耗用更多的硬件资源。因此,对本身就具有优先逻辑关系的描述的硬件资源。因此,对本身就具有优先逻辑关系的描述(如优先编码器如优先编码器),采用,采用IF语句比语句比CASE语句更合适。语句更合适。上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句【例【例2.6】用】用CASE语句描述语句描述4选选1数据选择器。数据选择器。 LIBRARY IEEE; USE IEEE.STD LOGIC 1164.ALL; ENTITY mux4 1 IS PORT(a,b,c,d:IN STD_LOGIC; se1:I

104、N STD_LOGIC_VECTOR(1 DOWNTO 0); y:OUT STD_LOGIC); END mux4 1; ARCHITECTURE one OF mux4 1 IS BEGIN 上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 PROCESS(sel,a,b,c,d) BEGIN CASE sel IS WHEN “00”=yyyyy= X; END CASE; END PROCESS; END one;上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句四、四、LOOP语句语句 LOOP语句就是循环语句,它可以使所包含的一组顺序语句被循环语句就是循环语句,它

105、可以使所包含的一组顺序语句被循环执行。执行。 标号标号: FOR 循环变量循环变量 IN 循环范围循环范围 LOOP 顺序语句顺序语句; END LOOP 标号标号; 常用的书写格式如下常用的书写格式如下: “循环变量循环变量”是一个临时变量,属于是一个临时变量,属于Loop语句的局部变量,它由语句的局部变量,它由Loop语句自动定义,不必事先定义。该变量只能作为赋值源,不能被语句自动定义,不必事先定义。该变量只能作为赋值源,不能被赋值。使用时应注意,在赋值。使用时应注意,在Loop语句范围内不要再使用其他与此循环变语句范围内不要再使用其他与此循环变量同名的标识符。量同名的标识符。 上一页下一

106、页 2.2 VHDL程序的顺序语句程序的顺序语句“循环范围循环范围”规定循环语句被执行的次数。规定循环语句被执行的次数。“循环变量循环变量”从从“循环范循环范围围”的初值开始,每执行完一次的初值开始,每执行完一次“顺序语句顺序语句”后递增后递增1,直到达到,直到达到“循循环范围环范围”指定的最大值。指定的最大值。 【例【例2.7】用】用FOR_LOOP语句描述语句描述图图2-3的电路。的电路。 ENTITY exam_1 IS PORT(a:IN BIT_VECTOR(0 TO 3); out1:0UT BIT_VECTOR(0 TO 3); END exam 1:ARCHITECTURE b

107、eh OF exam_1 IS BEGIN 上一页下一页 2.2 VHDL程序的顺序语句程序的顺序语句 PROCESS(a) VARIABLE b:BIT;BEGIN b:=1; FOR i IN 0 TO 3 LOOP b:=a(3-i) AND b; outl (i)=b; END LOOP; END PROCESS;END beh;上一页返 回 2.2 VHDL程序的顺序语句程序的顺序语句 并行语句结构是最具并行语句结构是最具VHDL特色的,是与一般软件程序最大的区特色的,是与一般软件程序最大的区别所在。在别所在。在VHDL中,并行语句有多种语句格式,各种并行语句的执中,并行语句有多种语

108、句格式,各种并行语句的执行都是同步进行的,或者说是并行运行的,其执行的方式与书写的顺行都是同步进行的,或者说是并行运行的,其执行的方式与书写的顺序无关。这种并行性是由硬件本身的并行性决定的,即一旦电路接通序无关。这种并行性是由硬件本身的并行性决定的,即一旦电路接通电源,它的各部分就会按照事先设计好的方案同时工作。并行语句在电源,它的各部分就会按照事先设计好的方案同时工作。并行语句在执行时,各并行语句之间可以有信息来往,也可以互为独立、互不相执行时,各并行语句之间可以有信息来往,也可以互为独立、互不相关。另外,每一并行语句内部的语句可以有两种不同的运行方式,即关。另外,每一并行语句内部的语句可以

109、有两种不同的运行方式,即并行执行方式并行执行方式(如块语句如块语句)和顺序执行方式和顺序执行方式(如进程语句如进程语句)。 本节介绍结构体中常用的并行语句本节介绍结构体中常用的并行语句:进程进程(PROCESS)语句、并行信语句、并行信号赋值语句、元件例化语句。号赋值语句、元件例化语句。下一页 2.2 VHDL程序的顺序语句程序的顺序语句2.3 VHDL程序的并行语程序的并行语句句 一、进程一、进程(PROCESS)语句语句 进程语句是进程语句是VHDL设计中用得最多的语句之一,进程语句本身是设计中用得最多的语句之一,进程语句本身是并行语句,其内部却是由顺序语句组成。一个结构体内可以包含多个并

110、行语句,其内部却是由顺序语句组成。一个结构体内可以包含多个进程语句,多个进程之间是并发执行的,多个进程语句间可以通过信进程语句,多个进程之间是并发执行的,多个进程语句间可以通过信号来交换信息。进程语句的格式有两种。号来交换信息。进程语句的格式有两种。 格式一格式一: 进程标号进程标号: PROCESS (敏感信号参数表敏感信号参数表) IS 进程声明部分进程声明部分-说明用于该进程的常量,变量和子程序说明用于该进程的常量,变量和子程序 BEGIN 顺序描述语句;顺序描述语句; END PROCESS进程标号进程标号;下一页上一页 2.2 VHDL程序的顺序语句程序的顺序语句2.3 VHDL程序

111、的并行语程序的并行语句句下一页上一页 此格式有敏感信号参数表,其内部不允许存在此格式有敏感信号参数表,其内部不允许存在WAIT语句。语句。格式二格式二: 进程标号进程标号: PROCESS IS 进程声明部分进程声明部分-说明用于该进程的常量,变量和子程序说明用于该进程的常量,变量和子程序 BEGIN WAIT语句语句; 顺序描述语句顺序描述语句; END PROCESS 进程标号进程标号; 进程语句是最常用的并行语句,既可以用来描述组合逻辑电路,进程语句是最常用的并行语句,既可以用来描述组合逻辑电路,又可以描述时序逻辑电路,是又可以描述时序逻辑电路,是VHDL程序设计中应用最多也是最能体程序

112、设计中应用最多也是最能体现硬件描述语言特点的一种语句。现硬件描述语言特点的一种语句。 2.2 VHDL程序的顺序语句程序的顺序语句2.3 VHDL程序的并行语程序的并行语句句下一页上一页 进程语句的主要特点归纳如下进程语句的主要特点归纳如下: 同一结构中的各个进程之间是并发执行的,并目都可以使用实同一结构中的各个进程之间是并发执行的,并目都可以使用实体说明和结构体中所定义的信号体说明和结构体中所定义的信号;而同一进程内部的语句则必须是顺序而同一进程内部的语句则必须是顺序语句。语句。 为启动进程,进程语句中必须至少包含一个敏感信号或包含一为启动进程,进程语句中必须至少包含一个敏感信号或包含一个个

113、WAIT语句,但是在一个进程中不能同时存在敏感信号和语句,但是在一个进程中不能同时存在敏感信号和WAIT语句。语句。 一个结构体中的各个进程之间可以通过信号来进行通信,进程一个结构体中的各个进程之间可以通过信号来进行通信,进程的声明部分不能定义信号,但可定义进程的内部变量。的声明部分不能定义信号,但可定义进程的内部变量。 在进程内部信号赋值是有时间延迟的,在同一个进程中对同一在进程内部信号赋值是有时间延迟的,在同一个进程中对同一个信号多次赋值时,起作用的是最后一次条件成立的赋值个信号多次赋值时,起作用的是最后一次条件成立的赋值;而在进程内而在进程内2.3 VHDL程序的并行语句下一页上一页 部

114、变量赋值是无时间延迟的,在同一个进程中对同一个变量多次部变量赋值是无时间延迟的,在同一个进程中对同一个变量多次赋值时,每次都立即起作用。赋值时,每次都立即起作用。例例2.8一个典型的结构体实例。一个典型的结构体实例。ARCHITECTURE a OF states mach ISBEGIN P1:PROCESS(clk) BEGIN IF (clkevent AND clk=1) THEN current_state=next _state; END IF; END PROCESS; END A;2.3 VHDL程序的并行语程序的并行语句句下一页上一页 上例中,上例中,P1为进程标号,时钟为进

115、程标号,时钟clk为敏感信号。每当为敏感信号。每当clk发生发生一次变化时,一次变化时,BEGIN 和和END PROCESS之间的顺序语句就会运之间的顺序语句就会运行一次。由于时钟行一次。由于时钟clk变化包括上升沿和下降沿,为了准确描述,变化包括上升沿和下降沿,为了准确描述,在顺序语句中用了一个条件判断语句在顺序语句中用了一个条件判断语句 “IF (clkevent AND clk=1) THEN ”来判断来判断clk的上升沿。若要判断的上升沿。若要判断clk的下降沿,的下降沿,可用可用“ IF (clkevent AND clk=0) THEN”语句。语句。二、并行信号赋值语句二、并行信

116、号赋值语句 并行信号赋值语句有二种形式:简单信号赋值语句、选择信号并行信号赋值语句有二种形式:简单信号赋值语句、选择信号赋值语句和条件信号赋值语句。这二种信号赋值语句的共同特点是赋值语句和条件信号赋值语句。这二种信号赋值语句的共同特点是赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结构体中的执行是同时发生的。构体中的执行是同时发生的。2.3 VHDL程序的并行语程序的并行语句句下一页上一页 1.简单信号赋值语句简单信号赋值语句 简单信号赋值语句是并行语句结构的最基本单元,它的语句书写格简单信号赋值语句是并行语句结构的最基本单元

117、,它的语句书写格式如下式如下: 赋值目标赋值目标=表达式;表达式; 应用该赋值语句时一定要注意,赋值目标的数据对象必须是信号,应用该赋值语句时一定要注意,赋值目标的数据对象必须是信号,赋值运算符赋值运算符“=”两边的数据类型必须一致。两边的数据类型必须一致。例例2.9本例的结构体中描述了本例的结构体中描述了3个基本的逻辑门。个基本的逻辑门。 ENTITY gate IS PORT(a,b: IN BIT; y1,y2,y3:0UT BIT); END gate;2.3 VHDL程序的并行语句程序的并行语句 ARCHITECTURE one OF gate IS BEGIN yl=a AND b

118、; -与门与门 y2=a OR b; -或门或门 y3=NOT a; -非门非门 END one;2.选择信号赋值语句选择信号赋值语句选择信号赋值语句的书写格式如下:选择信号赋值语句的书写格式如下:WITH 选择表达式选择表达式 SELECT 赋值目标信号赋值目标信号 =表达式表达式WHEN选择值,选择值, 表达式表达式WHEN选择值选择值; 下一页上一页2.3 VHDL程序的并行语程序的并行语句句 当当“选择表达式选择表达式”的值发生变化时,将启动此语句对各子句的的值发生变化时,将启动此语句对各子句的“选择值选择值”进行测试对比。当发现有满足条件的子句时,就将此子句进行测试对比。当发现有满足

119、条件的子句时,就将此子句中的中的“表达式表达式”值赋给值赋给“赋值目标信号赋值目标信号”。 每条子句应以每条子句应以“,”结束,最后一条子句以结束,最后一条子句以“;”结束。结束。 “选择值选择值”不能有重复,不能有重复, “选择值选择值”应包含应包含“选择表达式选择表达式”的的所有取值,不允许存在选择值涵盖不全的情况。所有取值,不允许存在选择值涵盖不全的情况。 例例2.10用选择信号赋值语句设计一个用选择信号赋值语句设计一个4选选1数据选择器,其符数据选择器,其符号如号如图图2-4所示。其中所示。其中SEL1.0为为2位地址输入端,位地址输入端,A, B, C, D为为数据输入端,数据输入端

120、,Y为数据输出端。为数据输出端。当当SEL1.0为为“00”时,时,Y=A ; 当当SEL1.0为为“O1”时,时,Y=B;当当SEL1.0为为“10”时,时,Y=C; 当当SEL1.0为为“11”时,时,Y=D。 下一页上一页2.3 VHDL程序的并行语程序的并行语句句下一页上一页 ENTITY mux4 1 IS SEL1.0 PORT(a,b,c,d:IN BIT; se1:IN BIT_VECTOR(1 DOWNTO 0); y:OUT BIT); END mux4 1; ARCHITECTURE one OF mux4 1 IS BEGIN WITH sel SELECT y=a W

121、HEN 00, b WHEN O1,2.3 VHDL程序的并行语程序的并行语句句 c WHEN”10, d WHEN”11; END one;3.条件信号赋值语句条件信号赋值语句条件信号赋值语句书写格式如下条件信号赋值语句书写格式如下;目标信号目标信号 = 表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式; 条件信号赋值语句与选择信号赋值语句的最大区别在于后者的各条件信号赋值语句与选择信号赋值语句的最大区别在于后者的各个个“选择值选择值”之间处于同一优先级,而前者的各个之间处于同一优先级,而前者的各个“赋值条件赋值条件”具有具

122、有优先顺序,优先级由高到低的顺序与语句书写顺序一致。优先顺序,优先级由高到低的顺序与语句书写顺序一致。 下一页上一页2.3 VHDL程序的并行语程序的并行语句句当某个当某个“赋值条件赋值条件”得到满足得到满足(即其值为即其值为“真真”)时,立即将该条件时,立即将该条件“WHEN前的前的“表达式表达式”值赋给值赋给“目标信号目标信号”;当几个当几个“赋值条件赋值条件”都得都得到满足时,优先级高的那个条件到满足时,优先级高的那个条件“WHEN”前的前的“表达式表达式”值赋给值赋给“目标目标信号信号”;当所有的当所有的“赋值条件赋值条件”都得不到满足时,最后一个都得不到满足时,最后一个“ELSE”关

123、关键词后的键词后的“表达式表达式”值赋给值赋给“目标信号目标信号”。 每行语句后没有标点符号,最后一行每行语句后没有标点符号,最后一行“表达式表达式”用用“;”结束。结束。【例【例2.11】用条件信号赋值语句设计】用条件信号赋值语句设计4选选1数据选择器。数据选择器。 LIBRARY IEEE; USE IEEE.STD LOGIC 1164.ALL; ENTITY mux4 1 IS 下一页上一页2.3 VHDL程序的并行语程序的并行语句句 PORT (a,b,c,d:IN BIT; se1:IN BIT_VECTOR(1 DOWNTO 0); y:OUT BIT); END mux4_1;

124、 ARCHITECTURE one OF mux4 1 IS BEGIN y连接端口名,连接端口名,); 第一部分的第一部分的“元件声明元件声明”,是对预先设计好的元件的定义语句,是对预先设计好的元件的定义语句,相当于对一个已有的设计实体进行封装,使其只留出对外的接口界面,相当于对一个已有的设计实体进行封装,使其只留出对外的接口界面,也就像一个集成芯片只对外留出几个引脚一样。也就像一个集成芯片只对外留出几个引脚一样。“类属表类属表”可定义一些可定义一些参数参数;“端口信息端口信息”可列出已有元件端口的名称、模式、数据类型。该可列出已有元件端口的名称、模式、数据类型。该部分可放在结构体中部分可放

125、在结构体中“语句说明部分语句说明部分”。 下一页上一页2.3 VHDL程序的并行语程序的并行语句句 第一部分的第一部分的“元件例化元件例化”,用于说明当前设计实体和被调用元件,用于说明当前设计实体和被调用元件的连接关系。其中,的连接关系。其中,“例化名例化名”是必须的,它类似于当前电路系统板上是必须的,它类似于当前电路系统板上的一个插座名的一个插座名;而而“元件名元件名”则是已定义好的、准备在此插座上插入的则是已定义好的、准备在此插座上插入的元件元件(或芯片或芯片)名称名称;“端口名端口名”是已有的元件是已有的元件(或芯片或芯片)的端口名称;的端口名称;“=”是关联是关联(连接连接)符号符号;

126、“连接端口名连接端口名”则是当前系统与准备接入的则是当前系统与准备接入的元件对应端口相连的通信端口,相当于插座上各插针的引脚名。元件对应端口相连的通信端口,相当于插座上各插针的引脚名。 已有元件的已有元件的“端口名端口名”与当前系统的与当前系统的“连接端口名连接端口名”的关联描述的关联描述有两种方式。有两种方式。 一种是上述方式,在这种方式下,已有元件的一种是上述方式,在这种方式下,已有元件的“端口名端口名”、关联符、关联符号号“=”都是必须存在的,都是必须存在的,“端口名端口名=连接端口名连接端口名”在在PORT MAP语句中的位置可以是任意的语句中的位置可以是任意的;下一页上一页2.3 V

127、HDL程序的并行语程序的并行语句句 另一种是位置关联方式,在这种方式下,另一种是位置关联方式,在这种方式下,“端口名端口名”和和“=”都可省去,在都可省去,在PORT MAP了句中只列出当前系统中的了句中只列出当前系统中的“连接端口连接端口名名”即可,但要求即可,但要求“连接端口名连接端口名”的排列顺序与的排列顺序与“元件声明元件声明”中已中已有元件有元件“端口信息端口信息”中所列的端口名排列顺序相同,书写格式为中所列的端口名排列顺序相同,书写格式为 例化名:元件名例化名:元件名 PORT MAP(连接端口名连接端口名1,连接端口名,连接端口名2,);【例【例2.12】利用例化语句设计】利用例

128、化语句设计图图2-5所示的电路。所示的电路。 -首先完成与非门的设计首先完成与非门的设计 LIBRARY IEEE; USE IEEE.STD LOGIC 1164.ALL; ENTITY mvnand2 IS 下一页上一页2.3 VHDL程序的并行语程序的并行语句句下一页上一页 PORT(a,b:IN STD_LOGIC; y:OUT STD_LOGIC); END mvnand2; ARCHITECTURE one OF mvnand2 IS BEGIN VOAA NAND b; END one;-利用例化语句完成设计利用例化语句完成设计 LIBRARY IEEE; USE IEEE.ST

129、D LOGIC 1164.ALL; 2.3 VHDL程序的并行语程序的并行语句句下一页上一页 ENTITY ord4 IS PORT(a,b,c,d:IN STD_LOGIC; z:OUT STD_LOGIC); END ord4; ARCHITECTURE behv OF ord4 IS COMPONENT mynand2-元件声明部分元件声明部分 PORT(a,b:IN STD_LOGIC; y:OUT STD_LOGIC); END COMPONENT; SIGNAL templ,temp2;STD_LOGIC; 2.3 VHDL程序的并行语程序的并行语句句下一页上一页 BEGIN -元

130、件例化部分元件例化部分 U1: mynand2 PORT MAP(a,b,templ);一按位置一按位置关联关联 U2:mynand2 PORT MAP (a=c, b=d, y=temp2); -按名字关联按名字关联 U3: mynand2 PORT MAP (templ, temp2, y=z); -混合关联混合关联 END behv;2.3 VHDL程序的并行语程序的并行语句句四、生成语句四、生成语句(GENERATE) 生成语句具有复制作用,它可以生成与已有的某个元件或设计生成语句具有复制作用,它可以生成与已有的某个元件或设计单元电路完全单元电路完全相同的一组并行元件或设计单元电路结构

131、。相同的一组并行元件或设计单元电路结构。 生成语句的书写格式有以下两种形式生成语句的书写格式有以下两种形式; 形式一:形式一: 标号标号:FOR 循环变量循环变量 IN 取值范围取值范围 GENERATE 说明语句说明语句; 并行语句并行语句; END GENERATE标号标号;下一页上一页2.3 VHDL程序的并行语程序的并行语句句形式二:形式二: 标号标号:IF 条件条件 GENERATE 说明语句说明语句; 并行语句并行语句; END GENERATE 标号标号; 生成语句的生成方式有生成语句的生成方式有“FOR”和和“IF两种,它们用于规定两种,它们用于规定并行语句的复制方式。并行语句

132、的复制方式。 “说明语句说明语句”用于对元件的数据类型、数据对象等作一些局用于对元件的数据类型、数据对象等作一些局部说明。部说明。 “并行语句并行语句”是用来复制的基本单元,主要包括元件、进程是用来复制的基本单元,主要包括元件、进程语句、块语句、并行信号赋值语句,甚至生成语句,这表示生成语语句、块语句、并行信号赋值语句,甚至生成语句,这表示生成语下一页上一页2.3 VHDL程序的并行语程序的并行语句句句允许存在嵌套结构,因而可用于生成元件的多维阵列结构。句允许存在嵌套结构,因而可用于生成元件的多维阵列结构。 “标号标号”并非是必击的,但如果在嵌套式生成语句结构中就是十并非是必击的,但如果在嵌套

133、式生成语句结构中就是十分重要的。分重要的。 对于对于“ FOR”语句结构,主要用来描述设计中的一些有规律的语句结构,主要用来描述设计中的一些有规律的单元结构,其单元结构,其“循环变量循环变量”是一个局部变量,它根据是一个局部变量,它根据“取值范围取值范围”而而自动递增或递减。自动递增或递减。“取值范围取值范围”的书写格式有以下两种方式。的书写格式有以下两种方式。 表达式表达式 TO 表达式:表达式:-递增方式;递增方式; 如如1 TO 5 表达式表达式 DOWNTO 表达式:表达式: -递减方式;递减方式; 如如5 DOWNTO 1下一页上一页2.3 VHDL程序的并行语程序的并行语句句下一页

134、上一页【例【例2.13】利用】利用GENERATE语句产生语句产生4个个D触发器,如触发器,如图图2-6所示。所示。 LIBRARY IEEE; USE IEEE.STD LOGIC 1164.ALL; ENTITY dff 4 IS PORT(c1k,clrn,prn:IN STD_LOGIC; d:IN STD一一OGIC-VECTOR(3 DOWNTO 0); q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END dff 4; ARCHITECTURE beh OF dff 4 IS 2.3 VHDL程序的并行语程序的并行语句句 COMPONENT dff一元件

135、声明一元件声明 PORT (d, clk,clrn,prn:IN STD_LOGIC; q:OUT STD_LOGIC); END COMPONENT; BEGIN d4:FOR i 1N 3 DOWNTO 0 GENERATE一生成语句一生成语句 u:dff PORT MAP ( d(i), clk, clrn, prn, q(i); 一元件例化一元件例化 END GENERATE; END beh;返 回上一页2.3 VHDL程序的并行语程序的并行语句句 VHDL的语言要素,作为硬件描述语言的基本结构元素,主要的语言要素,作为硬件描述语言的基本结构元素,主要有数据对象、数据类型和运算操作符

136、,而数据对象则包括变量、信有数据对象、数据类型和运算操作符,而数据对象则包括变量、信号和常数二种。号和常数二种。一、文字语法一、文字语法 VHDL文字主要包括数字文字、字符串文字。文字主要包括数字文字、字符串文字。 1.数字文字数字文字 数字文字有多种表达方式,举例如下。数字文字有多种表达方式,举例如下。 (1)整数文字整数文字 整数文字都是十进制数,例如整数文字都是十进制数,例如 3,235,0, 178E2(=17800), 45_146(=45146) 数字间的下画线只是为了提高文字的可读性。数字间的下画线只是为了提高文字的可读性。下一页2.4 VHDL程序的语言要素总结程序的语言要素总

137、结 (2)实数文字实数文字 实数文字是十进制数,必须带有示数点,例如实数文字是十进制数,必须带有示数点,例如123.57, 45 146.571,0.0, 3.15 (3)以数制基数表示的文字,由五个组成部分。以数制基数表示的文字,由五个组成部分。 第一部分,用十进制数标明数制进位的基数第一部分,用十进制数标明数制进位的基数; 第二部分,数制隔离符号第二部分,数制隔离符号“#”; 第三部分,表达的文字,标识符和下标名。相当于一个空的间第三部分,表达的文字,标识符和下标名。相当于一个空的间隔符。隔符。 第四部分,指数隔离符号第四部分,指数隔离符号“#”; 第五部分,用十进制表示的指数部分,如果是

138、第五部分,用十进制表示的指数部分,如果是0可以省略。例如可以省略。例如10#150# -(十进制数表示,十进制数表示,=150) 下一页上一页2.4 VHDL程序的语言要素总结2.字符串文字字符串文字 字符是用单引号引起来的字符是用单引号引起来的ASCII字符,可以是数值,也可以是符号字符,可以是数值,也可以是符号或字母,如或字母,如;A, X,*、R。而字符串是一维的数组,必。而字符串是一维的数组,必须放在双引号中。须放在双引号中。VHDL有两种类型的字符串:文字字符串和数位字有两种类型的字符串:文字字符串和数位字符串。符串。(1)文字字符串文字字符串 文字字符串是用双引号引起来的一串文字,

139、例如文字字符串是用双引号引起来的一串文字,例如 ERROR、BB$CC、BOTH S AND Q EQUAL TOL (2)数位字符串数位字符串 数位字符串是二进制、八进制或十六进制的数组,首先要有计算基数位字符串是二进制、八进制或十六进制的数组,首先要有计算基数,然后将该基数表示的值放在双引号中,基数符号以数,然后将该基数表示的值放在双引号中,基数符号以”B, O”和和”X”表示,并放在字符串的前面。表示,并放在字符串的前面。 下一页上一页2.4 VHDL程序的语言要素总结程序的语言要素总结 B: 二进制基数符号,表示二进制数位二进制基数符号,表示二进制数位0或或1,表示一个,表示一个bit

140、。 O:八进制基数符号,代表一个:八进制基数符号,代表一个3位的二进制数。位的二进制数。 X:十六进制基数符号,代表一个:十六进制基数符号,代表一个4位的二进制数。例如位的二进制数。例如 B“1_1101_1110” -二进制数数组,数组长度的二进制数数组,数组长度的9, XAD 0“ -十六进制数数组,数组长度是十六进制数数组,数组长度是12 3.标识符标识符 标识符用来定义常数、变量、信号、端目、子程序或参数的名字。标识符用来定义常数、变量、信号、端目、子程序或参数的名字。VHDL的基本标识符就是以英文字母开头,不连续使用下画线的基本标识符就是以英文字母开头,不连续使用下画线“_”,不以下

141、画线,不以下画线“_”结尾,由结尾,由26个大示写英文字母、数字以及下画线个大示写英文字母、数字以及下画线组成的字符串。例如组成的字符串。例如:DECODER-1 , FFT , Sig_N , NOT_ACK是合法的标识符是合法的标识符;_DECODER-1 , 2FFT , Sig_#N, NOT-ACK是非法标识符。是非法标识符。 下一页上一页2.4 VHDL程序的语言要素总结程序的语言要素总结 4.下标名下标名 下标名用于指示数组型变量或信号的某一元素,其语句格式如下:下标名用于指示数组型变量或信号的某一元素,其语句格式如下: 表达式表达式1 TO/DOWNTO 表达式表达式2 表达式

142、的数值必须在数组元素下标号范围内,并目必须是可计算表达式的数值必须在数组元素下标号范围内,并目必须是可计算的。的。TO表示数组下标序列由低到高,如表示数组下标序列由低到高,如“2 TO 8; DOWNTO表表示数组下标序列由高到低,如示数组下标序列由高到低,如“8 DOWNTO 2”。二、数据对象二、数据对象 在在VHDL中,数据对象类似于一种容器,它接受不同数据类型的中,数据对象类似于一种容器,它接受不同数据类型的赋值。数据对象有二种,赋值。数据对象有二种,I变量变量(VARIABLE)量量(CONSTANT)和信号和信号(SIGNAL ) 。 下一页上一页2.4 VHDL程序的语言要素总结

143、程序的语言要素总结 1.变量变量(VARIABLE) 在在VHDL中,变量是一个局部量,只能在进程和了程序中使用。中,变量是一个局部量,只能在进程和了程序中使用。变量不能将信息带出对它作出定义的当前设计单元。变量的赋值是一变量不能将信息带出对它作出定义的当前设计单元。变量的赋值是一种理想化的数据传输,是立即发生,不存在任何延时行为。定义变量种理想化的数据传输,是立即发生,不存在任何延时行为。定义变量的语法格式如下:的语法格式如下: VARIABLE 变量名变量名:数据类型数据类型:=初始值初始值; 例如例如: VARIABLE A: INTEGER; -定义定义A为整数型变量为整数型变量 VA

144、RIABLE B,C: INTEGER:=2; -定义定义B和和C为整型为整型变量,初值为变量,初值为2下一页上一页2.4 VHDL程序的语言要素总结程序的语言要素总结2.信号信号(SIGNAL) 信号可看做是硬件连线的一种抽象表示,它既能保持变化的数据,信号可看做是硬件连线的一种抽象表示,它既能保持变化的数据,又可连接各元件作为元件之间数据传输的通路。信号通常在结构体、又可连接各元件作为元件之间数据传输的通路。信号通常在结构体、程序包和实体中说明。信号的语法格式如下:程序包和实体中说明。信号的语法格式如下: SIGNAL 信号名信号名:数据类型数据类型:=初始值初始值 例如:例如: SIGN

145、AL S1:STD_LOGIC:=0; -定义了一个标准的单值信号定义了一个标准的单值信号S1,初始值为低电平,初始值为低电平 信号是一个全局变量,可以用来进行进程之间的通信,在信号是一个全局变量,可以用来进行进程之间的通信,在VHDL语言中对信号赋值一般是按仿真时间来进行的,而且信号值的改变语言中对信号赋值一般是按仿真时间来进行的,而且信号值的改变也需按仿真时间的计划行事。也需按仿真时间的计划行事。下一页上一页2.4 VHDL程序的语言要素总结程序的语言要素总结 3.常量常量(CONSTANT) 常量是一个固定的值。所谓常量说明,就是对某一常数名赋予常量是一个固定的值。所谓常量说明,就是对某

146、一常数名赋予一个固定的值。通常赋值在程序开始前进行,该值的数据类型则在一个固定的值。通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。常量的语法格式如下说明语句中指明。常量的语法格式如下: CONSTANT常量名常量名:数据类型数据类型:=表达式表达式 例如:例如: CONSTANT VCC:REAL:=5.0; 常量定义的语句所允许的设计单元有实体、结构体、程序包、常量定义的语句所允许的设计单元有实体、结构体、程序包、块、进程和子程序。在程序包中定义的常量可以暂时不设具体数值,块、进程和子程序。在程序包中定义的常量可以暂时不设具体数值,它可以在程序包体中设定。它可以在程序包体中设定

147、。下一页上一页2.4 VHDL程序的语言要素总结程序的语言要素总结下一页上一页三、数据类型三、数据类型 在在VHDL语言中,每个客体都有特定的数据类型。为了能够描述语言中,每个客体都有特定的数据类型。为了能够描述各种硬件电路,创建高层次的系统和算法模型,各种硬件电路,创建高层次的系统和算法模型,VHDL具有丰富的数具有丰富的数据类型,除了有很多预定义的数据类型可直接使用外,用户还可自定据类型,除了有很多预定义的数据类型可直接使用外,用户还可自定义数据类型,这给设计人员带来了很大的自由和方便。义数据类型,这给设计人员带来了很大的自由和方便。1.标准的数据类型标准的数据类型 (1)位位(BIT)

148、在数字系统中,信号通常用一个位来表示。位值的表示方法是,在数字系统中,信号通常用一个位来表示。位值的表示方法是,用字符用字符0或或1放在单引号中表示。位和整数中的放在单引号中表示。位和整数中的0和和1不同,不同,0和和1仅仅表示一个位的两种取值。仅仅表示一个位的两种取值。2.4 VHDL程序的语言要素总结程序的语言要素总结下一页上一页 (2)位矢量位矢量(BIT VECTOR) 位矢量是用双引号括起来的一组位数据。例如:位矢量是用双引号括起来的一组位数据。例如:“001100”, H“OOBE”。位矢量前的。位矢量前的H表示是十六进制。表示是十六进制。 (3)布尔量布尔量(BOOLEAN) 布

149、尔数据类型实际上是一个一值枚举型数据类型,它的取值有布尔数据类型实际上是一个一值枚举型数据类型,它的取值有FALSE和和TRUE两种。例如,在两种。例如,在IF语句中,测试结果产生一个布尔量语句中,测试结果产生一个布尔量FALSE或或TRUE,并以此结果控制其他语句的执行与否。如语句,并以此结果控制其他语句的执行与否。如语句“IF clk=1THEN”在信号在信号clk确实为确实为“1”的情况下,表达式的情况下,表达式“clk=1,取值为,取值为TRUE,此时将执行,此时将执行THEN后的语句,否则后的语句,否则THEN后的语句不后的语句不会被执行。会被执行。2.4 VHDL程序的语言要素总结

150、程序的语言要素总结下一页上一页 (4)整数整数(INTEGER) 32位有符号的二进制数。位有符号的二进制数。 (5)实数实数(REAL) 与数学上的实数定义相同,也称为浮点数,与数学上的实数定义相同,也称为浮点数,仅能在仅能在VHDL仿真器中使用。仿真器中使用。 (6)字符字符(CHARACTER)和字符串和字符串(STRING)字符数据类型使用单引字符数据类型使用单引号,字符串使用双引号标明,如:号,字符串使用双引号标明,如:A, abcd。 (7)时间时间(TIME) VHDL中唯一的预定义物理类型是时间。中唯一的预定义物理类型是时间。 (8)错误等级错误等级(SEVERITY LEVE

151、L) 指示指示VHDL在编译、综合、仿真过程中的工作状态,共有四种在编译、综合、仿真过程中的工作状态,共有四种可能的状态:可能的状态:NOTE(注意注意)、WARNING(警告警告)、ERROR(出出错错)、FAILURE(失败失败)。2.4 VHDL程序的语言要素总结程序的语言要素总结下一页上一页 2. IEEE预定义的标准逻辑位与矢量预定义的标准逻辑位与矢量 STD LOGIC在在IEEE库的程序包库的程序包STD_LOGIC 1164中的定义中的定义格式如下:格式如下:TYPE STD_LOGIC IS (U, X, 0, 1 , Z, W, L, H, -) STD_LOGIC_VEC

152、TOR数据类型在数据类型在IEEE库的程序包库的程序包STD_LOGIC_1164中的定义格式如下中的定义格式如下: TYPE STD_LOGIC_VECTOR IS ARRAY (NATURAL RANGE) OF STD_LOGIC; 使用时须加入下面的库语句使用时须加入下面的库语句; LIBRARY IEEE; USE IEEE STD_LOGIC_1164.ALL; 2.4 VHDL程序的语言要素总结程序的语言要素总结下一页上一页 3.自定义数据类型自定义数据类型 (1)枚举类型枚举类型(ENUMERATED) 这是用文字符号代替一组实际的一进制数的特殊数据类型,如这是用文字符号代替一

153、组实际的一进制数的特殊数据类型,如:将将一个星期一个星期WEEK定义为定义为7个状态的枚举数据类型个状态的枚举数据类型: TYPE WEEK IS (sun, mon, tue, sued, thu, fri, sat); (2)整数类型整数类型(INTEGER)和实数类型和实数类型(REAL) 对已作过预定义的数据类型,做取值范围约束,如对已作过预定义的数据类型,做取值范围约束,如: TYPE nat IS INTEGER RANGE 0 TO 255; -定义数定义数nat的取值范围为的取值范围为0255 2.4 VHDL程序的语言要素总结程序的语言要素总结 (3)数组类型数组类型(ARR

154、AY) 可以定义约束型数组和未约束型数组。约束型数组定义格式如下可以定义约束型数组和未约束型数组。约束型数组定义格式如下: TYPE数组名数组名IS ARRAY(数组下标范围数组下标范围)OF数据类型数据类型; 如如: TYPE BIT_VECTOR IS ARRAY ( NATURAL RANGE)OF BIT; VARABLE VA:BIT_VECTOR(1 TO 6) -表示将数组取值范围定在表示将数组取值范围定在1-6其中,符号其中,符号“”是下标范是下标范围待定符号,用到数组类型时,再填入具体的数值范围。围待定符号,用到数组类型时,再填入具体的数值范围。下一页上一页2.4 VHDL程

155、序的语言要素总结程序的语言要素总结 (4)用户自定义类型用户自定义类型 VHDL允许用户自行定义新的数据类型,用户自定义数据类型是允许用户自行定义新的数据类型,用户自定义数据类型是用类型定义语句用类型定义语句TYPE和子类型语句和子类型语句SUBTYPE实现的。子类型定义实现的。子类型定义的一般格式为的一般格式为 SUBTYPE 子类型名子类型名 IS 数据类型名数据类型名范围范围 例如例如: 在在STD LOGIC VECTOR基础上形成的子类型基础上形成的子类型; SUBTYPE iobus IS STD_LOGIC_VECTOR(4 DOWNTO 0) 子类型可以通过对原数据类型指定范围

156、而形成,也可以完全和原子类型可以通过对原数据类型指定范围而形成,也可以完全和原数据类型范围一致。子类型常用于存储器阵列的数组描述的场合。数据类型范围一致。子类型常用于存储器阵列的数组描述的场合。 下一页上一页2.4 VHDL程序的语言要素总结程序的语言要素总结下一页上一页四、运算操作符四、运算操作符 1.算术操作符算术操作符 求和操作符求和操作符;包括加法操作符、减法操作符和并置操作符。符号操包括加法操作符、减法操作符和并置操作符。符号操作符作符;包括包括“+” (正正)和和“一一”(负负)两种操作符。两种操作符。 求积操作符:包括求积操作符:包括*(乘乘)、/(除除)、MOD(取模取模)和和

157、RED(取余取余)四种。四种。 混合操作符:包括乘方混合操作符:包括乘方“*”和取绝对值和取绝对值ABS两种。两种。 移位操作符移位操作符;包括包括SLL(逻辑左移逻辑左移)、SRL(逻辑右移逻辑右移)、SLA(算术算术左移左移)、SRA(算术右移算术右移)、ROL(逻辑循环左移逻辑循环左移)和和ROR(逻辑循环右逻辑循环右移移)6种操作符。种操作符。2.4 VHDL程序的语言要素总结程序的语言要素总结 2.关系操作符关系操作符 VHDL提供了提供了6种关系操作符,其中种关系操作符,其中“=”和和 /=用于数值比较,用于数值比较,“”、“=”和和“New Project Wizard 命令,建

158、命令,建立工程,如立工程,如图图3-17所示。所示。 在在图图3-18界面中单击界面中单击Next按钮。按钮。 在所弹出的在所弹出的图图3-19 New Project Wizard对话框中,填写对话框中,填写Directory, Name, Top-Level Entity等项目。其中第一、第二、第三个文本框分别等项目。其中第一、第二、第三个文本框分别是工程项目目录、项目名称和项目顶层设计实体的名称。是工程项目目录、项目名称和项目顶层设计实体的名称。 单击单击Next按钮,出现添加工程文件的对话框,如按钮,出现添加工程文件的对话框,如图图3-20所示。所示。 若原来己有文件,可选择相应文件,

159、这单直接单击若原来己有文件,可选择相应文件,这单直接单击Next进行下一步,进行下一步,选择选择FPGA器件的型号,如器件的型号,如图图3-21所示。所示。下一页上一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 在在Family下拉框中,根据需要选择一种型号的下拉框中,根据需要选择一种型号的FPGA,比如,比如Cyclone系列系列FPGA。然后在。然后在“Available devices:”中根据需要中根据需要的的FPGA型号选择型号选择FPGA型号,比如型号,比如“EP1C3T144C8”,注意在,注意在Filters一栏中选中一栏中选中“Show Advanced D

160、evices”以显示所有的器件以显示所有的器件型号。再单击型号。再单击Next按钮,出现如按钮,出现如图图3-22所示对话框。所示对话框。 对于弹出的其他对于弹出的其他EDA工具的对话框,由于我们使用工具的对话框,由于我们使用Quartus 的集成环境进行开发,因此不要作任何改动。单击的集成环境进行开发,因此不要作任何改动。单击Next进入工进入工程的信息总概对话框,如程的信息总概对话框,如图图3-23所示。所示。 单击单击Finish按钮就建立了一个空的工程项目。按钮就建立了一个空的工程项目。下一页上一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 (二二)编辑设计图形文件编

161、辑设计图形文件 1.建立原理图文件建立原理图文件 执行执行File = New 命令,弹出新建文件对话框,如命令,弹出新建文件对话框,如图图3-24所示。所示。 如如图图3-25所示,所示,Quartus 支持支持6种设计输入法文件种设计输入法文件: “ AHDL File ”,是,是AHDL文本文件文本文件; “Block Diagram/Schematic File ”,是流程图和原理图文件,简,是流程图和原理图文件,简称原理图文件称原理图文件; “EDIF File ”,是网表文件,是网表文件; “ SOPC Builder System ”,是可编程片上系统的编辑系统,是可编程片上系统

162、的编辑系统; “ Verilog HDL File ”,是,是Verilog HDL文本文件文本文件; “ VHDL File ”,是,是VHDL文本文件。文本文件。下一页上一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 “Block Diagram/Schematic File”,按,按OK即建立一个空的原理即建立一个空的原理图文件。图文件。 执行执行File= Save as命令,把它另存为文件名是命令,把它另存为文件名是“ BiaoJueQi”的原理图文件,文件后缀为的原理图文件,文件后缀为.bdf。将。将“Add file to current project”选项选

163、中,使该文件添加到刚建立的工程中去,如选项选中,使该文件添加到刚建立的工程中去,如图图3-26所示。所示。 2.编辑输入原理图文件编辑输入原理图文件 图形编辑界面如图形编辑界面如图图3-27所示,其右侧的空白处就是原理图的编辑所示,其右侧的空白处就是原理图的编辑区,在这个编辑区输入如区,在这个编辑区输入如图图3-28所示的所示的BiaoJueQi原理图。原理图。 (1)元件的选择与放置元件的选择与放置 在原理图编辑区的一个位置双击鼠标的左键,将弹出在原理图编辑区的一个位置双击鼠标的左键,将弹出Symbol对话对话框,或单击鼠标右键,在弹出的选择对话框中选择框,或单击鼠标右键,在弹出的选择对话框

164、中选择Insert = Symbol下一页上一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能.,也会弹出,也会弹出Symbol对话框。不要选中对话框。不要选中Symbol对话框中对话框中Repeat -insert mode(重复重复-插入模式插入模式)和和insert symbol as block(作为流程图模块插入符号作为流程图模块插入符号)复选框,即采用默认的一次性插复选框,即采用默认的一次性插入作为原理图元件的符号。用单击的方法展开入作为原理图元件的符号。用单击的方法展开Libraries栏中的元栏中的元件库,如件库,如图图3-29所示,其中所示,其中primitiv

165、e s为基本元件库,打开为基本元件库,打开logic子库,单面是常用的与门、或门和非门等门电路。子库,单面是常用的与门、或门和非门等门电路。 在在图图3-30中,选择其中的二输入与门元件中,选择其中的二输入与门元件 and2,然后单击,然后单击OK按钮。按钮。 出现如出现如图图3-31所示的图样。所示的图样。 将该图样移到编辑区合适的地方左击鼠标,就可放置一个二输将该图样移到编辑区合适的地方左击鼠标,就可放置一个二输入与门元件,如入与门元件,如图图3-32所示。所示。下一页上一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 右击与门元件符号,在出现的菜单中选择右击与门元件符号,

166、在出现的菜单中选择Copy命令,如命令,如图图3-33所示。所示。 将鼠标移到编辑区合适的地方右击鼠标,在弹出的菜单中选择将鼠标移到编辑区合适的地方右击鼠标,在弹出的菜单中选择Paste命令,如命令,如图图3-34所示。所示。 就可通过复制就可通过复制-粘贴的方法获得另两个二输入与门元件,如粘贴的方法获得另两个二输入与门元件,如图图3-35所示。所示。 用相似的方法选择放置一个二输入或门元件符号,如用相似的方法选择放置一个二输入或门元件符号,如图图3-36所示所示. 再打开再打开primitives基本元件库的基本元件库的pin子库,如子库,如图图3-37所示。所示。 选择、放置三个输入管脚元

167、件选择、放置三个输入管脚元件input和一个输出管脚元件和一个输出管脚元件output元元件到编辑区内,如件到编辑区内,如图图3-38所示。所示。(2)连接各个元件符号连接各个元件符号 把鼠标移到一个把鼠标移到一个input元件连接处,将会出现元件连接处,将会出现图图3-39所示的图样。所示的图样。下一页上一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 单击鼠标左键,移到要与之相连的与门元件的连接处,松开鼠单击鼠标左键,移到要与之相连的与门元件的连接处,松开鼠标即可连接这两个要连接的元件,如标即可连接这两个要连接的元件,如图图3-40所示。所示。 用同样的方法可按要求连接其他

168、元件。用同样的方法可按要求连接其他元件。 (3)设定各输入输出管脚名设定各输入输出管脚名 将鼠标移到一个将鼠标移到一个input元件上双击,将会弹出如元件上双击,将会弹出如图图3-41所示的管脚所示的管脚属性编辑对话框。在属性编辑对话框。在Pin name文本框中填入管脚名文本框中填入管脚名a。 用相似的方法设定其他管脚名。完成的电路图如用相似的方法设定其他管脚名。完成的电路图如图图3-28所示。所示。 在在Quartus 流程图和原理图文件中,除了使用原理图元件符号外,流程图和原理图文件中,除了使用原理图元件符号外,还可以使用流程图模块,对于初学者可先掌握原理图元件符号的还可以使用流程图模块

169、,对于初学者可先掌握原理图元件符号的使用,以后再探讨流程图模块的使用,这里对流程图模块不做介绍。使用,以后再探讨流程图模块的使用,这里对流程图模块不做介绍。下一页上一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 在流程图和原理图输入法编辑界面中的左边,有供编辑输入时使用在流程图和原理图输入法编辑界面中的左边,有供编辑输入时使用的工具箱,各个工具的功能如的工具箱,各个工具的功能如图图3-42所示。所示。 (三三) 编译设计图形文件编译设计图形文件 完成原理图编辑输入后,保存设计图形文件,就可编译设计图形文件。完成原理图编辑输入后,保存设计图形文件,就可编译设计图形文件。执行执行

170、Processing=Start Compilation,如,如图图3-43所示,进行编译。所示,进行编译。 编编译结束后,会出现如译结束后,会出现如图图3-44所示的对话框,对话框会显示编译的错误和所示的对话框,对话框会显示编译的错误和警告的情况。若有错误,则可先双击编译器界面下方出现的第一个错误警告的情况。若有错误,则可先双击编译器界面下方出现的第一个错误提示,可使第一个错误处改变颜色。检查纠正,第一个错误后保存再编提示,可使第一个错误处改变颜色。检查纠正,第一个错误后保存再编译,如果还有错误,重复以上操作,直至最后通过。最后通过时应没有译,如果还有错误,重复以上操作,直至最后通过。最后通

171、过时应没有错误提示但可有警告提示,如错误提示但可有警告提示,如图图3-44所示。所示。 上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 可以通过查看编译报告了解有关情况,比如定时分析情况,可以通过查看编译报告了解有关情况,比如定时分析情况,图图3-45所示是编译报告中关于每个输出信号对输入信号的延迟时间的报告。所示是编译报告中关于每个输出信号对输入信号的延迟时间的报告。 以上是使用以上是使用Quartus 编译器默认设置进行的编译方法,还可以先编译器默认设置进行的编译方法,还可以先根据需要进行进一步的编译设置,然后再编译,具体方法参考根据需要进行进一步的编译设置,然后

172、再编译,具体方法参考Quartus 帮助文档。帮助文档。 (四四)时序仿真设计文件时序仿真设计文件 1.新建用于仿真的波形文件新建用于仿真的波形文件 如如图图3-46所示,所示,Quartus 可建立和编辑的文件有器件设计文件可建立和编辑的文件有器件设计文件“DeviceDesign File”、其他文件、其他文件“Other File ”两类。器件设计文件两类。器件设计文件“Device Design File”有有6种,以上已做介绍,用于仿真的波形文件则种,以上已做介绍,用于仿真的波形文件则属于其他文件属于其他文件“Other File ”。 上一页下一页3.3 相关技术基本知识与基本技能

173、相关技术基本知识与基本技能 执行执行File=New,如,如图图3-46所示,选择所示,选择“Other Files”标签中的标签中的“Vector WaveformFile ”(波形文件波形文件),然后单击,然后单击“OK”确定。确定。 出现波形文件编辑器,如出现波形文件编辑器,如图图3-47所示。在所示。在图图3-31中鼠标所在处单击中鼠标所在处单击鼠标右键,出现鼠标右键,出现图图3-48所示菜单,选择所示菜单,选择Insert Node or Bus命令。命令。 出现如出现如图图3-49所示的对话框,单击所示的对话框,单击Node Finder按键。按键。 在出现的在出现的图图3-50所

174、示的对话框中单击所示的对话框中单击List按键。按键。 选择需要的输入输出引脚,如选择需要的输入输出引脚,如图图3-51所示。所示。 如如图图3-52所示,单击选中的按键,选中需要的输入输出引脚。所示,单击选中的按键,选中需要的输入输出引脚。 然后,单击两次确定按钮,出现如然后,单击两次确定按钮,出现如图图3-53所示的画面。所示的画面。上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能2.设置仿真时间设置仿真时间 执行执行Edit=End Time命令,设置合适的时间,如命令,设置合适的时间,如图图3-54和和图图3-55所示。所示。 执行执行Edit=Grid Siz

175、e命令,设置时间单位为命令,设置时间单位为100 ns,如,如图图3-56和和图图3-57所示。所示。3.设置输入信号波形设置输入信号波形 单击工具箱中缩放工具按钮,将鼠标移到编辑区内,单击鼠标,调单击工具箱中缩放工具按钮,将鼠标移到编辑区内,单击鼠标,调整波形区横向比例,如整波形区横向比例,如图图3-58所示。所示。 单击工具箱中的选择按钮,然后在要设置波形的区域上按下鼠标左键单击工具箱中的选择按钮,然后在要设置波形的区域上按下鼠标左键并拖动鼠标,选择要设置的区域,如并拖动鼠标,选择要设置的区域,如图图3-59所示。所示。上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技

176、能 单击工具箱中高电平设置按钮,将该区域设置为高电平,如单击工具箱中高电平设置按钮,将该区域设置为高电平,如图图3-60所示。所示。 用相似的方法设置其他区域的波形,如用相似的方法设置其他区域的波形,如图图3-61所示,注意所示,注意图图3-61波形波形与真值表相对应。与真值表相对应。 4.进行功能仿真进行功能仿真 设置输入信号后,保存文件,文件名与原理图名一致。执行设置输入信号后,保存文件,文件名与原理图名一致。执行Processing=Start Simulation命令,进行仿真,如命令,进行仿真,如图图3-62所示。所示。 仿真结果如仿真结果如图图3-63所示所示 认真核对输入输出波形

177、,可检查设计的功能正确与否。认真核对输入输出波形,可检查设计的功能正确与否。上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 (五五)生成元件符号生成元件符号 执行执行File = Great/Update = Great Symbol Files for Current File命令,将本设计电路封装生成一个元件符号命令,将本设计电路封装生成一个元件符号(图图3-64),供以后在原,供以后在原理图编辑器下进行层次设计时调用。理图编辑器下进行层次设计时调用。 所生成的符号所生成的符号(图图3-65)存放在本工程目录下,文件名为存放在本工程目录下,文件名为BiaoJueQ

178、i,文件后缀名为文件后缀名为.bsfo调用方法与调用方法与Quarius 提供的元件符号相似。提供的元件符号相似。二、原理图输入法中的层次化设计二、原理图输入法中的层次化设计 层次化设计也称层次化设计也称“自顶向下自顶向下”设计方法,即将一个大的设计项目分解设计方法,即将一个大的设计项目分解为若干子项目或若十层次来完成。划分是从顶层由高往下,而设计则可为若干子项目或若十层次来完成。划分是从顶层由高往下,而设计则可先设计底层的电路,然后在高层次的设计中,逐级调用低层次的设计结先设计底层的电路,然后在高层次的设计中,逐级调用低层次的设计结果。原理图输入法可很方便地进行层次化设计。果。原理图输入法可

179、很方便地进行层次化设计。 上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 【例【例3.1 用层次化设计设计一个两位二进制数乘法器。用层次化设计设计一个两位二进制数乘法器。 1.系统分析系统分析 两位二进制数相乘,最多可得四位二进制数,其乘法运算如图两位二进制数相乘,最多可得四位二进制数,其乘法运算如图: a0 al X b0 b1 al b0 a0 b0 +al b1 a0 b1 m3 m2 ml m0 其中:其中:m0=a0 b0 ml=al b0+a0 b1 m2=al b1+进位进位c1 m3=进位进位c2 由此可知,系统可分解为两个半加器和几个与门联结而成。由

180、此可知,系统可分解为两个半加器和几个与门联结而成。上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 2.底层电路半加器设计底层电路半加器设计 半加器的真值表见半加器的真值表见表表3-1。 由半加器的真值表可得,半加器的逻辑表达式如下由半加器的真值表可得,半加器的逻辑表达式如下: s=a XOR b c=a AND b 根据半加器的逻辑表达式,可按根据半加器的逻辑表达式,可按图图3-66设计设计hadd.bdf文件。把文件。把hadd.bdf文件存放到文件夹文件存放到文件夹hadd内,并以此文件建立工程,编译通过,内,并以此文件建立工程,编译通过,执行执行File=Gre

181、ate/Update=Greate Symbol Files for Current File命命令,生成符号令,生成符号hadd.bsf。 上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 3.顶层电路两位二进制数乘法器设计顶层电路两位二进制数乘法器设计 根据系统分析所得结论,可按根据系统分析所得结论,可按图图3-67设计两位二进制数乘法器电路。设计两位二进制数乘法器电路。 新建一个工程文件夹新建一个工程文件夹mult2,把,把hadd.bdf, hadd.bsf文件放入其中,文件放入其中,新建一个原理图文件,使用插入符号命令,出现选择符号的界面,选择新建一个原理图文

182、件,使用插入符号命令,出现选择符号的界面,选择hadd.bsf将它放置于原理图编辑区中,以将它放置于原理图编辑区中,以mult2.bdf命名并保存到命名并保存到mult2文件夹中。以此文件新建工程。按文件夹中。以此文件新建工程。按图图3-67调出其他有关元件并按调出其他有关元件并按图连线,保存、编译并通过仿真。图连线,保存、编译并通过仿真。 通过编译仿真,其仿真波形如通过编译仿真,其仿真波形如图图3-68所示。所示。 本例的底层电路符号用原理图设计输入法设计后生成,还可以用以后本例的底层电路符号用原理图设计输入法设计后生成,还可以用以后介绍的文本设计输入法设计后生成,这样的设计方法称混合设计输

183、入法。介绍的文本设计输入法设计后生成,这样的设计方法称混合设计输入法。 上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能三、三、Quartus 器件编程器件编程 使用使用Quartus 软件成功编译工程之后,就可以对软件成功编译工程之后,就可以对Altera器件进行编器件进行编程或配置,进而进行硬件测试。程或配置,进而进行硬件测试。Quartus Compiler的的Assembler模模块生成块生成POF和和SOF编程文件编程文件,Quartus Programmer可以用编程文件可以用编程文件与与Altera编程硬件一起对器件进行编程或配置。还可以使用编程硬件一起对

184、器件进行编程或配置。还可以使用Quartus Programmer的独立版本对器件进行编程可配置。的独立版本对器件进行编程可配置。 (一一)编程硬件与编程模式编程硬件与编程模式 所使用的所使用的Altera编程硬件口可以是编程硬件口可以是MasterBlaster, ByteBlasterMV, ByteBlaster 或或USB-Blaster下载电缆或下载电缆或Altera编程单元编程单元(APU)。国内。国内许多开发板和实验箱使用许多开发板和实验箱使用ByteBlasterMV或或ByteBlaster下载电缆。下载电缆。下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能

185、上一页 Programmer具有四种编程模式具有四种编程模式:被动串行模式被动串行模式(PS Mode), JTAG模模式、主动串行编程模式式、主动串行编程模式(AS Mode)和插座内编程模式和插座内编程模式(In-Socket)。 被动串行和被动串行和JTAG编程模式使用编程模式使用Altera编程硬件对单个或多个器件进编程硬件对单个或多个器件进行编程。主动串行编程模式使用行编程。主动串行编程模式使用Altera编程硬件对单个编程硬件对单个EPCS1或或EPCS4串行配置器件进行编程。插座内编程模式使用串行配置器件进行编程。插座内编程模式使用Altera编程硬件对编程硬件对单个单个CPLD

186、或配置器件进行编程。或配置器件进行编程。 (二二)器件设置和引脚的锁定器件设置和引脚的锁定 如果编程前没有进行器件的选择和引脚的锁定或需要重新进行器件如果编程前没有进行器件的选择和引脚的锁定或需要重新进行器件的选择和引脚的锁定则可按照下列步骤进行。的选择和引脚的锁定则可按照下列步骤进行。 上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能1.器件的选择器件的选择 运行运行Quartus 软件,打开所击编程、配置的电路工程文件,选择菜软件,打开所击编程、配置的电路工程文件,选择菜单单Assignments=Device命令,在弹出的对话框命令,在弹出的对话框(图图3-69)

187、中的中的Category栏内选中栏内选中Device项,在项,在Device标签中选择所使用的器件,例标签中选择所使用的器件,例如使用如使用EPIC3T144C8。 2.选择配置器件的工作方式选择配置器件的工作方式(可不做可不做) 单击单击 图图3-69中的中的Device & Pin Options按钮,在弹出的窗口中选按钮,在弹出的窗口中选择择General标签标签(图图3-70),在,在Options栏内选中栏内选中Auto-restart Configuration after error,可使对器件配置失败后能自动重新配置,可使对器件配置失败后能自动重新配置,并加入并加入JTAG用户

188、编码。用户编码。Auto-restart Configuration after error是是Quartus 默认选择。默认选择。上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 3.选择配置器件选择配置器件(使用使用EPCS器件的主动串行编程模式时器件的主动串行编程模式时) 使用使用EPCS器件的主动串行编程模式中,需要选择配置器件的主动串行编程模式中,需要选择配置EPCS器件。器件。单击单击图图3-70中的中的Configuration标签,在如标签,在如图图3-71所示的所示的Configuration标签中可根据开发板和实验箱中使用的选择标签中可根据开发板和实

189、验箱中使用的选择EPCS器件选择器件选择EPCS器件。器件。在编译前选中在编译前选中Configuration标签中的标签中的Generate compressed bitstreams复选框,编译后就能产生用于复选框,编译后就能产生用于 EPCS的的POF文件。文件。 4.选择闲置引脚的状态选择闲置引脚的状态(可不做可不做) 单击单击图图3-70中的中的Unused Pins标签,可选择目标器件闲置引脚的状态标签,可选择目标器件闲置引脚的状态为输入态为输入态(高阻态,推荐高阻态,推荐)或输出状态或输出状态(低电平低电平)或输出不定状态。默认为或输出不定状态。默认为输出状态输出状态(低电平低电

190、平),如,如图图3-72所示。所示。 上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能5.引脚的锁定引脚的锁定 选择菜单选择菜单Assignments = Pins命令,弹出管脚设置界面,如命令,弹出管脚设置界面,如图图3-73所示。所示。 然后双击管脚所对应的然后双击管脚所对应的Location栏,在出现的如栏,在出现的如图图3-74所示的下拉所示的下拉列表中选择对应端口信号名的器件引脚,如对应列表中选择对应端口信号名的器件引脚,如对应a,选择,选择PIN_3。 对应对应b,选择,选择PIN 2;对应对应c,选择,选择PIN_1;对应对应Y,选择,选择PIN_11,如

191、,如图图3-75所示。所示。 最后单击最后单击“保存保存”按钮,保存引脚锁定信息,再编译一次,把引脚锁按钮,保存引脚锁定信息,再编译一次,把引脚锁定信息编译进编译下载文件中,就可以准备将编译好的定信息编译进编译下载文件中,就可以准备将编译好的SOF文件或者文件或者POF文件下载到文件下载到FPGA器件或者器件或者EPCS器件。器件。上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 (三三) 编程下载设计文件编程下载设计文件 下面只介绍常用的使用下面只介绍常用的使用 ByteBlasterMV或或 ByteBlaster 下载电缆,下载电缆,用用JTAG模式或者主动串行编

192、程模式模式或者主动串行编程模式(AS Mode)编程下载设计文件的方编程下载设计文件的方法。法。 1. JTAG模式编程下载应用模式编程下载应用JTAG模式可用编译好的模式可用编译好的SOF文件直接对文件直接对FP GA器件进行配置。器件进行配置。 (1)硬件连接硬件连接 首先用首先用 ByteBlasterMV 或或 ByteBlaster 下载电缆把开发板或实验下载电缆把开发板或实验箱与箱与Quartus 所安装的计算机并口通信线连接好,打开电源,具体所安装的计算机并口通信线连接好,打开电源,具体方法要参考开发板或实验箱的有关资料。方法要参考开发板或实验箱的有关资料。 (2)打开编程窗口、

193、选择编程模式和配置文件打开编程窗口、选择编程模式和配置文件 上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 选择菜单选择菜单Tool = Programmer命令,弹出以下编程窗口,如命令,弹出以下编程窗口,如图图3-76所示。所示。 在在Mode 栏中选择栏中选择JTAG模式,如模式,如图图3-77所示。所示。 核对下载文件路径和文件名。若不出现或有错,单击左侧核对下载文件路径和文件名。若不出现或有错,单击左侧Add File按钮,手动选择所要下载的文件。选中打勾的下载文件右侧的第一个编按钮,手动选择所要下载的文件。选中打勾的下载文件右侧的第一个编程项目复选框,如程

194、项目复选框,如图图3-78所示。所示。 (3)设置编程器设置编程器(若是初次安装时若是初次安装时) 若是初次安装若是初次安装Quartus且,编程窗口内右上角的地方有且,编程窗口内右上角的地方有No Hardware字样,则必须加入下载方式。在字样,则必须加入下载方式。在图图3-79中单击中单击Hardware Setup按钮,按钮,弹出弹出Hardware Setup对话框,如对话框,如图图3-80所示。所示。上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 在在图图3-80 的的Hardware Setup对话框中,单击对话框中,单击Hardware Setting

195、s标签,再单击此页中的标签,再单击此页中的 Add Hard ware按钮。按钮。 从弹出的从弹出的Add Hard+ are 对话框的对话框的 Hardware type栏中选择栏中选择ByteBlasterMV or BvteBlaster ,然后单击,然后单击OK键,如键,如图图3-81所示。所示。 在在图图3-82的的Hardware栏中会出现栏中会出现ByteBlasterMV或者或者ByteBlaster 字样。究竟显示字样。究竟显示ByteBlasterMV还是还是ByteBlaster 字样,取决于使字样,取决于使用的是用的是ByteBlasterMV还是还是ByteBlast

196、er 下载电缆。选择下载电缆。选择ByteBlasterMV或者或者ByteBlaster ,然后单击,然后单击Close按钮。按钮。 这时编程窗口内右上角的地方会出现这时编程窗口内右上角的地方会出现ByteBlasterM V或者或者ByteBlaster 字样,如字样,如图图3-83所示。所示。 核对下载文件路径和文件名。若不出现或有错,单击左侧核对下载文件路径和文件名。若不出现或有错,单击左侧Add File上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能按钮,手动选择所要下载的文件。选中打勾下载文件右侧的第一个编程按钮,手动选择所要下载的文件。选中打勾下载文件右

197、侧的第一个编程项目复选框,如项目复选框,如图图3-84所示。所示。 (4)配置下载配置下载 最后单击最后单击Start按钮,进行对目标按钮,进行对目标FPGA器件配置下载,如器件配置下载,如图图3-85所所示。下载成功后即可进行设计电路硬件调试。示。下载成功后即可进行设计电路硬件调试。2.主动串行编程模式主动串行编程模式(AS Mode) 为了使为了使FPGA在编程成功以后,再次通电启动仍然保持原有的配置文在编程成功以后,再次通电启动仍然保持原有的配置文件,可将配置文件烧写到专用的配置芯片件,可将配置文件烧写到专用的配置芯片EPCS1或或EPCS4中。主动串中。主动串行编程模式能使用行编程模式

198、能使用ByteBlaster 下载电缆和下载电缆和 POF文件对单个文件对单个EPCS1或或EPCS4串行配置器件进行编程。串行配置器件进行编程。 上一页下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能使用此方式对使用此方式对EPCS器件编程下载时,在以上器件设置和引脚的锁定的器件编程下载时,在以上器件设置和引脚的锁定的步骤中应进行选择配置器件,根据开发板或实验箱的情况选择步骤中应进行选择配置器件,根据开发板或实验箱的情况选择EPCS1或或EPCS4器件。器件。 (1)硬件连接硬件连接 对单个对单个EPCSx配置器件进行编程时必须使用配置器件进行编程时必须使用ByteBlas

199、ter 下载电缆。下载电缆。将将ByteBlaster且下载电缆把开发板或实验箱与且下载电缆把开发板或实验箱与Quartus 所安装的计所安装的计算机并日通信线连接好,打开电源,具体方法可参考开发板或实验箱的算机并日通信线连接好,打开电源,具体方法可参考开发板或实验箱的有关资料。有关资料。 (2)打开编程窗口用与打开编程窗口用与JTAG模式编程下载相似的方式打开编程窗口。模式编程下载相似的方式打开编程窗口。 (3)选择编程模式和配置文件选择编程模式和配置文件 在在图图3-86所示窗日的所示窗日的Mode栏,选择栏,选择Active Serial Programming编编程模式。程模式。上一页

200、下一页3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 打开编程文件,选择打开编程文件,选择POF文件,并打勾选中第一、第一和第二个编文件,并打勾选中第一、第一和第二个编程项目复选框,如程项目复选框,如图图3-87所示。所示。 (4)设置编程器设置编程器(若是初次安装时若是初次安装时)用与用与JTAG模式编程下载相似的方式设置编程器,但注意此处使用的是模式编程下载相似的方式设置编程器,但注意此处使用的是BvteBlaster 下载电缆。下载电缆。 (5)编程下载编程下载 最后单击最后单击Start按钮,进行对目标按钮,进行对目标EPCSx器件编程下载。使用这种器件编程下载。使用这种

201、方式编程成功以后,再次通电启动仍然保持原有的配置文件,如方式编程成功以后,再次通电启动仍然保持原有的配置文件,如图图3-88所示。所示。 (四四)设计电路硬件调试设计电路硬件调试 下载成功后即可进行设计电路硬件调试。下载成功后即可进行设计电路硬件调试。上一页返 回3.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 3.4 本章小结本章小结返 回图图3-1 八位二进制加法器的设计方案八位二进制加法器的设计方案返 回图图3-2 半加器原理图型半加器原理图型返 回图图3-3 半加器符号半加器符号返 回 图图3-4 全加器原理图全加器原理图返 回 图图3-5 全加器符号全加器符号 返 回 图

202、图3-6 八位二进制加法器原理图八位二进制加法器原理图返 回 图图3-7 半加器的仿真波形图半加器的仿真波形图返 回 图图3-8 全加器的仿真波形图全加器的仿真波形图返 回 图图3-9 八位二进制加法器的仿真波形图八位二进制加法器的仿真波形图返 回 图图3-10 串行进位八位二进制串行进位八位二进制 加法器延时情况图加法器延时情况图返 回 图图3-11 四位超前进位并行加法器逻辑图四位超前进位并行加法器逻辑图返 回 图图3-12 四位二进制并行加法器原理图四位二进制并行加法器原理图返 回图图3-13 四位二进制并行加法器仿真波形图四位二进制并行加法器仿真波形图返 回 图图3-14 八位二进制加

203、法器原理图八位二进制加法器原理图返 回 图图3-1 八位二进制加法器的设计方案八位二进制加法器的设计方案返 回 图图3-15 八位二进制加法器仿真波形图八位二进制加法器仿真波形图返 回 图图3-16 八位二进制加法器的延时图八位二进制加法器的延时图返 回图图3-17 执行执行 New Project Wizard 命令命令返 回图图3-18 New Project Wizard 对话框对话框返 回 图图3-19 工程项目基本设置工程项目基本设置返 回 图图3-20 添加工程文件的对话框添加工程文件的对话框返 回 图图3-21 选择选择FPGA器件器件返 回 图图3-22 选择其他选择其他 ED

204、A 工具工具返 回 图图3-23 信息总概对话框信息总概对话框返 回 图图3-24 执行执行File=New命令命令返 回 图图3-25 新建文件对话框新建文件对话框返 回 图图3-26 将文件添加到工程中将文件添加到工程中返 回 图图3-27 图形编辑界面图形编辑界面返 回 图图3-28 BiaoJueQi 的原理图的原理图返 回 图图3-29 Symbol 对话框对话框返 回 图图3-30 选择选择 and2 元件元件返 回 图图3-31 放置元件时的鼠标放置元件时的鼠标返 回 图图3-32 放置元件后放置元件后返 回 图图3-33 复制元件符合复制元件符合返 回 图图3-34 粘贴元件粘

205、贴元件返 回 图图3-35 粘贴元件粘贴元件返 回 图图3-36 放置元件放置元件返 回 图图3-37 选择、放置选择、放置input元件元件返 回 图图3-38 选择、放置选择、放置input、output元件元件返 回 图图3-39 连接元件时的鼠标连接元件时的鼠标返 回 图图3-40 连接元件连接元件返 回 图图3-41 管脚属性编辑对话框管脚属性编辑对话框返 回 图图3-28 BiaoJueQi 的原理图的原理图返 回 图图3-42 流程图和原理图输入法流程图和原理图输入法 编辑界而中的工具箱编辑界而中的工具箱返 回 图图3-43 Start Compilation返 回 图图3-44

206、 编译通过编译通过返 回 图图3-45 输出信号对输入信号的输出信号对输入信号的 延迟时间的报告延迟时间的报告返 回 图图3-46 选择选择 Vector Waveform File返 回 图图3-46 选择选择 Vector Waveform File返 回 图图3-47 单击鼠标右键单击鼠标右键返 回 图图3-31 放置元件时的鼠标放置元件时的鼠标返 回图图3-48 选择选择Insert Node or Bus 命令命令返 回 图图3-49 单击单击Node Finder按键按键返 回 图图3-50 单击单击List按键按键返 回 图图3-51 选择需要的输入输出引脚选择需要的输入输出引脚

207、返 回 图图3-52 选中需要的输入输出引脚选中需要的输入输出引脚返 回 图图3-53 波形编辑界面波形编辑界面返 回 图图3-54 执行执行Edit=End Time命令命令返 回 图图3-55 设置时间设置时间返 回 图图3-56 执行执行Edit=Grid Size命令命令返 回 图图3-57 设置时间单位设置时间单位返 回 图图3-58 调整波形区横向比例调整波形区横向比例返 回 图图3-59 选择要设置的区域选择要设置的区域返 回 图图3-60 将该区域设置为高电平将该区域设置为高电平返 回 图图3-61 设置后的波形设置后的波形返 回 图图3-62 Start Simulation

208、返 回 图图3-63 仿真结果仿真结果返 回 图图3-64 生成元件符合生成元件符合返 回 图图3-65 BiaoJueQi元件符合元件符合返 回 表表3-1 半加器电路真值表半加器电路真值表返 回absc0000011010101101 图图3-66 半加器原理图半加器原理图返 回 图图3-67 顶层电路顶层电路返 回 图图3-68 例例3.1 仿真波形仿真波形返 回 图图3-69 配置对话框配置对话框返 回 图图3-70 General 标签标签返 回 图图3-71 选择配置器件选择配置器件返 回 图图3-70 General 标签标签返 回 图图3-72 闲置引脚设置闲置引脚设置返 回

209、图图3-73 选中选中 Pins 项项返 回 图图3-74 选择器件引脚选择器件引脚返 回 图图3-75 完成选择器件引脚完成选择器件引脚返 回 图图3-76 编程窗口编程窗口返 回 图图3-77 Mode选择选择返 回 图图3-78 打勾第一个编程项目复选框打勾第一个编程项目复选框返 回 图图3-79 单击单击 Hardware Setup按钮按钮返 回 图图3-80 单击单击Add Hardware按钮按钮返 回 图图3-80 单击单击Add Hardware按钮按钮返 回 图图3-81 选择选择ByteBlasterMV or ByteBlaster返 回 图图3-82 选择下载电缆类型

210、选择下载电缆类型返 回 图图3-83 选择下载电缆后选择下载电缆后返 回 图图3-84 打勾第一个编程项目复选框打勾第一个编程项目复选框返 回 图图3-85 FPGA器件配置下载器件配置下载返 回 图图3-86 选择选择 Active Serial Programming 编程模式编程模式返 回 图图3-87 打勾选中第一、第二和打勾选中第一、第二和 第三个编程项目复选框第三个编程项目复选框返 回 图图3-88 EPCSx器件编程下载器件编程下载返 回 【要求】【要求】 应用应用VHDL语言设计八位二进制加法器语言设计八位二进制加法器 【知识点】【知识点】l 应用应用VHDL语言设计八位二进制

211、加法器语言设计八位二进制加法器l 掌握掌握VHDL语言输入法语言输入法l 掌握掌握VHDL语言层次化设计方法语言层次化设计方法 【重点和难点】【重点和难点】 应用应用VHDL语言设计八位二进制加法器语言设计八位二进制加法器下一页第第4章章 应用应用VHDL语言方法设计语言方法设计 八位二进制加法器八位二进制加法器第第4章章 应用应用VHDL语言方法设计语言方法设计 八位二进制加法器八位二进制加法器4.1 工作任务的陈述与背景工作任务的陈述与背景4.2 完成工作任务的引导完成工作任务的引导4.3 相关技术基本知识与基本技能相关技术基本知识与基本技能4.3 本章小结本章小结上一页一、任务的陈述一、

212、任务的陈述 用用VHDL语言设计出一个八位二进制加法器,并通过编译及时序仿语言设计出一个八位二进制加法器,并通过编译及时序仿真,检查设计结果。真,检查设计结果。二、任务的背景二、任务的背景 加法器是常见的基本逻辑模块,它可作为一些数字系统的运算模块,加法器是常见的基本逻辑模块,它可作为一些数字系统的运算模块,还可作为许多算法,比如乘法、减法、除法或还可作为许多算法,比如乘法、减法、除法或FFT运算的组成部分。运算的组成部分。第第3章己经引导大家运用原理图输入法设计八位二进制加法器,本章章己经引导大家运用原理图输入法设计八位二进制加法器,本章再引导大家运用再引导大家运用VHDL语言输入法设计八位

213、二进制加法器。语言输入法设计八位二进制加法器。4.1 工作任务的陈述与背景工作任务的陈述与背景返 回下一页4.2 完成工作任务的引导完成工作任务的引导一、资讯一、资讯 要完成应用要完成应用VHDL语言设计出一个八位二进制加法器,请大家语言设计出一个八位二进制加法器,请大家认真阅读认真阅读4.3节所介绍的基本内容,并复习节所介绍的基本内容,并复习3.2节的有关介绍。节的有关介绍。二、计划二、计划 类似类似3.2节中提出有节中提出有3种应用原理图设计输入法实现八位二进制种应用原理图设计输入法实现八位二进制加法器的方案,应用加法器的方案,应用VHDL语言设计八位二进制加法器也有多种方语言设计八位二进

214、制加法器也有多种方案。案。 第一种方案第一种方案:以以8个全加器为底层模块,用个全加器为底层模块,用VHDL语言层次设计语言层次设计法设计八位二进制加法器。法设计八位二进制加法器。 第二种方案第二种方案:运用在程序包运用在程序包ieee.std_logic_signed中定义中定义的标准逻辑位矢量的加法来设计八位二进制加法器。的标准逻辑位矢量的加法来设计八位二进制加法器。 下一页上一页 第三种方案第三种方案:应用应用VHDL语言设计法中的语言设计法中的LPM方法来设计八位方法来设计八位二进制加法器。二进制加法器。三、决策三、决策 第一种方案与第第一种方案与第3章的第一种方案相似,其实这种方案不

215、是设计章的第一种方案相似,其实这种方案不是设计上最简单的方案,也不是性能最好的方案。但它所应用的层次设计上最简单的方案,也不是性能最好的方案。但它所应用的层次设计法是法是VHDL语言设计中重要的一种方法,建议大家应用这种方法做语言设计中重要的一种方法,建议大家应用这种方法做一次。一次。 第二种方案在设计上最简单,在加法器的位数不太大时性能也不第二种方案在设计上最简单,在加法器的位数不太大时性能也不错,这是因为,错,这是因为,Quartus开发平台会自动使用多个具有快速进位开发平台会自动使用多个具有快速进位选择功能进位链的动态算术模式的选择功能进位链的动态算术模式的LE来构造二进制加法器。这是值

216、来构造二进制加法器。这是值得推荐的方法,建议大家也应用这种方法做一次。得推荐的方法,建议大家也应用这种方法做一次。4.2 完成工作任务的引导完成工作任务的引导下一页上一页 第三种方案在设计上不是很简单,但性能好,在加法器的位数比第三种方案在设计上不是很简单,但性能好,在加法器的位数比较大时应采用此法。可在学习第较大时应采用此法。可在学习第5章时再做练习。章时再做练习。四、实施四、实施 在应用第一种方案设计时,请参考下一节例在应用第一种方案设计时,请参考下一节例4.1或例或例4.2。先设计。先设计底层模块全加器,再在顶层文件中调用全加器元件,构成八位二进制底层模块全加器,再在顶层文件中调用全加器

217、元件,构成八位二进制加法器。在应用第一种方案设计时,请参考下一节例加法器。在应用第一种方案设计时,请参考下一节例4.3。五、检查五、检查 对所设计的八位二进制加法器的各个底层模块和顶层模块进行编译对所设计的八位二进制加法器的各个底层模块和顶层模块进行编译仿真,以验证所设计电路否符合设计的要求。仿真,以验证所设计电路否符合设计的要求。4.2 完成工作任务的引导完成工作任务的引导六、评估六、评估 应用第一种方案设计八位二进制加法器在编译后,可以看到它的延应用第一种方案设计八位二进制加法器在编译后,可以看到它的延时情况,如时情况,如图图4-1所示。所示。 第一种设计方案占用资源的情况如第一种设计方案

218、占用资源的情况如图图4-2所示。所示。 应用第一种方案设计八位二进制加法器在编译后,可以看到它的延应用第一种方案设计八位二进制加法器在编译后,可以看到它的延时情况,如时情况,如图图4-3所示。所示。 第一种设计方案占用资源的情况如第一种设计方案占用资源的情况如图图4-4所示。所示。 所以,无论从输出信号对输入信号的延迟时间或占用资源的情况所以,无论从输出信号对输入信号的延迟时间或占用资源的情况来看,第一种方案性能都好一些。来看,第一种方案性能都好一些。返 回上一页4.2 完成工作任务的引导完成工作任务的引导 一、一、 Quartus II的的VHDL输入法输入法 Quartus II 的常用输

219、入法有原理图输入法和的常用输入法有原理图输入法和 HDL 输入法。输入法。HDL 输入法又有输入法又有AHDL, VHDL和和Verilog HDL三种语言,本书三种语言,本书 主要介绍主要介绍VHDL语言。下面以全加器设计为例介绍语言。下面以全加器设计为例介绍 Quartus II 的的VHDL文件的输入编辑和编译仿真方法。文件的输入编辑和编译仿真方法。 (一一)输人编辑输人编辑VHDL文件文件 1.建立工程项目建立工程项目 打开打开 Quartus II 软件,执行软件,执行File = New Project Wizard命令,建立工程,如命令,建立工程,如图图4-5所示。所示。 执行该

220、命令后,在所弹出的执行该命令后,在所弹出的图图4-6界面中单击界面中单击Next按钮。按钮。下一页4.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 然后,在弹出的指定工程名称对话框中,填写第一、第一和第二个然后,在弹出的指定工程名称对话框中,填写第一、第一和第二个文本框的内容,如文本框的内容,如图图4-7所示,其中第一、第一和第二个文本框分别是所示,其中第一、第一和第二个文本框分别是工程项目口录、工程项目和工程项目顶层设计实体的名称。工程项目口录、工程项目和工程项目顶层设计实体的名称。单击单击Next按钮,出现如按钮,出现如图图4-8所示的添加工程文件对话框。所示的添加工程文件对话

221、框。 这单没有文件击添加,单击这单没有文件击添加,单击Next按钮进行下一步,选择按钮进行下一步,选择FP GA器件器件的型号,如的型号,如图图4-9所示。所示。 单击单击Family下拉框,根据需要选择器件的系列,比如下拉框,根据需要选择器件的系列,比如Cyclone系系列列FPGA 。然后在。然后在“Available devices:”中选择需要的器件的型号,中选择需要的器件的型号,比如比如“EP1C3T144C8”,注意在,注意在Show in Available devices list一栏中选上一栏中选上“Show Advanced Devices”以显以显示所有的器件型号。单击示

222、所有的器件型号。单击Next按钮,出现如按钮,出现如图图4-10所示的对话框。所示的对话框。下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 对于弹出的选择其他对于弹出的选择其他EDA工具的对话框,由于我们使用工具的对话框,由于我们使用Quartus且的集成环境进行开发,因此不需做任何改动。单击且的集成环境进行开发,因此不需做任何改动。单击Next按钮进入如按钮进入如图图4-11所示工程的信息总概对话框。所示工程的信息总概对话框。 在图在图4-11中单击中单击Finish按钮就建立了一个空的工程项目。按钮就建立了一个空的工程项目。 2.建立建立VHDL文件文

223、件 如如图图4-12所示,执行所示,执行File=New命令,弹出如命令,弹出如图图4-13所示的所示的新建文件对话框。新建文件对话框。 在新建文件对话框中选择在新建文件对话框中选择“VHDL File”,单击,单击OK按钮即建立一个按钮即建立一个空的文件。执行空的文件。执行File=SaVe as命令,把它另存为文件名是命令,把它另存为文件名是fulladd 的的 VHDL文件,文件后缀为文件,文件后缀为.vhd。4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 将将“Add file to current project”选项选上,使该文件添选项选上,使该文件添加到刚建立工程中

224、去,如加到刚建立工程中去,如图图4-14所示。所示。3.编辑编辑VHDL文件文件 在在VHDL编辑器下输入编辑下面源代码,并保存,如编辑器下输入编辑下面源代码,并保存,如图图4-15所示。所示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ signed.all;entity fulladd isport( cin : in std_ logic;-来自低位的进位来自低位的进位 a,b : in std_ogic; -加数及被加数加数及被加数 下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 s

225、: out std_ logic;-本位和本位和 cout : out std_logic -向高位的进位向高位的进位 );End; architecture one of fulladd is signal crlt: std_logic_vector(1 downto 0);begin crlt=(0&a)+(0&b)+cin; s=crlt(0); cout=crlt(1);end;下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能(二二)编译仿真编译仿真VHDL文件文件 1.编译编译VHDL文件文件 执行执行Processing=Start Compilation

226、命令,如命令,如图图4-16所示,所示,进行编译。进行编译。 若通过,则弹出如若通过,则弹出如图图4-17所示对话框。所示对话框。 若不通过,先双击第一个错误提示,可使鼠标出现在第一个错误处若不通过,先双击第一个错误提示,可使鼠标出现在第一个错误处附近,检查纠正,第一个错误后保存再编译,如果还有错误,重复以附近,检查纠正,第一个错误后保存再编译,如果还有错误,重复以上操作,直至最后通过。上操作,直至最后通过。 2.仿真仿真VHDL文件文件 执行执行File=New,如,如图图4-18所示,选择所示,选择Other Files中的中的Vector Waveform File ,然后确定。,然后确

227、定。下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 出现文件编辑器,如出现文件编辑器,如图图4-19所示。所示。 在在图图4-19中鼠标所在处单击鼠标右键,出现中鼠标所在处单击鼠标右键,出现图图4-20所示菜单,选所示菜单,选择择InsertNode or Bus命令。命令。 出现出现图图4-21所示的对话框,单击所示的对话框,单击Node Finder按键。按键。 在出现的在出现的图图4-22所示的对话框中单击所示的对话框中单击List按键。此操作是在对话按键。此操作是在对话框中框中Filter: 文本框显示文本框显示Pins:all的情况下进行的;若此文本框不显示

228、的情况下进行的;若此文本框不显示Pins:all,请选择,请选择Pins:all项。项。 选择需要的输入输出引脚,如选择需要的输入输出引脚,如图图4-23所示。所示。 如如图图4-24所示,单击鼠标所点的按键,选中需要的输入输出引脚。所示,单击鼠标所点的按键,选中需要的输入输出引脚。 下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 然后,两次确定,出现如然后,两次确定,出现如图图4-25所示的画面。所示的画面。 执行执行Edit=End Time命令,设置合适的时问,如命令,设置合适的时问,如图图4-26所示。所示。 执行执行Edit=Grid Size命令,设置时问

229、单位为命令,设置时问单位为100ns,如,如图图4-27所示。所示。 设置输入信号波形,保存文件,注意保存的波形文件名与工程的顶层设置输入信号波形,保存文件,注意保存的波形文件名与工程的顶层实体名要一致。执行实体名要一致。执行Processing=Start Simulation命令,进行命令,进行仿真,如仿真,如图图4-28所示。所示。 仿真结果如仿真结果如图图4-29所示。所示。 认真核对输入输出波形,可检查设计的功能正确与否。认真核对输入输出波形,可检查设计的功能正确与否。 下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能二、二、VHDL层次化文件设计层次化文件设

230、计 VHDL层次化文件设计,就是将一个复杂的电路划分为若十模块,层次化文件设计,就是将一个复杂的电路划分为若十模块,再把较大的模块划分为较示的模块,先编写再把较大的模块划分为较示的模块,先编写VHDL设计文件分别描写每设计文件分别描写每个较示的模块,再编写个较示的模块,再编写VHDL设计文件描写较大的电路模块,最后编写设计文件描写较大的电路模块,最后编写顶层文件来描写整体电路。顶层文件把各个模块文件作为元件调用,而顶层文件来描写整体电路。顶层文件把各个模块文件作为元件调用,而较大的模块文件把较示的模块的文件作为元件调用。下面以四位二进制较大的模块文件把较示的模块的文件作为元件调用。下面以四位二

231、进制加法器为例说明加法器为例说明VHDL层次化文件设计方法。层次化文件设计方法。 当然,对于四位二进制加法器而言,此法并非最好的描写方法,但当然,对于四位二进制加法器而言,此法并非最好的描写方法,但对于学习对于学习VHDL层次化文件设计来说,这是一个简单的能说明问题的例层次化文件设计来说,这是一个简单的能说明问题的例子。子。下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 【例【例4.1】用】用VHDL层次化文件设计法设计一个四位二进制加法层次化文件设计法设计一个四位二进制加法器。器。 (1)电路模块划分电路模块划分 根据算法分析,四位二进制加法器可由根据算法分析,四位

232、二进制加法器可由4个全加器构成,其原理个全加器构成,其原理方框图如方框图如图图4-30所示。所示。 (2)设计底层设计文件设计底层设计文件 设计全加器电路文件设计全加器电路文件 fulladd.vhd:下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ signed.all;entity fulladd isport( cin : in std_logic; -来自低位的进位信号来自低位的进位信号 a,b : in std_logi; -加数及被加数加数

233、及被加数 s : out std_ logic; -本位和本位和 cout: out std logic); -向高位的进位信号向高位的进位信号End; 下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能architecture one of fulladd is signal crlt:std_logic_vector(1 downto 0);begin crlt=(0&a)+(0&b)+cin; s=crlt(0); cout=crlt(1);End;(3)设计顶层设计文件设计顶层设计文件 设计顶层设计文件设计顶层设计文件add4.vhd,其中把全加器文件作为元件调用

234、,其中把全加器文件作为元件调用:下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能library ieee;use ieee.std_logic_1164.all;entity add4 is port( cin : in std_logic; a : in std_logic_vector(3 downto 0); b : in std_logic_vector(3 downto 0); s : out std_logic_vector(3 downto 0); cout : out std_logic );end add4;下一页上一页4.3 相关技术基础知识与基本技

235、能相关技术基础知识与基本技能architecture b of add4 issignal ct:std_logic_vector(6 downto 0);component fulladd is port(cin:in std_logic; a,b: in std_logic; s:out std_logic; cout:out std_logic);end component;begin下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 u0: fulladd port map(cin,a(0),b(0),s(0),ct(0); ul: fulladd p

236、ort map(ct(0),a(1),b(1),s(1),ct(1); u2: fulladd port map(ct(1),a(2),b(2),s(2),ct(2); u3: fulladd port map(ct(2),a(3),b(3),s(3),cout);end b; 在上面的例了中先编写了在上面的例了中先编写了 fulladd.vhd 和和add4.vhd两个两个VHDL文件,分别描写全加器和四位二进制加法器。其中在文件,分别描写全加器和四位二进制加法器。其中在add4.vhd文件的结构体说明部分声明了以文件的结构体说明部分声明了以 fulladd.vhd 文件为基文件为基础的础的

237、 fulladd 元件。在结构体中通过四个元件例化语句进行例化,元件。在结构体中通过四个元件例化语句进行例化,实例化后的元件是实例化后的元件是u0, u1, u2和和u3,按照四位二进制加法器原理方,按照四位二进制加法器原理方框图相连。框图相连。4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 元件例化语句是并行语句,它们在结构体内出现的顺序并不重要,元件例化语句是并行语句,它们在结构体内出现的顺序并不重要,另外,元件可多次被实例化,但每次例化必须有唯一的例化名,即上另外,元件可多次被实例化,但每次例化必须有唯一的例化名,即上例元件例化语句前的例元件例化语句前的u0,

238、u1等元件声明语句等元件声明语句(COMPONET)格式如下格式如下: COMPONET元件名元件名IS GENERIC(类属表类属表); -类属参数声明类属参数声明 PORT(端口表端口表); -端口声明端口声明 - 与该元件源程序实体中相应部分相同与该元件源程序实体中相应部分相同 END COMPONET 元件元件; 元件例化语句元件例化语句( PORT MAP)格式如下格式如下: 4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 例化名例化名: 元件名元件名 PORT MAP (端口名端口名= 连接端口名,连接端口名,); 例化名在同一个结构体中必须是唯一的,元件

239、名必须与例化名在同一个结构体中必须是唯一的,元件名必须与COMPONET语句中的引用元件名相一致。元件端口名与实例连接端口语句中的引用元件名相一致。元件端口名与实例连接端口名的关联方式有两种名的关联方式有两种: 位置关联位置关联: 即被调用的元件端口说明中端口信号的书写顺序及位置即被调用的元件端口说明中端口信号的书写顺序及位置和和PORT MAP语句中实例实际端口信号的书写顺序及位置一一对应。语句中实例实际端口信号的书写顺序及位置一一对应。 例如,若元件例如,若元件 and_gate的端口说明为的端口说明为: PORT (a,b:IN BIT; c:OUT BIT); 调用该元件时可一使用调用

240、该元件时可一使用: u0: and_gate PORT MAP (t1 ,in2, t3); 显然显然t1对应对应a, in2对应对应b,t3对应对应c, u0是例化是例化名,名,and_gate是元件名。是元件名。 4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 名字关联名字关联:即用被调用的元件的端口名称赋予实例实际端口信号。即用被调用的元件的端口名称赋予实例实际端口信号。 例如,上例可改为例如,上例可改为u0: and gate PORT MAP ( a=tl, b=in2, c=t3); 在一个元件例化语句中不同的端口可使用不同的关联方式。在一个元件例化语句中

241、不同的端口可使用不同的关联方式。 元件例化语句为元件例化语句为VHDL提供了一种自上而下的设计方法,在提供了一种自上而下的设计方法,在VHDL设计中经常使用。设计中经常使用。 (4)编译顶层设计文件编译顶层设计文件 如果比较有把握,可以把以上两个模块的如果比较有把握,可以把以上两个模块的VHDL设计文件放入同设计文件放入同一个文件夹中,以顶层文件建立工程,直接编译顶层文件同时也就编一个文件夹中,以顶层文件建立工程,直接编译顶层文件同时也就编译了底层模块文件。译了底层模块文件。4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 若有错误,则加以纠正,直到通过为止。若某个底层

242、模块较大,若有错误,则加以纠正,直到通过为止。若某个底层模块较大,不是很有把握,可先对此模块文件单独建立工程加以编译甚至仿真,不是很有把握,可先对此模块文件单独建立工程加以编译甚至仿真,直到验证仿真,确后,再把这个模块文件移到整个电路的工程文件夹直到验证仿真,确后,再把这个模块文件移到整个电路的工程文件夹中,进行顶层文件编译。中,进行顶层文件编译。 (5)仿真顶层设计文件仿真顶层设计文件 最后,仿真顶层文件,若发现功能错误,应检查其原因,并加以最后,仿真顶层文件,若发现功能错误,应检查其原因,并加以纠正。其仿真波形如纠正。其仿真波形如图图4-31所示。所示。 4.3 相关技术基础知识与基本技能

243、相关技术基础知识与基本技能下一页上一页 【例【例4.2 用用VHDL层次化文件设计法设计一个四位二进制加法器的层次化文件设计法设计一个四位二进制加法器的另一种方法。另一种方法。 (1)设计底层设计文件设计底层设计文件 设计全加器电路文件设计全加器电路文件fulladd.vhd同上例。同上例。 (2)设计顶层设计文件设计顶层设计文件 设计顶层设计文件设计顶层设计文件add4.vhd,其中把全加器文件作为元件调用,其中把全加器文件作为元件调用:library ieee;use ieee.std_logic_1164.all;entity add4 is GENERIC ( n : integer:

244、一一4); -类属参数声明类属参数声明 port(cin:in std_ logic; 4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 a: in std_ logic_vector(n-1 downto 0); b: in std_ logic_vector(n-1 downto 0); s :out std_ logic_vector(n-1 downto 0); cout : out std_ logic);end add4;architecture b of add4 is signal ct: std_logic_vector(n downto 0);component

245、 fulladd is port(cin: in std_logic;下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 a,b: in std_logic; s: out std_logic cout: out std_logic);end component;beginct(0)=cin;cout=ct(n);G1:for i in 0 to n-1 generate l1:fulladd port map (ct(i),a(i),b(i),s(i),ct(i+1);end generate Gl;end b;下一页上一页4.3 相关技术基础知识与基本技能相关技术基础

246、知识与基本技能下一页上一页 以上以上add4.vhd文件中,出现的文件中,出现的for generate语句称语句称FOR生成生成语句,它用来产生语句,它用来产生4个根据四位二进制加法器原理图相连的全加器。在个根据四位二进制加法器原理图相连的全加器。在需要复制并行语句时,可使用并行的生成语句。需要复制并行语句时,可使用并行的生成语句。FOR生成语句格式如生成语句格式如下下: 标号标号FOR循环变量循环变量IN取值范围取值范围GENERATE 块声明块声明; BEGIN 并行语句并行语句; END GENERATE标号标号;4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 (3)编译

247、顶层设计文件编译顶层设计文件 如果比较有把握,可以把以上两个模块的如果比较有把握,可以把以上两个模块的VHDL设计文件放入同设计文件放入同一个文件夹中,以顶层文件建立工程,直接编译顶层文件同时也就编一个文件夹中,以顶层文件建立工程,直接编译顶层文件同时也就编译了底层模块文件。若有错误,则加以纠正,直到通过为止。译了底层模块文件。若有错误,则加以纠正,直到通过为止。 执行执行Tools=RTL Viewer命令,打开命令,打开RTL电路观察器可看到此电路观察器可看到此电路的电路的RTL原理图如原理图如图图4-32所示,可见此电路是四位二进制加法器。所示,可见此电路是四位二进制加法器。三、标准逻辑

248、位矢量加法的应用三、标准逻辑位矢量加法的应用 例例4.3分析以下代码。分析以下代码。 library ieee use ieee.std_logic_1164.all; use ieee.std_logic_ signed.all; 下一页上一页4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 entity add4 is port( cin : in std_ logic;-低位的进位信号低位的进位信号 a,b : in std_logic _vector(3 downto 0);-加数及加数及 被加数被加数 s: out std_logic_vector(3 dow

249、nto 0); -和和 coot: out std_logic); -高位的进位信号高位的进位信号 end; architecture one of add4 is signal crlt: std_logic_vector(4 downto 0); begin4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 crlt=(0&a)+(0&b)+cin; s=crlt(3 downto 0); cout=crlt(4); end; 例例4.3是应用在程序包是应用在程序包ieee.std_logic_signed中定义的标准逻中定义的标准逻辑位矢量的加法设计的四位二进制加法

250、器。在使用辑位矢量的加法设计的四位二进制加法器。在使用Altera公司的公司的FPGA例如例如cyclone系列的系列的FPGA来实现标准逻辑位矢量的加法电路来实现标准逻辑位矢量的加法电路时,时,Quartus开发平台会自动用多个动态算术模式的开发平台会自动用多个动态算术模式的LE来构造二来构造二进制加法器。动态算术模式的进制加法器。动态算术模式的LE具有能提供快速进位选择功能的进位具有能提供快速进位选择功能的进位链,通过多余的进位计算方式来提高进位的速度。链,通过多余的进位计算方式来提高进位的速度。4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能返 回上一页 因此,用此方法设计的

251、二进制加法器,在位数不是太大时,其性能因此,用此方法设计的二进制加法器,在位数不是太大时,其性能较好。执行较好。执行Tools =Netlist Viewers=Technology Map Viewer命令命令(图图4-33),可观察到四位二进制加法器由底层动态算术,可观察到四位二进制加法器由底层动态算术模式模式LE构造的原理图,如构造的原理图,如图图4-34所示。所示。4.3 相关技术基础知识与基本技能相关技术基础知识与基本技能返 回4.4 本章小结本章小结图图4-1 第一种方案的输出信号对第一种方案的输出信号对 输入信号的延迟时间输入信号的延迟时间 返 回图图4-2 第一种方案占用资源的

252、情况第一种方案占用资源的情况返 回图图4-3 第二种方案的输出信号对第二种方案的输出信号对 输入信号的延迟时间输入信号的延迟时间 返 回图图4-4 第二种方案占用资源的情况第二种方案占用资源的情况返 回图图4-5 执行执行New Project Wizard命令命令返 回图图4-6 New Project Wizard对话框对话框返 回 图图4-7 指定工程名称的对话框指定工程名称的对话框返 回 图图4-8 添加工程文件对话框添加工程文件对话框返 回 图图4-9 选择选择FPGA器件器件返 回 图图4-10 选择其他选择其他EDA工具对话框工具对话框返 回 图图4-11 信息总概对话框信息总概

253、对话框返 回 图图4-12 执行执行File=New命令命令返 回 图图4-13 选择选择“VHDL File”返 回 图图4-14 保存文件保存文件返 回 图图4-15 VHDL源代码源代码返 回 图图4-16 Start Compilation返 回 图图4-17 通过编译通过编译返 回 图图4-18 选择波形文件选择波形文件返 回 图图4-19 波形文件编辑器波形文件编辑器返 回图图4-20 选择选择Insert Node or Bus命令命令返 回 图图4-21单击单击Node Finder按键按键返 回 图图4-22 单击单击List 按键按键返 回图图4-23 选择需要的输入输出引

254、脚选择需要的输入输出引脚返 回图图4-24 选中需要的输入输出引脚选中需要的输入输出引脚返 回 图图4-25 波形设置界面波形设置界面返 回 图图4-26 选择合适的时间选择合适的时间返 回 图图4-27 设置时间单位设置时间单位返 回图图4-28 执行执行Start Simulation命令命令返 回 图图4-29 仿真结果仿真结果返 回图图4-30 四位二进制加法器原理方框图四位二进制加法器原理方框图返 回 图图4-31 例例4.1顶层文件仿真波形顶层文件仿真波形返 回 图图4-32 RTL原理图原理图返 回 图图4-33 执行执行Technology Map Viewer 命令命令返 回

255、 图图4-34 四位二进制加法器底层动态四位二进制加法器底层动态 算术模式算术模式LE构造原理图构造原理图返 回 【要求】【要求】 掌握掌握LPM函数知识和运用函数知识和运用LPM函数设计逻辑电路的基本方法函数设计逻辑电路的基本方法 【知识点】【知识点】l 了解了解LPM函数的概念和分类函数的概念和分类l 掌握掌握Quartus中中LPM的定制方法的定制方法l 掌握原理图输入法中掌握原理图输入法中LPM函数的应用函数的应用l 掌握掌握VHDL程序设计中程序设计中LPM函数的应用函数的应用 【重点和难点】【重点和难点】l Quaatus的的LPM的定制方法的定制方法l 原理图输入法中原理图输入法

256、中LPM函数的应用函数的应用l VHDL程序设计中程序设计中LPM函数的应用函数的应用下一页第第5章章 应用应用LPM函数方法设计函数方法设计 三十二位二进制加法器三十二位二进制加法器第第5章章 应用应用LPM函数方法设计函数方法设计 三十二位二进制加法器三十二位二进制加法器5.1 工作任务的陈述与背景工作任务的陈述与背景5.2 完成工作任务的引导完成工作任务的引导5.3 相关技术基本知识与基本技能相关技术基本知识与基本技能5.3 本章小结本章小结上一页一、任务的陈述一、任务的陈述 设计一个带有低位进位输入端和高位进位输出端的二十一位二进设计一个带有低位进位输入端和高位进位输出端的二十一位二进

257、制加法器,其主要参数如下制加法器,其主要参数如下: 完成两个二十一位的二进制数的相加完成两个二十一位的二进制数的相加; 有低位进位输入端有低位进位输入端; 有高位进位输出端有高位进位输出端; 能结合实际应用要求扩展时钟输入端,加、减控制端等。能结合实际应用要求扩展时钟输入端,加、减控制端等。二、项目的背景二、项目的背景 加法器是最基本、最常见的组合逻辑器件。在日常应用中,可用加法器是最基本、最常见的组合逻辑器件。在日常应用中,可用它来实现加法、乘法等运算的设计。可用的加法器有半加器、全加它来实现加法、乘法等运算的设计。可用的加法器有半加器、全加5.1 工作任务的陈述与背景工作任务的陈述与背景下

258、一页下一页上一页器、串行进位加法器、超前进位加法器等。常见的集成加法器有器、串行进位加法器、超前进位加法器等。常见的集成加法器有74LS283, 74LS385等。等。 在运用在运用EDA工具来设计数字系统时,加法器是最常见的组合逻工具来设计数字系统时,加法器是最常见的组合逻辑器件的设计。在以往设计中,往往采用原理图方法或辑器件的设计。在以往设计中,往往采用原理图方法或VHDL语言语言设计方法来获得相应的逻辑。采用原理图方法,须设计人员对加法设计方法来获得相应的逻辑。采用原理图方法,须设计人员对加法器的原理有较深入的了解,一旦加法器的输入位数增大,将会导致器的原理有较深入的了解,一旦加法器的输

259、入位数增大,将会导致所用基本逻辑器件增加、电路复杂等缺点所用基本逻辑器件增加、电路复杂等缺点; 而采用而采用VHDL硬件描述硬件描述语言实现设计,若采用从全加器到多位加法器描述,存在程序较复语言实现设计,若采用从全加器到多位加法器描述,存在程序较复杂、占用硬件资源大、实际生成电路复杂等缺点。因此对较大数值杂、占用硬件资源大、实际生成电路复杂等缺点。因此对较大数值数据进行相加时,若采用传统的设计方式,则存在较大的资源浪费。数据进行相加时,若采用传统的设计方式,则存在较大的资源浪费。 5.1 工作任务的陈述与背景工作任务的陈述与背景返 回上一页 在本章中,将充分利用在本章中,将充分利用Quartu

260、s软件内带基本宏功能模块的软件内带基本宏功能模块的优势,介绍利用优势,介绍利用LPM宏模块来设计加法器。这一方法既可克服上述宏模块来设计加法器。这一方法既可克服上述两种设计方法的不足,又可充分利用两种设计方法的不足,又可充分利用Quartus软件现有模块,简软件现有模块,简化设计人员的设计步骤,减轻设计人员的工作量。同时,还可以根化设计人员的设计步骤,减轻设计人员的工作量。同时,还可以根据设计人员的需求方便地添加时钟输入端,使能输入端,加、减控据设计人员的需求方便地添加时钟输入端,使能输入端,加、减控制端等。制端等。 本章以二十一位加法器为项目,比较原理图输入法、本章以二十一位加法器为项目,比

261、较原理图输入法、VHDL程序程序设计法和应用宏功能设计法和应用宏功能lpm_add_sub模块设计法的各自特点模块设计法的各自特点;同时同时还将进一步扩展介绍其他常用的宏功能模块,并以相应例子进行讲还将进一步扩展介绍其他常用的宏功能模块,并以相应例子进行讲解。解。5.1 工作任务的陈述与背景工作任务的陈述与背景下一页5.2 完成工作任务的引导完成工作任务的引导一、资讯一、资讯 为完成二十一位加法器的设计,需先了解加法器的相关知识。为完成二十一位加法器的设计,需先了解加法器的相关知识。 1.半加器半加器 实现两个数的加法,考虑当前位向高位进位但不考虑低位进位实现两个数的加法,考虑当前位向高位进位

262、但不考虑低位进位的加法器称为半加器。在数字系统中,对被加数、加数及和的描述的加法器称为半加器。在数字系统中,对被加数、加数及和的描述通常采用二进制。在用通常采用二进制。在用EDA技术实现时常采用原理图输入方式或技术实现时常采用原理图输入方式或硬件描述语言方式实现。硬件描述语言方式实现。 2.全加器全加器 考虑低位进位的加法器称为全加器,其可以看做是在半加器的考虑低位进位的加法器称为全加器,其可以看做是在半加器的基础上增加一低位进位的输入端。在用基础上增加一低位进位的输入端。在用EDA技术实现时,可采用技术实现时,可采用原理图方式或硬件描述语言方式实现。原理图方式或硬件描述语言方式实现。 下一页

263、上一页 3.加法器加法器 加法器是实现多位二进制数据相加的组合逻辑器件。一般实现两加法器是实现多位二进制数据相加的组合逻辑器件。一般实现两个多位二进制数据的相加,并能根据需要设置使能端、时钟输入端个多位二进制数据的相加,并能根据需要设置使能端、时钟输入端等。等。 4.三十二位加法器三十二位加法器 实现两个二十一位二进制数的相加,即完成加数与被加数均最大实现两个二十一位二进制数的相加,即完成加数与被加数均最大为为4294967296的两个数的加法,并将相加后的结果和向更高位的两个数的加法,并将相加后的结果和向更高位的进位表示出来。同时能根据设计者的实际情况,添加上异步清零的进位表示出来。同时能根

264、据设计者的实际情况,添加上异步清零控制端、时钟输入端等,并能实现减法运算。控制端、时钟输入端等,并能实现减法运算。5.2 完成工作任务的引导完成工作任务的引导下一页上一页二、计划二、计划 为更好地进行设计比较,我们将分别讨论二种实现方法,分别是应为更好地进行设计比较,我们将分别讨论二种实现方法,分别是应用原理图方法、应用用原理图方法、应用VHDL语言方法设计和应用语言方法设计和应用LPM函数方法设计。函数方法设计。 1.应用原理图方法设计应用原理图方法设计 在这种设计方法下,在对半加器、全加器及加法器的原理有一定了在这种设计方法下,在对半加器、全加器及加法器的原理有一定了解后,根据半加器或全加

265、器的逻辑电路生成半加器或全加器,将其创解后,根据半加器或全加器的逻辑电路生成半加器或全加器,将其创立元件符号后再组合生成所需位数的加法器。在本书第立元件符号后再组合生成所需位数的加法器。在本书第3章中已详细介章中已详细介绍如何用原理图输入法设计八位二进制加法器,本章将在此基础上,绍如何用原理图输入法设计八位二进制加法器,本章将在此基础上,将被加数与加数的八位扩展为二十一位。将被加数与加数的八位扩展为二十一位。 其设计示意图如其设计示意图如图图5-1所示。所示。5.2 完成工作任务的引导完成工作任务的引导上一页5.2 完成工作任务的引导完成工作任务的引导 2.应用应用VHDL语言方法设计语言方法

266、设计 在这种设计方法下,常见实现方法有两种在这种设计方法下,常见实现方法有两种: 一一是是与与原原理理图图方方法法设设计计类类似似,先先用用VHDL语语言言设设计计出出半半加加器器或或全全加加器器,再再运运用用元元件件例例化化语语句句完完成成相相应应多多位位加加法法器器的的设设计计; 二是利用二是利用VHDL语言中的语言中的“+”操作运算符,直接进行编程。操作运算符,直接进行编程。设计原理如设计原理如图图5-2所示。由于篇幅限制,本章在第所示。由于篇幅限制,本章在第4章基础上,章基础上,将八位扩展为二十一位。将八位扩展为二十一位。 3.应用应用LPM函数方法设计函数方法设计 在这种设计方法下,

267、根据要实现的加法器的具体功能,利用在这种设计方法下,根据要实现的加法器的具体功能,利用Quartus软件内带的基本宏功能软件内带的基本宏功能lpm_add_sub模块,对模块,对下一页上一页5.2 完成工作任务的引导完成工作任务的引导该模块进行端口和参数定义,实现设计要求。由于此方法是基于该模块进行端口和参数定义,实现设计要求。由于此方法是基于参数可设置模块,此模块不仅能完成简单的加法器的功能,更能参数可设置模块,此模块不仅能完成简单的加法器的功能,更能在该模块的选择范围内设置相应端口,从而大大减轻设计人员的在该模块的选择范围内设置相应端口,从而大大减轻设计人员的设计负担。根据所用环境的不同,

268、可分为原理图输入法中应用设计负担。根据所用环境的不同,可分为原理图输入法中应用LPM函数和函数和VHDL设计中应用设计中应用 LPM函数,如函数,如图图5-3所示。所示。三、决策三、决策 综合比较二种设计方案,发现二种方案存在各自特点综合比较二种设计方案,发现二种方案存在各自特点: 1.应用原理图方法设计应用原理图方法设计 在数字电路知识的基础上结合在数字电路知识的基础上结合Quartus软件的基本知识便软件的基本知识便可得到相应的电路图并能实现其功能,其相对要求较低,容易理可得到相应的电路图并能实现其功能,其相对要求较低,容易理解和掌握。但当设计或系统较大时,电路复杂,容易出错。解和掌握。但

269、当设计或系统较大时,电路复杂,容易出错。下一页上一页5.2 完成工作任务的引导完成工作任务的引导2.应用应用VHDL语言方法设计语言方法设计 击掌握击掌握VHDL语言相关语法知识,程序较为简单,符合思维语言相关语法知识,程序较为简单,符合思维逻辑。但相对要求较高,目生成实际电路较复杂,容易占用较大逻辑。但相对要求较高,目生成实际电路较复杂,容易占用较大资源,引起资源浪费。资源,引起资源浪费。 3.应用应用LPM函数方法设计函数方法设计 需要掌握需要掌握LPM函数相关知识,运用较为简单,相对要求较低,函数相关知识,运用较为简单,相对要求较低,目是在软件自带库中定制需要逻辑,可选择面广。同时,该函

270、数目是在软件自带库中定制需要逻辑,可选择面广。同时,该函数是优秀电子工程技术人员的硬件设计成果,其实际生成电路较简是优秀电子工程技术人员的硬件设计成果,其实际生成电路较简单,资源占用较少。单,资源占用较少。下一页返 回上一页5.2 完成工作任务的引导完成工作任务的引导 四、实施四、实施 本章将采用二种方法对比设计,具体的设计方法和流程请参见本章将采用二种方法对比设计,具体的设计方法和流程请参见5.3节。节。五、检查五、检查 我们将用我们将用Quartus 软件的仿真工具进行仿真,并结合硬件情软件的仿真工具进行仿真,并结合硬件情况,将设计稍做改动,在硬件上进行测试。况,将设计稍做改动,在硬件上进

271、行测试。六、评估六、评估 通过本次设计,可比较常用逻辑电路的几种设计方法的优缺点,通过本次设计,可比较常用逻辑电路的几种设计方法的优缺点,为更为复杂的设计打下基础。为更为复杂的设计打下基础。 IP包括基本宏功能包括基本宏功能(Megafunction/PLM )和和 MegaCore两种,在两种,在Altera的开发工具的开发工具Quartus中,有一些内带的基本宏功能可供设中,有一些内带的基本宏功能可供设计者使用。本节将主要介绍这些基本宏函数功能。计者使用。本节将主要介绍这些基本宏函数功能。一、一、 LPM函数的基本概念和分类函数的基本概念和分类 1.基本概念基本概念 LPM是参数可设模块库

272、的英文缩写是参数可设模块库的英文缩写(Libraay of Parameterized Modules ),这些可以以图形或硬件描述语言形式方便调用的宏模块,这些可以以图形或硬件描述语言形式方便调用的宏模块,使得基于使得基于EDA技术的电子设计的效率和可靠性有了很大的提高。设计技术的电子设计的效率和可靠性有了很大的提高。设计者可以根据实际电路的设计需要,选择者可以根据实际电路的设计需要,选择LPM库中合适模块,并为其设库中合适模块,并为其设定适当的参数,就能满足自已的设计需要,在定适当的参数,就能满足自已的设计需要,在下一页5.3 相关技术基本知识与基本技能相关技术基本知识与基本技能自已的项目

273、中十分方便地调用优秀电子工程技术人员的硬件设计成果。自已的项目中十分方便地调用优秀电子工程技术人员的硬件设计成果。 LPM中功能模块的内容丰富,作为中功能模块的内容丰富,作为EDIF标准的一部分,标准的一部分,LPM形式形式得到了得到了EDA工具的良好支持。工具的良好支持。Quartus中提供的中提供的LPM中有多种实中有多种实用的功能模块,如用的功能模块,如LPM_ROM , LPM_FF等。每个模块的功能、参等。每个模块的功能、参数定义、使用方法、硬件描述语言模块参数设置及调用方法都可以在数定义、使用方法、硬件描述语言模块参数设置及调用方法都可以在Quartus中的中的Help中查阅到。中

274、查阅到。2. LPM函数的分类函数的分类 在在Quartus 中提供的基本宏功能见中提供的基本宏功能见表表5-1。下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页二、原理图输入法中二、原理图输入法中LPM函数的应用函数的应用 我们将以二十一位加法器为例,介绍在原理图输入法中如何应用我们将以二十一位加法器为例,介绍在原理图输入法中如何应用LPM函数。同时,将结合第函数。同时,将结合第3章的相关知识,用全加器或八位加法器章的相关知识,用全加器或八位加法器生成二十一位加法器,通过对比将得出两种设计方式各自的优、缺点。生成二十一位加法器,通过对比将得出两种设计方式各

275、自的优、缺点。 【例【例5.1设计一带有低位进位输入端和高位进位输出二十一位二设计一带有低位进位输入端和高位进位输出二十一位二进制加法器,其主要参数如下进制加法器,其主要参数如下: 完成两个二十一位的二进制数的相加完成两个二十一位的二进制数的相加; 有低位进位输入端有低位进位输入端; 有高位进位输出端。有高位进位输出端。 (1)实现方法一实现方法一:应用原理图方法设计应用原理图方法设计 5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能此处结合第此处结合第3章的相关知识,利用第章的相关知识,利用第3章八位加法器,连接成所需章八位加法器,连接成所需要的二十一位加法器,其原理图如要的二十

276、一位加法器,其原理图如图图5-4所示。所示。 对其进行编译后,观察编译报告对其进行编译后,观察编译报告(见见图图5-5),发现在这种方式,发现在这种方式下所需的总逻辑单元为下所需的总逻辑单元为72。请注意这个数值,因为在方法二中将。请注意这个数值,因为在方法二中将比较两种方式下占用逻辑资源的不同。比较两种方式下占用逻辑资源的不同。 其功能仿真图如其功能仿真图如图图5-6所示。所示。 (2)实现方法一实现方法一:利用利用LPM函数实现函数实现 此处利用此处利用lpm-add-sub(参数化加参数化加/减法器减法器)函数。该函数能函数。该函数能实现实现164位二进制数的加位二进制数的加/减操作,并

277、可根据设计要求选择时钟、减操作,并可根据设计要求选择时钟、异步清零端等。异步清零端等。 下面将详细描述如何使用其来实现三十二位加法器。下面将详细描述如何使用其来实现三十二位加法器。 下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 新建立一个图形文件,打开图形编辑器,在空白处双击,在弹出新建立一个图形文件,打开图形编辑器,在空白处双击,在弹出的的symbol(符号符号)对话框中打开对话框中打开C:/altera/quar tus60 /libraries/文件夹下的文件夹下的megafunctions库中的库中的arithmetic子子库,选择库,选择lpm-add-s

278、ub宏函数,如宏函数,如图图5-7所示。所示。 注意,在该对话框的左下角有注意,在该对话框的左下角有3个选项,一般个选项,一般Repeat-insert mode(重复插入模式重复插入模式)和和 Insert symbol as block(以模块方式以模块方式插入符号插入符号)这两个选项都默认为不选,但是第二个选项这两个选项都默认为不选,但是第二个选项Lanch MegaWizard Plug-In(宏向导的插件竹理宏向导的插件竹理)默认为选择,但默认为选择,但在此我们并不想打开在此我们并不想打开Lanch MegaWizard Plug-In选项,因此,选项,因此,把该选项中的勾去掉,如把

279、该选项中的勾去掉,如图图5-8所示。所示。下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 将将lpm_add_sub宏函数的图形符号放到图形编辑区中合适的位宏函数的图形符号放到图形编辑区中合适的位置,注意该图形符号由两部分组成置,注意该图形符号由两部分组成:基本电路图形和参数化框,如基本电路图形和参数化框,如 图图5-9所示。所示。 参数化框中各元件参数意义见参数化框中各元件参数意义见表表5-2。 双击参数化框,在弹出如双击参数化框,在弹出如图图5-10所示界面中选择需要引脚,并根所示界面中选择需要引脚,并根据需要设定每一参数值。据需要设定每一参数值。 其中,其中,g

280、eneral框的内容如框的内容如图图5-11所示。框中所示。框中Symbol name为符号的名称为符号的名称; Instance name为举例名称。为举例名称。 Port框的内容如框的内容如图图5-12所示。所示。下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 Port框中各项内容意义如下框中各项内容意义如下: Name: 所选择引脚名称所选择引脚名称; Status: 当前引脚所用状态,指是否使用当前引脚所用状态,指是否使用; Type: 引脚类型引脚类型; Alias: 别名别名; Inversion: 反转,指引脚的有效电平是否是为默认电平的反反转,指引脚的

281、有效电平是否是为默认电平的反 转,选转,选None是否,选是否,选All为所有都反转,选为所有都反转,选Pattern则为则为 指定式样。指定式样。下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 Existing ports框内各项意义如下框内各项意义如下: Name: 所选引脚的名称所选引脚的名称; Alias: 别名别名; Inversion: 反转反转; Status: 状态状态; Direction: 引脚方向引脚方向; Hide Alias: 隐藏别名。隐藏别名。 当我们每选择一个引脚,应根据需要设定当我们每选择一个引脚,应根据需要设定Status(是否使用

282、是否使用)和和 Inversion(反转反转)各项的内容。各项的内容。 下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能其中,其中,Name下的组件输入下的组件输入/输出端口表见输出端口表见表表5-3。 Parameters选项中各项内容意义如下选项中各项内容意义如下: Name: 所选择参数的名称所选择参数的名称; Setting: 设定设定; Description: 描述。描述。 Existing parametersettings(已存在的参数设定已存在的参数设定)框内各项内框内各项内容意义如下容意义如下: Name: 所选择参数的名称所选择参数的名称; Val

283、ue: 取值取值; Description: 描述。描述。下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 每选择一个参数,要根据需要设定每选择一个参数,要根据需要设定Setting条目,其设定例子如条目,其设定例子如图图5-13所示。所示。 本例设定好的引脚和参数如本例设定好的引脚和参数如图图5-14所示。在图例中,根据需要所示。在图例中,根据需要设定了部分端口。设定了部分端口。 注意所需的总逻辑单元数为注意所需的总逻辑单元数为34。把这个值和前面用八位加法器合。把这个值和前面用八位加法器合成二十一位加法器的编译报告成二十一位加法器的编译报告(图图5-15)进行对比,

284、可明显发现前者进行对比,可明显发现前者所占用的逻辑单元仅为后者的一半。所占用的逻辑单元仅为后者的一半。 其功能仿真波形如其功能仿真波形如图图5-16所示。所示。 下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下面再介绍一个常用的宏函数的应用。下面再介绍一个常用的宏函数的应用。 【例【例5.2设计带有进位输出端的十六进制计数器。设计带有进位输出端的十六进制计数器。 在图形编辑器的空白处双击,在弹出的在图形编辑器的空白处双击,在弹出的symbol(符号符号)对话框中对话框中打开打开C:/altera/quartus60/libraries/文件夹下的文件夹下的megafu

285、nctions 库中的库中的arithmetic子库,选择子库,选择lpm-counter宏函数,如宏函数,如图图5-17所示。所示。 将将lpm_counter宏函数放置于图面合适位置,根据需要设定好宏函数放置于图面合适位置,根据需要设定好参数,如参数,如图图5-18、图图5-19、图图5-20所示。所示。 其功能仿真波形如其功能仿真波形如图图5-21所示。所示。 通过编译后,得到如通过编译后,得到如图图5-15所示的编译报告。所示的编译报告。下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能三、三、VHDL程序中程序中LPM函数的应用函数的应用 【例【例5.3】设计一

286、带有低位进位输入端和高位进位输出二十一位二】设计一带有低位进位输入端和高位进位输出二十一位二进制加法器,其主要参数如下进制加法器,其主要参数如下: 完成两个二十一位的二进制数的相加完成两个二十一位的二进制数的相加; 有低位进位输入端有低位进位输入端; 有高位进位输出端。有高位进位输出端。 (1)实现方法一实现方法一: 在八位加法器的基础上进行设计在八位加法器的基础上进行设计 在第在第4章已经介绍了八位加法器的设计,此处将利用第章已经介绍了八位加法器的设计,此处将利用第4章的设章的设计,完成例计,完成例5.2的要求,其程序如下的要求,其程序如下(在此省略八位加法器的程序在此省略八位加法器的程序)

287、。 下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能library ieee; use ieee.std_logic_1164.a11; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity add32_b is port(a,b: in std_logic_vector(31 downto 0); cin: in std_logic; sum: out std_logic_vector(31 downto 0); cout: out std_logic); end add32_b;

288、下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能architecture str of add32 b is signal co:std_logic_vector(3 downto 0); component add8 is port(a,b: in std_logic_vector(7 downto 0); cin: in std_logic; sum: out std_logic_vector(7 downto 0); cout: out std_logic); end component; begin 下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识

289、与基本技能 u0: add8 port map (a(7 downto 0),b(7 downto 0),cin,sum(7 downto 0),co(0); ul: add8 port map (a(15 downto 8),b(15downto 8),co(0),sum(15 downto8),co(1); u2: add8 port map (a(23 downto 16),b(23 downto 16),co(1),sum(23 downto16),co(2); u3: add8 port map (a(31 downto 24),b(31 downto 24),co(2),sum(3

290、1 downto24),cout); end; 其编译报告如其编译报告如图图5-22所示。所示。 其功能仿真波形如其功能仿真波形如图图5-23所示。所示。下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 (2)方法一方法一: 利用利用LPM函数实现函数实现 在例在例5.1的方法二中,已经介绍了的方法二中,已经介绍了LPM函数的使用,在此将介绍函数的使用,在此将介绍在在VHDL设计文件中通过端口和参数定义例化设计文件中通过端口和参数定义例化LPM的方法。的方法。 首先定制一个宏功能模块。在首先定制一个宏功能模块。在Quartus主窗口主窗口Tools菜单中选菜

291、单中选择择MegaWizardPlug-In Manager命令,产生如命令,产生如图图5-24所示的所示的界面,可选择以下操作模式。界面,可选择以下操作模式。 Create a new custom megafunction项项: 定制一个新的定制一个新的宏功能模块。宏功能模块。 Edit an exiting custom megafunction项项: 修改编辑一修改编辑一个已存在的宏功能模块。个已存在的宏功能模块。 5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 Copy an exiting custom megafunction项项: 复制一个复制一个已存

292、在的宏功能模块。已存在的宏功能模块。 本例选择定制一个新的宏功能模块。本例选择定制一个新的宏功能模块。 在在图图5-24中单击中单击Next按按钮后,产生如钮后,产生如图图5-25所示的宏功能模块选择对话框。所示的宏功能模块选择对话框。 该对话框左侧列出了可供选择的宏功能模块,有已安装的组件该对话框左侧列出了可供选择的宏功能模块,有已安装的组件(Installed Plugins )和未安装的组件和未安装的组件(IP MegsStore)。已安装。已安装的部分除的部分除Alter SOPC Builder外,都已在表外,都已在表5-1。 Quartus中提供的基本宏功能列表中详细介绍中提供的基

293、本宏功能列表中详细介绍; 未安装部分未安装部分是是Alter的的IP核,它们需从网上下载,再进行安装。在此,对第一部核,它们需从网上下载,再进行安装。在此,对第一部分不做介绍。分不做介绍。 5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 图图5-25中右边部分包括器件选择、硬件描述语言选择、输出文件的中右边部分包括器件选择、硬件描述语言选择、输出文件的路径和格式,以及库文件的指定,这些库文件是设计者在路径和格式,以及库文件的指定,这些库文件是设计者在Quartus中编译时需要使用的库文件。设计者在使用非系统默认、自已安装的中编译时需要使用的库文件。设计者在使用非系统默

294、认、自已安装的IP核时,需指定用户库。核时,需指定用户库。 在在图图5-25左栏左栏Arithmetic项下选择项下选择lpm-add-sub,在右边选择,在右边选择Cyclone器件和器件和VHDL语言方式,最后在语言方式,最后在Browse下的栏中键入文件下的栏中键入文件存放的路径和文件名存放的路径和文件名E:projectadd32add32,单击,单击Next按钮按钮后,其界面如后,其界面如 图图5-26所示。所示。 5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 在在图图5-26中,设定中,设定dataa和和datab总线的宽度,这单根据需要总线的宽度,这单

295、根据需要选择选择32。在操作模式选择中选择。在操作模式选择中选择Addition Only(只完成加法只完成加法)。单。单击击Next按钮进入下一步,如按钮进入下一步,如 图图5-27所示。所示。 在在图图5-27中,设定中,设定dataa, datab输入端口是否为常数。此处根输入端口是否为常数。此处根据题目要求选择据题目要求选择“No,both values vary(不,所有的值都是变化不,所有的值都是变化的的),单击,单击Next按钮进入下一步,如按钮进入下一步,如图图5-28所示。所示。 在在图图5-28中,设定进位输入端和借位、溢出输出端。此处根据需中,设定进位输入端和借位、溢出输

296、出端。此处根据需要选择进位输入端和借位输出端,如要选择进位输入端和借位输出端,如图图5-29所示。所示。 在在图图5-29中,可以选择增添时钟、异步清零端等。此处根据要求中,可以选择增添时钟、异步清零端等。此处根据要求不增添任何端口,选择不增添任何端口,选择NO。5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页 单击单击Next按钮进入下一步,如按钮进入下一步,如图图5-30所示。所示。 图图5-30是产生仿真模型文件。单击是产生仿真模型文件。单击Next按钮进入下一步,其界按钮进入下一步,其界面如面如图图5-31所示。所示。 单击单击Finish按钮,完成本次宏功能模

297、块的定制。此时,在按钮,完成本次宏功能模块的定制。此时,在E: project add32文件夹中已存在一个文件夹中已存在一个add32.vhd的文件的文件(既可以既可以用于原理图编辑也可以用于顶层文件的实例化用于原理图编辑也可以用于顶层文件的实例化)。直接编译此文件,。直接编译此文件,编译报告如编译报告如图图5-32所示。所示。 其功能仿真报告如其功能仿真报告如图图5-33所示。所示。 通过对比发现,为达到同样的设计要求,使用通过对比发现,为达到同样的设计要求,使用LPM函数进行设计函数进行设计通常是占用逻辑单元最示方法。通常是占用逻辑单元最示方法。5.3 相关技术基础知识与基本技能相关技术

298、基础知识与基本技能下一页上一页下面再介绍一个常用的下面再介绍一个常用的LPM函数的使用方法。函数的使用方法。 【例【例5.4】在】在Quartus中定制一个锁相环中定制一个锁相环PLL元件。元件。 解析解析: Quartus中的锁相环函数也称为嵌入示锁相环,因为只中的锁相环函数也称为嵌入示锁相环,因为只有在有在Cyclone和和Stratix等系列的等系列的FPGA中才含有该锁相环。这种该中才含有该锁相环。这种该锁相环可以与输入的时钟信号同步,并以此作为参考信号实现锁相,锁相环可以与输入的时钟信号同步,并以此作为参考信号实现锁相,从而输出一个或多个同步倍频或分频的片内时钟,以供逻辑系统使用。从

299、而输出一个或多个同步倍频或分频的片内时钟,以供逻辑系统使用。这种系统片内时钟与外来时钟相比,可以减少时钟延时、变形及片外这种系统片内时钟与外来时钟相比,可以减少时钟延时、变形及片外十扰,还可以改善时钟的建立时间和保持时间十扰,还可以改善时钟的建立时间和保持时间Cyclone系列器件中的系列器件中的锁相环能对输入的时钟相对某一输出时钟同步乘以或除以一个因子,锁相环能对输入的时钟相对某一输出时钟同步乘以或除以一个因子,并提供任意移相和输出信号占空比。并提供任意移相和输出信号占空比。 5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能其定制步骤如下其定制步骤如下: 在在Quartus 主窗

300、口主窗口Tools菜单中选择菜单中选择MegaWizard Plug-In Manager命令,选择命令,选择Create a new custom megafunction项,定制一个新的宏功能模块。单击项,定制一个新的宏功能模块。单击Next后,在左后,在左栏选择栏选择I/O项下的项下的ALTPLL,再选择,再选择Cyclone和和 VHDL语言方式,语言方式,最后在最后在Browse下的栏中输入输出文件保存的路径下的栏中输入输出文件保存的路径: E: quartus pllp11100,单击,单击Next后弹出如图后弹出如图5-34所示对话框。所示对话框。 在在图图5-34中,设定中,设

301、定PLL的参考时钟频率为的参考时钟频率为20 MHz,然后单击,然后单击Next,弹出如,弹出如图图5-35所示对话框,在该对话框中选择合适的输入所示对话框,在该对话框中选择合适的输入/输输出引脚。出引脚。 下一页上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 单击单击Next后,弹出如后,弹出如图图5-36所示对话框,在该对话框中选择所示对话框,在该对话框中选择Use this clock并选择第一个输入时钟并选择第一个输入时钟c0相对输入时钟的倍频因子为相对输入时钟的倍频因子为5,即即c0的片内输出为的片内输出为100MHz,时钟相移和占空比不变。,时钟相移和占空比不变

302、。 单击单击Next后,弹出如后,弹出如图图5-37所示对话框,在该对话框中选择所示对话框,在该对话框中选择Use this clock,并选择第一个输入时钟,并选择第一个输入时钟c0相对输入时钟的倍频因子为相对输入时钟的倍频因子为6,即,即c0的片内输出为的片内输出为120MHz,时钟相移和占空比不变。,时钟相移和占空比不变。 定制完该模块后对其进行仿真,其仿真波形如定制完该模块后对其进行仿真,其仿真波形如图图5-38所示。所示。返 回上一页5.3 相关技术基础知识与基本技能相关技术基础知识与基本技能5.4 本章小结本章小结 本章通过三十二位加法器的项目设计,对本章通过三十二位加法器的项目设

303、计,对LPM函数的概念和函数的概念和分类、分类、LPM函数在原理图输入法和函数在原理图输入法和VHDL程序中的应用进行详细程序中的应用进行详细讲解。同时通过原理图直接输入法、讲解。同时通过原理图直接输入法、VHDL语言输入法的比较,语言输入法的比较,得出应用得出应用LPM函数设计能尽可能地减少逻辑资源的占用、使用较函数设计能尽可能地减少逻辑资源的占用、使用较直观、程序较为简单等优点。现将本章要点总结如下直观、程序较为简单等优点。现将本章要点总结如下:下一页返 回5.4 本章小结本章小结上一页 图图5-1 原理图设计法示意图原理图设计法示意图返 回图图5-2 VHDL语言设计原理图语言设计原理图

304、返 回 图图5-3 LPM函数设计原理函数设计原理返 回图图5-4 三十二位加法器原理图三十二位加法器原理图返 回图图5-5 八位加法器组合成三十二八位加法器组合成三十二 位加法器的编译报告位加法器的编译报告返 回 图图5-6 八位加法器组合成三十二八位加法器组合成三十二 位加法器的功能仿真图位加法器的功能仿真图返 回 图图5-7 选择选择lpm_add_sub宏函数宏函数返 回 图图5-8去掉去掉Mega Wizard Plug-In选项选项返 回 图图5-9 lpm_add_sub图像符合图像符合返 回 图图5-10 参数设定参数设定返 回 图图5-11 general框中内容框中内容返

305、回 图图5-12 Port框中内容框中内容返 回 图图5-13 parameters选项选项返 回 图图5-14 完成参数设定完成参数设定 返 回 图图5-15 编译报告编译报告返 回 图图5-16 功能仿真波形功能仿真波形返 回图图5-17 lpm_counter 图形符合图形符合返 回 图图5-18 参数设定参数设定1返 回 图图5-19 参数设定参数设定2返 回图图5-20 设定好的参数合引脚设定好的参数合引脚返 回 图图5-21 仿真波形仿真波形返 回 图图5-15 编译报告编译报告返 回 图图5-22 编译报告编译报告返 回 图图5-23 仿真报告仿真报告返 回 图图5-24 定制一

306、个新的宏功能模块定制一个新的宏功能模块返 回 图图5-24 定制一个新的宏功能模块定制一个新的宏功能模块返 回 图图5-25 宏功能模块选择宏功能模块选择返 回 图图5-25 宏功能模块选择宏功能模块选择返 回 图图5-26 设定宏功能模块功能设定宏功能模块功能返 回 图图5-26 设定宏功能模块功能设定宏功能模块功能返 回 图图5-27 设定宏功能模块功能设定宏功能模块功能返 回 图图5-28 设定宏功能模块功能设定宏功能模块功能返 回 图图5-29 设定宏功能模块功能设定宏功能模块功能返 回 图图5-30 产生仿真模型文件产生仿真模型文件返 回图图5-31 本次宏功能模块生成的文件本次宏功

307、能模块生成的文件返 回 图图5-32 编译报告编译报告返 回 图图5-33 功能仿真波形功能仿真波形返 回 图图5-34 参考时钟频率的设定参考时钟频率的设定返 回 图图5-35选择合适的输入选择合适的输入/输出引脚输出引脚返 回 图图5-36 选择选择c0的倍率因子为的倍率因子为5返 回 图图5-37 选择选择c0的倍率因子为的倍率因子为6返 回 图图5-38 PLL仿真波形仿真波形返 回 表表5-1 Quartus II中提供的中提供的 基本宏功能列表基本宏功能列表下一页 表表5-1 Quartus II中提供的中提供的 基本宏功能列表基本宏功能列表返 回上一页 表表5-2 元件参数表元件

308、参数表下一页 表表5-2 元件参数表元件参数表下一页上一页 表表5-2 元件参数表元件参数表下一页上一页 表表5-2 元件参数表元件参数表返 回上一页 表表5-3 输入输入输出端口表输出端口表下一页 表表5-3 输入输入输出端口表输出端口表下一页上一页 表表5-3 输入输入输出端口表输出端口表返 回上一页 表表5-1 Quartus II中提供的中提供的 基本宏功能列表基本宏功能列表下一页 表表5-1 Quartus II中提供的中提供的 基本宏功能列表基本宏功能列表返 回上一页 【要求】【要求】 原理图输入法中原理图输入法中Max+plus 老式宏函数的应用老式宏函数的应用 【知识点】【知识

309、点】l 理解理解Quartus 的原理图输入法的原理图输入法 l 理解使用理解使用Max+plus 老式宏函数设计频率计的方法老式宏函数设计频率计的方法 【重点和难点】【重点和难点】l Quartus 的原理图输入法的原理图输入法l Max+plus 老式宏函数设计频率计的方法老式宏函数设计频率计的方法下一页 第第6章章 应用原理图设计法设计应用原理图设计法设计 两位数字频率计两位数字频率计第第6章章 应用原理图设计法设计应用原理图设计法设计 两位数字频率计两位数字频率计6.1 工作任务的陈述与背景工作任务的陈述与背景6.2 完成工作任务的向导完成工作任务的向导6.3 相关技术基本知识与基本技

310、能相关技术基本知识与基本技能6.3 本章小结本章小结上一页一、工作任务一、工作任务 利用原理图输入法基于利用原理图输入法基于Max+plus 老式宏函数设计一个两位老式宏函数设计一个两位的数字频率计。基本要求为的数字频率计。基本要求为: 十进制数码显示范围十进制数码显示范围199。 实现实现X 1 Hz, X 10 Hz, X 100 Hz三种量程的切换,用不三种量程的切换,用不同颜色的发光二极管指示。同颜色的发光二极管指示。二、任务背景二、任务背景 在电子技术中,频率是最基本的参数之一。频率信号抗干扰性强,在电子技术中,频率是最基本的参数之一。频率信号抗干扰性强,易于传输,可以达到较高准确度

311、的测量,所以在测控系统中,测易于传输,可以达到较高准确度的测量,所以在测控系统中,测频方法的研究越来越受到重视。频方法的研究越来越受到重视。6.1 工作任务的陈述与背景工作任务的陈述与背景下一页返 回上一页 数字频率计以其使用方便、测量迅速以及便于实现测量过程自数字频率计以其使用方便、测量迅速以及便于实现测量过程自动化的优点,成为计算机、通信设备、音频视频等科研生产领域不动化的优点,成为计算机、通信设备、音频视频等科研生产领域不可缺少的测量仪器。可缺少的测量仪器。 数字频率计测量频率通常有两种方法,即直接频率测量法和间接数字频率计测量频率通常有两种方法,即直接频率测量法和间接频率测量法。一般情

312、况下,直接频率测量法用于高频信号的测量,频率测量法。一般情况下,直接频率测量法用于高频信号的测量,间接频率测量法用于低频信号的测量。一个数字频率计是由计数电间接频率测量法用于低频信号的测量。一个数字频率计是由计数电路、闸门时间控制电路、信号锁存电路、显示译码电路等几个部分路、闸门时间控制电路、信号锁存电路、显示译码电路等几个部分组成。使用组成。使用Max+plus 老式宏函数可以较方便地对各个部分的老式宏函数可以较方便地对各个部分的电路进行设计。电路进行设计。6.1 工作任务的陈述与背景工作任务的陈述与背景下一页6.2 完成工作任务的向导完成工作任务的向导一、资讯一、资讯 由前述可知,要完成好

313、该工作任务,需要准备以下几个方面的由前述可知,要完成好该工作任务,需要准备以下几个方面的知识知识: 计数器的知识。从计数器的工作原理入乎,掌握计数器的应计数器的知识。从计数器的工作原理入乎,掌握计数器的应用,特别是计数器的级联应用以及使用计数器分频的用法。在本工用,特别是计数器的级联应用以及使用计数器分频的用法。在本工作任务中,需要用到两个十进制的计数器级联构成作任务中,需要用到两个十进制的计数器级联构成10 X 10的计的计数器。另外,需要用计数器对闸门信号进行分频,以构成不同的测数器。另外,需要用计数器对闸门信号进行分频,以构成不同的测量挡位。量挡位。 锁存器的知识。锁存器用于在闸门时间结

314、束后锁存计数器的锁存器的知识。锁存器用于在闸门时间结束后锁存计数器的计数值。计数值。 下一页上一页 七段译码器的知识。七段译码器对锁存器锁存的计数值七段译码器的知识。七段译码器对锁存器锁存的计数值(BCD码码)进行译码以形成数码管所需要的显示码。进行译码以形成数码管所需要的显示码。 数字频率计的工作原理。数字频率计的工作原理。二、计划二、计划 数字频率计测量频率通常有两种方法数字频率计测量频率通常有两种方法: 一种是直接测量法,即在一定闸门时间内测量被测信号的脉一种是直接测量法,即在一定闸门时间内测量被测信号的脉冲个数。所测得的脉冲个数除以闸门时间即可得到信号频率。直接冲个数。所测得的脉冲个数

315、除以闸门时间即可得到信号频率。直接测量法适合于高频信号的频率测量测量法适合于高频信号的频率测量; 另一种是间接测量法,如使用周期测量法,即首先测出被测信另一种是间接测量法,如使用周期测量法,即首先测出被测信号的周期号的周期Tx,然后经过倒数运算得到信号频率,然后经过倒数运算得到信号频率Fx=1 /Tx。此方法。此方法适合用于低频信号的测量。适合用于低频信号的测量。6.2 完成工作任务的向导完成工作任务的向导下一页上一页 由于宏函数中没有提供除法器,采用间接测量法电路设计比较复杂,由于宏函数中没有提供除法器,采用间接测量法电路设计比较复杂,故采用直接测量法。两位直接测量静态显示的数字频率计组成原

316、理框故采用直接测量法。两位直接测量静态显示的数字频率计组成原理框图如图如图图6-1所示。所示。三、决策三、决策 根据根据图图6-1所示的频率计组成框图,分步完成数字频率计的设计。所示的频率计组成框图,分步完成数字频率计的设计。其设计步骤可参考如下步骤进行。其设计步骤可参考如下步骤进行。 设计具有异步清零、计数设计具有异步清零、计数/保持功能的保持功能的10 X 10进制加法计数器。进制加法计数器。 设计频率计的控制电路,该控制电路产生频率计的控制时序,即设计频率计的控制电路,该控制电路产生频率计的控制时序,即为先产生一个控制闸门打开的信号,使计数器计数,待闸门关闭后产为先产生一个控制闸门打开的

317、信号,使计数器计数,待闸门关闭后产生锁存信号,最后产生清零信号,为下个测量周期做准备。生锁存信号,最后产生清零信号,为下个测量周期做准备。6.2 完成工作任务的向导完成工作任务的向导上一页6.2 完成工作任务的向导完成工作任务的向导 用前两个步骤设计出来的电路构成频率测量电路,并进行用前两个步骤设计出来的电路构成频率测量电路,并进行测试。测试。 设计一个量程选择电路。该电路以计数器的进位信号作为设计一个量程选择电路。该电路以计数器的进位信号作为其控制信号,实现对待测信号的不同级别分频,即当计数器产生其控制信号,实现对待测信号的不同级别分频,即当计数器产生进位信号时,则表示计数器溢出,应更换量程

318、。在此,通过降低进位信号时,则表示计数器溢出,应更换量程。在此,通过降低待测信号频率,在显示结果时用单位扩大的方法实现量程转换。待测信号频率,在显示结果时用单位扩大的方法实现量程转换。挡位间相差挡位间相差10倍。当前挡位用发光二极管指示。倍。当前挡位用发光二极管指示。 设计八位信号锁存电路、显示译码电路。构成一个完整的设计八位信号锁存电路、显示译码电路。构成一个完整的显示控制电路,并进行测试。显示控制电路,并进行测试。 将程序下载至将程序下载至FPGA/CPLD芯片,实现自动频段转换的芯片,实现自动频段转换的2位数显频率计。位数显频率计。下一页上一页6.2 完成工作任务的向导完成工作任务的向导

319、四、实施四、实施 1. 10 X 10加法计数器的设计加法计数器的设计 10 X 10进制的加法计数器可以用两个十进制的计数器级进制的加法计数器可以用两个十进制的计数器级联而成。在此,可以选择使用计数器联而成。在此,可以选择使用计数器74192。该计数器具有异步。该计数器具有异步清零、十进制计数带进位端及可预置数等功能,具体情况可查阅清零、十进制计数带进位端及可预置数等功能,具体情况可查阅74192的技术资料,其功能表见的技术资料,其功能表见表表6-1 。 将两片将两片74192级联使用时,在分别连接好两片芯片的功能级联使用时,在分别连接好两片芯片的功能引脚后,将个位计数的芯片的进位端连接至十

320、位计数芯片的加引脚后,将个位计数的芯片的进位端连接至十位计数芯片的加1时时钟端即可。由于两个芯片的计数范围均为钟端即可。由于两个芯片的计数范围均为09,故可构成,故可构成10 X 10进制的计数器。参考电路图如进制的计数器。参考电路图如图图6-2所示。所示。下一页上一页6.2 完成工作任务的向导完成工作任务的向导 使用使用Quartus 软件中的软件中的Max+plus 老式宏函数时,老式宏函数时,仅需要在新建的原理图图纸中,在选取状态下,即仅需要在新建的原理图图纸中,在选取状态下,即 为按下状态,为按下状态,双击原理图编辑窗口中的任意空白处,弹出双击原理图编辑窗口中的任意空白处,弹出Symb

321、ol对话框,在对话框,在Name栏中输入元件名称便可在窗口右侧看到元件的预览图,栏中输入元件名称便可在窗口右侧看到元件的预览图,如如图图6-3所示。点击所示。点击OK确认后回到原理图编辑窗口,在合适位确认后回到原理图编辑窗口,在合适位置单击鼠标左键即可放置置单击鼠标左键即可放置Max+plus 老式宏函数中的元件符老式宏函数中的元件符号。号。 图图6-2中较粗的连线为总线,使用绘图工具条中的总线连线中较粗的连线为总线,使用绘图工具条中的总线连线工具工具 进行连线。用导线连线工具进行连线。用导线连线工具 将总线与元件端口连接好之将总线与元件端口连接好之后,需要给连线命名,如后,需要给连线命名,如

322、图图6-2中的中的out0-out7。下一页下一页上一页6.2 完成工作任务的向导完成工作任务的向导操作方法为操作方法为:单击鼠标左键选中需要命名的线,然后输入名字即可。单击鼠标左键选中需要命名的线,然后输入名字即可。与总线相连的连线名字需要与总线名对应。如图中总线名字与总线相连的连线名字需要与总线名对应。如图中总线名字out7.0,连线名须为,连线名须为out0-out7。 10 X 10进制加法计数器的仿真波形图进制加法计数器的仿真波形图(部分部分)如如图图6-4所示。所示。 如果仿真结果正确,可以将设计的项目生成一个元件符号备用,如果仿真结果正确,可以将设计的项目生成一个元件符号备用,下

323、同。下同。 其步骤是其步骤是:选择原理图文件为当前文件后,选择菜单命令选择原理图文件为当前文件后,选择菜单命令File Create/UpdateCreate Symbol Files for Current File即可。即可。 本电路生成的元件符号如本电路生成的元件符号如图图6-5所示。所示。 上一页6.2 完成工作任务的向导完成工作任务的向导2.控制电路的设计控制电路的设计 频率计的设计关键是控制电路的设计,控制电路产生频率测量频率计的设计关键是控制电路的设计,控制电路产生频率测量所需的闸门、清零和锁存信号。所需的闸门、清零和锁存信号。 这三种信号的作用分别为这三种信号的作用分别为: 闸

324、门信号闸门信号: 当闸门信号为高电平时,计数器开始计数,反当闸门信号为高电平时,计数器开始计数,反之计数器停止计数。改变闸门宽度可以改变频率计的量程,闸门之计数器停止计数。改变闸门宽度可以改变频率计的量程,闸门宽度越示,频率计的量程越大。宽度越示,频率计的量程越大。 清零信号清零信号: 为了保证测频准确,在每次闸门信号开通前必须为了保证测频准确,在每次闸门信号开通前必须让计数器处在零状态,保证计数器每次都从零开始计数。让计数器处在零状态,保证计数器每次都从零开始计数。 锁存信号锁存信号: 为了防止频率计的显示随着计数值的增加不断变为了防止频率计的显示随着计数值的增加不断变化,不断闪烁,在计数器

325、和显示、译码之间增加一级锁存电路。化,不断闪烁,在计数器和显示、译码之间增加一级锁存电路。 下一页上一页6.2 完成工作任务的向导完成工作任务的向导 这些信号具有一定的时序关系,如这些信号具有一定的时序关系,如图图6-6所示。所示。 为了保证测量的精确性,在每次闸门信号变为高信号前,必须为了保证测量的精确性,在每次闸门信号变为高信号前,必须给计数器提供一个清零信号。当闸门信号为高电平时,计数器开给计数器提供一个清零信号。当闸门信号为高电平时,计数器开始计数始计数; 当闸门信号为低电平时,计数器停止计数。当闸门信号为低电平时,计数器停止计数。 如果闸门宽度为如果闸门宽度为1s,则闸门时间内计数器

326、的计数值即为被测,则闸门时间内计数器的计数值即为被测信号的频率信号的频率; 改变闸门宽度可以改变频率计的量程,闸门宽度越改变闸门宽度可以改变频率计的量程,闸门宽度越示,频率计的量程越大。另一种扩大量程的方法为示,频率计的量程越大。另一种扩大量程的方法为: 闸门宽度保闸门宽度保持不变,对被测信号先进行分频,然后再对其测频。相对来说,持不变,对被测信号先进行分频,然后再对其测频。相对来说,后者更加容易实现。在本设计中,将采用后者。后者更加容易实现。在本设计中,将采用后者。 下一页下一页上一页 由由图图6-6可知,几种信号均可以通过对可知,几种信号均可以通过对CP脉冲进行分频而得脉冲进行分频而得到。

327、在此,可以利用一个十进制计数器来对到。在此,可以利用一个十进制计数器来对CP脉冲进行分频而得到脉冲进行分频而得到其他的几种信号。可以将十进制计数器的第八个状态值用作闸门信其他的几种信号。可以将十进制计数器的第八个状态值用作闸门信号,第九个状态值用作锁存信号,第十个状态值用作清零信号,如号,第九个状态值用作锁存信号,第十个状态值用作清零信号,如图图6-7所示。这样,对于闸门信号而言,就是对所示。这样,对于闸门信号而言,就是对CP脉冲的脉冲的8分频。分频。为使闸门信号为为使闸门信号为1 s,故击加入,故击加入8 Hz的的CP脉冲。脉冲。 图图6-7中,中,CLK是是CP脉冲的输入引脚,本设计中使用

328、的是脉冲的输入引脚,本设计中使用的是8 Hz的方波信号的方波信号; CNT-EN引脚是闸门信号的输出引脚引脚是闸门信号的输出引脚; TLOCK为锁存信号输出引脚为锁存信号输出引脚; TCLR为清零信号输出引脚。为清零信号输出引脚。6.2 完成工作任务的向导完成工作任务的向导下一页上一页 图图6-7的工作原理为的工作原理为: 8 Hz的的CP脉冲提供给本电路,则计数器脉冲提供给本电路,则计数器QD端端“0”保持的时间为保持的时间为8个脉冲周期,即为个脉冲周期,即为1 s, “1”保持的时间是保持的时间是2个脉冲周期,经反相个脉冲周期,经反相器取反后,就得到闸门打开时间为器取反后,就得到闸门打开时

329、间为1s,关闭时间为,关闭时间为2个脉冲周期。将个脉冲周期。将闸门信号和闸门信号和10 X 10计数电路的计数脉冲相与,即可控制该计数器按计数电路的计数脉冲相与,即可控制该计数器按照闸门时间计数。锁存信号采用的是计数器的第九个状态值,故锁存照闸门时间计数。锁存信号采用的是计数器的第九个状态值,故锁存信号出现在闸门关闭后的第一个脉冲周期,而清零信号出现在闸门关信号出现在闸门关闭后的第一个脉冲周期,而清零信号出现在闸门关闭后第一个脉冲周期的后半周期。闭后第一个脉冲周期的后半周期。 该控制电路的仿真波形图如该控制电路的仿真波形图如图图6-8所示。所示。 6.2 完成工作任务的向导完成工作任务的向导上

330、一页6.2 完成工作任务的向导完成工作任务的向导 由由图图6-8中可知,该电路的清零信号出现在锁存信号有效区中可知,该电路的清零信号出现在锁存信号有效区间,为不使间,为不使“0”被锁存,故在设计锁存器电路时,应选择上升被锁存,故在设计锁存器电路时,应选择上升沿触发锁存的锁存器电路。沿触发锁存的锁存器电路。3.锁存电路的设计锁存电路的设计 如果计数器的输出直接译码显示,则在闸门信号高电平期间,如果计数器的输出直接译码显示,则在闸门信号高电平期间,频率计的显示随着计数值的增加不断变化、不断闪烁、人眼难以频率计的显示随着计数值的增加不断变化、不断闪烁、人眼难以分辨。为了防止这种现象,在计数和显示译码

331、之间增加锁存电路。分辨。为了防止这种现象,在计数和显示译码之间增加锁存电路。当计数器停止计数后当计数器停止计数后(闸门信号由高变低后闸门信号由高变低后),才将计数值锁存并,才将计数值锁存并译码显示。译码显示。 该锁存电路设计的要点是该锁存电路设计的要点是: 当锁存信号出现当锁存信号出现01的变化的变化时,将电路输入端的数据锁存并输出。时,将电路输入端的数据锁存并输出。下一页上一页6.2 完成工作任务的向导完成工作任务的向导 本设计中,需要锁存的是两位本设计中,需要锁存的是两位BCD码,一共为八位进二制数。码,一共为八位进二制数。Max+plus 老式宏函数中,时钟上升沿锁存的八位二进制锁老式宏

332、函数中,时钟上升沿锁存的八位二进制锁存器型号为存器型号为74273,符合本电路设计的要求。,符合本电路设计的要求。 其功能表见其功能表见表表6-2。 采用采用74273芯片设计的锁存电路如芯片设计的锁存电路如图图6-9所示所示 其仿真波形图如其仿真波形图如图图6-10所示。所示。 4.显示译码电路的设计显示译码电路的设计 显示译码电路将计数器所计的显示译码电路将计数器所计的BCD码转换成七段数码管的段码转换成七段数码管的段信号,以便将数字显示在数码管上。信号,以便将数字显示在数码管上。Max+plus且老式宏函数且老式宏函数中提供多种中提供多种BCD码转换成七段数码管段信号的芯片,如码转换成七

333、段数码管段信号的芯片,如7447 74247 7448 74248 7449等。其中,前两个驱动的是共等。其中,前两个驱动的是共下一页下一页上一页6.2 完成工作任务的向导完成工作任务的向导阳极数码管,后二个驱动的是共阴极数码管。在此以阳极数码管,后二个驱动的是共阴极数码管。在此以74248为例设为例设计显示译码电路。计显示译码电路。 74248的显示效果图如的显示效果图如图图6-11所示,其功能表见所示,其功能表见表表6-3。 根据表根据表6-3可设计显示译码电路,如可设计显示译码电路,如图图6-12所示。所示。 图图6-12中,中,Din0Din3是是BCD 码个位输入端,码个位输入端,L

334、0 L6是个位数码管是个位数码管ag段信号的输出端。段信号的输出端。Din4 Din7 是是BCD 码十位输入端,码十位输入端,H0 H6是十位数码管是十位数码管ag段信号的输段信号的输出端。出端。 显示译码电路的仿真波形图如显示译码电路的仿真波形图如图图6-13所示所示 上一页6.2 完成工作任务的向导完成工作任务的向导5.量程切换电路的设计量程切换电路的设计 根据设计要求,需要设计一个实现根据设计要求,需要设计一个实现1 Hz,10 Hz,100 Hz三种量程自动切换的量程切换电路。三种量程自动切换的量程切换电路。 需要进行量程切换的情况有两种需要进行量程切换的情况有两种: 10 X 10

335、进制计数器的产生进位信号。如果该计数器产生进制计数器的产生进位信号。如果该计数器产生进位信号,则说明计数器溢出,无法用两位进位信号,则说明计数器溢出,无法用两位BCD码表示当前的计码表示当前的计数值,需要更换为更大的量程。数值,需要更换为更大的量程。 计数值的十位为计数值的十位为0。当计数值的十位为。当计数值的十位为0, A当前量程不是当前量程不是1 Hz时,为了提高测量的精度,需要降低测量的量程。时,为了提高测量的精度,需要降低测量的量程。 如第如第2部分所述,本设计可采用比较简单的先分频再测频的方部分所述,本设计可采用比较简单的先分频再测频的方法实现量程的变换。法实现量程的变换。 下一页下

336、一页上一页6.2 完成工作任务的向导完成工作任务的向导 综上所述,量程切换电路的设计要点为综上所述,量程切换电路的设计要点为: 根据计数器的溢出信号和计数值最高位是否为根据计数器的溢出信号和计数值最高位是否为0,给出不同的分频,给出不同的分频系数。分频系数分别为系数。分频系数分别为1,10,100。当计数器产生进位信时,这。当计数器产生进位信时,这3个分频系数是由示到大逐级递进的,即先给出分频系数为个分频系数是由示到大逐级递进的,即先给出分频系数为1的选择信的选择信号,如果超量程,则给出分频系数为号,如果超量程,则给出分频系数为10的选择信号,依此类推。此项的选择信号,依此类推。此项功能可以通

337、过计数器的加功能可以通过计数器的加1功能来实现。而出现计数值十位为功能来实现。而出现计数值十位为0,目当目当前量程不是前量程不是1 Hz时,则需将量程降低。此项功能可以通过计数器的时,则需将量程降低。此项功能可以通过计数器的减减1功能来实现。功能来实现。 74192是十进制加是十进制加/减计数器,可以选择该器件实现量程变换功能。减计数器,可以选择该器件实现量程变换功能。由于存在二种量程,需给出二种组合的选择信号,外加一个本频率计由于存在二种量程,需给出二种组合的选择信号,外加一个本频率计测量范围溢出指示信号,故可设计为一个四进制的计数器。测量范围溢出指示信号,故可设计为一个四进制的计数器。上一

338、页6.2 完成工作任务的向导完成工作任务的向导 电路设计如电路设计如图图6-14所示。所示。 图图6-14中,中,CLK为计数脉冲输入,使用时将其与为计数脉冲输入,使用时将其与10 X 10计数计数器进位端相连。器进位端相连。START为测量启动信号,使用时可连接至按键电路。为测量启动信号,使用时可连接至按键电路。由于由于74192是高电平清零,当键按下时通常输出低电平,故在是高电平清零,当键按下时通常输出低电平,故在START与与74192的的CLR端间加入反相器。端间加入反相器。Q1 Q0的状态在的状态在0011间变化。间变化。 本电路的工作原理为本电路的工作原理为: 开始测试时,给开始测

339、试时,给START施加低电平,使施加低电平,使74192复位,此时输出复位,此时输出的是分频系数为的是分频系数为1的选择信号的选择信号00,待测信号进入计数器测量后,如,待测信号进入计数器测量后,如果计数器溢出,则本电路状态变成果计数器溢出,则本电路状态变成O1,控制分频电路进行,控制分频电路进行10分频。分频。依此类推。依此类推。下一页下一页上一页 如果分频电路对待测信号进行如果分频电路对待测信号进行100分频后,计数器依然溢出,则说分频后,计数器依然溢出,则说明待测信号的频率高出了本频率计的测量范围。明待测信号的频率高出了本频率计的测量范围。 当待测频率低于当前量程范围时,计数值的十位会是

340、当待测频率低于当前量程范围时,计数值的十位会是0,根据这个,根据这个特点,可以通过一个四输入的或非门,对计数器高四位特点,可以通过一个四输入的或非门,对计数器高四位BCD码进行判码进行判断,若为全断,若为全0,则在或非门输出端,则在或非门输出端(DOUT)产生一个上升沿,加至产生一个上升沿,加至DOWN端即可降低量程。端即可降低量程。 如果当前量程已经是如果当前量程已经是Hz挡,而当计数值十位为挡,而当计数值十位为0时,则不需再降低时,则不需再降低量程。因此,电路中需要增加对于这种情况加以判断的电路。其做法量程。因此,电路中需要增加对于这种情况加以判断的电路。其做法是,从是,从Hz挡位输出端引

341、出一路信号和或非门输出端挡位输出端引出一路信号和或非门输出端(DOUT)通过一个一通过一个一输入或门后再加至输入或门后再加至DOWN端即可。端即可。6.2 完成工作任务的向导完成工作任务的向导上一页6.2 完成工作任务的向导完成工作任务的向导 这样,如果当前量程为这样,如果当前量程为Hz,则或门输出,则或门输出“1,而不受或非门输,而不受或非门输出端出端(DOUT)的影响,则不会在出现计数值十位为的影响,则不会在出现计数值十位为0时,继续降低量时,继续降低量程,导致错误的量程指示结果。由于电路中没有微控制器,无法直程,导致错误的量程指示结果。由于电路中没有微控制器,无法直接判断计数值的大示范围

342、,故在测试前最好先从接判断计数值的大示范围,故在测试前最好先从S TART端施加一端施加一个低电平,个低电平,74192清零,让计数器从清零,让计数器从Hz挡开始测量。挡开始测量。 6.分频电路的设计分频电路的设计 本设计中分频电路的作用,是将待测信号的频率降低,以满足本设计中分频电路的作用,是将待测信号的频率降低,以满足100进制计数器的测量范围要求。按照本设计的要求,应将分频电进制计数器的测量范围要求。按照本设计的要求,应将分频电路设计成分频系数可变的,分频系数分别为路设计成分频系数可变的,分频系数分别为1,10和和100的分频电的分频电路。经过分频电路的降频作用后,本频率计可以测量的频率

343、范围是路。经过分频电路的降频作用后,本频率计可以测量的频率范围是:19.9 kHz 。下一页上一页6.2 完成工作任务的向导完成工作任务的向导 用十进制计数器可以实现用十进制计数器可以实现10分频,而一白进制的计数器则可分频,而一白进制的计数器则可以实现以实现100分频,故分频电路本质上就是一个计数器电路。通过一分频,故分频电路本质上就是一个计数器电路。通过一个数据选择器就可以实现不同分频级别的选择,电路设计如个数据选择器就可以实现不同分频级别的选择,电路设计如图图6-15所示。所示。图图6-15中,中,Fin引脚是待分频信号的输入端。两片引脚是待分频信号的输入端。两片74192级联构成了一百

344、进制的计数器。级联构成了一百进制的计数器。 74153M Max+plus老式宏函数中提供的一个四选一的老式宏函数中提供的一个四选一的数据选择器元件,是数据选择器元件,是74153(双四选一双四选一)的简化模型。的简化模型。74153M的的C0端连接的是没有经过分频的输入信号,端连接的是没有经过分频的输入信号,C1连接的是连接的是10分频后的分频后的信号,信号,C2连接的是连接的是100分频后的信号。分频系数的选择信号由分频后的信号。分频系数的选择信号由SELO和和SEL1输入。分频后的信号通过输入。分频后的信号通过Fout引脚输出。引脚输出。 其仿真波形图如其仿真波形图如图图6-16所示。所

345、示。 下一页上一页6.2 完成工作任务的向导完成工作任务的向导7.量程指示电路量程指示电路 量程指示电路的作用是,根据分频电路的分频系数指示出当前应量程指示电路的作用是,根据分频电路的分频系数指示出当前应选择的单位。有选择的单位。有X 1 Hz ,X 10 Hz和和X 100 Hz二种。频率的测二种。频率的测量值为数码管的显示值与挡位值相乘的结果。由于在量程切换电路量值为数码管的显示值与挡位值相乘的结果。由于在量程切换电路中已经给出了挡位的切换信息,即:中已经给出了挡位的切换信息,即: 00为不分频,对应为不分频,对应X 1 Hz挡挡; 01为为10分频,对应分频,对应X 10 Hz挡挡; 1

346、0为为100分频,对应分频,对应X 100 Hz挡挡; 11则为超出测量范围的信号。则为超出测量范围的信号。 下一页下一页上一页6.2 完成工作任务的向导完成工作任务的向导 因此,量程指示电路的本质就是一个因此,量程指示电路的本质就是一个2-4译码器,将两位二进制译码器,将两位二进制数表示的数表示的4种状态翻译成对应的输出信号,驱动发光二极管显示。种状态翻译成对应的输出信号,驱动发光二极管显示。 Max+plus老式宏函数中老式宏函数中2-4译码器的型号为译码器的型号为74139。 该器件的功能表见该器件的功能表见表表6-4。 量程指示电路及其仿真波形图分别如量程指示电路及其仿真波形图分别如图

347、图6-17和和图图6-18所示。所示。 图图6-17中,中,SELO和和SELI是分频系数代表数据的输入端,输出端是分频系数代表数据的输入端,输出端中的中的Hz ,_10 Hz,_ 100 Hz, OV四个端口,分别代表四个端口,分别代表X 1 Hz挡、挡、X10Hz挡、挡、X100Hz挡、测量超范围等信息。挡、测量超范围等信息。上一页6.2 完成工作任务的向导完成工作任务的向导五、检查五、检查 以上对一个两位数字频率计的各组成部分进行了说明并给出了以上对一个两位数字频率计的各组成部分进行了说明并给出了参考电路,读者可自行按照本设计方案的组成原理框图参考电路,读者可自行按照本设计方案的组成原理

348、框图(如如图图6-1所所示示)将各部分连接起来,组成一个两位数字频率计。将各部分连接起来,组成一个两位数字频率计。 以下给出采用本方案设计而成的两位数字频率计的仿真波形图,以下给出采用本方案设计而成的两位数字频率计的仿真波形图,以供读者设计时参考。以供读者设计时参考。 X1Hz挡挡(图图6-19)。测试条件。测试条件:fc=8 Hz, fx=20 Hz。 图图6-19中,中,ST是挡位复位信号,率计能以最合适的挡位测量频率。是挡位复位信号,率计能以最合适的挡位测量频率。fc低电平有效。每次测量前都应复位,以便频是标准信号,低电平有效。每次测量前都应复位,以便频是标准信号,fx是待是待测信号,测

349、信号,q是计数器的计数值是计数器的计数值(在此是为了方便分析仿真结果而引出,在此是为了方便分析仿真结果而引出,实际使用时可不引出实际使用时可不引出)。下一页上一页6.2 完成工作任务的向导完成工作任务的向导 QT是锁存器的输出值是锁存器的输出值(实际使用时可不引出实际使用时可不引出),L和和H分别是个位分别是个位和十位数码管的段信号输出,和十位数码管的段信号输出,Hz,_ lOHz,_ 100Hz, OV是挡位信是挡位信号。号。图图6-19显示测量值为显示测量值为:21 X 1 Hz=21 Hz 。 X10Hz挡挡(图图6-20)。测试条件。测试条件:fc=8 Hz,fx=200 Hz。图图6

350、-20显示测量值为显示测量值为: 21X10Hz=210Hz。 X100Hz挡挡(图图6-21)。测试条件。测试条件:fc=8 Hz,fx=2 000 Hz。 图图6-21显示测量值为显示测量值为: 21 X 100 Hz=2 100 Hz 。 超出测量范围超出测量范围(图图6-22)。测试条件。测试条件:fc=8 Hz, fx=10 000 Hz。 本次测量超出测量范围,本频率计设计的测量范围是本次测量超出测量范围,本频率计设计的测量范围是19 900Hz。下一页下一页上一页六、评估六、评估 1.存在问题存在问题 本设计方案存在如下需要改进的问题本设计方案存在如下需要改进的问题: 频率计的测

351、量范围受到计数器位数的限制,读者可通过增加计频率计的测量范围受到计数器位数的限制,读者可通过增加计数器位数扩展测量范围。数器位数扩展测量范围。 两位数码管显示的精度不够高。建议读者自行设计多位显示。两位数码管显示的精度不够高。建议读者自行设计多位显示。 静态显示占用静态显示占用I/O引脚数量较多,特别是在多位显示中。建议引脚数量较多,特别是在多位显示中。建议改成动态显示。改成动态显示。 直接测量法存在直接测量法存在1量化误差,误差较大。量化误差,误差较大。 2.设计报告设计报告 设计报告应该包含所用的设计报告应该包含所用的EDA方法及知识点的总结,内容如下方法及知识点的总结,内容如下:6.2

352、完成工作任务的向导完成工作任务的向导返 回上一页 频率计设计要求及方案分析。频率计设计要求及方案分析。 频率计的整体设计思想及设计框图。频率计的整体设计思想及设计框图。 提供频率计各单元电路的具体设计说明、整体设计电路图及其提供频率计各单元电路的具体设计说明、整体设计电路图及其工作原理说明。工作原理说明。 频率计设计的重要调试过程,遇到具体问题的解决方法。频率计设计的重要调试过程,遇到具体问题的解决方法。 记录频率计的测频结果记录频率计的测频结果(高、中、低二频段高、中、低二频段),并对测频精度、,并对测频精度、响应速度及量程转换过程等作出分析。响应速度及量程转换过程等作出分析。 对扩大本频率

353、计的功能、提高频率计的性能的设计思路。对扩大本频率计的功能、提高频率计的性能的设计思路。 谈谈使用谈谈使用EDA方法设计电路的体会及方法设计电路的体会及EDA方法与传统设计方方法与传统设计方法的比较。法的比较。 总结本次设计的收获、存在问题。总结本次设计的收获、存在问题。6.2 完成工作任务的向导完成工作任务的向导下一页一、直接频率测量原理一、直接频率测量原理 无论采用何种方法测量频率,均是基于主门加计数器的结构而实无论采用何种方法测量频率,均是基于主门加计数器的结构而实现的,现的,图图6-23示出了计数式直接测频的原理方框图。其中主门具有示出了计数式直接测频的原理方框图。其中主门具有“与门与

354、门”的逻辑功能。主门的一个输入端送入的是待测频率的逻辑功能。主门的一个输入端送入的是待测频率fx,它是,它是由被测信号经放大整形后得到的。由被测信号经放大整形后得到的。 主门的另一个输入端送入的是来门控双稳的闸门时间信号主门的另一个输入端送入的是来门控双稳的闸门时间信号Ts。因。因为门控双稳是受时基为门控双稳是受时基(标准频率标准频率)信号控制的,所以信号控制的,所以Ts既准确又稳定。既准确又稳定。设计时通过品体振荡器和分频器的配合,可以获得设计时通过品体振荡器和分频器的配合,可以获得10 s, 1 s, 0.1 s等闸门时间。等闸门时间。6.3 相关技术基础知识与基本技能相关技术基础知识与基

355、本技能 由于主门的由于主门的“与与”功能,它的输出端只有在闸门信号功能,它的输出端只有在闸门信号Ts有效期有效期间才有频率间才有频率fx脉冲的输出,并送到计数器去计数。脉冲的输出,并送到计数器去计数。 计数值为计数值为 ,它与被测信号的频率,它与被测信号的频率fx成正比,由此成正比,由此可得频率计算公式为可得频率计算公式为 (6-1) 可见,当闸门时间可见,当闸门时间Ts为为1 s时,时,N的值即为被测信号的频率。的值即为被测信号的频率。因为各个闸门时间之间为因为各个闸门时间之间为10的倍数关系,所以当的倍数关系,所以当N以十进制数显以十进制数显示时,对界的取值不为示时,对界的取值不为1 s时

356、,只要移动小数点的位置就能直接显时,只要移动小数点的位置就能直接显示出所测频率的值。示出所测频率的值。下一页上一页6.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 该测频方法由于主门的开启时间与被测信号之间不同步,而使该测频方法由于主门的开启时间与被测信号之间不同步,而使计数值计数值N带有带有1量化误差量化误差(如如图图6-24所示所示),目当被测信号频率越,目当被测信号频率越低时,该量化误差的影响越大。若再考虑由晶体振荡器引起的闸门低时,该量化误差的影响越大。若再考虑由晶体振荡器引起的闸门时间误差,对式时间误差,对式(6-1)进行误差的积累与合成运算后,可得到计数式进行误差的积累

357、与合成运算后,可得到计数式直接测频误差的计算公式如下直接测频误差的计算公式如下: (6-2) 上式右边第一项为量化误差的相对值,其中上式右边第一项为量化误差的相对值,其中 第二项为闸门时间的相对误差。数值上等于晶体振荡器基准频率第二项为闸门时间的相对误差。数值上等于晶体振荡器基准频率的相对不确定度的相对不确定度 。下一页上一页6.3 相关技术基础知识与基本技能相关技术基础知识与基本技能二、间接频率测量原理二、间接频率测量原理 间接频率测量即为通过测量周期再经倒数运算而得到频率的间接间接频率测量即为通过测量周期再经倒数运算而得到频率的间接方法。该方法的原理框图与方法。该方法的原理框图与图图6-2

358、3所示类似,仅击将由晶振产生的所示类似,仅击将由晶振产生的标准频率和标准频率和fx调换位置,即以待测信号的高电平作为闸门时间。调换位置,即以待测信号的高电平作为闸门时间。三、等精度频率测量原理三、等精度频率测量原理 与直接测量法相比,等精度频率测量法的优点是,可在整个测频与直接测量法相比,等精度频率测量法的优点是,可在整个测频范围内获得同样高的测试精度和分辨率。范围内获得同样高的测试精度和分辨率。 等精度测量法的原理是,确定了计数器的计数开始和结束与闸门等精度测量法的原理是,确定了计数器的计数开始和结束与闸门门限的上升沿和下降沿的严格关系。当闸门门限的上升沿到来时,门限的上升沿和下降沿的严格关

359、系。当闸门门限的上升沿到来时,如果待测量信号的上升沿未到时两组计数器也不计数,如果待测量信号的上升沿未到时两组计数器也不计数,下一页上一页6.3 相关技术基础知识与基本技能相关技术基础知识与基本技能只有在待测量信号的上升沿到来时,两组计数器才开始计数只有在待测量信号的上升沿到来时,两组计数器才开始计数;当闸门门当闸门门限的下降沿到来时,如果待测量信号的一个周期未结束时两组计数器也限的下降沿到来时,如果待测量信号的一个周期未结束时两组计数器也不停止计数,只有在待测量信号的一个周期结束时两组计数器才停止计不停止计数,只有在待测量信号的一个周期结束时两组计数器才停止计数。数。 其实现原理如其实现原理

360、如图图6-25所示。所示。 在同一闸门时间在同一闸门时间 T 内分别对内分别对 fx 和和fc 进行计数,计数器进行计数,计数器 A 的计数值的计数值为为 ,计数器,计数器B的计数值为的计数值为 , 由于由于 ,则被测频率,则被测频率fx和周期和周期Tx分别为分别为 (6-3) (6-4)下一页上一页6.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 由式由式 (6-3) 和式和式 (6-4) 可知,等精度测量法的测量结果与闸门时可知,等精度测量法的测量结果与闸门时间无关。间无关。 等精度测量法中各信号的时序关系图如等精度测量法中各信号的时序关系图如图图6-26所示。所示。 由由图图

361、6-26可知,在同步电路可知,在同步电路(D触发器触发器)的作用下,计数闸门信号与被的作用下,计数闸门信号与被测信号同步,实现同步开门,并且开门时间测信号同步,实现同步开门,并且开门时间 T 准确地等于被测信号周期准确地等于被测信号周期的整数倍,故式的整数倍,故式 (6-3) 和式和式 (6-4) 中的计数值中的计数值 从没有从没有1量化误差。量化误差。计数值计数值 虽有虽有1量化误差,但由于一般关都在儿十兆赫兹以上,因此量化误差,但由于一般关都在儿十兆赫兹以上,因此测量误差小于测量误差小于 ,且该误差与被测频率,且该误差与被测频率fx无关,因此在整个测量范围内,无关,因此在整个测量范围内,能

362、够实现等精度的测量,该测试方法需要的除法运算功能,用能够实现等精度的测量,该测试方法需要的除法运算功能,用Max+plus老式宏函数无法实现,可使用老式宏函数无法实现,可使用VHDL编程实现。编程实现。返 回上一页6.3 相关技术基础知识与基本技能相关技术基础知识与基本技能返 回6.4 本章小结本章小结 本章的工作任务是应用原理图设计法设计一个两位数字频率本章的工作任务是应用原理图设计法设计一个两位数字频率计,设计采用计,设计采用FPGA现场可编程门阵列为控制核心,通过原理图现场可编程门阵列为控制核心,通过原理图设计法设计,在设计法设计,在Quartus6.0平台上编译、仿真、调试,达到了平台

363、上编译、仿真、调试,达到了设计要求。设计要求。两位数字颇率计设计任务的陈述与背景两位数字颇率计设计任务的陈述与背景两位数字频率计原理图设计的任务引导两位数字频率计原理图设计的任务引导各模块电路参考设计各模块电路参考设计 图图6-1 数字频率计组成框图数字频率计组成框图返 回 图图6-1 数字频率计组成框图数字频率计组成框图返 回 图图6-2 10 X 10进制计数器进制计数器返 回 图图6-3 Max+plus II老式宏函数老式宏函数 的调用窗口的调用窗口返 回 图图6-2 10 X 10进制计数器进制计数器返 回 图图6-4 仿真结果波形仿真结果波形返 回 图图6-5 元件图元件图返 回

364、图图6-6 控制信号时序图控制信号时序图返 回 图图6-6 控制信号时序图控制信号时序图返 回 图图6-7 控制电路控制电路返 回 图图6-7 控制电路控制电路返 回 图图6-8 控制电路仿真波形图控制电路仿真波形图返 回 图图6-8 控制电路仿真波形图控制电路仿真波形图返 回 图图6-9 锁存电路锁存电路返 回 图图6-10 锁存电路仿真波形图锁存电路仿真波形图返 回 图图6-11 74248显示效果图显示效果图返 回 图图6-12 显示译码电路显示译码电路返 回 图图6-13 显示电路仿真波形图显示电路仿真波形图返 回 图图6-14 量程切换电路量程切换电路 返 回 图图6-15 分频电路

365、分频电路返 回 图图6-16 分频电路仿真波形图分频电路仿真波形图返 回 图图6-17 量程指示电路量程指示电路返 回 图图6-18 仿真波形图仿真波形图返 回 图图6-19 X1 Hz档仿真波形图档仿真波形图返 回 图图6-19 X1 Hz档仿真波形图档仿真波形图返 回 图图6-20 X10 Hz档仿真波形图档仿真波形图返 回 图图6-21 X100 Hz档仿真波形图档仿真波形图返 回 图图6-22 测量超范围仿真图测量超范围仿真图返 回 图图6-23 计数式直接测频原理框图计数式直接测频原理框图返 回 图图6-23 计数式直接测频原理框图计数式直接测频原理框图返 回图图6-24 1量化误差

366、时序分析图量化误差时序分析图返 回 图图6-25 等精度测频原理图等精度测频原理图返 回 图图6-26 时序关系图时序关系图返 回 表表6-1 74293功能表功能表返 回 表表6-2 74273功能表功能表返 回下一页 表表6-3 74128功能表功能表 表表6-3 74128功能表功能表返 回上一页 表表6-4 74139功能表功能表返 回 【要求】【要求】 掌握掌握VHDL语言中的各模块的设计及最后各模块的组装语言中的各模块的设计及最后各模块的组装 【知识点】【知识点】l 理解理解EDA的分频设计的分频设计l 理解理解VHDL程序计数器的设计程序计数器的设计l 理解理解VHDL程序锁存器

367、的设计程序锁存器的设计l 理解理解VHDL程序档位转换及数码管显示的设计程序档位转换及数码管显示的设计l 理解理解VHDL程序元件的例化与组装程序元件的例化与组装 【重点和难点】【重点和难点】l 频率计的测频原理频率计的测频原理l VHDL程序计数器的设计程序计数器的设计l VHDL程序数码管显示的设计程序数码管显示的设计下一页第第7章章 应用应用VHDL语言方法设计语言方法设计 具有换挡功能的四位数字频率计具有换挡功能的四位数字频率计第第7章章 应用应用VHDL语言方法设计语言方法设计 八位二进制加法器八位二进制加法器7.1 工作任务的陈述与背景工作任务的陈述与背景7.2 完成工作任务的引导

368、完成工作任务的引导7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能7.3 本章小结本章小结上一页一、任务的陈述一、任务的陈述 设计一带进位功能的四位数码管显示的频率计,其卞要参数如下设计一带进位功能的四位数码管显示的频率计,其卞要参数如下: 频率计的测量范围为频率计的测量范围为:0 Hz1 MHz; 频率计具有自动量程转化功能频率计具有自动量程转化功能; 频率计通过四位数码管显示测量的频率。频率计通过四位数码管显示测量的频率。二、项目的背景二、项目的背景 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他

369、信号的频率。通常情况下计算每秒内待测信号的脉冲个对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为数,此时我们称闸门时间为1 s。 闸门时间也可以大于或示于闸门时间也可以大于或示于1 s。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长频率的间隔就越长; 闸门时间越短,测得频率值刷新就越快,但测得闸门时间越短,测得频率值刷新就越快,但测得的频率精度就受影响。的频率精度就受影响。7.1 工作任务的陈述与背景工作任务的陈述与背景返 回下一页7.2 完成工作任务的引导完成工作任务

370、的引导一、资讯一、资讯 由前述可知,要完成好该工作任务,需要准备以下几个方面的知识由前述可知,要完成好该工作任务,需要准备以下几个方面的知识: 时钟分频的原理及实现的方法。时钟分频的原理及实现的方法。 计数器的知识。计数器的知识。 信号锁存的原理。信号锁存的原理。 数码管译码显示、片选及动态扫描的知识。数码管译码显示、片选及动态扫描的知识。 数字频率计的工作原理。数字频率计的工作原理。二、计划二、计划 数字频率计的测频方法有等精度测频和计数测频,从实现的技术手数字频率计的测频方法有等精度测频和计数测频,从实现的技术手段来看目前可采取的有段来看目前可采取的有:下一页上一页7.2 完成工作任务的引

371、导完成工作任务的引导 采用示规模数字集成电路制作采用示规模数字集成电路制作; 采用单片机进行测频控制采用单片机进行测频控制; 采用现场可编程门阵列采用现场可编程门阵列(FPGA)为控制核心。为控制核心。三、决策三、决策 采用现场可编程门阵列采用现场可编程门阵列(FPGA)为控制核心,利用为控制核心,利用VHDL语言编程,语言编程,将所有器件集成在一块芯片上,体积大大减示的同时还提高了稳定性,将所有器件集成在一块芯片上,体积大大减示的同时还提高了稳定性,可实现大规模和超大规模的集成电路,测频测量精度高,测量频率范围可实现大规模和超大规模的集成电路,测频测量精度高,测量频率范围大,而且编程灵活、调

372、试方便。大,而且编程灵活、调试方便。 综合上述分析,本设计采用现场可编程门阵列综合上述分析,本设计采用现场可编程门阵列(FPGA)为控制核心测为控制核心测量方案。量方案。下一页上一页四、实施四、实施 (一一)设计任务的详细描述设计任务的详细描述 设计一个频率计,其频率测量范围为设计一个频率计,其频率测量范围为1 Hz1 MHz,显示器件为,显示器件为4个个8段数码管段数码管(带示数显示带示数显示)。根据测量所得的结果,可以白动转换量程。根据测量所得的结果,可以白动转换量程来显示输出的结果来显示输出的结果: 如频率为如频率为100 Hz,显示为,显示为F100; 如频率为如频率为5 kHz,显示

373、为,显示为5.000; 如频率为如频率为50 kHz,显示为显示为50.00; 如频率为如频率为500 kHz,显示为,显示为500.0; 当输入的频率超过量程当输入的频率超过量程(1 MHz)时,数码管灭时,数码管灭(不显示不显示)。7.2 完成工作任务的引导完成工作任务的引导 为了与实际工程设计更贴近,我们选择天津启东科技公司的为了与实际工程设计更贴近,我们选择天津启东科技公司的TQD-CYC 1C3 FPGA+MCU开发板作为项目的硬件开发平台,整开发板作为项目的硬件开发平台,整个项目代码最后下载至开发板上进行验证个项目代码最后下载至开发板上进行验证(相关程序代码稍做修改也可相关程序代码

374、稍做修改也可用于康芯用于康芯GW48EDA_PK2/PK3实验箱上实验箱上)。 (二二)设计方案设计方案 计划将整个项目在开发板上实现。根据开发板上的硬件电路及设计计划将整个项目在开发板上实现。根据开发板上的硬件电路及设计任务的要求,对系统设计方案进行化分,将整个项目进行模块划分。任务的要求,对系统设计方案进行化分,将整个项目进行模块划分。 1.时钟模块时钟模块 开发板上系统的时钟为开发板上系统的时钟为20 MHz,如,如图图7-1所示。所示。 测频的闸门信号为测频的闸门信号为1 S的高电平信号,同时将测频所得结果显示出的高电平信号,同时将测频所得结果显示出来,在数码管显示时采用动态扫描的方法

375、,需要产生来,在数码管显示时采用动态扫描的方法,需要产生1 kHz的扫描信的扫描信下一页上一页7.2 完成工作任务的引导完成工作任务的引导号,所以要对系统的号,所以要对系统的20 MHz时钟信号进行分频,以产生符合要求的时钟信号进行分频,以产生符合要求的各频率信号各频率信号: 先由系统时钟先由系统时钟20 MHz分频出分频出1 kHz,再由,再由1 kHz分频出分频出1 Hz,由,由1 Hz的信号产生的信号产生1 s的计数闸门信号脉冲。该模块作为系统的第的计数闸门信号脉冲。该模块作为系统的第一个模块,还要接受测量信号的输入,同时我们还给整个系统定义系一个模块,还要接受测量信号的输入,同时我们还

376、给整个系统定义系统复位。统复位。 由以上分析,可得出该模块的系统框图如由以上分析,可得出该模块的系统框图如图图7-2所示。所示。 图图7-2中,中,Reset为复位引脚,为复位引脚,clk为开发板系统时钟的输入,为开发板系统时钟的输入,clklk为为1 kHz的输出信号,的输出信号,tgate为为1 s的闸门输出信号。的闸门输出信号。 下一页上一页7.2 完成工作任务的引导完成工作任务的引导 2.计数模块计数模块(图图7-3) 在闸门脉冲电平为在闸门脉冲电平为1时闸门开启,计数器开始计数,在闸门脉冲电时闸门开启,计数器开始计数,在闸门脉冲电平为平为0时,闸门关闭,计数器停止计数。时,闸门关闭,

377、计数器停止计数。 同时,锁存器产生一个锁存信号输送到锁存器的使能端将结果锁存,同时,锁存器产生一个锁存信号输送到锁存器的使能端将结果锁存,并把锁存结果输送到译码器来控制七段显示器,这样就可以得到被测并把锁存结果输送到译码器来控制七段显示器,这样就可以得到被测信号的数字显示的频率。信号的数字显示的频率。 在闸门脉冲的下降沿到来时控制电路将计数器情零,为下一次测量在闸门脉冲的下降沿到来时控制电路将计数器情零,为下一次测量做准备,实现了可重复使用,避免两次测量结果相加使结果产生错误。做准备,实现了可重复使用,避免两次测量结果相加使结果产生错误。 在整个电路中,计数模块电路是关键,闸门信号脉冲宽度是否

378、精确在整个电路中,计数模块电路是关键,闸门信号脉冲宽度是否精确直接决定了测量结果是否精确。直接决定了测量结果是否精确。下一页上一页7.2 完成工作任务的引导完成工作任务的引导下一页上一页7.2 完成工作任务的引导完成工作任务的引导 3.锁存模块锁存模块(图图7-4) 锁存器在闸门信号关闭前锁存器在闸门信号关闭前(检测闸门信号下降沿检测闸门信号下降沿)实现锁存,并把锁实现锁存,并把锁存结果输送到译码器来控制八段数码显示器。存结果输送到译码器来控制八段数码显示器。 4.显示模块显示模块(图图7-5) 显示模块将锁存模块送过来的数值进行译码显示,并根据锁存模块显示模块将锁存模块送过来的数值进行译码显

379、示,并根据锁存模块送来的挡位信号确定示数点显示的位置以实现挡位的显示。送来的挡位信号确定示数点显示的位置以实现挡位的显示。(三三)模块的设计及实现模块的设计及实现1.时钟分频时钟分频 分频原理及分频系数的设定分频原理及分频系数的设定: 开发板的时钟频率设为开发板的时钟频率设为20 MHz,而为了给其他模块提供所需的各,而为了给其他模块提供所需的各时钟,需对时钟,需对20 MHz的时钟进行分频的时钟进行分频: 从从20 MHz分频得到分频得到1 kHz; 从从1 kHz分频得到分频得到1 Hz; 由由1 Hz得到占空比为得到占空比为1/4高电平时间为高电平时间为1 s的闸门信号。的闸门信号。 分

380、频原理及分频系数的设定分频原理及分频系数的设定:为了从为了从20 MHz分频得到分频得到1 kHz,我们设定为一次分频,即由我们设定为一次分频,即由20 MHz分频为分频为1 MHz,由,由1 MHz分频分频得得1 kHz。须设定分频的系数。须设定分频的系数:20 MHz与与1 MHz相差相差20倍,倍,20/2=10,设定分频变量为,设定分频变量为09,1 MHz与与1 kHz相差相差1 000倍,倍,1 000/2=500,所以可以设分频的变量为,所以可以设分频的变量为VARIABLE cnt : INTEGERRANGE 0 TO 499,而从,而从1 kHz分频得到分频得到1 Hz,设

381、分,设分频变量为频变量为0499。下一页上一页7.2 完成工作任务的引导完成工作任务的引导 2.计数模块计数模块 (1)计数的原理及采用的计数方法计数的原理及采用的计数方法 采用在闸门信号开启期间对输入信号脉冲进行计数的方法进行测频,采用在闸门信号开启期间对输入信号脉冲进行计数的方法进行测频,当闸门信号开启时计数,当闸门信号关闭时停止计数,在当闸门信号开启时计数,当闸门信号关闭时停止计数,在1 s内计得的内计得的脉冲数即为输入信号的频率。由于频率计的计数值最大为脉冲数即为输入信号的频率。由于频率计的计数值最大为1M,因此代,因此代码中用码中用6个信号量个信号量(c1c6)来存储从第一位至第六位

382、相对应的每一位的来存储从第一位至第六位相对应的每一位的数值。从数值。从c1 c6为逢为逢10进一位,所以进一位,所以c1 c6中存储的是输入信号的中存储的是输入信号的十进制的数值。十进制的数值。 (2)计数值的挡位划分计数值的挡位划分 由于数码管显示的为由于数码管显示的为4位数值,而计数值最高为位数值,而计数值最高为6位数值,因此对计位数值,因此对计数值进行分挡编码,以便用数值进行分挡编码,以便用4位数码管通过示数点的定位来显示位数码管通过示数点的定位来显示6位数位数下一页上一页7.2 完成工作任务的引导完成工作任务的引导值。当计数值示于值。当计数值示于4位计数值时,数码管尤示数位数显示位计数

383、值时,数码管尤示数位数显示;当计数值当计数值大于大于4位计数值时,取计数值高位计数值时,取计数值高4位,通示数点定位来显示数值。位,通示数点定位来显示数值。 挡位划分见挡位划分见表表7-1。3.锁存模块锁存模块 在闸门信号的下降沿,对输入的在闸门信号的下降沿,对输入的16位的计数值位的计数值q及挡位信号及挡位信号scale进行锁存,由于锁存是对闸门信号的下降沿进行检测完成锁进行锁存,由于锁存是对闸门信号的下降沿进行检测完成锁存的,因此能将存的,因此能将scale数值在数值在reset复位复位(计数模块中的端口信计数模块中的端口信)前前锁存。锁存。 锁存模块的作用锁存模块的作用:设置锁存模块,既

384、可避免计数值的丢失,还可设置锁存模块,既可避免计数值的丢失,还可以避免闸门信号计数期间,频率计的显示随着计数值的增加不断变以避免闸门信号计数期间,频率计的显示随着计数值的增加不断变化、闪烁。化、闪烁。 下一页上一页7.2 完成工作任务的引导完成工作任务的引导4.显示模块显示模块 将计数器所计得的数值显示出来,并通过挡位信号,完成示数点定位将计数器所计得的数值显示出来,并通过挡位信号,完成示数点定位显示,通过显示示数点位置不同的数值来完成相应挡位的自动转换。显显示,通过显示示数点位置不同的数值来完成相应挡位的自动转换。显示模块对数值的显示译码要与设计的数码管驱动电路相对应。开发板上示模块对数值的

385、显示译码要与设计的数码管驱动电路相对应。开发板上的数码管为的数码管为6连排数码管,它们的位段信号端连排数码管,它们的位段信号端(称为数据端称为数据端)接在一起,接在一起,同时还有同时还有6个位选信号个位选信号(称为控制端称为控制端)用于分别选中要显示数据的数码管。用于分别选中要显示数据的数码管。根据开发板的电路及设计要求,显示模块采用显示采用扫描驱动显示,根据开发板的电路及设计要求,显示模块采用显示采用扫描驱动显示,并以七段译码的方式输出。并以七段译码的方式输出。 5.顶层模块顶层模块 采用原理图方式进行组装,具体方法参考采用原理图方式进行组装,具体方法参考7.3节有关内容。节有关内容。下一页

386、上一页7.2 完成工作任务的引导完成工作任务的引导五、检查五、检查 分别编译各底层模块和整个电路设计,并分别仿真时钟分频、计分别编译各底层模块和整个电路设计,并分别仿真时钟分频、计数模块、锁模块、显示模块、顶层模块。通过后,若有条件,应将数模块、锁模块、显示模块、顶层模块。通过后,若有条件,应将源代码下载到硬件中做最后的验证。源代码下载到硬件中做最后的验证。六、评估六、评估 对本次设计进行评估,可尝试更好的方案、方法。写出设计报告,对本次设计进行评估,可尝试更好的方案、方法。写出设计报告,设计报告应包括所应用到的设计报告应包括所应用到的EDA方法及知识的总结。方法及知识的总结。返 回上一页7.

387、2 完成工作任务的引导完成工作任务的引导一、时钟模块参考设计一、时钟模块参考设计-clock.vhd-LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY clock IS PORT( 7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 -复位信号复位信号 reset: IN STD_LOGIC; clk: IN STD_LOGIC; -闸门信号

388、闸门信号 tgate: OUT STD_LOGIC; -1 kHz显示扫描时钟显示扫描时钟 clklk: OUT STD_LOGIC );END clock;ARCHITECTURE rtl of clock IS -常数说明常数说明CONSTANT RESET ACTIVE : STD LOGIC:=1;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能-信号说明信号说明 SIGNAL c1k1M_reg: STD_LOGIC; SIGNAL clklk_reg: STD_LOGIC; SIGNAL c1k1Hz: STD_LOGIC; SIGNAL tgate_reg

389、: STD_LOGIC; BEGIN- 1MHz时钟时钟 - ClkIM_Proc: PROCESS(reset,clk) VARIABLE cnt0: INTEGER RANGE 0 TO 9;下一页上一页BEGIN IF reset=RESET ACTIVE THEN cnt0:=0; ELSIF rising_edge(clk) THEN IF cnt0 =9 THEN cnt0:=0; c1k1M_reg=not c1k1M_reg; ELSE cnt0:=cnt0+1 END IF; END IF;END PROCESS;7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能

390、- -1 kHz显示扫描时钟显示扫描时钟-Clklk_Froc: PROCESS(reset,clklM_reg)VARIABLE cnt: INTEGER RANGE 0 TO 500;BEGIN IF reset=RESET ACTIVE THEN cnt:=0; ELSIF rising_edge(c1k1M_reg) THEN IF cnt =499 THEN cnt:=0; clk lk_reg=not clk lk_reg; 下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 ELSE cnt:=cnt+1; END IF; END IF;END PROCES

391、S;clklk=clklk_reg;- 1 kHz分频得到分频得到1 Hz-Clk1Hz_Proc: PROCESS( reset, clklk_reg)VARIABLE cnt2: INTEGER RANGE 0 TO 499;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 BEGIN IF reset=RESET ACTIVE THEN cnt2:=0; ELSIF rising_edge(clklk_reg) THEN IF cnt2 -499 THEN cnt2:=0; clkl Hz=not c1k1Hz; ELSE cnt2:=cnt2+1; END IF

392、; END IF;END PROCESS;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能-一占空比为一占空比为1 /4频率为频率为0.25 Hz的闸门信号的闸门信号-Tgate_Froc: PROCESS( reset ,clklHz)VARIABLE cnt3:INTEGER RANGE 0 TO 3;BEGIN IF reset=RESET ACTIVE THEN cnt3:=0; tgate_reg=0; ELSIF rising_edge(c1k1Hz) THEN IF cnt3=2 TH

393、EN tgate reg=1; cnt3:=3; ELSIF cnt3=3 THEN tgate_reg=0; cnt3:=0; ELSE cnt3:=cnt3+1; END IF; END IF; END PROCESS; tgate =tgate_reg; END rtl;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能工程项目的建立及仿真工程项目的建立及仿真: 首先打开首先打开Quartus软件,选择建立新工程项目选项,在出现的器件软件,选择建立新工程项目选项,在出现的器件选择窗口中可选择开发板所用的芯片选择窗口中可选择开发板所用的芯片EP1C3144C8(也可在

394、以后锁定也可在以后锁定引脚时指定芯片的型号引脚时指定芯片的型号),如,如图图7-6所示。所示。 按提供的示例代码建立按提供的示例代码建立clokc.vhd文件后编译。编译通过则说明文件后编译。编译通过则说明clokc.vhd文件没有语法错误,但不一定符合设计的要求,为了验证文件没有语法错误,但不一定符合设计的要求,为了验证文件是否符合设计,须对该文件建行仿真。文件是否符合设计,须对该文件建行仿真。 时钟模块时钟模块clokc.vhd的仿真步骤如下的仿真步骤如下: 1.仿真文件的建立仿真文件的建立(图图7-7) 2.添加仿真的各个端口添加仿真的各个端口(图图7-8) 3.设计各仿真的参数设计各仿

395、真的参数下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 设定输入端口设定输入端口clk的频率为的频率为20 MHz; 由于只击对模块功能进行验证,修改仿真的模式为由于只击对模块功能进行验证,修改仿真的模式为Functional,如,如图图7-9所示。所示。 对时钟模块仿真时要特别注意,由于从对时钟模块仿真时要特别注意,由于从20 MHz分频至分频至0.25 Hz 闸门信号的仿真运算量太大,是无法完成一个闸门信号周期的仿真的。闸门信号的仿真运算量太大,是无法完成一个闸门信号周期的仿真的。但由时钟模块的但由时钟模块的VHDL文件可以看出,我们是分步完成分频的,从文件可以看

396、出,我们是分步完成分频的,从20 MHz分频到分频到1 kHz与从与从1 kHz分频到分频到0.25 Hz的算法是一致的,所的算法是一致的,所以只需仿真出以只需仿真出1 kHz信号即可认为时钟模块代码是正,确。信号即可认为时钟模块代码是正,确。 设定仿真的时间为设定仿真的时间为10 ms,仿真结果如,仿真结果如图图7-10所示。查看仿真结所示。查看仿真结果可知,果可知,clklk输出信号的周期为输出信号的周期为1 ms,程序达到了分频要求。,程序达到了分频要求。下一页上一页 7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能二、计数模块参考设计二、计数模块参考设计 -counter.

397、vhd-LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY counter IS port( -全局复位全局复位 reset: IN STD_LOGIC;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 -闸门信号闸门信号 tgate: IN STD_LOGIC; -待测信号待测信号 tsig: IN STD_LOGIC; -计数输出计数输出 q:OUT STD_LOGIC_VECTOR(15 DOWNTO

398、 0); -挡位输出挡位输出 scale: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END counter;ARCHITECTURE rtl of counter IS-常数说明常数说明CONSTANT RESET_ACTIVE:STD_LOGIC:=0;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 -信号说明信号说明SIGNAL c1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c2:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c3:STD_LOGIC_VECTOR(3 DOWNTO

399、 0);SIGNAL c4:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c5:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c6:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL scale_reg: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL overflow: STD_LOGIC;BEGINCOUNT_PROC:PROCESS(reset,tsig,tgate)下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 BEGIN IF reset=RESET ACTIVE

400、 THEN c1=0000 ; c2=0000 ; c3=0000 ; c4=0000 ; c5=0000 ; c6=0000 ; overflow=0; ELSIF rising_edge(tsig) THEN IF tgate=1 THEN 下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能IF c1”1001 THEN c1=c1+1; ELSE c1=0000; IF c21001 THEN c2=c2+1; ELSE c2=0000 ; IF c3”1001 THEN c3=c3+1; ELSE c3=0000; 下一页上一页7.3 相关技术基础知识与基本技能相

401、关技术基础知识与基本技能 IF c4”1001 THEN c4=c4+1; ELSE c4=0000 ; IF c5”1001 THEN c5=c5+1; ELSE c5=0000 ; IF c6”1001 THEN c6=c6+1; ELSE -计数溢出计数溢出 overflow= 1;下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 END IF; END IF; END IF; END IF; END IF; END IF; END IF; END IF; END PROCESS:SCALE_PROC:PROCESS(reset,cl,c2,c3,c4,c5,c6

402、,overflow)BEGIN IF reset=RESET ACTIVE THEN 下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能 scale_ref=1MHz scale_ref=001;ELSIF c6/=0000 THEN -100.0 kHz - 999.9 kHz q=c6&c5&c4&c3; scale_ref=010;ELSIF c5/=0000 THEN -10.00 kHz一一99.99 kHz q=c5&c4&c3&c2; scale_reg=011; 下一页上一页7.3 相关技术基础知识与基本技能相关技术基础知识与基本技能下一页上一页7.3 相

403、关技术基础知识与基本技能相关技术基础知识与基本技能 ELSIF c4/=0000 THEN -1.000 kHz一一9.999kHz q=c4&c3&c2&c1; scale_ref=”100; ELSE -1Hz - 999Hz q=”1111&c3&c2&c1; scale_ref=”101; END IF; END PROCESS; scale=scale_reg;END rtl;下一页上一页 计数模块对应不同频率时仿真的输出数值和对应的挡位输出。计数模块对应不同频率时仿真的输出数值和对应的挡位输出。 计数模块中将复位信号与闸门信号相连,当闸门信号关闭时计计数模块中将复位信号与闸门信号相

404、连,当闸门信号关闭时计数模块复位情零,所以计数模块为低电平复位。在设定复位信号与数模块复位情零,所以计数模块为低电平复位。在设定复位信号与闸门信号脉冲时应使两者信号一致。闸门信号脉冲时应使两者信号一致。 设定输入信号频率为设定输入信号频率为5 000 Hz(周期为周期为200 s),如,如图图7-11所示。所示。 仿真结果如仿真结果如图图7-12所示。所示。 仿真所得结果数值的判断仿真所得结果数值的判断: 输入输入5 000 Hz信号,正确,与挡位相符合。信号,正确,与挡位相符合。 由于由于q是输出端口,输出的数值为是输出端口,输出的数值为q=5000,输出的挡位,输出的挡位7.3 相关技术基

405、本知识与基本技能相关技术基本知识与基本技能下一页上一页为为100,计数值在,计数值在reset情零前已输出至端口,因此闸门信号关情零前已输出至端口,因此闸门信号关闭后数值不改变,而闭后数值不改变,而scale输出端口是通过信号输出端口是通过信号scale_reg传递传递数值的,在数值的,在SCALE_PROC进程中,由于进程中,由于 IF reset = RESET_ACTIVE THEN scale reg=000; 因而仿真在闸门信号关闭后输出为因而仿真在闸门信号关闭后输出为0,但可以通过后面的锁存,但可以通过后面的锁存模块,通过对闸门信号下降沿的检测完成对模块,通过对闸门信号下降沿的检测

406、完成对scale情零前的锁存情零前的锁存输出。输出。 scale挡位随挡位随q计数值的改变计数值的改变: 当当q计数值由二位数变化为计数值由二位数变化为四位数后,四位数后,scale挡位应由挡位应由101变化为变化为100。 7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 对对scale数值由数值由101变化为变化为100处的仿真图形放大观察,可以看处的仿真图形放大观察,可以看到此时到此时q的数值由的数值由999变化为变化为1 000,与挡位转换表的要求相符,如,与挡位转换表的要求相符,如图图7-13所示。所

407、示。 将仿真图形放大,查看输入信号脉冲计数及相应的进位,如将仿真图形放大,查看输入信号脉冲计数及相应的进位,如图图7-14所示。所示。 由仿真图形可知,对输入信号的每一个脉冲,计数信号由仿真图形可知,对输入信号的每一个脉冲,计数信号c1都增加都增加1,当,当c1增加至增加至10时,时,c1情零并向情零并向c2进一位,符合我们十进制数的进一位,符合我们十进制数的计数和进位要求。计数和进位要求。 由仿真所得的结果,可知设计达到了要求。由仿真所得的结果,可知设计达到了要求。下一页上一页7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能三、锁存模块参考设计三、锁存模块参考设计-lock.vh

408、d-LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY lock IS PORT( -闸门信号闸门信号 tgate:IN STD_LOGIC;下一页上一页 -输入信号输入信号 q_in:IN STD_LOGIC_VECTOR(15 DOWNTO 0); scale_in: IN STD_LOGIC_VECTOR(2 DOWNTO 0); -锁存信号锁存信号 q-lock:OUT STD_LOGIC_VECTOR(15 DOWNTO

409、 0); scale_lock:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END lock;ARCHITECTURE rtl of lock IS 7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 BEGIN LOCK_PROC:PROCESS(tgate) BEGIN IF falling_edge(tgate) THEN q_lock=q_in; scale_lock Fresent_State_Register: PROCESS(reset,clklk); BEGIN IF reset=RESET ACTIVE THEN count=11 THEN

410、 count=00; ELSE count=count+O1; END IF; END IF; CASE count IS7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 -第一个数码管亮第一个数码管亮 sel_reg=0001; q_reg sel_reg=0010; q_reg sel reg=0100; q_reg sel_reg=”1000; q_reg -所有数码管全灭所有数码管全灭 sel_reg=0000; q_red=0000 ; END CASE; END PROCESS; -注意注意:sho

411、w reg不包含示数点位不包含示数点位 下一页上一页 WITH q_reg SELECT show_reg=0111111 WHEN 0000, 0000110 WHEN 0001, 1011011 WHEN 0010, 1001111 WHEN 0011, 1100110 WHEN 0100, 1101101 WHEN 0101, 1111101 WHEN 0110, 0100111 WHEN 0111, 1111111 WHEN”1000, 1101111 WHEN”1001, 0000000 WHEN others; 7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能show=

412、 1&show reg WHEN (sel_reg=0010 AND scale=010) OR (sel_reg=0100 AND scale=01l) OR (sel_reg=”1000 AND scale=”100) ELSE -超量程时,超量程时,4位数码管全灭位数码管全灭 00000000 WHEN scale=001 ELSE 0&show_reg; sel=sel_reg;END rtl; 7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页程序代码解释程序代码解释: 数码管的显示代码数码管的显示代码: 通过通过count变量的改变完成数码管片选扫描。变量的改

413、变完成数码管片选扫描。 sel_reg=0001; q_reg=q(3 DOWNTO 0) (第第4位数码的片选和显示数值的传递位数码的片选和显示数值的传递) sel_reg=0010; q_reg=q(7 DOWNTO 4); (第第3位数码的片选和显示数值的传递位数码的片选和显示数值的传递) sel_reg=0100; q_reg=q(11 DOWNTO 8); 7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页下一页上一页7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 (第第2位数码的片选和显示数值的传递位数码的片选和显示数值的传递) sel_reg=

414、”1000; q_reg=q(15 DOWNTO 12); (第第4位数码的片选和显示数值的传递位数码的片选和显示数值的传递) 通过以上语句,将十六位的二进计数值由高至低、四位一组传递到通过以上语句,将十六位的二进计数值由高至低、四位一组传递到要显示的相对应的数码管。要显示的相对应的数码管。 通过通过Show_reg =“0111111” WHEN “0000”,-数码管显示数码管显示0 “0000110” WHEN “0001”,-数码管显示数码管显示1 “1011011“ WHEN ”0010”,-数码管显示数码管显示2 “1001111” WHEN “0011”,-数码管显示数码管显示3

415、 下一页上一页 “1100110” WHEN “0100”,-数码管显示数码管显示4 “1101101” WHEN “0101”,-数码管显示数码管显示5 “1111101” WHEN “0110”,-数码管显示数码管显示6 “0100111” WHEN “0111”,-数码管显示数码管显示7 “1111111” WHEN “1000”,-数码管显示数码管显示8 “1101111” WHEN “1001”,-数码管显示数码管显示9 “0000000” WHEN others; -数数4已管不显示已管不显示 语句完成数码管数值显示的译码。语句完成数码管数值显示的译码。通过通过show=1&sho

416、w_reg WHEN (sel_reg= 0010 AND scale=010) OR 7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页 (sel_reg =0100 AND scale =01l) OR (sel_reg =”1000 AND scale =”100) ELSE -超量程时,超量程时,4位数码管全灭位数码管全灭 “00000000” WHEN scale=“001” ELSE o&show_reg; 语句完成示数点该在哪位数码管显示。语句完成示数点该在哪位数码管显示。 2.显示模块的仿真显示模块的仿真 显示模块的仿真参数的设定显示模块的仿真参数的设定:

417、clklk周期为周期为1 ms, reset=0,仿真,仿真时间定为时间定为3 s; 对对q的值设定的值设定(十六进制十六进制): 01s期间为期间为0123,1 2 s期间为期间为4500,23 s期间为期间为6789。 7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 对对scale的值设定的值设定(二进制二进制): 01 s期间为期间为q=0123时相对应的时相对应的挡位值为挡位值为101,1 3 s期间为期间为q = 4500, q = 6789时相对应的时相对应的挡位值为挡位值为100。 通过对输入的

418、端口通过对输入的端口q和和scale不同值的设定,在仿真结果中就可以不同值的设定,在仿真结果中就可以检查是否能正,确地显示数值检查是否能正,确地显示数值09及正确的数值的示数点定位。及正确的数值的示数点定位。 q = 0123时得到的仿真波形如时得到的仿真波形如图图7-17所示。所示。 查对应的数码管译码显示,查对应的数码管译码显示, 可知第四位显示为可知第四位显示为3(sel: 0001 show : 01001111) 第三位显示为第三位显示为2(sel: 0010 show: 01011011), 第二位数显示为第二位数显示为1(sel: 0100 show: 00000110), 第一

419、位显示为第一位显示为0(情注意,由于只是对情注意,由于只是对display单个模块仿真,单个模块仿真,下一页上一页7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能对对q值的输入是十六进制,数值前加了值的输入是十六进制,数值前加了0,所以数码显示出,所以数码显示出0,但下载,但下载到开发板后,数值前的到开发板后,数值前的0是不显示的是不显示的),数码管显示的数值由高到低的,数码管显示的数值由高到低的值为值为0123,与输入的,与输入的q值相符。值相符。q = 4500时得到的仿真波形如时得到的仿真波形如图图7-18所示。所示。 查对应的数码管译码显示,可知第四、第二位显示为查对应的数

420、码管译码显示,可知第四、第二位显示为0(sel: 0001 0010 show:0 0111111),第一位显示为,第一位显示为5(sel: 010 show: 01101101),第一位数码管显示与前面不同,其最高位为,第一位数码管显示与前面不同,其最高位为数值数值1,当该位为,当该位为1时数码管带示数点显示数值,所以该位显示为时数码管带示数点显示数值,所以该位显示为4 (sel : 1000 show : 11100110),数码管显示的数值由高到,数码管显示的数值由高到低的值为低的值为4500,除显示与输入的,除显示与输入的q值相符外,还根据数值的大示自值相符外,还根据数值的大示自动转换

421、了显示的量程。动转换了显示的量程。 下一页上一页 查看查看q = 4500时得到的仿真波形,读出数码管显示的读数为时得到的仿真波形,读出数码管显示的读数为6789。 由仿真的结果,可知代码能正确地显示由仿真的结果,可知代码能正确地显示09的数值,并能根据输入的数值,并能根据输入的数值自动转换量程显示,达到了代码设计的要求。的数值自动转换量程显示,达到了代码设计的要求。五、系统的整体的组装参考步骤五、系统的整体的组装参考步骤 新建一工程项目,将各模块的新建一工程项目,将各模块的vhd.文件添加到工程文件添加到工程; 新建一原理图设计文件,并将原理图文件设为顶层文件。新建一原理图设计文件,并将原理

422、图文件设为顶层文件。 编译各模块的编译各模块的vhd文件,选择菜单命令文件,选择菜单命令File Create/Update Create Symbol Files for Current File,将各模块生成工程项目元件。,将各模块生成工程项目元件。 7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 打开原理图设计文件,打开打开原理图设计文件,打开Symbol窗口,选择窗口,选择Project选项,选项,如如图图7-19所示。所示。 将各项目元件图加入原理图设计文件中,连接各元件,完成原理将各项目元件图加入原理图设计文件中,连接各元件,完成原理图设计文件,如图设计文件,如图图7

423、-20所示。所示。 对原理图顶层文件编译。对原理图顶层文件编译。六、下载验证参考步骤六、下载验证参考步骤1.锁定引脚锁定引脚 根据开发板上各引脚的定义根据开发板上各引脚的定义(可参考开发板的使用手册或本章最后所可参考开发板的使用手册或本章最后所附的引脚锁定时项目端口在开发板上的对应管脚资料附的引脚锁定时项目端口在开发板上的对应管脚资料),完成项目原理,完成项目原理图各引脚的锁定,如图各引脚的锁定,如图图7-21所示。所示。7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页 注意注意:完成引脚锁定后必须对项目重新再编译。完成引脚锁定后必须对项目重新再编译。 2.下载配置文件

424、下载配置文件(采用采用JTAG模式,如模式,如图图7-22所示所示)至开发板运行至开发板运行 要使下载后代码能够运行,必须将系统复位输入端口要使下载后代码能够运行,必须将系统复位输入端口reset锁定开锁定开发板相对应引脚发板相对应引脚PIN_29上的拨码开关拨至上的拨码开关拨至ON处,使系统不处在复位处,使系统不处在复位状态。状态。 下载运行频率计测量所得结果与信号发生器输出的频率相一致,下载运行频率计测量所得结果与信号发生器输出的频率相一致,如如图图7-23和和图图7-24所示。所示。 附附:引脚锁定时项目端口在开发板上的对应管脚资料引脚锁定时项目端口在开发板上的对应管脚资料(表表7-2表

425、表7-4,图图7-25图图7-26)7.3 相关技术基本知识与基本技能相关技术基本知识与基本技能返 回上一页 本章设计了一个数字频率计,设计采用本章设计了一个数字频率计,设计采用FPGA现场可编程门阵列为现场可编程门阵列为控制核心,通过硬件描述语言控制核心,通过硬件描述语言VHDL编程,在编程,在Quartus 6.0平台上编平台上编译、仿真、调试,并下载到译、仿真、调试,并下载到FPGA芯片上,能够较准确地测量方波信号芯片上,能够较准确地测量方波信号的频率,达到了设计要求。的频率,达到了设计要求。 7.4 本章小结本章小结返 回 图图7-1 开发板时钟电路开发板时钟电路返 回 图图7-2 时

426、钟模块时钟模块返 回 图图7-3 计数模块计数模块返 回 图图7-4 锁存模块锁存模块返 回 图图7-5 显示模块显示模块返 回 图图7-6 系统芯片选定系统芯片选定返 回 图图7-7 建立仿真文件建立仿真文件返 回 图图7-8 添加仿真的各个端口添加仿真的各个端口返 回 图图7-9 修改仿真的模式修改仿真的模式返 回 图图7-10 时钟仿真模块时钟仿真模块返 回 图图7-11 设定输入信号频率设定输入信号频率返 回 图图7-12 计数模块的仿真计数模块的仿真返 回 图图7-13 计数模块仿真计数模块仿真scale挡位挡位 随随q计数值的改变计数值的改变返 回 图图7-14 计数模块仿真输入信

427、号计数模块仿真输入信号 脉冲计数及相应的进位脉冲计数及相应的进位返 回 图图7-15 锁存仿真锁存仿真返 回 图图7-16 共阴极数码管引脚图共阴极数码管引脚图返 回图图7-17 q = 0123时得到的仿真波形时得到的仿真波形返 回图图7-18 q = 4500时得到的仿真波形时得到的仿真波形返 回 图图7-19 选择项目元件选择项目元件返 回 图图7-20 原理图设计文件原理图设计文件返 回 图图7-21 原理图各引脚的锁定原理图各引脚的锁定返 回 图图7-22 下载配置文件下载配置文件返 回图图7-23 信号发生器输出的方波信号发生器输出的方波返 回图图7-24 开发板程序下载运行后开发

428、板程序下载运行后 测得的频率数显测得的频率数显返 回图图7-25 开发板拨码开关电路开发板拨码开关电路返 回图图7-26 IO管脚映射管脚映射返 回表表7-1 挡位划分挡位划分返 回表表7-2 开发板系统时钟引脚开发板系统时钟引脚下一页图图7-3 开发板数码管管脚映射表开发板数码管管脚映射表下一页图图7-4 开发板拨码开关管脚映射表开发板拨码开关管脚映射表返 回 【要求】【要求】 掌握运用掌握运用VHDL语言设计正弦波形发生器的基本方法语言设计正弦波形发生器的基本方法 【知识点】【知识点】l 理解函数发生器的含义理解函数发生器的含义l 理解理解VHDL设计正弦波形发生器设计正弦波形发生器l 理

429、解理解FPGA对对D/A的接口和控制技术的接口和控制技术 【重点和难点】【重点和难点】l VHDL设计正弦波形发生器设计正弦波形发生器l FPGA对对D/A的接口和控制技术的接口和控制技术下一页第第8章章 应用应用VHDL语言方法设计语言方法设计 简易正弦波信号发生器简易正弦波信号发生器第第8章章 应用应用VHDL语言方法设计语言方法设计 简易正弦波信号发生器简易正弦波信号发生器8.1 工作任务的陈述与背景工作任务的陈述与背景8.2 完成工作任务的引导完成工作任务的引导8.3 相关技术基本知识与基本技能相关技术基本知识与基本技能8.3 本章小结本章小结上一页 一、工作任务一、工作任务 用用VH

430、DL语言方法设计一个正弦波形发生器。语言方法设计一个正弦波形发生器。 基本要求基本要求: 学习学习VHDL设计正弦波形发生器设计正弦波形发生器; 掌握掌握FPGA对对D/A的接口和控制技术。的接口和控制技术。 完成波形发生器的设计、仿真测试及实验系统上的硬件测试。完成波形发生器的设计、仿真测试及实验系统上的硬件测试。 二、任务背景二、任务背景 自自20世纪世纪60年代以来信号发生器有了迅速的发展,出现了函数发年代以来信号发生器有了迅速的发展,出现了函数发生器。作为电子系统的重要组成部分,它广泛地应用在电子技术实验、生器。作为电子系统的重要组成部分,它广泛地应用在电子技术实验、自动控制系统和其他

431、科研领域。早期的信号发生器多采用模拟电子技自动控制系统和其他科研领域。早期的信号发生器多采用模拟电子技术,电路形式有采用运放及分离元件构成,也有采用单片集成函数发术,电路形式有采用运放及分离元件构成,也有采用单片集成函数发生器专用芯片。生器专用芯片。 8.1 工作任务的陈述与背景工作任务的陈述与背景下一页返 回上一页 8.1 工作任务的陈述与背景工作任务的陈述与背景但采用模拟电路组成的函数信号发生器,一般可靠性较差,频率输但采用模拟电路组成的函数信号发生器,一般可靠性较差,频率输出精度、稳定度低,调节不够精确,设计过程复杂、困难,功能不出精度、稳定度低,调节不够精确,设计过程复杂、困难,功能不

432、易扩展,尤其对任意波信号产生较为困难,难以满足科研和高精度易扩展,尤其对任意波信号产生较为困难,难以满足科研和高精度实验的需要。现代高精度函数发生器设计采用了实验的需要。现代高精度函数发生器设计采用了EDA技术,不但大技术,不但大大缩短了开发研制周期,提高了设计效率,输出信号频率精度和稳大缩短了开发研制周期,提高了设计效率,输出信号频率精度和稳定度有很大提升,而目使系统具有结构紧读、设计灵活、实现简单、定度有很大提升,而目使系统具有结构紧读、设计灵活、实现简单、性能稳定的特点。性能稳定的特点。 本章着重介绍采用本章着重介绍采用EDA技术,应用技术,应用VHDL语言,在语言,在ALTERA公公司

433、的司的Quartus软件环境下,完成频率可调的正弦波发生器的程序软件环境下,完成频率可调的正弦波发生器的程序设计过程,并进行逻辑综合、仿真和硬件下载,产生正弦波信号。设计过程,并进行逻辑综合、仿真和硬件下载,产生正弦波信号。下一页8.2 完成工作任务的引导完成工作任务的引导一、资讯一、资讯 要完成本任务,需要了解以下方面的知识。要完成本任务,需要了解以下方面的知识。 1.函数函数(波形波形)信号发生器的定义和作用信号发生器的定义和作用 函数函数(波形波形)信号发生器能产生某些特定的周期性时间函数波形信号发生器能产生某些特定的周期性时间函数波形(C n1,弦波、方波、二角波、锯齿波和脉冲波等,弦

434、波、方波、二角波、锯齿波和脉冲波等)信号,频率范围可从几信号,频率范围可从几个微赫到几十兆赫。函数信号发生器在电路实验、设备检测、通信、宙个微赫到几十兆赫。函数信号发生器在电路实验、设备检测、通信、宙达、导航、宇航等领域中具有十分广泛的用途。本次设计只是简单完成达、导航、宇航等领域中具有十分广泛的用途。本次设计只是简单完成正弦波输出的功能。正弦波输出的功能。 2.直接数字合成器直接数字合成器DDS ( Direct Digtal Synthesizer)知识知识 DDS中变要包括频率控制寄存器、高速相位累加器和正弦计算器二中变要包括频率控制寄存器、高速相位累加器和正弦计算器二个部分,本次设计参

435、考个部分,本次设计参考DDS设计电路结构。设计电路结构。下一页上一页 频率变化知识。用户通过输入频率控制码来改变输出信号频率。频率变化知识。用户通过输入频率控制码来改变输出信号频率。 相位变化知识。通过相位累加器根据频率控制码在每个时钟周期相位变化知识。通过相位累加器根据频率控制码在每个时钟周期内进行相位累加来改变相位值。内进行相位累加来改变相位值。 波形信号产生知识。正弦计算器计算数字化正弦波幅度值,再把波形信号产生知识。正弦计算器计算数字化正弦波幅度值,再把幅度值保在芯片的幅度值保在芯片的ROM中。通过查表方式扫描数据输出。中。通过查表方式扫描数据输出。 3. DAC控制器的知识控制器的知

436、识 DDS芯片输出的一般是数字化的正弦波,因此还需经过高速芯片输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号。使用转换器和低通滤波器才能得到一个可用的模拟频率信号。使用DAC时时要考虑要考虑DAC的位数和转换时间。常用的低速八位的位数和转换时间。常用的低速八位DAC为为DAC0832。8.2 完成工作任务的引导完成工作任务的引导二、计划二、计划 采用采用DDS方式设计波形信号发生器,首先要了解方式设计波形信号发生器,首先要了解DDS的结构和每的结构和每个部分的功能,如个部分的功能,如图图8-1所示,本次设计在所示,本次设计在CPLD/FPGA

437、芯片内部由芯片内部由频率控制字、相位累加器、波形数据频率控制字、相位累加器、波形数据ROM二个部分构成,在外部把二个部分构成,在外部把波形数据循环扫描后输出给波形数据循环扫描后输出给DAC转换成模拟信号,通过低通滤波器平转换成模拟信号,通过低通滤波器平滑波形最后输出所需波形。设计中着重完成以下部分内容。滑波形最后输出所需波形。设计中着重完成以下部分内容。 完成频率控制器的设计。此设计可以通过计数器、分频器设计完成频率控制器的设计。此设计可以通过计数器、分频器设计原理完成。原理完成。 相位控制设计。对所查表中每个地址进行数据累加,即可改变相位控制设计。对所查表中每个地址进行数据累加,即可改变信号

438、输出相位。信号输出相位。下一页上一页8.2 完成工作任务的引导完成工作任务的引导 计算正弦波各点的幅度离散值。在此设计中我们把一个正弦波分计算正弦波各点的幅度离散值。在此设计中我们把一个正弦波分离成离成128个点坐标。由于个点坐标。由于VHDL只适合整数运算,此各离散值由计算只适合整数运算,此各离散值由计算器或公式求出,并存储在器或公式求出,并存储在ROM中。中。三、决策三、决策 根据根据图图8-1所示的正弦波信号发生器组成框图,分步完成正弦波信所示的正弦波信号发生器组成框图,分步完成正弦波信号发生器的设计。其设计步骤可参考如下步骤进行。号发生器的设计。其设计步骤可参考如下步骤进行。 设计一个

439、分频器,要求能进行频率调整。设计一个分频器,要求能进行频率调整。 设计一个相位累加器,相位可以前后移位。设计一个相位累加器,相位可以前后移位。 通过计算求出正弦波通过计算求出正弦波128个离散幅值,并进行储存。个离散幅值,并进行储存。 将程序下载至将程序下载至FPGA/CPLD芯片,并和芯片,并和DAC0832连接。连接。下一页上一页8.2 完成工作任务的引导完成工作任务的引导四、实施四、实施 如如图图8-1所示,完整的正弦波形发生器由所示,完整的正弦波形发生器由3部分组成。部分组成。 1.频率控制字设计频率控制字设计 由于一个完整的波形由由于一个完整的波形由128个离散坐标点构成,所以要完整

440、生成一个离散坐标点构成,所以要完整生成一个波形,则输入时钟需要个波形,则输入时钟需要128个脉冲。从而可得知要输出个脉冲。从而可得知要输出1 Hz的正弦的正弦波,需要波,需要128 Hz的时钟,也就是输入输出分频比的时钟,也就是输入输出分频比128/1。若对输出。若对输出信号频率进行控制,可通过对输入时钟分频来改变频率,分频系数可信号频率进行控制,可通过对输入时钟分频来改变频率,分频系数可以改变。以改变。 在下面实例中,在下面实例中,“ clk”为芯片时钟输入端,可由品振提供高稳定度、为芯片时钟输入端,可由品振提供高稳定度、高精度脉冲信号。高精度脉冲信号。“d” 和和 “f”为分频系数控制脚,

441、当为分频系数控制脚,当f = “0”时,时,d脚每来一次脉冲,则分频系数自动加脚每来一次脉冲,则分频系数自动加1;相反,若相反,若f = 1”时,根据时,根据d脚的脚的下一页上一页8.2 完成工作任务的引导完成工作任务的引导下一页上一页8.2 完成工作任务的引导完成工作任务的引导脉冲数自动减。脉冲数自动减。 图图8-2为频率控制的仿真图。为频率控制的仿真图。clk_o为输出脚进过分频后的时钟为输出脚进过分频后的时钟信号,该信号可以接入到下一级相位控制部分,然后进行相位调节。信号,该信号可以接入到下一级相位控制部分,然后进行相位调节。 如果仿真结果正确,可以将设计的项目生成一个元件符号备用。其步

442、如果仿真结果正确,可以将设计的项目生成一个元件符号备用。其步骤是骤是:选择原理图文件为当前文件后,选择菜单命选择原理图文件为当前文件后,选择菜单命File Create/LTpdate Create Symbol Files for Current File即可。本电路生成的元件符号如即可。本电路生成的元件符号如图图8-3所示。所示。 频率控制程序参考频率控制程序参考: process(clk)一基准时钟分频一基准时钟分频 begin if clkevent and clk=1 then t0=t0+tl; end if;end process;-process(d,f) -频率控制字频率控制

443、字 begin if devent and d=1 then if f=0 then tl=t1+1; else下一页上一页8.2 完成工作任务的引导完成工作任务的引导 t1 =tl-1; end if; end if; end process; Clk_o=t0(3); 2.相位累加器设计相位累加器设计 对于正弦信号发生器,它的输出可以用下式来描述对于正弦信号发生器,它的输出可以用下式来描述: (8-1) 其中,其中, 是该信号发生器的输出波形是该信号发生器的输出波形; 指输出信号对应的频率。指输出信号对应的频率。上式的表述对于时间上式的表述对于时间t是连续的,为了用逻辑实现该表达式,必须进

444、行是连续的,为了用逻辑实现该表达式,必须进行离散化处理,用基准时钟进行抽样,令正弦信号的相位为离散化处理,用基准时钟进行抽样,令正弦信号的相位为 下一页上一页8.2 完成工作任务的引导完成工作任务的引导 (8-2) 在一个在一个clk周期内,相位的变化为周期内,相位的变化为 (8-3)其中,其中,foot指指clk的频率,的频率,2可以理解为可以理解为“满满”相位。为了对其进行相位。为了对其进行数字量化,把数字量化,把2切割成切割成 份,由此每个份,由此每个clk周期的相位增量周期的相位增量 用量化用量化值值 来表示来表示: (8-4) 且且 为整数。与式为整数。与式(8-3)联立,可得联立,

445、可得 (8-5)下一页上一页8.2 完成工作任务的引导完成工作任务的引导 显然,信号发生器的输出可描述为显然,信号发生器的输出可描述为 (8-6) 其中,其中, 指前一个指前一个clk周期相位值,同样得出周期相位值,同样得出 (8-7) 由上面的推导可以看出,只要对相位的量化值进行简单的祟加运由上面的推导可以看出,只要对相位的量化值进行简单的祟加运算,就可以得到正弦信号的当前相位值,而用于叠加的相位量量化算,就可以得到正弦信号的当前相位值,而用于叠加的相位量量化值值 决定了信号的输出频率决定了信号的输出频率 ,并呈现简单的线性关系,并呈现简单的线性关系: (8-8)下一页上一页8.2 完成工作

446、任务的引导完成工作任务的引导 相位累加器的输入又可称为频率输入字,事实上当系统基准时钟相位累加器的输入又可称为频率输入字,事实上当系统基准时钟 为为 时,时, 就等于就等于 。 图图8-4为生成元件图,为生成元件图,clk为系统基准时钟分频后的时钟输入为系统基准时钟分频后的时钟输入; p为相为相位控制字端,每输入一个脉冲,波形前后移一个相位位控制字端,每输入一个脉冲,波形前后移一个相位; d 为相位方向控制,为相位方向控制,当当d = 0”时,相位后移,相反,当时,相位后移,相反,当d= 1”时,相位前移。时,相位前移。 相位控制仿真图如相位控制仿真图如图图8-5所示,当所示,当d=“0”时,

447、时,P输入每个脉冲后,相输入每个脉冲后,相位地址位地址Y输出量发生改变,地址向后增加输出量发生改变,地址向后增加2。 相位控制程序参考相位控制程序参考: process(clk) - 相位地址累加进程相位地址累加进程 begin if clkevent and clk=1 then下一页上一页8.2 完成工作任务的引导完成工作任务的引导 tt=tt+1; else ttDDDDDDD=231; End process; 下一页上一页8.2 完成工作任务的引导完成工作任务的引导4. 连接连接DAC0832设计设计 DAC0832是八位是八位D/A转换器,转换周期为转换器,转换周期为1s,其参考电

448、压与,其参考电压与+5 V工作电压相接工作电压相接(实用电路应接精密基准电压实用电路应接精密基准电压)。 DAC0832的引脚功能简述如下。的引脚功能简述如下。 ILE: 数据锁存允许信号,高电平有效,系统上己经连接数据锁存允许信号,高电平有效,系统上己经连接+5V上上 :写信号写信号1, 2,低电平有效。,低电平有效。 :数据传送控制信号,低电平有效。数据传送控制信号,低电平有效。 :基准电压,可正,可负,基准电压,可正,可负,-10+10 V 。 Rfb:反馈电阻端。反馈电阻端。 IoutI/Iout2 CPIN11, PIN12)电流输出电流输出1和和 2。 D/A转转换量是以电流形式输

449、出的,所以必须将电流信号变为电压信号。换量是以电流形式输出的,所以必须将电流信号变为电压信号。下一页上一页8.2 完成工作任务的引导完成工作任务的引导 AGND/DGND CPIN3, PIN10):模拟地与数字地。在高速模拟地与数字地。在高速情况下,此一地的连接线必须尽可能短,目系统的单点接地点必须在情况下,此一地的连接线必须尽可能短,目系统的单点接地点必须在此连接线的某一点上。此连接线的某一点上。 在本次设计中,在本次设计中,FPGA芯片的波形数据输出脚芯片的波形数据输出脚D 7.0分别接到分别接到图图8-7中的中的DA7-DAO脚上,脚上,DAC0832可以采用直接控制方式与可以采用直接

450、控制方式与FPGA同步工作,也可使同步工作,也可使 、 信号受控于信号受控于FPGA工作工作;若直接工若直接工作,则将作,则将 、 直接接地即可直接接地即可;若受控于若受控于FPGA,则把该竹脚接,则把该竹脚接在在FPGA某个控制脚上,当该竹脚输出低电平时,某个控制脚上,当该竹脚输出低电平时,DAC0832输出模输出模拟波形。拟波形。 下一页上一页8.2 完成工作任务的引导完成工作任务的引导五、检查五、检查 以上对一个正弦信号波发生器的各组成部分进行了说明并给出了以上对一个正弦信号波发生器的各组成部分进行了说明并给出了参考电路,读者可自行按照本设计方案的组成原理框图参考电路,读者可自行按照本设

451、计方案的组成原理框图(如图如图8-1所所示示)将各部分连接起来,组成一个完整的正弦波信号发生器。频率控将各部分连接起来,组成一个完整的正弦波信号发生器。频率控制字由制字由fre_d和和fre_f同时控制,同时控制,fre_f控制频率的增减,控制频率的增减,fre_d控控制频率增量大示。制频率增量大示。clk是系统基准时钟,由晶振提供。是系统基准时钟,由晶振提供。 若要提高输出信号最高频率,则品振频率必须提高。若要提高输出信号最高频率,则品振频率必须提高。Pha_p和和pha_f共同负责相位移动。控制方法和频率控制相同。以下给出采用共同负责相位移动。控制方法和频率控制相同。以下给出采用本方案设计

452、而成的正弦波信号发生器整体框图本方案设计而成的正弦波信号发生器整体框图(图图8-8)和仿真波形图和仿真波形图(图图8-9和和图图8-10),以供读者设计时参考。,以供读者设计时参考。下一页上一页8.2 完成工作任务的引导完成工作任务的引导下一页上一页8.2 完成工作任务的引导完成工作任务的引导1.单独增加频率控制字对输出频率的影响单独增加频率控制字对输出频率的影响(图图8-9、图图8-10) 从图中看出,当从图中看出,当fre_d的脉冲个数增加时,输出的脉冲个数增加时,输出D的频率与的频率与clk的频率差距越来越示,也就是输出信号的频率增大。的频率差距越来越示,也就是输出信号的频率增大。 当当

453、fre_f为为“1”时,随着时,随着fre_d的脉冲输入,信号输出脚的的脉冲输入,信号输出脚的频率降低,从而达到频率可调的功能。频率降低,从而达到频率可调的功能。2.相位控制仿真相位控制仿真(图图8-11、图图8-12) 部分波形数据对照表如部分波形数据对照表如图图8-13: 从仿真图和波形数据可以看出,通过相位控制,使输出波形的从仿真图和波形数据可以看出,通过相位控制,使输出波形的数据提前或延迟输出。数据提前或延迟输出。 下一页上一页 通过仿真效果达到预期设计目的,选择通过仿真效果达到预期设计目的,选择FPGA芯芯1k30TC144-3进行下载和验证。进行下载和验证。 引脚分配见引脚分配见表

454、表8-1(对于对于1 K30TC 144-3器件器件)。六、评价六、评价 1.设计方案的改进设计方案的改进 本设计方案可以做以下方面功能改进本设计方案可以做以下方面功能改进: 正弦波信号发生器只是函数信号发生器中一个典型信号,读正弦波信号发生器只是函数信号发生器中一个典型信号,读者可以根据本次设计思路,只击修改波形数据中的离散幅值,即可者可以根据本次设计思路,只击修改波形数据中的离散幅值,即可增加方波信号、二角波信号及任意波信号功能。增加方波信号、二角波信号及任意波信号功能。 频率控制的步进精度可以进一步提高,同时频率控制方式可频率控制的步进精度可以进一步提高,同时频率控制方式可以改进为加减控

455、制方式,以利于操作。以改进为加减控制方式,以利于操作。8.2 完成工作任务的引导完成工作任务的引导下一页上一页 设置成双路信号发生器,通过相位调整,可以对比两个输出设置成双路信号发生器,通过相位调整,可以对比两个输出波形的相位差。波形的相位差。 增加幅度控制,使输出信号幅度可以大示调节。增加幅度控制,使输出信号幅度可以大示调节。 2.设计报告设计报告 为了能对本设计进行综合的评估,也为了总结经验,读者应该写为了能对本设计进行综合的评估,也为了总结经验,读者应该写设计报告。所写的设计报告应该包含所用的设计报告。所写的设计报告应该包含所用的EDA方法及知识点的总结,方法及知识点的总结,参考内容如下

456、参考内容如下: 正弦波信号发生器设计要求及方案分析。正弦波信号发生器设计要求及方案分析。 正弦波信号发生器设计思想及设计框图。正弦波信号发生器设计思想及设计框图。 提供正弦波信号设计各单元电路的具体设计说明、整体设计电提供正弦波信号设计各单元电路的具体设计说明、整体设计电路图及其工作原理说明。路图及其工作原理说明。8.2 完成工作任务的引导完成工作任务的引导返 回8.2 完成工作任务的引导完成工作任务的引导 正弦波信号设计的重要调试过程,遇到具体问题的解决方正弦波信号设计的重要调试过程,遇到具体问题的解决方法。法。 通过示波器查看正弦波信号设计的波形是否失真。通过示波器查看正弦波信号设计的波形

457、是否失真。 用频率计记录正弦波信号发生器的输出频率,通过调整频用频率计记录正弦波信号发生器的输出频率,通过调整频率大示,查看频率步进值,并进行记录。率大示,查看频率步进值,并进行记录。 对扩大本正弦波信号发生器的输出频率、提高频率计的性对扩大本正弦波信号发生器的输出频率、提高频率计的性能提出设计思路。能提出设计思路。 总结本次设计的收获、存在问题。总结本次设计的收获、存在问题。上一页下一页8.3相关技术基本知识与基本技能相关技术基本知识与基本技能一、频率控制字参考设计一、频率控制字参考设计例例8.1fre.vhdlibrary ieee;use ieee.std_logic_1164.a11;

458、use ieee.std_logic_ unsigned.all;-entity fre isport(clk ,d,f: in std_ logic; clk_o:out std_ logic);end;-下一页上一页 architecture choice of fre issignal t0: std_ logic_ vector(3 downto 0);signal t1:integer range 0 to 512;Begin process(clk) begin if clkevent and clk=1 then t0=t0+tl; end if; end process; pr

459、ocess(d,0 begin 8.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 if devent and d=1 then if f=0 then tl=t1+1; else tl=tl一一1; end if; end if; end process;clk_o=t0(3);end choice;8.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页二、相位累加器参考设计二、相位累加器参考设计例例8.2 phase.vhdlibrary ieee;use ieee.std_logic_1164.a11;use ieee.std_logic_ unsigned.

460、all;entity phase is port (clk,p,d: in std_ logic; Y:out std_ logic_ vector(6 downto 0); end; architecture choice of phase is 8.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页下一页上一页8.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 signal bb:std_logic_ vector(6 downto 0); signal tt:integer range 0 to 127; begin process(clk) begin if

461、 clkevent and clk=1 then bb=bb+1; end if; end process; process(p,d) 下一页上一页8.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 begin if pevent and p= 1 then if d=0 then tt=tt+ 1; else tt=tt-1; end if; end if; end process; yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

462、DDDDDDDDDDDDDDDDDDDDDDDDDDDDDNULL; end CASE; end process;end choice; 返 回上一页8.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 正弦波发生器设计任务的陈述与背景正弦波发生器设计任务的陈述与背景 正弦波发生器设计的任务引导正弦波发生器设计的任务引导 正弦波发生器有关知识正弦波发生器有关知识 各模块参考设计代码各模块参考设计代码 8.4 本章小结本章小结返 回 图图 8-1 正弦波信号发生器组成框图正弦波信号发生器组成框图返 回 图图 8-1 正弦波信号发生器组成框图正弦波信号发生器组成框图返 回 图图 8-1 正

463、弦波信号发生器组成框图正弦波信号发生器组成框图返 回 图图 8-2 频率控制仿真图频率控制仿真图返 回 图图 8-3 频率控制信号元件图频率控制信号元件图返 回 图图 8-4 相位控制相位控制返 回 图图 8-5 相位控制仿真相位控制仿真返 回 图图 8-6 波形数据存储波形数据存储返 回 图图 8-7 DAC0821连接示意图连接示意图返 回 图图 8-8 正弦波信号发生器整体结构框图正弦波信号发生器整体结构框图返 回 图图 8-9 频率控制仿真图频率控制仿真图返 回 图图 8-10 频率控制仿真图频率控制仿真图返 回 图图 8-9 频率控制仿真图频率控制仿真图返 回 图图 8-10 频率控

464、制仿真图频率控制仿真图返 回 图图 8-11 相位控制仿真相位控制仿真1返 回 图图 8-12 相位控制仿真图相位控制仿真图2返 回 图图 8-13 部分波形相位对照表部分波形相位对照表返 回 表表 8-1 正弦信号发生器和引脚分配正弦信号发生器和引脚分配返 回 【要求】【要求】 理解运用理解运用VHDL硬件描述语言和硬件描述语言和Quartus开发工具进行音开发工具进行音乐电路设计的方法乐电路设计的方法 【知识点】【知识点】l 理解音乐电路总体方案设计方法理解音乐电路总体方案设计方法l 理解音乐电路各模块设计方法理解音乐电路各模块设计方法 【重点和难点】【重点和难点】l 理解音乐电路各模块设

465、计方法理解音乐电路各模块设计方法下一页第第9章章 基于基于FPGA的简单的简单 音乐电路设计音乐电路设计第第9章章 应用应用VHDL语言方法设计语言方法设计 简易正弦波信号发生器简易正弦波信号发生器9.1 工作任务的陈述与背景工作任务的陈述与背景9.2 完成工作任务的引导完成工作任务的引导9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能9.4 本章小结本章小结上一页 一、工作任务一、工作任务 使用层次化设计方法,设计并用使用层次化设计方法,设计并用FPGA实现一个能循环播放乐曲的实现一个能循环播放乐曲的音乐电路。音乐电路。二、任务背景二、任务背景 据有关媒体介绍,中国的第一颗人造卫

466、星东方红一号卫星,于据有关媒体介绍,中国的第一颗人造卫星东方红一号卫星,于1965年开始研制,年开始研制,1970年年4月月24目进入太空轨道,该星质量超过目进入太空轨道,该星质量超过了苏联、美国、法国、日本了苏联、美国、法国、日本4个国家第一颗卫星质量的总和,在某些个国家第一颗卫星质量的总和,在某些技术方面超过上述技术方面超过上述4个国家第一颗卫星的水平,开创了中国航天史的个国家第一颗卫星的水平,开创了中国航天史的新纪元。新纪元。 9.1 工作任务的陈述与背景工作任务的陈述与背景下一页下一页上一页 9.1 工作任务的陈述与背景工作任务的陈述与背景 东方红一号质量为东方红一号质量为173千克,

467、设计寿命为千克,设计寿命为14天,实际寿命达到天,实际寿命达到20天,天,1970年年5月月14日停止发送信号。关键技术包括东方红乐音日停止发送信号。关键技术包括东方红乐音装置、短波天线遥测系统等。其中电子乐音发生器是全星的核心部装置、短波天线遥测系统等。其中电子乐音发生器是全星的核心部分,它通过分,它通过20 MHz短波发射系统反复地向地面播送短波发射系统反复地向地面播送“东方红东方红”乐乐曲的前八示节,全中国人民乃至全世界的人民通过收音机都能听得曲的前八示节,全中国人民乃至全世界的人民通过收音机都能听得到。到。 完成研制东方红乐音装置任务的是中国科学院自动化所的一个示完成研制东方红乐音装置

468、任务的是中国科学院自动化所的一个示组。他们首先考虑的是用子什么样的方法来模拟出组。他们首先考虑的是用子什么样的方法来模拟出“东方红东方红”乐曲。乐曲。当时有当时有3种方案提上了台面,一种是八音盒方案,它采用机械齿轮种方案提上了台面,一种是八音盒方案,它采用机械齿轮播放音乐播放音乐;一种就是把音乐录在磁带机上,但是当时中国还没有示磁一种就是把音乐录在磁带机上,但是当时中国还没有示磁带机,都是笨重的大磁带机,不可能装上卫星升空带机,都是笨重的大磁带机,不可能装上卫星升空;第二种方案就是第二种方案就是电子音乐,这也是后来被广泛接受的一种方案。电子音乐,这也是后来被广泛接受的一种方案。下一页上一页 9

469、.1 工作任务的陈述与背景工作任务的陈述与背景 根据上级要求,只需让卫星播放东方红前八个示节的旋律。根据上级要求,只需让卫星播放东方红前八个示节的旋律。示组决定在示组决定在40 s内连续播放两遍这八个示节,然后发射机就切换成内连续播放两遍这八个示节,然后发射机就切换成遥测信号,用一个发射机就可以实现交替传送乐曲和遥测信号的目遥测信号,用一个发射机就可以实现交替传送乐曲和遥测信号的目的。的。 这是国内早期最知名、影响最大的一个音乐电路。在国内缺乏这是国内早期最知名、影响最大的一个音乐电路。在国内缺乏集成电路,没有微处理器的那个时代,东方红乐音装置全部用晶体集成电路,没有微处理器的那个时代,东方红

470、乐音装置全部用晶体管分立元件做成。有人粗略统计,整个乐音装置共用了管分立元件做成。有人粗略统计,整个乐音装置共用了110多个品多个品体二极管体二极管(绝大多数是绝大多数是3DG6)、约、约150个二极管个二极管(都是都是2AP 10),其他都是电阻和电容。其他都是电阻和电容。 现在,音乐电路广泛用于自动答录装置、手机铃声、集团电话现在,音乐电路广泛用于自动答录装置、手机铃声、集团电话及智能仪器仪表设备中。及智能仪器仪表设备中。下一页上一页 9.1 工作任务的陈述与背景工作任务的陈述与背景 作为一个电子系统的一个模块,音乐电路的实现方法有以下几作为一个电子系统的一个模块,音乐电路的实现方法有以下

471、几种。种。 购买专用音乐电路片。特点是价格便宜,但多用于玩具,无法购买专用音乐电路片。特点是价格便宜,但多用于玩具,无法更改乐曲,也无法编程。更改乐曲,也无法编程。 录音重放电路,如录音重放电路,如ISD系列录放电路。可通过麦克风人工录音,系列录放电路。可通过麦克风人工录音,分段放音,但成本稍高。分段放音,但成本稍高。 利用微处理器来实现乐曲演奏,但需要占用微处理器的资源较利用微处理器来实现乐曲演奏,但需要占用微处理器的资源较多多(要占用要占用D/A和定时器等和定时器等),大多数情况无法采用这种方法。,大多数情况无法采用这种方法。 以以CPLD/FPGA实现乐曲演奏,也就是本任务要求使用的方实

472、现乐曲演奏,也就是本任务要求使用的方法。用这种方法实现音乐电路,目前单价较高。法。用这种方法实现音乐电路,目前单价较高。返 回上一页 9.1 工作任务的陈述与背景工作任务的陈述与背景 但随着但随着CPLD / FPGA集成度的提高,价格下降,集成度的提高,价格下降,EDA设计工设计工具更新换代,功能目益强大,操作方便实用,以及具更新换代,功能目益强大,操作方便实用,以及IP core概念目概念目益普及与流行,使这种方案的应用领域会越来越多。益普及与流行,使这种方案的应用领域会越来越多。 它的突出优点是它的突出优点是: 第一,仅占用第一,仅占用FPGA中很少的资源,因此增加的系统整体成本中很少的

473、资源,因此增加的系统整体成本较低,甚至不增加成本。这是因为某个产品选定某型号较低,甚至不增加成本。这是因为某个产品选定某型号FPGA芯片,芯片,产品的其他部分只用了其中一部分资源,还有相当一部分资源闲置产品的其他部分只用了其中一部分资源,还有相当一部分资源闲置没用。没用。 第二,更改乐曲非常方便。第二,更改乐曲非常方便。 第三,可作为第三,可作为IP core实现设计重用。实现设计重用。下一页9.2 完成工作任务的引导完成工作任务的引导一、资讯一、资讯 1.明确任务明确任务 为了简化设计,本任务设计的音乐电路可只考虑音的最重要的为了简化设计,本任务设计的音乐电路可只考虑音的最重要的两个方面两个

474、方面:“音的高低音的高低”和和“音的长短音的长短”,即音高和音长,忽略音,即音高和音长,忽略音的力度和音色。要求音乐电路最少能连续循环演奏一首歌曲或一首的力度和音色。要求音乐电路最少能连续循环演奏一首歌曲或一首歌曲的一部分,在此基础上可再做进一步的扩展。歌曲的一部分,在此基础上可再做进一步的扩展。 由于不考虑音色,考虑到充分利用由于不考虑音色,考虑到充分利用FPGA的数字电路资源,可用的数字电路资源,可用一个可控分频电路模块产生演奏音乐所需的每个音,而各个音演奏一个可控分频电路模块产生演奏音乐所需的每个音,而各个音演奏的顺序和持续的时间即音长可根据乐谱用一个控制电路模块来控制。的顺序和持续的时

475、间即音长可根据乐谱用一个控制电路模块来控制。 电路输入是两路时钟信号电路输入是两路时钟信号: 一路作为可控分频电路模块的输入一路作为可控分频电路模块的输入时钟,经可控分频电路模块分频后,得到各种所需的乐音信号。时钟,经可控分频电路模块分频后,得到各种所需的乐音信号。下一页上一页 另一路作为控制电路模块的输入时钟,用来产生节拍。这两路时另一路作为控制电路模块的输入时钟,用来产生节拍。这两路时钟信号的频率根据具体的实验条件和所选歌曲可有所不同。钟信号的频率根据具体的实验条件和所选歌曲可有所不同。 电路的输出有电路的输出有:一路一线是乐音信号输出,用来驱动外接喇叭或一路一线是乐音信号输出,用来驱动外

476、接喇叭或蜂鸣器演奏音乐。一路一线用来驱动外接的一个蜂鸣器演奏音乐。一路一线用来驱动外接的一个LED,演奏高音时发演奏高音时发光。一路四线用来驱动外接的数码管,显示演奏的音符简谱符号。光。一路四线用来驱动外接的数码管,显示演奏的音符简谱符号。 2.查阅资料查阅资料 到图书馆、互联网查找有关资料。前人发表的有关音乐电路的文到图书馆、互联网查找有关资料。前人发表的有关音乐电路的文章主要散见在学术期刊和有关网页上。可用乐曲演奏电路、音乐发章主要散见在学术期刊和有关网页上。可用乐曲演奏电路、音乐发生器等关键词查找。另外,要理解这些文章所介绍的原理,还要具生器等关键词查找。另外,要理解这些文章所介绍的原理

477、,还要具有音乐谱、乐音频率的有关知识。有音乐谱、乐音频率的有关知识。 本章本章9.3节提供了一些与本任务有关的资料,请认真阅读。节提供了一些与本任务有关的资料,请认真阅读。9.2 完成工作任务的引导完成工作任务的引导二、计划二、计划 音乐电路是模仿人歌唱的电路,故可用人歌唱作为原型来分析音乐电路是模仿人歌唱的电路,故可用人歌唱作为原型来分析设计本任务的总体方案。人通过声带振动发出声音,声带振动频率设计本任务的总体方案。人通过声带振动发出声音,声带振动频率不同发出不同声音,故在用数字电路来模仿时,可用一个可控分频不同发出不同声音,故在用数字电路来模仿时,可用一个可控分频电路来产生不同频率时钟信号

478、来驱动外接喇叭或蜂鸣器演奏音乐。电路来产生不同频率时钟信号来驱动外接喇叭或蜂鸣器演奏音乐。 人在歌唱时,是根据歌谱人在歌唱时,是根据歌谱,用大脑控制声带按照一定节拍在不同用大脑控制声带按照一定节拍在不同时间发出不同的乐音,故在用数字电路模仿时,还应该有一个控制时间发出不同的乐音,故在用数字电路模仿时,还应该有一个控制电路模块,用来根据歌谱控制可控分频电路模块按照一定节拍在不电路模块,用来根据歌谱控制可控分频电路模块按照一定节拍在不同时间发出不同的乐音。而控制电路模块应该分为两个示模块,一同时间发出不同的乐音。而控制电路模块应该分为两个示模块,一个用于产生节拍,称节拍产生模块个用于产生节拍,称节

479、拍产生模块;另一个用于根据歌谱控制可控另一个用于根据歌谱控制可控分频电路模块在不同时间发出不同的乐音,称音符产生模块。分频电路模块在不同时间发出不同的乐音,称音符产生模块。下一页上一页9.2 完成工作任务的引导完成工作任务的引导 控制电路模块只是根据歌谱产生可供控制可控分频模块,按控制电路模块只是根据歌谱产生可供控制可控分频模块,按照一定节拍在不同时间发出不同的乐音的音符信号。具体要控制照一定节拍在不同时间发出不同的乐音的音符信号。具体要控制可控分频模块,还得要把音符信号转换为可控分频模块的分频系可控分频模块,还得要把音符信号转换为可控分频模块的分频系数输入信号,另外也要根据音符信号决定提供给

480、外围数码管的用数输入信号,另外也要根据音符信号决定提供给外围数码管的用于显示简谱音符符号的数据和提供给外围于显示简谱音符符号的数据和提供给外围LED的用于显示高低音的用于显示高低音的数据。这就需要另一个模块的数据。这就需要另一个模块分频系数、分频系数、LED数据产生模块。数据产生模块。 音乐电路是连续循环演奏的,故控制电路模块的核心部分音乐电路是连续循环演奏的,故控制电路模块的核心部分节拍产生模块应是一个计数器,每个状态持续的时间是需演奏节拍产生模块应是一个计数器,每个状态持续的时间是需演奏的所有的音的音长的最示公因数,比如是一个十六分音符时值,的所有的音的音长的最示公因数,比如是一个十六分音

481、符时值,具体时间长度应根据需演奏的歌曲而定。这样,每个音持续的时具体时间长度应根据需演奏的歌曲而定。这样,每个音持续的时间是每个状态持续的时间的整数倍,故占据整数倍个状态。间是每个状态持续的时间的整数倍,故占据整数倍个状态。下一页上一页9.2 完成工作任务的引导完成工作任务的引导 具体占据状态的个数要根据每个音的音长来决定。具体占据状态的个数要根据每个音的音长来决定。 控制电路的计数器的模即状态数,可由需演奏歌曲的各个音所控制电路的计数器的模即状态数,可由需演奏歌曲的各个音所占据状态个数累加而得。例如,一首用于演奏占据状态个数累加而得。例如,一首用于演奏“梁祝梁祝”乐曲的音乐乐曲的音乐电路的控

482、制电路的计数器的模是电路的控制电路的计数器的模是139。 节拍产生电路的计数器是用来产生节拍定的,音符产生模块则将节拍产生电路的计数器是用来产生节拍定的,音符产生模块则将节拍产生电路的计数器的状态翻译成对应的音符,如需演奏的歌曲节拍产生电路的计数器的状态翻译成对应的音符,如需演奏的歌曲中所用到的音符为中所用到的音符为916个,则音符产生模块的输出信号应有四位,个,则音符产生模块的输出信号应有四位,其他情况依此类推。其他情况依此类推。 分频系数、分频系数、LED数据产生模块则根据音符产生模块输出的音符信数据产生模块则根据音符产生模块输出的音符信息,产生每个时刻提供给可控分频模块的分频系数、提供给

483、外围息,产生每个时刻提供给可控分频模块的分频系数、提供给外围下一页上一页9.2 完成工作任务的引导完成工作任务的引导下一页上一页9.2 完成工作任务的引导完成工作任务的引导数码管的用于显示谱音符符号的数据和提供给外围数码管的用于显示谱音符符号的数据和提供给外围LED的用于显的用于显示高低音的数据。示高低音的数据。 音乐电路设计总体参考方案如音乐电路设计总体参考方案如图图9-1所示,其中的两个时钟频所示,其中的两个时钟频率的取值将在下面介绍实施的部分做分析。率的取值将在下面介绍实施的部分做分析。三、决策三、决策 本音乐电路设计重点在于可控分频模块和控制电路模块的设计,本音乐电路设计重点在于可控分

484、频模块和控制电路模块的设计,故只讨论这两个模块以及顶层模块的设计方案的选择。故只讨论这两个模块以及顶层模块的设计方案的选择。 1.可控分频模块设计方案的选择可控分频模块设计方案的选择 (1)等占空比和非等占空比方案选择等占空比和非等占空比方案选择 可控分频电路按输出时钟的占空比来分,有等占空比和非等占可控分频电路按输出时钟的占空比来分,有等占空比和非等占空比两类方案。为了得到足够驱动蜂鸣器的功率,采用等占空比输空比两类方案。为了得到足够驱动蜂鸣器的功率,采用等占空比输出的可控分频电路方案。出的可控分频电路方案。 (2)偶数分频、整数分频方案的选择偶数分频、整数分频方案的选择 常见的分频电路有偶

485、数分频、奇数分频和整数分频电路,本任常见的分频电路有偶数分频、奇数分频和整数分频电路,本任务从原理来看,既有偶数分频又有奇数分频,故应属于整数分频电务从原理来看,既有偶数分频又有奇数分频,故应属于整数分频电路。非等占空比的偶数分频、奇数分频电路有统一的设计方法并目路。非等占空比的偶数分频、奇数分频电路有统一的设计方法并目比较简单,但等占空比的偶数分频、奇数分频电路设计方法则不相比较简单,但等占空比的偶数分频、奇数分频电路设计方法则不相同。对于偶数同。对于偶数(2N)的等占空比分频,可先做的等占空比分频,可先做N非等占空比分频,再非等占空比分频,再做做2分频即可,比较简单。对于等占空比的奇数分频

486、电路则不能采分频即可,比较简单。对于等占空比的奇数分频电路则不能采用这种方法,比较复杂。用这种方法,比较复杂。下一页上一页9.2 完成工作任务的引导完成工作任务的引导 本任务可采取用较高频率本任务可采取用较高频率(比如比如12 MHz)的输入时钟,这样分频的输入时钟,这样分频比就比较大,故对于初学者,作为初步解决方案,可采用偶数分频比比就比较大,故对于初学者,作为初步解决方案,可采用偶数分频比近似代替奇数分频比的方法,把整数分频电路变成偶数近似代替奇数分频比的方法,把整数分频电路变成偶数(2N)分频电路,分频电路,用先做用先做N非等占空比分频,再做非等占空比分频,再做2分频这种较简单的方法来设

487、计分频这种较简单的方法来设计;作为作为提高,可采用比较复杂的真正的整数分频电路设计方法设计。提高,可采用比较复杂的真正的整数分频电路设计方法设计。 2.控制电路模块设计方案的选择控制电路模块设计方案的选择 控制电路模块的核心部分一一节拍产生模块是一个计数器,可采用控制电路模块的核心部分一一节拍产生模块是一个计数器,可采用通常的方法设计。通常的方法设计。 音符产生模块的输入信号是节拍产生模块输出的计数值,输出信号音符产生模块的输入信号是节拍产生模块输出的计数值,输出信号是表示音符的音符序号。是表示音符的音符序号。下一页上一页9.2 完成工作任务的引导完成工作任务的引导 在节拍产生模块输出的计数值

488、变化范围不大并目音符产生模块的输在节拍产生模块输出的计数值变化范围不大并目音符产生模块的输出数值不击灵活改变时,可用出数值不击灵活改变时,可用VHDL语句直接来描述音符产生模块。语句直接来描述音符产生模块。在节拍产生模块输出的计数值变化范围较大或音符产生模块的输出数在节拍产生模块输出的计数值变化范围较大或音符产生模块的输出数值击灵活改变时,可使用值击灵活改变时,可使用LPM_ROM来存储对应于不同计数值的音符来存储对应于不同计数值的音符序号。序号。 3. VHDL输入设计法和原理图输入设计法的选择输入设计法和原理图输入设计法的选择 在本任务中,底层模块采用在本任务中,底层模块采用VHDL输入设

489、计法较简单,而顶层模块输入设计法较简单,而顶层模块采用采用VHDL输入设计法或原理图输入设计法都可以。输入设计法或原理图输入设计法都可以。下一页上一页9.2 完成工作任务的引导完成工作任务的引导四、实施四、实施 下面以用于演奏下面以用于演奏“梁祝梁祝”乐曲的音乐电路为例,对音乐电路各模块的乐曲的音乐电路为例,对音乐电路各模块的实施进行进一步的分析。实施进行进一步的分析。 (一一)控制电路模块控制电路模块 控制电路模块包含节拍产生模块和音符产生模块两个子模块,可合写控制电路模块包含节拍产生模块和音符产生模块两个子模块,可合写成一个文件。成一个文件。 1.节拍产生模块设计分析节拍产生模块设计分析

490、根据以上分析,此模块为一计数器,现在击进一步决定计数器的模及根据以上分析,此模块为一计数器,现在击进一步决定计数器的模及其输入时钟频率。其输入时钟频率。 根据乐曲根据乐曲“梁祝梁祝”的谱,此乐曲以四分音符为一拍,四拍为一节,所的谱,此乐曲以四分音符为一拍,四拍为一节,所下一页上一页9.2 完成工作任务的引导完成工作任务的引导有的音的音长的最示公因数是一个十六分音符时值,所以以十六分音有的音的音长的最示公因数是一个十六分音符时值,所以以十六分音符时值作为一个状态持续时间,把乐曲符时值作为一个状态持续时间,把乐曲“梁祝梁祝”中各个音所占据状态中各个音所占据状态个数祟加而得知节拍产生模块计数器的模是

491、个数祟加而得知节拍产生模块计数器的模是139,其中最后体止符,其中最后体止符用了用了3个时间单位。个时间单位。 乐曲乐曲“梁祝梁祝”的简谱没有明确标出演奏速度,根据经验设定的简谱没有明确标出演奏速度,根据经验设定1 min演奏演奏60拍,因此一拍持续时间即四分音符的时值为拍,因此一拍持续时间即四分音符的时值为1 s,一个,一个状态持续时间即一个十六分音符时值为状态持续时间即一个十六分音符时值为0.25 s。故节拍产生模块输。故节拍产生模块输入时钟周期为入时钟周期为0.25 s,频率为频率为4 Hz。 2.音符产生模块设计分析音符产生模块设计分析 音符产生模块的功能是将节拍产生电路的计数器的计数

492、值按照乐音符产生模块的功能是将节拍产生电路的计数器的计数值按照乐曲曲“梁祝梁祝”的简谱翻译成对应的音符,若用的简谱翻译成对应的音符,若用Counter表示计数器的表示计数器的状状下一页上一页9.2 完成工作任务的引导完成工作任务的引导态,态,Index表示音符符号,则可对乐曲表示音符符号,则可对乐曲“梁祝梁祝”的简谱出现的音作如的简谱出现的音作如下规定,见下规定,见表表9-1。根据乐曲。根据乐曲“梁祝梁祝”的简谱可得其真值表,见的简谱可得其真值表,见表表9-2。 3.设计文件实体描述设计文件实体描述 两模块可合起来写成一个文件两模块可合起来写成一个文件NoteTabs.vhd,其实体描述如下,

493、其实体描述如下: LIBRARY ieee; USE ieee.std-logic-1164.ALL; ENTITY NoteTabs IS PORT(clk: IN STD_LOGIC; Index: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END;下一页上一页9.2 完成工作任务的引导完成工作任务的引导其中,输入时钟信号与其中,输入时钟信号与C1k4Hz相连相连;Index表示音符信息。因为表示音符信息。因为Index取值为取值为1 15,故为四位一进制信号。,故为四位一进制信号。 (二二)分频系数、分频系数、LED数据产生模块数据产生模块 1.设计文件实体描述

494、设计文件实体描述 此模块的功能是产生提供给可控分频模块的分频系数、提供给外此模块的功能是产生提供给可控分频模块的分频系数、提供给外围数码管和外围围数码管和外围LED的数据。其实体描述如下的数据。其实体描述如下: LIBRARY ieee; USE ieee.STD_LOGIC_1164.ALL; ENTITY ToneTaba IS PORT(Index: IN STD_LOGIC_VECTOR (3 DOWNTO 0); 下一页上一页9.2 完成工作任务的引导完成工作任务的引导 Seg: OUT STD_LOGIC_VECTOR (3 DOWNTO 0); Led: OUT STD_LOGI

495、C; Tone: OUT STD_LOGIC_VECTOR (10 DOWNTO 0); END; 其中,其中,Index为四位一进制信号,表示音符的信息为四位一进制信号,表示音符的信息; Seg为四位一进制信号,是提供给外围数码管的用于显示为四位一进制信号,是提供给外围数码管的用于显示 简谱音符符号的数据简谱音符符号的数据; Led是提供给外围是提供给外围LED的用于显示高低音的数据的用于显示高低音的数据; Tone是供给可控分频模块的分频系数。是供给可控分频模块的分频系数。 它们的关系见它们的关系见表表9-3。下一页上一页9.2 完成工作任务的引导完成工作任务的引导2.结构体设计分析结构体

496、设计分析 乐曲乐曲“梁祝梁祝”是是F调,其频率数据见调,其频率数据见表表9-3。在表中,可控分频。在表中,可控分频模块的输入时钟设为模块的输入时钟设为12 MHz,经前后,经前后12X2分频后为分频后为500 000 Hz,故供给可控分频模块的分频系数,故供给可控分频模块的分频系数Tone = -500 000/f又又考虑到最大分频比为考虑到最大分频比为500 000/349.2 1 432,其二进制表示,其二进制表示是是10110011000,故可控分频模块的计数器为十一位二进制计,故可控分频模块的计数器为十一位二进制计数器。数器。 (三三)可控分频模块可控分频模块 此模块的功能是用一个可控

497、分频电路来产生演奏音乐所击的每个此模块的功能是用一个可控分频电路来产生演奏音乐所击的每个音。可控分频模块实体描述如下音。可控分频模块实体描述如下:下一页上一页9.2 完成工作任务的引导完成工作任务的引导 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY Speakera IS PORT(clk: IN STD_LOGIC; Tone: IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS: OUT STD_LOGIC); END; 下一页上一页9.2 完

498、成工作任务的引导完成工作任务的引导 作为初步解决方案,采用偶数分频比近似代替奇数分频比的方作为初步解决方案,采用偶数分频比近似代替奇数分频比的方法,把整数分频电路变成偶数分频电路来设计。法,把整数分频电路变成偶数分频电路来设计。 可控分频模块是一个具有可控分频模块是一个具有12预分频和预分频和2后分频的可控分频电路。后分频的可控分频电路。可控分频模块的输入时钟可控分频模块的输入时钟clk频率选频率选12 MHz,为了使可控分频模,为了使可控分频模块分频系数取值范围比较合适,输入时钟先经块分频系数取值范围比较合适,输入时钟先经12分频,同时为了使分频,同时为了使输出信号输出信号SpkS具有较高的

499、驱动功率,可控分频后再经具有较高的驱动功率,可控分频后再经2分频,使输分频,使输出信号出信号 SpkS具有具有50%的占空比,从而具有较高的驱动功率。的占空比,从而具有较高的驱动功率。 分频电路的描述与计数器电路相似,下面进程描述一个分频电路的描述与计数器电路相似,下面进程描述一个12分频分频电路。电路。 下一页上一页9.2 完成工作任务的引导完成工作任务的引导下一页上一页9.2 完成工作任务的引导完成工作任务的引导PROCESS(clk) VARIABLE Count4:STD_LOGIC_VECTOR (3 DOWNTO 0); BEGIN PreCLK11 THEN PreCLKCLK4

500、HZ,Index=ToneIndex); u2:ToneTaba PORT MAP(Index=ToneIndex,Seg=SegCode, Led=LedHigh, Tone=Tone); u3:Speakera PORT MAP(clk=C1k12MHz,Tone=Tone, SpkS=SpkOut);END; 9.2 完成工作任务的引导完成工作任务的引导返 回上一页五、检查五、检查 分别编译各底层模块和整个电路设计,并分别仿真控制电路模块分别编译各底层模块和整个电路设计,并分别仿真控制电路模块和分频系数、和分频系数、LED数据产生模块。通过后,若有条件,应将源代码下数据产生模块。通过后,

501、若有条件,应将源代码下载到硬件中做最后的验证。载到硬件中做最后的验证。六、评估六、评估 对本次设计进行评估,可尝试更好的方案、方法。写出设计报告,对本次设计进行评估,可尝试更好的方案、方法。写出设计报告,设计报告应包括所应用到的设计报告应包括所应用到的EDA方法及知识的总结。方法及知识的总结。 9.2 完成工作任务的引导完成工作任务的引导下一页9.3相关技术基本知识与基本技能相关技术基本知识与基本技能一、相关音乐知识一、相关音乐知识 1.乐音的四个基本要素乐音的四个基本要素 一般来说,所有乐音有四个基本要素,而其中最重要的是一般来说,所有乐音有四个基本要素,而其中最重要的是“音的音的高低高低”

502、和和“音的长短音的长短”。 (1)音的高低音的高低 任何一首曲子都是由高低相间的音组成的,从钢琴上直观看就是任何一首曲子都是由高低相间的音组成的,从钢琴上直观看就是越往左面的键盘音越低,越往右面的键盘音越高。越往左面的键盘音越低,越往右面的键盘音越高。 (2)音的长短音的长短 除了音的高低外,还有一个重要的因素就是音的长短。音的高低除了音的高低外,还有一个重要的因素就是音的长短。音的高低和长短的标注决定了该首曲子有别于另外的曲子,因此成为构成音乐和长短的标注决定了该首曲子有别于另外的曲子,因此成为构成音乐的最重要的基础元素。的最重要的基础元素。下一页上一页 (3)音的强度音的强度 一首音乐作品

503、总会有一些音符的力度比较强一些,有些地方弱一些。一首音乐作品总会有一些音符的力度比较强一些,有些地方弱一些。而强度的变化是音乐作品中表达情感的因素之一。而强度的变化是音乐作品中表达情感的因素之一。 (4)音色音色 对于同样的旋律音高,男生和女声唱的音色就不一样,示提琴和钢对于同样的旋律音高,男生和女声唱的音色就不一样,示提琴和钢琴的音色也不一样。琴的音色也不一样。 2.音名与唱名音名与唱名 不同音高的乐音,是用不同音高的乐音,是用CDEFGAB来表示的,这来表示的,这7个拉丁字母就是个拉丁字母就是乐音的音名,它们一般依次唱成乐音的音名,它们一般依次唱成do(多多)、re(瑞瑞)、mi(米米)、

504、fa(发发)、sol(梭梭)、la(拉拉)、si(西西),即唱成简谱的,即唱成简谱的1, 2, 3, 4, 5, 6, 7o do(多多)、re(瑞瑞)、mi(米米)、是唱曲时乐音的发音,所以叫唱名。是唱曲时乐音的发音,所以叫唱名。 9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 3.简谱中的音符简谱中的音符 谱是国内广泛使用的记录音乐的方式。谱是一种比较简单易学的音谱是国内广泛使用的记录音乐的方式。谱是一种比较简单易学的音乐记谱法,它仅用乐记谱法,它仅用7个阿拉伯数字个阿拉伯数字1, 2, 3, 4, 5, 6, 7表示表示CDEFGAB,通过这,通过这7个阿拉伯数字,就能将千

505、变万化的音乐曲子记个阿拉伯数字,就能将千变万化的音乐曲子记录并表示出来。谱虽然不是出现在中国,但在中国得到了非常广泛的录并表示出来。谱虽然不是出现在中国,但在中国得到了非常广泛的传播。传播。 在谱中,记录音的高低和长短的符号,叫做音符。在谱中,记录音的高低和长短的符号,叫做音符。 简谱的音符相对应的数字的大示决定音的相对高低。比如数字简谱的音符相对应的数字的大示决定音的相对高低。比如数字2比比1大,大,re就比就比do高高;数字数字2比比3示,示,re就比就比mi低等。低等。 音符有多种类型,具体类型如下。音符有多种类型,具体类型如下。9.3 相关技术基本知识与基本技能相关技术基本知识与基本技

506、能下一页上一页 (1)按所记录的音的相对高低来分按所记录的音的相对高低来分 按所记录的音的相对高低,音符分为中音音符、高音音符、低音音按所记录的音的相对高低,音符分为中音音符、高音音符、低音音符、倍高音音符、倍低音音符、超高音音符、超低音音符、最高音音符符、倍高音音符、倍低音音符、超高音音符、超低音音符、最高音音符和最低音音符。和最低音音符。 7个音符主体个音符主体1, 2, 3, 4, 5, 6, 7就表示就表示7个中音音符。在个中音音符。在7个基本个基本的音符的音符17上面各加一个圆点即成为上面各加一个圆点即成为7个高音音符个高音音符: 。在七个基本的音符。在七个基本的音符1 2 3 4

507、5 6 7下面各加一个圆点即成为下面各加一个圆点即成为7个低音个低音音符音符: 。如果在中音音符上下各加两个圆点,就成为。如果在中音音符上下各加两个圆点,就成为倍高音音符和倍低音音符,在中音音符上下各加二个圆点,就成为超高倍高音音符和倍低音音符,在中音音符上下各加二个圆点,就成为超高音音符和超低音音符,在中音音符上下各加二个圆点,就成为最高音音音音符和超低音音符,在中音音符上下各加二个圆点,就成为最高音音符和最低音音符。符和最低音音符。9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 (2)按所记录

508、的音的相对长短来分按所记录的音的相对长短来分 按所记录的音的相对长短,音符分为全音符、二分音符、四分音符、按所记录的音的相对长短,音符分为全音符、二分音符、四分音符、八分音符、十六分音符和三十二分音符。八分音符、十六分音符和三十二分音符。 7个音符主体个音符主体1234567表示四分音符。在四分音符后面每加一条表示四分音符。在四分音符后面每加一条短横线就表示增加等于一个四分音符的时值短横线就表示增加等于一个四分音符的时值(时间长度时间长度),在四分音符,在四分音符后面加一条短横线就成为一分音符,例如后面加一条短横线就成为一分音符,例如2一一;在四分音符后面加二条在四分音符后面加二条短横线就成为

509、全音符,例如短横线就成为全音符,例如3一一一。在四分音符下面每加一条短横线,一一一。在四分音符下面每加一条短横线,就表示将其上面的音符的时值削减一半,在四分音符下面加一条短横就表示将其上面的音符的时值削减一半,在四分音符下面加一条短横线就成为八分音符,例如线就成为八分音符,例如4;在四分音符下面加两条或者二条短横线就在四分音符下面加两条或者二条短横线就成为十六分音符或者三十二分音符,例如成为十六分音符或者三十二分音符,例如 。 下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 (3)附点音符附点音符 附点音符又分为单附点音符和双附点音符。通常说附点音符即指单附点音符又分

510、为单附点音符和双附点音符。通常说附点音符即指单附点音符,如指双附点音符,必须加附点音符,如指双附点音符,必须加“双双”字。字。 单附点音符和双附点音符是在以上音符基础上,在其后面加上一个单附点音符和双附点音符是在以上音符基础上,在其后面加上一个或两个附点或两个附点(圆点或短横线圆点或短横线)构成。单附点将音符的时值增加一半,第构成。单附点将音符的时值增加一半,第二附点则将第一附点的时值增加一半。全音符和二分音符的附点不用二附点则将第一附点的时值增加一半。全音符和二分音符的附点不用圆点而用短横线,其他情况的附点使用圆点。例如圆点而用短横线,其他情况的附点使用圆点。例如4、 、3一一一一一一一、一

511、一一、2一一是单附点音符,而一一是单附点音符,而4、 、3一一一一、一一一一、2一一一一 双附点音符。双附点音符。 (4)休止符休止符 音乐有时会出现一定时间的体止音乐有时会出现一定时间的体止(间断间断),以适应表达乐思的需要,以适应表达乐思的需要,下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能同时也与乐音形成对比。只用数字同时也与乐音形成对比。只用数字0作记录休止符号,叫做休止符。作记录休止符号,叫做休止符。 4.调、节拍与速度调、节拍与速度 谱中的音符的音高只是相对的音高,需要指定其中一个基本音比谱中的音符的音高只是相对的音高,需要指定其中一个基本音比如如1的绝对

512、音高才能确定所有音符的绝对音高,谱中使用表明一首的绝对音高才能确定所有音符的绝对音高,谱中使用表明一首乐曲的调的方法来规定乐曲中各音符的绝对音高。例如乐曲的调的方法来规定乐曲中各音符的绝对音高。例如1=C,称为,称为C调,表明中音调,表明中音1发钢琴键盘中间的白色的发钢琴键盘中间的白色的C键的音。键的音。 一首乐曲的谱是由一个一个示节构成的,示节之间用一条示竖线一首乐曲的谱是由一个一个示节构成的,示节之间用一条示竖线隔开。一个示节中用某种时值的音符隔开。一个示节中用某种时值的音符(四分音符或八分音符等四分音符或八分音符等)作一作一拍,结合每示节的拍数拍,结合每示节的拍数(二拍、三拍等二拍、三拍

513、等)就构成了拍子。就构成了拍子。 标明拍子的记号叫拍号,用一个分数来表示。拍号的分母表示用标明拍子的记号叫拍号,用一个分数来表示。拍号的分母表示用什么时值的音符作一拍,分子表示每示节的拍数。什么时值的音符作一拍,分子表示每示节的拍数。下一页上一页例如,例如, ,分母数字,分母数字4表示用四分音符作一拍,分子数字表示用四分音符作一拍,分子数字2表示每示节表示每示节容纳两拍。容纳两拍。 速度指唱奏时节拍、节奏的快慢程度。唱奏速度是用每一分钟唱奏速度指唱奏时节拍、节奏的快慢程度。唱奏速度是用每一分钟唱奏多少拍表示,唱奏速度一定后,每一拍以至每个音符就有了确定的时多少拍表示,唱奏速度一定后,每一拍以至

514、每个音符就有了确定的时值,在此之前,每一拍和每个音符只有相对时值。值,在此之前,每一拍和每个音符只有相对时值。 5.音阶与调性音阶与调性 按照一定关系结合在一起的几个音按照一定关系结合在一起的几个音(一般是一般是7个音左右个音左右)组成一个有组成一个有主音主音(中心音中心音)的音列体系,构成一个调式。把调式中的个音,从主音的音列体系,构成一个调式。把调式中的个音,从主音到主音,按一定的音高关系排列起来的音列叫音阶。到主音,按一定的音高关系排列起来的音列叫音阶。 (1) 12个大调音阶个大调音阶 音与音之间的距离符合全全半全全全半的音与音之间的距离符合全全半全全全半的8个音,就称为大调音阶。个音

515、,就称为大调音阶。9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能这单的全和半分别指全音和半音。距离是一个半音的相邻两个音,高这单的全和半分别指全音和半音。距离是一个半音的相邻两个音,高音频率是低音频率的音频率是低音频率的“2的的1/12次方倍次方倍”。一个全音的距离等于两个。一个全音的距离等于两个半音的距离。半音的距离。 首先以大家最熟悉的首先以大家最熟悉的C大调音阶为例作一个说明。大调音阶为例作一个说明。 C大调音阶大调音阶:CDEFGABC,主音是,主音是C。 C与与D之间的音程为全音之间的音程为全音; D与与E之间的音程为全音之间的音程为全音; E与与F之间的音程为半音之间

516、的音程为半音; F与与G之间的音程为全音之间的音程为全音; G与与A之间的音程为全音之间的音程为全音; A与与B之间的音程为全音之间的音程为全音; B与与C之间的音程为半音。之间的音程为半音。 又例如又例如G大调大调:GABCDEF#G(这单的这单的F#是比是比F升半音的音升半音的音),也符合全,也符合全全半全全全半的规则。全半全全全半的规则。下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 了解大调的定义之后,就可以排出所有的大调音阶。因为一个八度了解大调的定义之后,就可以排出所有的大调音阶。因为一个八度内总共有内总共有12个半音,每一个都可以作为大调的起音,所以总共

517、有个半音,每一个都可以作为大调的起音,所以总共有12个大调。个大调。 C Major C D E F G A B C G Major G A B C D E F# G一个升一个升 D Major D E F# G A B C# D两个升两个升 A Major A B C# D E F# G# A二个升二个升 E Major E F# G# A B C# D# E四个升四个升 B Major B C# D# E F# G# A# B五个升五个升 F# Major F# G# A# B C# D# E# F#六个升六个升下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能等于等

518、于Gb Major Gb Ab Bb Cb Db Eb F Gb六降个六降个(这单这单的的Gb是比是比G降半音的音降半音的音) C# Major C# D# E# F# G# A# B# C#七个升等于七个升等于Db Major Db Eb F Gb Ab Bb C Db五个降五个降 Ab Major Ab Bb C Db Eb F G Ab四个降四个降 Eb Major Eb F G Ab Bb C D Eb二个降二个降 Bb Major Bb C D Eb F G A Bb两个降两个降 F Major F G A Bb C D E F一个降一个降 其中其中F#和和Gb, C#和和Db音名不

519、同,但实际上是相同的音。音名不同,但实际上是相同的音。 下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 从以上的从以上的12个大调可以看出,每往上五度就多一个升,个大调可以看出,每往上五度就多一个升,C G D A E B F # ,而每往下五度就多一个降,而每往下五度就多一个降,C F B b E b A b D b 也就是说,从任一个音往上或往下数完全五度,数完也就是说,从任一个音往上或往下数完全五度,数完12个之后又个之后又会回到同一个音,这就叫做五度圈,如图会回到同一个音,这就叫做五度圈,

520、如图9-2所示。所以,以后听到所示。所以,以后听到两个升的大调一定是两个升的大调一定是D大调,升大调,升F升升C: 两个降的大调一定是两个降的大调一定是Bb大调,大调,降降B降降E。 (2)示调音阶示调音阶 示调与大调的不同点在于示调听起来比较忧郁、哀伤,而大调比较示调与大调的不同点在于示调听起来比较忧郁、哀伤,而大调比较明快。示调有二种,在这单只讲最简单的自然示调。明快。示调有二种,在这单只讲最简单的自然示调。下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 自然示调的规则为全半全全半全全。完全没有升降的示调是自然示调的规则为全半全全半全全。完全没有升降的示调是A示调

521、示调:A B C D E F G A。同样,每往上完全五度就多一个升,往下完全。同样,每往上完全五度就多一个升,往下完全五度就多一个降。自然示调的升降数目与它上方示二度的大调相同。五度就多一个降。自然示调的升降数目与它上方示二度的大调相同。 例如例如:A示调跟示调跟C大调一样没有升降,大调一样没有升降,E示调跟示调跟G大调一样升大调一样升F, D示示调跟调跟F大调一样降大调一样降B。也就是说,。也就是说,A示调与示调与C大调共享这大调共享这7个音,只是个音,只是一个从一个从A开始一个从开始一个从C开始。所以归纳起来,如果看到乐开始。所以归纳起来,如果看到乐r,最前面的调最前面的调号是两个升号是

522、两个升(一定是升一定是升F升升C,不会有其他情况,不会有其他情况),就可以判断它是,就可以判断它是D大大调或者调或者B示调。如果是两个降示调。如果是两个降(一定是降一定是降B降降E),就可以判断是,就可以判断是Bb大大调或调或G示调。至于如何区分究竞是大调还是示调,要从旋律来看,必示调。至于如何区分究竞是大调还是示调,要从旋律来看,必须先熟悉示调的感觉,听旋律就来分辨是大调还是示调。须先熟悉示调的感觉,听旋律就来分辨是大调还是示调。下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 6.钢琴上各音的名称和频率钢琴上各音的名称和频率 图图9-3所示所示:为钢琴上各音的名称和

523、频率为钢琴上各音的名称和频率(以以al = 440 Hz为标为标准准)。 7.简谱中各调各音符的频率简谱中各调各音符的频率 简谱中各调的简谱中各调的do(多多)对应于钢琴上各组中此调的主音。以对应于钢琴上各组中此调的主音。以C调调为例,为例,C调是调是CDEFGABC,主音,主音C唱为唱为do(多多)。有些资料规定中。有些资料规定中音音do(多多)对应示字对应示字1组的组的c1,有些资料则升八度,规定低音,有些资料则升八度,规定低音do (多多)对应示字对应示字1组的组的c1。这单采用低音。这单采用低音do(多多)对应示字对应示字1组的组的cl,频率为频率为261.63 Hz。根据钢琴上各音的

524、频率,其余各音的频率依。根据钢琴上各音的频率,其余各音的频率依次列出,见次列出,见表表9-4。 下一页上一页 又例如又例如F调,调,F调是调是FGABbCDEF,主音是主音是F。采用低音。采用低音do(多多)对对应示字应示字1组的组的fl,频率为,频率为349.23 Hz。根据钢琴上各音的频率,其余。根据钢琴上各音的频率,其余各音的频率依次列出,见各音的频率依次列出,见表表9-5。 其他各调可模仿以上做法得出。其他各调可模仿以上做法得出。 8.歌曲简谱例子歌曲简谱例子(图图9-4)二、本项目用到的其他二、本项目用到的其他VHDL语言知识复习语言知识复习 1.组合逻辑模块的组合逻辑模块的VHDL

525、描述实例描述实例 对于简单的组合逻辑模块的对于简单的组合逻辑模块的VHDL描述,最常用的方法是应用描述,最常用的方法是应用CASE语句或语句或IF语句来描述,如语句来描述,如9.1所示。所示。 9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 例例9.1 LIBRARY ieee; USE ieee.STD_LOGIC_1164.ALL; ENTITY ToneTaba IS PORT(Index:IN STD_LOGIC_VECTOR (3 DOWNTO 0); Seg:OUT STD_LOGIC_VECTOR (3 DOWNTO 0); Led:OUT STD_LOGIC; T

526、one:OUT STD_LOGIC_VECTOR (10 DOWNTO 0); END; ARCHITECTURE one OF ToneTaba IS 下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 BEGIN PROCESS(Index) BEGIN CASE Index IS WHEN 0000=Tone=11111111111; Seg=0000; Led Tone=01001101000; Seg=0001; Led Tone=01100000101; Seg=0010; Led Tone=01110010000; Seg=0011; Led Tone=01

527、111010000; Seg=0100; Led Tone=10001000100; Seg=0101; Led Tone=10010101101; Seg=0110; Led Tone=10100001010; Seg=0111; Led Tone=10101011100; Seg=0001; Led Tone=10110000010; Seg=0010; Led Tone=10111001000; Seg=0011; Led Tone=10111101000; Seg=0100; Led Tone=11000100010; Seg=0101; Led Tone=11001010110; S

528、eg=0110; Led Tone=11010000100; Seg=0111; Led Tone=11010011010; Seg=0001; Led NULL; END CASE; END PROCESS; END; 在此例子中,输入信号是在此例子中,输入信号是Index输出信号有输出信号有 Tone, Seg, Led。使用使用CASE语句描述简单组合逻辑模块,具有与真值表对应的关系。语句描述简单组合逻辑模块,具有与真值表对应的关系。 2.时序逻辑模块的时序逻辑模块的VHDL描述实例描述实例 例例9.2 LIBRARY ieee; USE ieee.std_logic_1164.ALL;

529、 USE IEEE.std_logic_unsigned.ALL; 下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能ENTITY Speakera IS PORT(clk:IN STD_LOGIC; Tone:IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS:OUT STD_LOGIC);END;ARCHITECTURE one OF Speakera IS SIGNAL Fullclk:STD_LOGIC; BEGIN DivCLKl:PROCESS(clk, Tone) VARIABLE Countll:STD_LOGIC_VECTOR

530、 (10 DOWNTO 0); 下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 BEGIN IF clkEVENT AND clk= 1 THEN IF Count11=16#7FF# THEN Countll:=Tone;Fullclk=1; ELSE Count11:=Count11+1;Fullclk=0; END IF; END IF; -可控分频器可控分频器 END PROCESS; DivCLK2:PROCESS(Fullclk) VARIABLE Count2:STD_LOGIC; 下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能

531、 BEGIN IF FullclkEVENT AND Fullclk=1 THEN Count2:=NOT Count2; IF Count2=1 THEN SpkS=1; ELSE SpkS =0; END IF; - 展宽输出脉冲,同时展宽输出脉冲,同时2分频分频 END IF; END PROCESS; END; 此例包含两个分频电路的描述。此例包含两个分频电路的描述。下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 其中,其中,DivCLKl描述的是一个可控分频电路,其输入时钟是描述的是一个可控分频电路,其输入时钟是clk,可可控分频系数是控分频系数是Tone,

532、输出时钟是输出时钟是Fullclko DivCLK2是一个两分频电路,是一个两分频电路,输入时钟是输入时钟是Fullclk,输出时钟是输出时钟是SpkS。第一个是非等占空比分频电路,。第一个是非等占空比分频电路,第一个是等占空比频电路,故整个电路构成等占空比频电路。第一个是等占空比频电路,故整个电路构成等占空比频电路。 3.组合一时序逻辑模块的组合一时序逻辑模块的VHDL描述实例描述实例 例例9.3 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; ENTITY NoteTabs IS PORT(

533、下一页上一页9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能 clk:IN STD_LOGIC; Index:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END; ARCHITECTURE one OF NoteTabs IS SIGNAL Counter:INTEGER RANGE 0 TO 138; SIGNAL DateOut:INTEGER RANGE 0 TO 15;BEGIN CNT8:PROCESS(clk, Counter) BEGIN IF Counter=138 THEN Counter=0; 下一页上一页9.3 相关技术基本知识与基

534、本技能相关技术基本知识与基本技能 ELSIF (clkEVENT AND clk=1) THEN CounterDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOu

535、tDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutWHEN 62=DateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutWHEN 72=DateOutDateOutDateOutDat

536、eOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOut DateOutDateOutD

537、ateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOutDateOut WHEN 130=DateOutDateOut WHEN 132=DateOutDateOut WHEN 134=DateOutDateOutDateOutDateOutDateOutDateOut=0; END CASE; END PROCESS; Index=CONV_STD_LOGIC_VECTOR(Date0ut,4);END; 此电路有两个模块,此电路有两个模块,CNT8进程描述的一个是计数器,进程描述的一个是计数器,

538、Search进进程描述的是一个译码电路,两模块由程描述的是一个译码电路,两模块由Counter信号相连,这是一个数信号相连,这是一个数字系统的控制模块描述。字系统的控制模块描述。9.3 相关技术基本知识与基本技能相关技术基本知识与基本技能返 回上一页 9.4 本章小结本章小结返 回 图图 9-1 音乐电路设计总体参考方案音乐电路设计总体参考方案返 回 图图 9-2 五度圈五度圈返 回 图图 9-3 钢琴上各音的名称和频率钢琴上各音的名称和频率返 回 图图 9-4 梁祝化蝶简谱梁祝化蝶简谱返 回 表表 9-1 音符与音符与Index、LED数据数据 的对应关系的对应关系返 回 表表 9-2 音符产生模块真值表音符产生模块真值表下一页 表表 9-2 音符产生模块真值表音符产生模块真值表返 回上一页 表表 9-3分频系数、分频系数、LED数据产生模块真值表数据产生模块真值表返 回 表表 9-3分频系数、分频系数、LED数据产生模块真值表数据产生模块真值表返 回 表表 9-4 简谱中简谱中C调各音符的频率调各音符的频率返 回 表表 9-5 简谱中简谱中F调各音符的频率调各音符的频率返 回

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号