用VHDL语言做基于CPLD的数据采集控制系统 基于CPLD/FPGA的汽车信号灯控制器设计(VHDL)

\u8c01\u6709\u57fa\u4e8eCPLD\u7684\u7535\u5b50\u4e07\u5e74\u5386\u7684\u7a0b\u5e8f\uff08\u7528VHDL\u8bed\u8a00\uff09

\u7535\u5b50\u4e07\u5e74\u5386???\u90fd\u8981\u4ec0\u4e48\u529f\u80fd\u554a\u3002\u3002

\u6211\u8fd9\u6709\u7535\u5b50\u65f6\u949f\u7684\u3002\u4ee5\u524d\u5199\u7684\u3002

\u8bbe\u8ba1\u4efb\u52a1
\uff08\u4e00\uff09\u6709\u4e00\u6761\u4e3b\u5e72\u9053\u548c\u4e00\u6761\u652f\u5e72\u9053\u7684\u6c47\u5408\u70b9\u5f62\u6210\u5341\u5b57\u4ea4\u53c9\u8def\u53e3\uff0c\u4e3b\u5e72\u9053\u4e3a\u4e1c\u897f\u5411\uff0c\u652f\u5e72\u9053\u4e3a\u5357\u5317\u5411\u3002\u4e3a\u786e\u4fdd\u8f66\u8f86\u5b89\u5168\uff0c\u8fc5\u901f\u5730\u901a\u884c\uff0c\u5728\u4ea4\u53c9\u9053\u53e3\u7684\u6bcf\u4e2a\u5165\u53e3\u5904\u8bbe\u7f6e\u4e86\u7ea2\uff0c\u7eff\uff0c\u9ec43\u8272\u4fe1\u53f7\u706f\u3002
\uff08\u4e8c\uff09\u8981\u6c42\uff1a
\uff081\uff09\u4e3b\u5e72\u9053\u7eff\u706f\u4eae\u65f6\uff0c\u652f\u5e72\u9053\u7ea2\u706f\u4eae\uff0c\u53cd\u4e4b\u4ea6\u7136\uff0c\u4e24\u8005\u4ea4\u66ff\u5141\u8bb8\u901a\u884c\uff0c\u4e3b\u5e72\u9053\u6bcf\u6b21\u653e\u884c55s\uff0c\u652f\u5e72\u9053\u6bcf\u6b21\u653e\u884c25s\u3002\u6bcf\u6b21\u7531\u7eff\u706f\u53d8\u4e3a\u7ea2\u706f\u7684\u8fc7\u7a0b\u4e2d\uff0c\u9ec4\u706f\u4eae5s\u4f5c\u4e3a\u8fc7\u6e21\u3002
\uff082\uff09\u80fd\u5b9e\u73b0\u6b63\u5e38\u7684\u5012\u8ba1\u65f6\u663e\u793a\u529f\u80fd\u3002
\uff083\uff09\u80fd\u5b9e\u73b0\u603b\u4f53\u6e05\u96f6\u529f\u80fd\uff1a\u8ba1\u6570\u5668\u7531\u521d\u59cb\u72b6\u6001\u5f00\u59cb\u8ba1\u6570\uff0c\u5bf9\u5e94\u72b6\u6001\u7684\u6307\u793a\u706f\u4eae\u3002
\uff084\uff09\u80fd\u5b9e\u73b0\u7279\u6b8a\u72b6\u6001\u7684\u529f\u80fd\u663e\u793a\uff1a\u8fdb\u5165\u7279\u6b8a\u72b6\u6001\u65f6\uff0c\u4e1c\u897f\u3001\u5357\u5317\u8def\u53e3\u5747\u663e\u793a\u7ea2\u706f\u72b6\u6001\u3002

