南京大学金陵学院本科毕业院系信息科学与工程系专业电子信息科学与技术题目基于FPGA出租车计费系统的设计提交日期20XX年6月3 日摘要通过出租车计费系统的设计,详细介绍了如何使用硬件描述语言Verilog HDL设计复杂逻辑电路的步骤和过程,以及应用美国ALTERA公司的Quartus II 9.0软件进行系统设计、仿真和下载实现的方法。
通过设计,可以看到在EDA平台上用CPLD器件构成该数字系统的设计思想和实现过程。
论述了计费模块、时钟模块、动态显示模块、计费形式判断模块、控制模块等的设计方法和技巧。
关键词:CPLD/FPGA; 电子自动化设计; Verilog HDL硬件描述语言; 出租车计费器; Quartus II 9.0软件ABSTRACTTaxi billing system through the design, details how to use the hardwaredes-cription language Verilog HDL design plexity and the process logic and the applicatio-n of the U.S. pany's Quartus II 9.0 ALTERA software system design, simulation, anddownload the realization of the method. By design, you can see in the EDA platform usi-ng CPLD devices constitute the digital system design and implementation process. Discuss-es the billing module, clock module, dynamic display module, billing forms to judge mod-ule, control module and other design methods and techniques.Keywords: CPLD/FPGA; EDA; Verilog HDL; Taxi Billing Machine; Quartus II 9.0目录第一章引言随着科技日新月异的发展,科技带来的改变无处不在。
尤其是计算机技术带来了人类科技的许多重大的飞跃,特别是集成电路的应用已经渗透到生产和生活中的各个方面,有力的推动了社会的发展。
近几年,中国集成电路产业取得了飞速发展。
中国集成电路产业已经成为全球半导体产业关注的焦点,即使在全球半导体产业陷入有史以来程度最严重的低迷阶段时,中国集成电路市场仍保持了两位数的年增长率,凭借巨大的市场需求、较低的生产成本、丰富的人力资源,以及经济的稳定发展和宽松的政策环境等众多优势条件,以京津唐地区、长江三角洲地区和珠江三角洲地区为代表的产业基地迅速发展壮大,制造业、设计业和封装业等集成电路产业各环节逐步完善。
采用FPGA设计ASIC(Application Specific Integrated Circuit,集成电路界被认为是一种为专门目的而设计的集成电路)电路,用户不需要投片生产,就能得到合用的芯片,FPGA内部有丰富的触发器和I/O引脚,FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一,FPGA采用高速CHMOS 工艺,功耗低,可以与CMOS、TTL电平兼容。
其性能和效率不断提高,应用范围越来越广,在计算机应用领域已占日益重要的地位。
它的应用程度已经成为衡量一个国家科学技术水平的一项重要指标。
出租车计费器就是FPGA的一个可行的应用。
现在市面上的出租车计价器品种繁多,功能强大。
作为一个的课题,我本着从大处着眼,从小处入手的原则,对FPGA的应用做了一些初步的尝试和探讨。
我利用FPGA芯片、32.768KHz晶振、七段LED数码管,初步实现了市面上的出租车计费器的一些基本功能。
第二章Verilog HDL硬件语言简介Verilog HDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。
前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。
两种HDL均为IEEE标准。
Verilog HDL就是在使用广泛的C语言的基础上发展起来的一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
它是GDA(Gateway Design Automation)公司的Phil Moorby在1983年提出,经过不断的完善和发展,直至1995年才成为IEEE标准,即IEEE Standard 1364-1995。
IEEE 20XX 年重新修订了Verilog HDL的IEEE标准。
此前硬件描述语言通过IEEE标准的只有VHDL(1987)。
2.1 Verilog HDL语言的特点1.Verilog HDL最大特点是易学易用。
只要有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握。
2.Verilog HDL设计与工艺无关。
可以使其设计好的模块重复使用,大大方便复杂电子系统的设计,缩短了设计的周期。
3.Verilog HDL简单而优美。
描述硬件单元的结构简单且易读。
相比较而言,VHDL的描述长度是Verilog HDL的两倍。
2.2 Verilog HDL语言的基本结构一个电子系统或电路,通常要对输入的信号进行处理得到输出信号,Verilog HDL就是用语言来描述输入和输出的借口和内部处理功能的实现。
一个设计部论是简单还是复杂,都用Verilog HDL模块来表示。
模块的基本结构如下:module 模块名(端口列表);<端口定义属性,如input,output等><逻辑功能描述>endmodule其中<模块名>是模块唯一的标识符;<端口列表>列出端口名称,<端口定义属性>指明端口是属于输入、输出还是双向端口,这些端口用来与其它模块进行连接。
<逻辑功能描述>是模块设计中最重要的部分,可使用不同形式的过程块来实现。
下面看个简单的例子。
例1.1 上升沿触发D触发器(时序电路)module dff(q,clk,data);input clk,data;output q;reg q;always@(posedge clk)beginq=data;endendmodule从上面的例子可以看出:(1)Verilog HDL程序是由模块构成的,每个模块的内同都是嵌在module和endmodule两个语句之间,每个模块实现特定的功能,模块可以进行层次嵌套;(2)每个模块要进行端口定义,<端口列表>说明输入输出或双向端口,这些端口用与其他模块进行连接;(3)Verilog HDL程序的书写格式自由,一行可以写几个语句,一个语句可以分多行写;(4)除了endmodule语句为,每个语句和数据定义的最后必须有分号;(5)可以用//*……*//或//……对Verilong HDL程序的任何部分作注释;(6)Verilog HDL对大小写敏感,空格很重要,是用来界定各个标志的,关键字都是以小写形式表示。
2.3 CPLD/FPGA的设计流程用HDL语言开发CPLD/FPGA的完整流程为:图1.21.文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。
2.功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确。
3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和型号的连接关系。
4.布局布线:将.edf文件调入CPLD/FPGA厂家提供的软件中进行布线,即把设计好的逻辑安放到CPLD/FPGA内。
5.时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。
6.编程下载:确认仿真无误后,将文件下载到芯片中通常以上过程可以都在CPLD/FPGA厂家提供的开发工具(如QuartusII,ISE 中完成。
下面我们以Altera公司的QuartusII 9.0软件来简单说明一下CPLD/FPGA的开发流程。
下图是一个典型的基于QuartusII的CPLD/FPGA开发流程。
图1.2 基于QuartusII的典型CPLD/FPGA设计流程(1)建立工程是每个开发过程的开始,QuartusII(QII)以工程为单元对设计过程进行管理。
(2)建立顶层图。
可以这样理解,顶层图是一个容器,将整个工程的各个模块包容在里面编译的时候就将这些模块整合在一起。
(3)采用ALTERA公司提供的LPM宏功能模块。
QII软件环境里包含了大量的常用功能模块,例如计数器、累加器、比较强、译码器等等;在充分利用已有模块的基础上,通过,一个设计中一般只有极少部分的模块需要自己从零设计。
(4)自己建立功能模块。
可以用硬件描述语言也可以用原理图的输入方法。
可以把它们独立的当做一个工程来设计,并生产模块符号(Symbol),然后再顶层图中使用这个模块的符号,并将源文件(实现该模块的原理图或HDL文件)拷到顶层图所在的工程目录下。
(5)将顶层图的各个功能模块用两线连起来。
这个过程类似电路图设计,把各个芯片连接起来,组成电路系统。
(6)系统的功能原理图至此已经基本出炉了,下一步要为该设计选择芯片载体,才能真正在物理上实现系统的功能。
这一步的主要工作是:(1)选择芯片型号;(2)为顶层图的各个输入输出信号分配芯片管脚;(3)设置编译选项,目的是让编译器知道更多的信息。
(7)编译。
这个过程类似软件开发里的编译,在类似QII这样的集成环境里面,这些过程都是一气呵成,集成环境自动完成了几个步骤的工作。
(8)编译后生成*.sof或*.pof文件,前者可以通过JTAG下载到CPLD/FPGA内部,设计无误的话技能实现预期的功能,但断电后CPLD/FPGA里的这些信息会丢失;后者可以下载到CPLD/FPGA的配置芯片(EEPROM或FLASH芯片),掉电后这些配置信息不会丢失,重新上电以后通过该配置芯片对CPLD/FPGA的内部RAM进行配置.(9)对于复杂的设计,工程编译了以后可以采用QII的仿真功能或者其他仿真软件(ModelSim)对设计反复进行仿真和验证,知道满足要求。
第三章Quartus II 9.0软件的简介3.1 主要功能Quartus II 9.0 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。