基于cpld和单片机的多功能信号发生器内容摘要:

系列外,还推出可重复擦除的ProASIC3 系列 (针对汽车、工业控制、军事航空行业 )。 该公司 致力通过运河南理工大学毕业设计 (论文 )说明书 10 用业界最低功耗的 FPGA 系列,以及独有的混合信号 FPGA,在芯片及系统级上进行功耗管理,为系统设计人员提高竞争优势。 这就好比单片机中的 PIC 系列,虽然资源不多,但是稳定性可靠,广泛应用于工业领域。 在亚太地区用 Altera 人多,在欧洲用 Xilinx 的人多,在美国则是平分秋色。 全球 PLD/FPGA 产品的 60%以上 是 Altera 和 Xilinx 提供的。 可以说,Altera 和 Xilinx 共同决定了 PLD 技术的发展方向。 当然还有许多其他类型的器件,如: Lattice、 Vantis、 Actel、 Quicklogic、 Lucent 等。 开发语言和开发环境 的选择 硬件描述语言( Hardware Description Language, HDL)是描述硬件电路的功能。 常用的硬件描述语言有 VHDL、 Verilog HDL 和 ABEL。 本次毕业设计针对 CPLD的开发有两种语言可以选择, VHDL 语言和 Verilog HDL语言,以 下是对两种语言的介绍: VHDL语言简介 VHDL 英文全名 VHSIC(超高速集成电路硬件描述语言)。 它诞生于1982 年美国国防部提出的超高速集成电路计划,其目的是 在各个承担国防部订货的集成电路厂商之间建立一个统一的设计数据和文档交换格式。 1987 年被 IEEE( Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会 )和美国国防部确认为标准硬件描述语言。 自从 IEEE 公布了 VHDL 的标准版( IEEE 1076)以后,各 EDA( Electronic Design Automation,电子设计自动化)公司相继推出 VHDL 设计环境,或宣布自己的设计工具可以和 VHDL 接口。 此后, VHDL 在电子设计领域得到了广泛的认可,并逐步取代了原有的非标准硬件描述语言。 1995 年,我国国家技术监督局制定规范推荐 VHDL 作为我国电子设计自动化硬件语言的国家规范。 现在, VHDL 和 Verilog 作为 IEEE 的工业标准硬件描述语言,得到了众多 EDA 公司的支持,在电子工程领域,已成为事实上的通用语言标准。 河南理工大学毕业设计 (论文 )说明书 11 VHDL 语言描述能力非常强,它比其它 HDL 语言有更高层次 的描述。 甚至有时在描述过程中只有算法的描述,而无硬件的形迹。 因此 ,VHDL 语言在 CPLD/FPGA 的应用方面较为广泛,一个复杂的问题, VHDL 语言可以用比较少的篇幅描述清楚。 同时 VHDL 语言指令代码多,数据类型丰富,既有用于仿真系统的指令 ,又有可用于综合的语句。 因此 VHDL 语言使用起来非常灵活 ,可以说在几种硬件描述语言中 ,VHDL 语言是描述能力最强的一种语言。 但同时由于其较强的灵活性 ,繁多的指令码和较强的数据类型 ,因此 VHDL 语言反而成为学习使用的难点。 VHDL 语言还有很多特点,具体可以参考相关的 VHDL 书籍 或上网 ,非常容易找到。 Verilog HDL语言简介 Verilog HDL 是一种硬件描述语言,为了制作数字电路而用来描述ASIC( Application Specific Integrated Circuit, 为专门目的而设计的集成电路 ) 和 FPGA 的设计之用。 是目前应用最为广泛的硬件描述语言。 它是由Gateway Design Automation 公司 ( 后被 Cadence Design Systems 于 1990 年所购并 ) 于大约 1984 年开始发展。 Verilog HDL 可以用来进行各 种层次的逻辑设计,也可以进行 数字系统 的逻辑综合,仿真验证和时序分析等。 Verilog HDL 适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述。 Verilog HDL 进行设计最大的优点是其工艺无关性.这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。 Verilog 的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。 河南理工大学毕业设计 (论文 )说明书 12 开发语言 及开发环境 的 选择 其实两 种语言的差别并不大, 它们 的描述能力也是类似的。 掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。 刚开始学习的时候是从 Verilog HDL 开始的,从代码量来看实现一个相同的功能, VHDL代码量比较大,所以选择代码量少一点的 Verilog HDL,而且它是以 C 语言为基础的,实际中学习上手还是非常快的,简单的了解一下语法知识就可以看懂一些程序。 但是随着对毕业设计的逐步了解,需要查阅大量的资料,而这些资料绝大部分还是以 VHDL 语言为基础的,而且身边的人好多还是用 VHDL,为了获得更多的资料和能与别 人更好的沟通,所以又转向 VHDL 语言的学习。 相对于 Verilog HDL 语言来说, VHDL语言更加严谨,更加规范,缺点就是代码量比较大,其实两者各有优缺点,视具体情况而定。 至于开发环境, 开发 Altera 的 CPLD 的开发环境有 Max+pluxII 和Quartus II。 刚开始学习时由于 Max+plux II 的安装程序比较小,界面简洁,入门容易,所以使用了 Max+plux II,可是等到后来接触了 Quartus II,由于后者的功能更加强大,界面更加人性化,而且现在绝大多数人使用的是Quartus II,为了 便于以后 FPGA 的学习,因为 FPGA 也是使用相同的环境,所以选择 Quartus II。 VHDL语言与 C语言的联系与区别 ( 1) VHDL 语言在形式上与 C 语言有许多相似之处: ① VHDL 语句与 C 语言中语句类似。 VHDL 中的大部分语句如变量赋值语句、 IF 语句、 CASE 语句、 LOOP 语句、 NEXT 语句和过程调用语句等,在 C 语言中均有类似的含义和语法形式。 ② VHDL 结构上也与 C 语言类似。 VHDL 和 C 语言一样,有库、说明和语句部分,也有函数、 程序及其参数、调用方式等内容。 这些内容在概念上和 C 语言基本是一样的。 河南理工大学毕业设计 (论文 )说明书 13 ③ VHDL 在诸多语言要素上也与 C 语言类似。 VHDL 与 C 语言一样,在常量、变量、数据对象、数据类型,以及数据对象的说明方式、数据对象的作用范围等诸多语言要素上和 C 语言基本一致。 ( 2) VHDL 语言在和 C 语言的差异: ① VHDL 和 C 语言在语句方面的差异。 计算机高级语言中有说明语句和可执行语句两种性质的语句,可执行语句按逻辑顺序(不一定与书写的顺序相同,但与书写顺序有关)依次被 CPU译 码执行,最后得到数值计算或数据处理的结果。 无论 CPU译码处理多强大、计算机速度多块,执行一个语句或一个程序段需要一定的时 间 ,更大的程序代码往往也意味着消耗更长的时间。 而说明语句只用于为编译器提供必要的的信息(分配存储器、连接不同的代码等需要的参数),便于把源程序代码转换为可执行的二进制代码。 VHDL 中也有说明语句,其作用也只是为综合器综合电路(模拟器仿真)提供所需要的信息,本身不被综合成任何电路模型(或生成仿真波形),这个意义上基本是一致的。 除说明语句外, VHDL 还可以根据执行方式分为顺序语句和并发语句两种 语句。 并发性主要体现在它的执行次序上与所有的并行语句同时执行的,与书写顺序无关,如同一电路系统中所有模块同时工作一样。 顺序语句在执行方式上和 C 语言类似,其语句效果与语句的书写次序有关。 另外,无论并行语句还是顺序语句,程序代码长度的增加和它的执行时间无关,但最后生成的电路规模会增大。 事实上, VHDL 的程序代码没有执行时间这一概念。 这里所说的执行过程,只是综合器对代码分析的过程或模拟器仿真的过程。 ② 两者的本质不同。 应当注意, VHDL 语言使用来描述电路功能(或仿真电路)的,而 C 语言 是用来描述数据处理流程的,二者具有本质的区别,这一点在学习中要特别注意。 例如,同一条语句, A=A+B( VHDL 语言中书为 A=A+B) ,C 语言只表示一次加法运算,在 CPU执行后会得到固定的运算结果;在 VHDL 语言中却要表示要生成一个累加器,而不是一次具体的运算。 由于这种差别,在学习时要注意电路设计的合理性。 对于A=A+B 语句来说,在 C 语言程序中基本不存在任何困难,但是 VHDL 语河南理工大学毕业设计 (论文 )说明书 14 言中必须有限定条件,否则会引起错误的用法。 ③ VHDL 语言中具有许多与数字电路结构直接相关的概念。 VHDL 语言中除常量和变量之外,引入了一种“信号”的数据对象来描述电路,还有表示信号上升沿和下降沿等电路特征的信号属性,同时在数据类型中还增加了表示时间信息的物理类型、表示电路逻辑状态的数据类型等。 另外,VHDL 语言中的“元件”时数字电路硬件结构 — “黒盒”或称“模块”的抽象。 VHDL 利用“元件”概念实现电路系统的层次设计,在一个电路中对同一个元件可以多次应用。 VHDL 中元件的定义和普通电路的定义时完全一样的,它有实体和结构体两部分组成,其中实体描述的是数字电路输入 /输出端口,结构体描述的时数字电路输入 /输出的行 为与功能。 编程及开发环境之我见 对于编程,我认为它是一个实践的过程。 无论你 C 语言多么优秀,但是要你直接在 KEIL 里面编 51 单片机程序,还是有难度的,因为 C51 和 C语言还是有些地方不同的,不过它可以加速你的学习过程。 还有看懂程序不等于你会编写程序,在编写 VHDL 程序前,自己看过了很多简单的程序,还都能理解大概想实现什么功能,感觉已经学得差不多了。 可是当自己编写时,遇到了很多困难,发现没法下手,照着 C 语言的思想写了几个很简单的程序,编译出来错误很多。 然后又对 VHDL 语法又过了两遍,才逐渐理解刚开始编程 的错误,更加深刻的理解 了 VHDL。 所以要想掌握一门语言,必须实践实践再 实践。 无论是 C 语言还是硬件语言,都要注重模块化,方便团队开发。 以前写 51 程序都是不管多长,都是放在一个文件里,不方便阅读也不方便移植,此次针对毕设我注重于模块化编程,比如将液晶屏的驱动程序写到一个文件里,自己写专门的头文件,等到 再 要用时,直接 Include 包括一下相应的头文件 就可以,下次用时很轻松便移植到别的程序里,我想这大概就是 API 的由来吧,具体程序见附录 B。 硬件语言和 C 语言也有很多相似之处,更加注重模块化。 对于有些模河南理工大学毕业设计 (论文 )说明书 15 块已经被申请 知识产权保护,即所谓的 IP( Intellectual Property Core)内核。 使用时直接调用其模块即可,可以加速产品的开发。 现在很多复杂的数字系统,都是团队合作,每人负责其中的小部分,组合起来就是复杂的系统。 值得一提的是我认为编程就是对事物的认知程度,刚开始编写一个程序往往是先编写一个简单的框架,然后根据自己的思路一点点丰富,而思路不同,编出来的程序就会不同,相应的代码量就会不同,效率也会不同。 比如课程设计我设计的是数字温度计,但是由于编程思想的不同,我编写出来的程序代码量是另一个同学编写程序代 码量的 2 倍,甚至更多,但是实现的功能大同小异,很显然在单片机中运行我的程序运行效率肯定很低。 这就启示对于编程而言,不但要注重实践,而且要注重编程思想的培养,加深对事物的理解。 其实有些时候我认为自己编程会更简单,思路都是自己的,只要花费时间一点一点丰富即可,看别人的程序还得顺着别人的思路,很累。 但是可以先模仿别人的编程思路和风格,刚开始编程也是从模仿中成长的。 至于开发环境,因人而异,掌握一个开发环境,会很快的掌握另外一个相似的环境,就是个适应的过程。 从刚开始的 C 语言开发环境 VC( Visual C++)、 51 开发环境 KEIL 到后来的 AVR 单片机开发环境 ICCAVR、GCCAVR再到凌阳单片机开发环境的 unSP IDE、 DSP开发环境 CCS、 ARM开发环境 ADS 等等,好多功能大同小异,自己用的比较多的还是 C51,所以还是比较习惯于 KEIL。 现在使用 CPLD/FPGA 开发环境的 Quartus II,因为有上述的经验,所以适应 Quartus II 还是比较容易的,不过不得不说Quartus II 是一个 比较 复杂 但 很好的开发环境。 还有的就是刚开始接触 CPLD 时是考研时学习的数字电路,当时就觉得很好奇,做题还是一点点用 线将各个元器件连接起来,组成小型的电路。 当时就想如果建立大一点的电路难道还是这样吗, 觉得 很麻烦。 等到考研结束之后就开始熟悉 MAX+PLUS II,刚开始用 的是 原理图 的方式进行输入 ,第一个电路设计记得很清晰,是自己根据书上的电路图画的一个 三八河南理工大学毕业设计 (论文 )说明书 16 译码器,然后仿真,将程序下 载到 CP。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。