Verilog HDL\u4f5c\u4e3a\u4e00\u79cd\u89c4\u8303\u7684\u786c\u4ef6\u63cf\u8ff0\u8bed\u8a00,\u88ab\u5e7f\u6cdb\u5e94\u7528\u4e8e\u7535\u8def\u7684\u8bbe\u8ba1\u4e2d\u3002\u5229\u7528Verilog\u7684\u8bbe\u8ba1\u63cf\u8ff0\u53ef\u88ab\u4e0d\u540c\u7684\u5de5\u5177\uff08\u5305\u62ec\u9a8c\u8bc1\u4eff\u771f\u3001\u65f6\u5e8f\u5206\u6790\u3001\u6d4b\u8bd5\u5206\u6790\u4ee5\u53ca\u7efc\u5408\uff09\u6240\u652f\u6301,\u53ef\u7528\u4e0d\u540c\u5668\u4ef6\u6765\u5b9e\u73b0\u3002\u800c\u53ef\u7f16\u7a0b\u5668\u4ef6\u7684\u5e7f\u6cdb\u5e94\u7528\uff0c\u4e3a\u6570\u5b57\u7cfb\u7edf\u7684\u8bbe\u8ba1\u5e26\u6765\u4e86\u6781\u5927\u7684\u7075\u6d3b\u6027\u3002\u7531\u4e8e\u53ef\u7f16\u7a0b\u5668\u4ef6\u53ef\u4ee5\u901a\u8fc7\u8f6f\u4ef6\u7f16\u7a0b\u5bf9\u786c\u4ef6\u7684\u7ed3\u6784\u548c\u5de5\u4f5c\u65b9\u5f0f\u8fdb\u884c\u91cd\u6784\uff0c\u4f7f\u5f97\u786c\u4ef6\u7684\u8bbe\u8ba1\u53ef\u4ee5\u5982\u540c\u8f6f\u4ef6\u8bbe\u8ba1\u90a3\u6837\u5feb\u6377\u65b9\u4fbf\u3002
\u672c\u6587\u7528Verilog HDL\u8bbe\u8ba1\u4e86\u4e00\u4e2a\u4ea4\u901a\u706f\u63a7\u5236\u7cfb\u7edf\uff0c\u4e3b\u5e72\u9053\u4ea4\u901a\u706f\u6309\u7eff\uff0d\u9ec4\uff0d\u7ea2\u53d8\u5316\uff0c\u652f\u5e72\u9053\u4ea4\u901a\u706f\u6309\u7ea2\uff0d\u7eff\uff0d\u9ec4\u53d8\u5316\u3002\u8bbe\u8ba1\u91c7\u7528\u4e86\u81ea\u9876\u5411\u4e0b\u7684\u8bbe\u8ba1\u65b9\u6cd5\uff0c\u9996\u5148\u6839\u636e\u529f\u80fd\u5c06\u7535\u8def\u5206\u4e3adiv(\u5305\u62ecdiv1\u548cdiv2)\u3001counter\u3001controller\u3001Fenwei(\u5305\u62ecFenwei1\u548cFenwei2)\u3001demx\u6a21\u5757\uff0c\u7136\u540e\u9488\u5bf9\u6bcf\u4e2a\u6a21\u5757\u8fdb\u884c\u5f00\u53d1\u3002\u5229\u7528QuartusII6.0\u4e2d\u7684\u4eff\u771f\u5de5\u5177\u5bf9\u6bcf\u4e2a\u6a21\u5757\u8fdb\u884c\u4eff\u771f\uff0c\u4fdd\u8bc1\u529f\u80fd\u6b63\u786e\u3002\u5728\u6b64\u57fa\u7840\u4e0a\uff0c\u5c06\u6240\u6709\u6a21\u5757\u8fde\u63a5\u8d77\u6765\uff0c\u5f62\u6210\u5b8c\u6574\u7684\u8bbe\u8ba1\uff0c\u5e76\u7528QuartusII6.0\u4e2d\u7684\u4eff\u771f\u5de5\u5177\u518d\u6b21\u4eff\u771f\u3002\u4eff\u771f\u7ed3\u679c\u8868\u660e\u529f\u80fd\u6b63\u786e\uff0c\u7b26\u5408\u8bbe\u8ba1\u8981\u6c42\u3002\u6700\u540e\u5229\u7528QuartusII6.0\u5c06\u7a0b\u5e8f\u4e0b\u8f7d\u5230Altera FPGA\u82af\u7247EP1C3T144C8\u4e2d\uff0c\u5b9e\u9645\u7ed3\u679c\u8868\u660e\u7535\u8def\u5de5\u4f5c\u6b63\u5e38\uff0c\u6ee1\u8db3\u4e86\u8bbe\u8ba1\u8981\u6c42\u3002

第1章 概 述
21世纪人类将全面进入信息化社会,对微电子信息技术和微电子VLSI基础技术将不断提出更高的发展要求,微电子技术仍将继续是21世纪若干年代中最为重要的和最有活力的高科技领域之一。而集成电路(IC)技术在微电子领域占有重要的地位。伴随着IC技术的发展,电子设计自动化(Electronic Design Automation EDA)己经逐渐成为重要设计手段,其广泛应用于模拟与数字电路系统等许多领域。
VHDL是广泛使用的设计输人硬件语言,可用于数字电路与系统的描述、模拟和自动设计.CPLD/FPGA(复杂可编程逻辑器件/现场可编程门阵列)为数字系统的设计带灵活性,兼有串!并行工作方式和高集成度!高速!高可靠性等明显的特点,CPLD/FPGA的时钟延迟可达纳秒级,结合其并行工作方式,在超高速领域和实时测控方面有非常广泛的应用。
本次设计的目的是使用可编程逻辑器件设计一个专用的A/D转换器的控制器,取代常用的微控制器,用于数据采集。本文讲述对A/D进行数据采样控制。设计要求用一片CPLD/FPGA,模数转换控制器ADC和LED显示器构成一个数据采集系统,用CPLD/FPGA实现数据采集中对A/D 转换,数据运算,及有关数据的显示控制。课题除了学习相应的硬件知识外,还要学习如何使用VHDL语言设计可编程逻辑器件。
未来的EDA技术向广度和深度两个方向发展.
(1)在广度上,EDA技术会日益普及.在过去,由于EDA软件价格昂贵,对硬件环境要求高,其运行环境是工作站和UNIX操作系统.最近几年,EDA软件平台化进展迅速,这些PC平台上的EDA软件具有整套的逻辑设计、仿真和综合工具.随着PC机性能的提高,PC平台上的软件功能将会更加完善.
(2)在深度上,EDA技术发展的下一步是ESDA伍electronic System Design Automation电子系统设计自动化)和CE (Concurrent Engineering并行设计工程).目前的各种EDA工具,如系统仿真,PCB布线、逻辑综合、DSP设计工具是彼此独立的.随着技术的发展,要求所有的系统工具在统一的数据库及管理框架下工作,由此提出了ESDA和CE概念。

