当前位置: 首页 > 产品展示 > 数码模块

火博sports

PRODUCTS
×

火博sportsFPGA教学——基于FPGA的电子计算器系统设计(

发布时间:2024-04-13 23:06:06 来源:火博体育首页 作者:HB火博APP官网

  本篇介绍了一个简单计算器的设计,基于FPGA硬件描述语言 Verilog HDL,系统设计由计算部分、显示部分和输入部分四个部分组成,计算以及存储主要用状态机来实现。显示部分由六个七段译码管组成,分别来显示输入数字,输入部分采用4*4矩阵键盘,由0-9一共十个数字按键,加减乘除四个运算符按键,一个等号按键组成的。通过外部的按键可以完成加、减、乘、除四种功能运算,其结构简单,易于实现。本篇为本人毕业设计部分整理,各位大侠可依据自己的需要进行阅读,参考学习。

  在国外,电子计算器在集成电路发明后,只用短短几年时间就完成了技术飞跃,经过激烈的市场竞争,现在的计算器技术己经相当成熟。计算器已慢慢地脱离原来的“辅助计算工具”的功能定位,正在向着多功能化、可编程化方向发展,在各个领域都得到了广泛的应用。用计算器不仅可以实现各种各样复杂的数学计算还可以用来编制、运行程序,甚至解方程组,图形计算器还可以进行图形处理。计算器内置的软件允许用户进行类似于对计算机的文件和目录管理等操作,允许用户对图形界面进行定制,同时各种新技术也被应用到计算器里使计算器功能越来越强大。可以说,计算器就是一个“微微型”的计算机。国内也有厂商利用计算器芯片开发新的产品,但对计算器技术的研究、计算器芯片的设计还处于起步阶段。计算器的主要功能还是在于“计算”,不妨称之为“低档计算器”。即便是对这种计算器,很多厂商也只从事计算器的组装、销售业务。一些IC设计公司、芯片提供商也开始研究计算器技术。

  本次设计基于现场可编程逻辑器件FPGA进行设计,应用硬件描述语言Verilog编程并在Altera公司的QuartusⅡ软件上实现仿真。需要进行计算器的常用运算功能的实现,通过外接键盘输入、LED数码显示来达成运算目的。

  Verilog HDL 是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购开发)。两种HDL均为IEEE标准。

  设计人员在使用这个版本的Verilog的过程中发现了一些可改进之处。为了解决用户在使用此版本Verilog过程中反映的问题,Verilog进行了修正和扩展,这部分内容后来再次被提交给电气电子工程师学会。这个扩展后的版本后来成为了电气电子工程学会1364-2001标准,即通常所说的Verilog-2001。Verilog-2001是对Verilog-95的一个重大改进版本,它具备一些新的实用功能,例如敏感列表、数组、生成语句块、命名端口连接等。目前,Verilog-2001是Verilog的最主流版本,被大多数商业电子设计自动化软件包支持。

  2005年,Verilog再次进行了更新,即电气电子工程师学会1364-2005标准。该版本只是对上一版本的细微修正。这个版本还包括了一个相对独立的新部分,即Verilog-AMS。这个扩展使得传统的Verilog可以对集成的模拟和混合信号系统进行建模。容易与电气电子工程师学会1364-2005标准混淆的是加强硬件验证语言特性的SystemVerilog(电气电子工程师学会1800-2005标准),它是Verilog-2005的一个超集,它是硬件描述语言、硬件验证语言(针对验证的需求,特别加强了面向对象特性)的一个集成。

  描述复杂的硬件电路,设计人员总是将复杂的功能划分为简单的功能,模块是提供每个简单功能的基本结构。设计人员可以采取“自顶向下”的思路,将复杂的功能模块划分为低层次的模块。这一步通常是由系统级的总设计师完成,而低层次的模块则由下一级的设计人员完成。自顶向下的设计方式有利于系统级别层次划分和管理,并提高了效率、降低了成本。“自底向上”方式是“自顶向下”方式的逆过程。

  Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言。这是因为C语言在Verilog设计之初,已经在许多领域得到广泛应用,C语言的许多语言要素已经被许多人习惯。一种与C语言相似的硬件描述语言,可以让电路设计人员更容易学习和接受。不过,Verilog与C语言还是存在许多差别。另外,作为一种与普通计算机编程语言不同的硬件描述语言,它还具有一些独特的语言要素,例如向量形式的线网和寄存器、过程中的非阻塞赋值等。总的来说,具备C语言的设计人员将能够很快掌握Verilog硬件描述语言。下面介绍Verilog语言基本规范:

  空白符是指代码中的空格(对应的转义标识符为\b)、制表符(\t)和换行(\n)。如果这些空白符出现在字符串里,那么它们不可忽略。除此之外,代码中的其他空白符在编译的时候都将会被视为分隔标识符,即使用2个空格或者1个空格并无影响。不过,在代码中使用合适的空格,可以让上下行代码的外观一致(例如使赋值运算符位于同一个竖直列),从而提高代码的可读性。

  为了方便代码的修改或其他人的阅读,设计人员通常会在代码中加入注释。与C语言一样,有两种方式书写注释。第一种为多行注释,即注释从/*开始,直到*/才结束;另一种为单行注释,注释从//开始,从这里到这一行末尾的内容会被系统识别为注释。

  3)某些电子设计自动化工具,会识别出代码中以特殊格式书写、含有某些预先约定关键词的注释,并从这些注释所提取有用的信息。这些注释不是供人阅读,而是向第三方工具提供有关设计项目的额外信息。例如,某些逻辑综合工具可以从注释中读取综合的约束信息。

  Verilog代码中用来定义语言结构名称的字符称为标识符,包括变量名、端口名、模块名等等。标识符可以由字母、数字、下划线以及美元符($)来表示。但是标识符的第一个字符只能是字母、数字或者下划线,不能为美元符,这是因为以美元符开始的标识符和系统任务的保留字冲突。

  和其他许多编程语言类似,Verilog也有许多保留字(或称为关键字),用户定义的标识符不能够和保留字相同。Verilog的保留字均为小写。变量类型中的wire、reg、integer等、表示过程的initial、always等,以及所有其他的系统任务、编译指令,都是关键字。可以查阅官方文献以完整的关键字的列表。

  系统电路的软件设计可采用工具软件Quartus Ⅱ,用该工具软件所支持的语言——硬件描述语言,以文本的方式进行编程输入。在编程时分别对控制、计数、锁存、译码等电路模块进行Verilog文本描述,使每个电路模块以及器件都以文本的形式出现,然后通过编译、波形分析、仿真、调试来完善每个器件的功能。单个器件制作完成后,然后将它们生成库文件,并产生相应的符号,最后用语言将各个已生成库文件的器件的各个端口连接在一起,从而形成了系统主电路的软件结构。在连接器件时,也可以采用图形输入方式,即在图形输入界面中调出先制作好的库文件器件符号,再将每个器件符号的各端口直接连线,从而构成系统主电路。在上述工作的基础上,再进行波形分析、仿真调试便完成整个软件设计。

  可编程逻辑器件(PLD——Programmable Logic Devices)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。它诞生于20世纪70年代,在20世纪80年代以后,随着集成电路技术和计算机技术的发展而迅速发展起来的。可编程逻辑器件自问世以来,PLD经历了从PROM、PLA、PAL、GAL到FPGA、ispLSI等高密度PLD的发展过程。在此期间,PLD的集成度、速度不断提高,功能不断增强,结构趋于更合理,使用变得更灵活方便。PLD的出现打破了由中小型通用型集成电路和大规模专用集成电路垄断的局面。与中小规模通用型集成电路相比,用PLD实现数字系统,有研制周期短、先期投资少、无风险、修改逻辑设计方便、小批量生产成本低等优势。

  随着可编程逻辑器件性能价格比的不断提高,EDA开发软件的不断完善,现代电子系统的设计将越来越多地使用可编程逻辑器件,特别是大规模可编程逻辑器件。如果说一个电子系统可以像积木堆积起来的话,那么现在构成许多电子系统仅仅需要3种标准的积木块——微处理器、存储器和可编程逻辑器件,甚至只需一块大规模可编程逻辑器件。PAL(Programmable Array Logic)器件是20世纪70年代末期出现的一种低密度、一次性可编程逻辑器件。GAL(Generic Array Logic)器件是继PAL器件之后,在20世纪80年代中期推出的一种低密度可编程逻辑器件。它在结构上采用了输出逻辑宏单元(OLMC——Output Logic Macro Cell)结构形式,在工艺上吸收EEPROM的浮栅技术,从而使GAL器件具有可擦除、可重新编程、数据可长期保存的结构特点。CPLD(Complex Programmable Logic Device)是万门以上的复杂可编程逻辑器件,采用CMOS EPROM、EEPROM、快闪存储器和SRAM等编程技术,从而构成高密度、高速度和低功耗的可编程逻辑器件。

  FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称。FPGA器件及其开发系统是开发大规模数字集成电路的新技术。它利用计算机辅助设计,绘制出实现用户逻辑的原理图、编辑布尔方程或用硬件描述语言等方式作为设计输入;然后经一系列转换程序、自动布局布线、模拟仿真的过程;最后生成配置FPGA器件的数据文件,对FPGA器件初始化。这样就实现了满足用户要求的专用集成电路,真正达到了用户自行设计、自行研制和自行生产集成电路的目的。

  FPGA是一种半定制的集成电路,其特点是直接面向用户,具有极大的灵活性和通用性,开发效率高,硬件测试和实现快捷,工作可靠性好而且技术维护简单。

  FPGA相对于CPLD而言,其结构特点在于FPGA是基于查找表look-up-table的。查找表(look-up-table)简称为LUT,LUT本质上是一个RAM。FPGA使用4输入的LUT,所以每一个LUT 可以看成一个有4位地址线的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

  FPGA(Field Programmable Gate Array)即现场可编程逻辑阵列,是大规模可编程集成电路的主流器件。FPGA一般由三种可编程电路和一个用于存放编程数据的SRAM(静态随机存储器)组成,这三种可编程电路是:可编程逻辑阵列LAB(Logic Array Block),输入输出模块IOB(I/O Block)和互连资源IR(Interconnect Resource)。FPGA可编程逻辑形成的方法是基于查找表LUT(Look Up Table)结构的,LUT是可编程的最小逻辑构成单元。

  可编程逻辑阵列是由一系列相邻的逻辑单元LE(Logic Element)构成的,每个LAB包括八个逻辑单元LE、相连的进位链和级联链,LAB控制信号和LAB局部互连。LAB的构成、ACEK系列芯片的“粗粒度(coarse-grained)”结构,有利于EDA软件进行布局布。


火博sports