第2章 EDA的发展历程及其应用
2.1电子设计自动化(EDA)发展概述
2.1.1什么是电子设计自动化(EDA )
在电子设计技术领域,可编程逻辑器件(如PLD, GAL)的应用,已有了很好的普及。这些器件为数字系统的设计带来极大的灵活性。由于这类器件可以通过软件编程而对其硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程、乃至设计观念。
电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,是20世纪90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术就是以计算机为工具,在EDA软件平台上,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述,在EDA工具的帮助下和应用相应的FPGA/CPLD器件,就可以得到最后的设计结果。尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。当然,这里的所谓EDA主要是指数字系统的自动化设计,因为这一领域的软硬件方面的技术已比较成熟,应用的普及程度也已比较大。而模拟电子系统的EDA正在进入实用,其初期的EDA工具不一定需要硬件描述语言。此外,从应用的广度和深度来说,由于电子信息领域的全面数字化,基于EDA的数字系统的设计技术具有更大的应用市场和更紧迫的需求性。
2.1.2 EDA的发展历史
EDA技术的发展始于70年代,至今经历了三个阶段。电子线路的CAD(计算机辅助设计)是EDA发展的初级阶段,是高级EDA系统的重要组成部分。它利用计算机的图形编辑、分析和存储等能力,协助工程师设计电子系统的电路图、印制电路板和集成电路板图;采用二维图形编辑与分析,主要解决电子线路设计后期的大量重复性工作,可以减少设计人员的繁琐重复劳动,但自动化程度低,需要人工干预整个设计过程。这类专用软件大多以微机为工作平台,易于学用,设计中小规模电子系统可靠有效,现仍有很多这类专用软件被广泛应用于工程设计。80年代初期,EDA技术开始技术设计过程的分析,推出了以仿真(逻辑模拟、定时分析和故障仿真)和自动布局与布线为核心的EDA产品,这一阶段的EDA已把三维图形技术、窗口技术、计算机操作系统、网络数据交换、数据库与进程管理等一系列计算机学科的最新成果引入电子设计,形成了CAE—计算机辅助工程。也就是所谓的EDA技术中级阶段。其主要特征是具备了自动布局布线和电路的计算机仿真、分析和验证功能。其作用已不仅仅是辅助设计,而且可以代替人进行某种思维。CAE这种以原理图为基础的EDA系统,虽然直观,且易于理解,但对复杂的电子设计很难达到要求,也不宜于设计的优化。
所以,90年代出现了以自动综合器和硬件描述语言为基础,全面支持电子设计自动化的ESDA(电子系统设计自动化),即EDA阶段、也就是目前常说的EDA.过去传统的电子系统电子产品的设计方法是采用自底而上(Bottom_ Up)的程式,设计者先对系统结构分块,直接进行电路级的设计。这种设计方式使设计者不能预测下一阶段的问题,而且每一阶段是否存在问题,往往在系统整机调试时才确定,也很难通过局部电路的调整使整个系统达到既定的功能和指标,不能保证设计一举成功。EDA技术高级阶段采用一种新的设计概念:自顶而下(Top_ Down)的设计程式和并行工程(Concurrent engineering)的设计方法,设计者的精力主要集中在所要电子产品的准确定义上,EDA系统去完成电子产品的系统级至物理级的设计。此阶段EDA技术的主要特征是支持高级语言对系统进行描述,高层次综合(High Level Synthesis)理论得到了巨大的发展,可进行系统级的仿真和综合。图2-1给出了上述三个阶段的示意图。

图2-1 EDA发展阶段示意图

2.1.3 EDA的应用
随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也依赖于EDA技术的应用。即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。
电子设计专家认为,单片机时代已经结束,未来将是EDA的时代,这是极具深刻洞察力之言。随着微电子技术的飞速进步,电子学进入了一个崭新的时代。其特征是电子技术的应用以空前规模和速度渗透到各行各业。各行业对自己专用集成电路(ASIC)的设计要求日趋迫切,现场可编程器件的广泛应用,为各行业的电子系统设计工程师自行开发本行业专用的ASIC提供了技术和物质条件。与单片机系统开发相比,利用EDA技术对FPGA/CPLD的开发,通常是一种借助于软件方式的纯硬件开发,可以通过这种途径进行专用ASIC开发,而最终的ASIC芯片,可以是FPGA/CPLD,也可以是专制的门阵列掩模芯片,FPGA/ CPLD起到了硬件仿真ASIC芯片的作用。
2.2基于EDA的FPGA/ CPLD开发
我国的电子设计技术发展到今天,将面临一次更大意义的突破,即FPGA/CPLD (Field Programmable Gate Array,现场可编程门阵列/Complex Programmable Logic Device,复杂可编程逻辑器件)在EDA基础上的广泛应用。从某种意义上说,新的电子系统运转的物理机制又将回到原来的纯数字电路结构,但却是一种更高层次的循环,它在更高层次上容纳了过去数字技术的优秀部分,对(Micro Chip Unit) MCU系统是一种扬弃,在电子设计的技术操作和系统构成的整体上发生了质的飞跃。如果说MCU在逻辑的实现上是无限的话,那么FPGA/CPLD不但包括了MCU这一特点,而且可以触及硅片电路的物理极限,并兼有串、并行工作方式,高速、高可靠性以及宽口径适用性等诸多方面的特点。不但如此,随着EDA技术的发展和FPGA/CPLD在深亚微米领域的进军,它们与MCU, MPU, DSP, A/D, D/A, RAM和ROM等独立器件间的物理与功能界限已日趋模糊。特别是软/硬IP芯片(知识产权芯片;intelligence Property Core,一种已注册产权的电路设计)产业的迅猛发展,嵌入式通用及标准FPGA器件的呼之欲出,片上系统(SOC)已经近在咫尺。FPGA/CPLD以其不可替代的地位及伴随而来的极具知识经济特征的IP芯片产业的崛起,正越来越受到业内人士的密切关注。
2.2.1 FPGA/CPLD简介
FPGA和CPLD都是高密度现场可编程逻辑芯片,都能够将大量的逻辑功能集成于一个单片集成电路中,其集成度已发展到现在的几百万门。复杂可编程逻辑器件CPLD是由PAL (Programmable Array Logic,可编程阵列逻辑)或GAL (Generic Array Logic,通用阵列逻辑)发展而来的。它采用全局金属互连导线,因而具有较大的延时可预测性,易于控制时序逻辑;但功耗比较大。现场可编程门阵列(FPGA)是由可编程门阵列(MPGA)和可编程逻辑器件二者演变而来的,并将它们的特性结合在一起,因此FPGA既有门阵列的高逻辑密度和通用性,又有可编程逻辑器件的用户可编程特性。FPGA通常由布线资源分隔的可编程逻辑单元(或宏单元)构成阵列,又由可编程Ir0单元围绕阵列构成整个芯片。其内部资源是分段互联的,因而延时不可预测,只有编程完毕后才能实际测量。
CPLD和FPGA建立内部可编程逻辑连接关系的编程技术有三种:基于反熔丝技术的器件只允许对器件编程一次,编程后不能修改。其优点是集成度、工作频率和可靠性都很高,适用于电磁辐射干扰较强的恶劣环境。基于EEPROM存储器技术的可编程逻辑芯片能够重复编程100次以上,系统掉电后编程信息也不会丢失。编程方法分为在编程器上编程和用下载电缆编程。用下载电缆编程的器件,只要先将器件装焊在印刷电路板上,通过PC, SUN工作站、ATE(自动测试仪)或嵌入式微处理器系统,就能产生编程所用的标准5V, 3.3V或2.5V逻辑电平信号,也称为ISP (In System Programmable)方式编程,其调试和维修也很方便。基于SRAM技术的器件编程数据存储于器件的RAM区中,使之具有用户设计的功能。在系统不加电时,编程数据存储在EPROM、硬盘、或软盘中。系统加电时将这些编程数据即时写入可编程器件,从而实现板级或系统级的动态配置。
2.2.2基于EDA工具的FPGA/CPLD开发流程
FPGA/CPLD的开发流程:设计开始首先利用EDA工具的文本或图形编辑器将设计者的设计意图用文本方式(如VHDL, Verilog-HDL程序)或图形方式(原理图、状态图等)表达出来。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合准备。在此,对于多数EDA软件来说,最初的设计究竟采用哪一种输入形式是可选的,也可混合使用。一般原理图输入方式比较容易掌握,直观方便,所画的电路原理图(请注意,这种原理图与利用PROTEL画的原理图有本质的区别)与传统的器件连接方式完全一样,很容易为人接受,而且编辑器中有许多现成的单元器件可资利用,自己也可以根据需要设计元件(元件的功能可用HDL表达,也可仍用原理图表达)。当然最一般化、最普适性的输入方法是HDL程序的文本方式。这种方式最为通用。如果编译后形成的文件是标准VHDL文件,在综合前即可以对所描述的内容进行仿真,称为行为仿真。即将设计源程序直接送到VHDL仿真器中仿真。因为此时的仿真只是根据VHDL的语义进行的,与具体电路没有关系。在仿真中,可以充分发挥VHDL中的适用于仿真控制的语句,对于大型电路系统的设计,这一仿真过程是十分必要的,但一般情况下,可以略去这一步骤.

图2-2 FPGA / CPLD开发流程
设计的第三步是综合,将软件设计与硬件的可实现性挂钩,这是将软件转化为硬件电路的关键步骤。综合器对源文件的综合是针对某一FPGA/CPLD供应商的产品系列的,因此,综合后的结果具有硬件可实现性。在综合后,HDL综合器一般可生成EDIF, XNF或VHDL等格式的网表文件,从门级来描述了最基本的门电路结构。有的EDA软件,具有为设计者将网表文件画成不同层次的电路图的功能。综合后,可利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。功能仿真仅对设计描述的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及具体器件的硬件特性,如延迟特性。一般的设计,这一层次的仿真也可略去。综合通过后必须利用FPGA/CPLD布局/布线适配器将综合后的网表式文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。适配完成后,EDA软件将产生针对此项设计的多项结果:1适配报告:内容包括芯片内资源分配与利用、引脚锁定、设计的布尔方程描述情况等;2时序仿真用网表文件;3下载文件,如JED或POF文件;4适配错误报告等。时序仿真是接近真实器件运行的仿真,仿真过程中己将器件硬件特性考虑进去了,因此仿真精度要高得多。时序仿真的网表式文件中包含了较为精确的延迟信息。如果以上的所有过程,包括编译、综合、布线/适配和行为仿真、功能仿真、时序仿真都没有发现问题,即满足原设计的要求,就可以将适配器产生的配置/下载文件通过FPGA/CPLD编程器或下载电缆载入目标芯片FPGA或CPLD中,然后进入如图1-2所示的最后一个步骤:硬件仿真或测试,以便在更真实的环境中检验设计的运行情况。这里所谓的硬件仿真,是针对ASIC设计而言的。在ASIC设计中,比较常用的方法是利用FPGA对系统的设计进行功能检测,通过后再将其VHDL设计以ASIC形式实现;而硬件测试则是针对FPGA或CPLD直接用于电路系统的检测而言的。
2.2.3用FPGA/CPLD进行开发的优缺点
我们认为,基于EDA技术的FPGA/CPLD器件的开发应用可以从根本上解决MCU所遇到的问题。与MCU相比,FPGA/CPLD的优势是多方面的和根本性的:
1.编程方式简便、先进。FPGA/CPLD产品越来越多地采用了先进的IEEE 1149.1边界扫描测试(BST)技术(由联合测试行动小组,JTAG开发)和ISP(在系统配置编程方式)。在+5V工作电平下可随时对正在工作的系统上的FPGA/CPLD进行全部或部分地在系统编程,并可进行所谓菊花链式多芯片串行编程,对于SRAM结构的FPGA,其下载编程次数几乎没有限制(如Altera公司的FLEXI 10K系列)。这种编程方式可轻易地实现红外编程、超声编程或无线编程,或通过电话线远程在线编程。这些功能在工控、智能仪器仪表、通讯和军事上有特殊用途。
2.高速。FPGA/CPLD的时钟延迟可达纳秒级,结合其并行工作方式,在超高速应用领域和实时测控方面有非常广阔的应用前景。
3.高可靠性。在高可靠应用领域,MCU的缺憾为FPGA/CPLD的应用留下了很大的用武之地。除了不存在MCU所特有的复位不可靠与PC可能跑飞等固有缺陷外,FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,从而大大缩小了体积,易于管理和屏蔽。
4.开发工具和设计语言标准化,开发周期短。由于FPGA/CPLD的集成规模非常大,集成度可达数百万门。因此,FPGA/ CPLD的设计开发必须利用功能强大的EDA工具,通过符合国际标准的硬件描述语言(如VHDL或Verilog-HDL)来进行电子系统设计和产品开发。由于开发工具的通用性、设计语言的标准化以及设计过程几乎与所用的FPGA/ CPLD器件的硬件结构没有关系.
所以设计成功的各类逻辑功能块软件有很好的兼容性和可移植性,它几乎可用于任何型号的FPGA/ CPLD中,由此还可以知识产权的方式得到确认,并被注册成为所谓的IP芯片,从而使得片上系统的产品设计效率大幅度提高。由于相应的EDA软件功能完善而强大,仿真方式便捷而实时,开发过程形象而直观,兼之硬件因素涉及甚少,因此可以在很短时间内完成十分复杂的系统设计,这正是产品快速进入市场的最宝贵的特征。美国TI公司认为,一个ASIC 80%的功能可用IP芯片等现成逻辑合成。EDA专家预言,未来的大系统的FPGA/CPLD设计仅仅是各类再应用逻辑与IP芯片的拼装,其设计周期最少仅数分钟。
5.功能强大,应用广阔。目前,FPGA/ CPLD可供选择范围很大,可根据不同的应用选用不同容量的芯片。利用它们可实现几乎任何形式的数字电路或数字系统的设计。随着这类器件的广泛应用和成本的大幅度下降,FPGA/CPLD在系统中的直接应用率正直逼ASIC的开发。同时,FPGA/CPLD设计方法也有其局限性。这主要体现在以下几点:
(1).FPGA/CPLD设计软件一般需要对电路进行逻辑综合优化((Logic段Synthesis & Optimization),以得到易于实现的结果,因此,最终设计和原始设计之间在逻辑实现和时延方面具有一定的差异。从而使传统设计方法中经常采用的一些电路形式(特别是一些异步时序电路)在FPGA/CPLD设计方法中并不适用。这就要求设计人员更加了解FPGA/CPLD设计软件的特点,才能得到优化的设计;
(2).FPGA一般采用查找表(LUT)结构(Xilinx), AND-OR结构(Altera)或多路选择器结构(Actel),这些结构的优点是可编程性,缺点是时延过大,造成原始设计中同步信号之间发生时序偏移。同时,如果电路较大,需要经过划分才能实现,由于引出端的延迟时间,更加大了延迟时间和时序偏移。时延问题是ASIC设计当中常见的问题。要精确地控制电路的时延是非常困难的,特别是在像FPGA/CPLD这样的可编程逻辑当中。
(3). FPGA/CPLD的容量和I/O数目都是有限的,因此,一个较大的电路,需经逻辑划分((Logic Partition)才能用多个FPGA/CPLD芯片实现,划分算法的优劣直接影响设计的性能;
(4).由于目标系统的PCB板的修改代价很高,用户一般希望能够在固定的引 分配的前提下对电路进行修改。但在芯片利用率提高,或者芯片I/O引出端很多的情况下,微小的修改往往会降低芯片的流通率;
(5).早期的FPGA芯片不能实现存储器、模拟电路等一些特殊形式的电路。最新的一些FPGA产品集成了通用的RAM结构。但这种结构要么利用率不高,要么不完全符合设计者的需要。这种矛盾来自于FPGA本身的结构局限性,短期内很难得到很好的解决。
6.尽管FPGA实现了ASIC设计的硬件仿真,但是由于FPGA和门阵列、标准单元等传统ASIC形式的延时特性不尽相同,在将FPGA设计转向其他ASIC设计时,仍然存在由于延时不匹配造成设计失败的可能性。针对这个问题,国际上出现了用FPGA阵列对ASIC进行硬件仿真的系统(如Quicktum公司的硬件仿真系统)。这种专用的硬件仿真系统利用软硬件结合的方法,用FPGA阵列实现了ASIC快速原型,接入系统进行测试。该系统可以接受指定的测试点,在FPGA阵列中可以直接观测(就像软件模拟中一样),所以大大提高了仿真的准确性和效率。
2.3硬件描述语言(HDL)
硬件描述语言(HDL)是相对于一般的计算机软件语言如C, Pascal而言的。HDL是用于设计硬件电子系统的计算机语言,它描述电子系统的逻辑功能、电路结构和连接方式。设计者可以利用HDL程序来描述所希望的电路系统,规定其结构特征和电路的行为方式;然后利用综合器和适配器将此程序变成能控制FPGA和CPLD内部结构、并实现相应逻辑功能的门级或更底层的结构网表文件和下载文件。硬件描述语言具有以下几个优点:a.设计技术齐全,方法灵活,支持广泛。b.加快了硬件电路的设计周期,降低了硬件电路的设计难度。c.采用系统早期仿真,在系统设计早期就可发现并排除存在的问题。d.语言设计可与工艺技术无关。e.语言标准,规范,易与共享和复用。就FPGA/CPLD开发来说,VHDL语言是最常用和流行的硬件描述语言之一。本次设计选用的就是VHDL语言,下面将主要对VHDL语言进行介绍。
2.3.1 VHDL语言简介
VHDL是超高速集成电路硬件描述语言的英文字头缩写简称,其英文全名 是Very-High -Speed Integrated Circuit Hardware Description Language。它是在70- 80年代中由美国国防部资助的VHSIC(超高速集成电路)项目开发的产品,诞生于1982年。1987年底,VHDL被IEEE(The Institute of Electrical and产Electronics Engineers)确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本((IEEE std 1076-1987标准)之后,各EDA公司相继推出了自己的VHDL设计环境。此后,VHDL在电子设计领域受到了广泛的接受,并逐步取代了原有的非标准HDL。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即ANSI/IEEE std1076,1993版本。1996年IEEE 1076.3成为VHDL综合标准。
VHDL主要用于描述数字系统的结构、行为、功能和接口,非常适用于可编程逻辑芯片的应用设计。与其它的HDL相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等目标器件的网表文件己不成问题。
VHDL语言在硬件设计领域的作用将与C和C++在软件设计领域的作用一样,在大规模数字系统的设计中,它将逐步取代如逻辑状态表和逻辑电路图等级别较低的繁琐的硬件描述方法,而成为主要的硬件描述工具,它将成为数字系统设计领域中所有技术人员必须掌握的一种语言。VHDL和可编程逻辑器件的结合作为一种强有力的设计方式,将为设计者的产品上市带来创纪录的速度
2.3.2 VHDL语言设计步骤
利用VHDL语言进行设计可分为以下几个步骤:
1.设计要求的定义。在从事设计进行编写VHDL代码之前,必须先对你的设计目的和要求有一个明确的认识。例如,你要设计的功能是什么?对所需的信号建立时间、时钟/输出时间、最大系统工作频率、关键的路径等这些要求,要有一个明确的定义,这将有助于你的设计,然后再选择适当的设计方式和相应的器件结构,进行设计的综合。
2.用VHDL语言进行设计描述。
(1)应决定设计方式,设计方式一般说来有三种:自顶向下设计,自底向上设计,平坦式设计。
前两种方式包括设计阶层的生成,而后一种方式将描述的电路当作单模块电路来进行的。自顶向下的处理方式要求将你的设计划分成不同的功能元件,每个元件具有专门定义的输入和输出,并执行专门的逻辑功能。首先生成一个由各功能元件相互连接形成的顶层模块来做成一个网表,然后再设计其中的各个元件。而自底向上的处理方法正好相反。平坦式设计则是指所有功能元件均在同一层和同一图中详细进行的。
(2)编写设计代码。编写VHDL语言的代码与编写其它计算机程序语言的代码有很大的不同,你必须清醒地认识到你正在设计硬件,编写的VHDL代码必须能够综合到采用可编程逻辑器件来实现的数字逻辑之中。懂得EDA工具中仿真软件和综合软件的大致工作过程,将有助于编写出优秀的代码。
3.用VHDL仿真器对VHDL原代码进行功能仿真。对于大型设计,采用VHDL仿真软件对其进行仿真可以节省时间,可以在设计的早期阶段检测到设计中的错误,从而进行修正,以便尽可能地减少对设计日程计划的影响。因为对于大型设计,其综合优化、配置往往要花费好几个小时,在综合之前对原代码仿真,就可以大大减少设计重复和修正错误的次数和时间。但对于小型设计,则往往不需要先对VHDL原代码进行仿真,即使做了,意义也不大。因为对于小型设计,其综合优化、配置花费的时间不多,而且在综合优化之后,你往往会发现为了实现性能目标,将需要修改你的设计。在这种情况下,用户事先在原代码仿真时所花费的时间是毫无意义的,因为一旦改变设计,还必须重新再做仿真。
4.利用VHDL综合优化软件对VHDL原代码进行综合优化处理。选择目标器件、输入约束条件后,VHDL综合优化软件工具将对VHDL原代码进行处理,产生一个优化了的网络表,并可以进行粗略的时序仿真。综合优化软件工具大致的处理过程如下:首先检测语法和语意错误;然后进行综合处理,对CPLD器件而言,将得到一组工艺专用逻辑方程,对FPGA器件而言,将得到一个工艺专用网表;最后进行优化处理,对CPLD的优化通常包括将逻辑化简为乘积项的最小和式,降低任何给定的表达式所需的逻辑块输入数,这些方程进一步通过器件专用优化来实现资源配置。对FPGA的优化通常也需要用乘积项的和式来表达逻辑,方程系统可基于器件专用资源和驱动优化目标指引来实现因式分解,分解的因子可用来对实现的有效性进行评估,其准则可用来决定是对方程序系统进行不同的因式分解还是保持现有的因子。准则通常是指分享共同因子的能力,即可以被暂存,以便于和任何新生成的因子相比较。
5.配置。将综合优化处理后得到的优化了的网络表,安放到前面选定的CPLD或FPGA目标器件之中,这一过程称为配置。在优化

VHDL语言和C语言类似
你可以使用CPLD+AD采集器件来实现
在CPLD中使用VHDL语言对AD芯片进行操作
包括选择AD通道、使能AD、读取AD数据

你可以到百度搜索一下
我当时没具体看什么书
只是简单看了一下VHDL语言的关键字、结构等
然后就以C语言的思想进行编程,呵呵

  • 鍩轰簬VHDL鐨凜PLD/FPGA寮鍙戜笌搴旂敤鍥句功淇℃伅
    绛旓細杩欐湰涓撹憲璇︾粏浠嬬粛浜咰PLD锛堝鏉傚彲缂栫▼閫昏緫鍣ㄤ欢锛夊拰FPGA锛堢幇鍦哄彲缂栫▼闂ㄩ樀鍒楋級鐨勫紑鍙戜笌搴旂敤锛屼互VHDL锛堥珮绾х‖浠舵弿杩璇█锛変綔涓烘牳蹇冨唴瀹广備綔鑰呮槸寮犱笗鐘跺拰鏉庡厗鍏夛紝浠栦滑鍏卞悓鍊惧姏鎵撻犱簡涓鏈疄鐢ㄧ殑鎸囧崡銆傘鍩轰簬VHDL鐨凜PLD/FPGA寮鍙戜笌搴旂敤銆嬬敱浜湁鐩涜獕鐨勫浗闃插伐涓氬嚭鐗堢ぞ鍑虹増锛岃涔︿簬2009骞6鏈1鏃ュ叕寮鍙戣銆傚叾鐙壒鐨処SBN...
  • 鍩轰簬VHDL鐨凜PLD/FPGA寮鍙戜笌搴旂敤鍐呭绠浠
    绛旓細鏈功浠ilinx鍜孉ltera鍏徃鐨CPLD/FPGA寮鍙戠幆澧冧负渚濇墭锛屾繁鍏ヨ瑙d簡VHDL纭欢鎻忚堪璇█鍜孋PLD/FPGA鐨勫紑鍙戝簲鐢ㄣ傚畠鍏ㄩ潰鍦颁粙缁嶄簡CPLD/FPGA鍦ㄧ數璺璁′腑鐨勫熀纭绛栫暐鍜屾妧鏈紝鏃ㄥ湪甯姪璇昏呮帉鎻¤繖浜涙妧鏈殑瀹炶返搴旂敤銆傚叏涔﹀垎涓8涓珷鑺傘傞绔犵潃閲嶉槓杩癊DA锛堢數瀛愯璁¤嚜鍔ㄥ寲锛夌殑鍩烘湰鐞嗗康鍜孋PLD/FPGA寮鍙戠殑鍩烘湰璁捐娴佺▼銆傜浜岀珷...
  • 鍩轰簬VHDL鐨凜PLD/FPGA寮鍙戜笌搴旂敤鍥句功鐩綍
    绛旓細杩欐湰鍏充簬鍩轰簬VHDL鐨凜PLD/FPGA寮鍙戜笌搴旂敤鐨勪功绫嶏紝娑电洊浜嗕赴瀵岀殑涓婚锛屾棬鍦ㄥ府鍔╄鑰呮繁鍏ヤ簡瑙h繖涓棰嗗煙鐨勬妧鏈傞鍏堬紝绗1绔犱负璇昏呮彁渚涗簡鏁翠綋鐨勬杩帮紝鏄庣‘浜嗗悗缁珷鑺傜殑瀛︿範璺緞銆傜2绔犱笓闂ㄦ帰璁ㄤ簡鍙紪绋嬮昏緫鍣ㄤ欢锛岃繖鏄暣涓紑鍙戣繃绋嬬殑鍩虹銆傚湪杩欓噷锛屼綘灏嗕簡瑙e埌涓嶅悓绫诲瀷鐨勫櫒浠跺強鍏跺湪瀹為檯椤圭洰涓殑閫夋嫨鍜屼娇鐢ㄣ傜3绔...
  • 鐢╒HDL璇█鍋氬熀浜嶤PLD鐨鏁版嵁閲囬泦鎺у埗绯荤粺
    绛旓細鍦ˋSIC璁捐涓,姣旇緝甯哥敤鐨勬柟娉曟槸鍒╃敤FPGA瀵圭郴缁熺殑璁捐杩涜鍔熻兘妫娴,閫氳繃鍚庡啀灏嗗叾VHDL璁捐浠SIC褰㈠紡瀹炵幇;鑰岀‖浠舵祴璇曞垯鏄拡瀵笷PGA鎴朇PLD鐩存帴鐢ㄤ簬鐢佃矾绯荤粺鐨勬娴嬭岃█鐨勩 2.2.3鐢‵PGA/CPLD杩涜寮鍙戠殑浼樼己鐐 鎴戜滑璁や负,鍩轰簬EDA鎶鏈殑FPGA/CPLD鍣ㄤ欢鐨勫紑鍙戝簲鐢ㄥ彲浠ヤ粠鏍规湰涓婅В鍐矼CU鎵閬囧埌鐨勯棶棰樸備笌MCU鐩告瘮,FPGA/CPLD鐨浼樺娍鏄...
  • VHDL璇█瀵逛簬CPLD鐨缂栫▼
    绛旓細if a=521 then a:=0;led(N)<=rxd;if N=7 then N<=0;ready_fan<='1'; --鎺ユ敹瀹屾瘯 else N<=N+1;end if;else a:=a+1;end if;end if;end process;end one;鎴戞鍦ㄧ爺绌cpld锛屾渶杩戞鍦ㄦ悶绾㈠鐮磋В锛岃繕娌$牬瑙f垚鍔燂紝鎴戜滑鍙互鍋氭湅鍙嬶紝浠ュ悗澶氬浜ゆ祦锛侊紒锛乹q:523312207 ...
  • VHDL鐢靛瓙鏃堕挓璁捐
    绛旓細鍩轰簬CPLD鐨VHDL璇█鏁板瓧閽(鍚琛)璁捐 鍒╃敤涓鍧楄姱鐗囧畬鎴愰櫎鏃堕挓婧愩佹寜閿佹壃澹板櫒鍜屾樉绀哄櫒(鏁扮爜绠)涔嬪鐨勬墍鏈夋暟瀛楃數璺姛鑳姐傛墍鏈夋暟瀛楅昏緫鍔熻兘閮藉湪CPLD鍣ㄤ欢涓鐢╒HDL璇█瀹炵幇銆傝繖鏍疯璁″叿鏈変綋绉皬銆佽璁″懆鏈熺煭(璁捐杩囩▼涓嵆鍙疄鐜版椂搴忎豢鐪)銆佽皟璇曟柟渚裤佹晠闅滅巼浣庛佷慨鏀瑰崌绾у鏄撶瓑鐗圭偣銆傛湰璁捐閲囩敤鑷《鍚戜笅銆佹贩鍚堣緭鍏ユ柟寮(鍘熺悊...
  • 鍩轰簬CPLD鐨涓夊眰鐢垫鎺у埗鐢佃矾鐨勮璁 (鐢╒HDL缂栧啓浠g爜,鐢≦uartus II杞欢浠...
    绛旓細eate/updete椤癸紝鍦ㄥ畠鐨勪笅鎷夎彍鍗曚腑閫夋嫨鈥渃reate symbol file for current file鈥濊繖涓椤广傚氨OK涔愶紒
  • 璁$畻鏈虹‖浠舵弿杩璇█(VHDL)涓庣紪绋嬭瑷(C璇█)鐨勫尯鍒強鍏崇郴,
    绛旓細鍋氬崟鐗囨満鏂归潰锛屾眹缂栬瑷鏄繀瀛︾殑锛岃櫧鐒跺崟鐗囨満缂栫▼鎵鐢ㄧ殑澶ч儴鍒嗘槸C璇█锛 VhdL璇█鏄拡瀵笷PGA鍜CPLD鐨纭欢鎻忚堪璇█锛屼袱鑰呮病澶氬ぇ鍏卞悓鐐癸紝鏄拡瀵逛袱涓笉鍚岄鍩熺殑璇█锛 瀛︿範鍗曠墖鏈哄悗锛屼綘鍙互寰ARM鍜孌SP鏂瑰悜鍙戝睍!鐜板湪鐢靛瓙鐨勪竴涓ぇ鏂瑰悜 浣犱篃鍙互鍗曠嫭瀛︿範VHDL锛屽皢FPGA瀛︽噦锛岄偅涔堜綘灏辨槸鍏奸【鐢靛瓙涓ゅぇ绫荤殑鏈...
  • EDA璁捐鍩轰簬CPLD鐨鏁版嵁閲囬泦鎺у埗绯荤粺
    绛旓細鎺у埗鍣閲囩敤VHDL 璇█缂栧啓绋嬪簭鍚庝笅杞藉埌 EMP7128SLC84 涓疄鐜般侲MP7128SLC84 鍏锋湁鍦ㄧ嚎鍙紪绋(ISP)鍔熻兘锛屽洜姝よ鏁版嵁閲囬泦绯荤粺鐨勭幇鍦轰慨鏀圭伒娲绘уぇ澶у寮恒傚悓鏃禘PM7128S 鐨勫伐浣滈熷害涓6ns锛岀敱瀹冩潵鎺у埗AD銆丷AM銆丗LASH 鍙緱鍒板畬缇庣殑鏃跺簭閰嶅悎鍜屽悓姝ャ備负浜嗚В鍐充竴涓郴缁熶腑澶氫釜AD 鍚屾椂閲囬泦鏁版嵁鐨勫悓姝ラ棶棰橈紝鏈枃瀹炵幇浜...
  • ...棰戠巼璁℃祴棰戣寖鍥翠负0.1Hz~60 MHz,閫氳繃浣跨敤VHDL璇█璁捐,鍒╃敤CPLD...
    绛旓細--鍔熻兘锛氶鐜囪銆傚叿鏈4浣嶆樉绀猴紝鑳借嚜鍔ㄦ牴鎹7浣嶅崄杩涘埗璁℃暟鐨勭粨鏋滐紝鑷姩閫夋嫨鏈夋晥鏁版嵁鐨 --楂4浣嶈繘琛屽姩鎬佹樉绀恒傚皬鏁扮偣琛ㄧず鏄崈浣嶏紝鍗矺Hz銆俵ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity plj is port ( start:in std_logic; --澶嶄綅淇″彿 clk :in std_logic;...
  • 扩展阅读:c#调用c ... 蒙古国语言翻译软件 ... 翻译外国语言的软件 ... 以色列语言翻译器 ... 各国语言翻译器 ... 显示器hdmi接口 ... cpu c states要打开吗 ... vhdl选择语句 ... hdmi dp接口 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网