基于Verilog HDL的出租车计费器设计

更新时间:2023-11-30 16:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

李明洪 基于Verilog HDL的出租车计费器设计

基于Verilog HDL的出租车计费器设计

学生姓名:李明洪 指导老师:肖红光

摘 要 本次课程设计主要是基于FPGA芯片,使用硬件描述语言Veriloh HDL,采用“自顶向下”的设计方法,编写一个出租车计费器芯片,并使用Max+Plus II软件仿真平台。本文主要描述了出租车计费器的设计思路与模块划分。把出租车计费器划分为五大模块,共同实现了出租车计费以及预置和模拟汽车启动、停止、暂停等功能,并动态扫描显示车费数目。最后,使用Max+Plus II仿真平台对每个模块和主程序分别进行了仿真,并对仿真出来的波形作了分析。

关键词 出租车计费; Verilog HDL; Max+Plus II; 仿真

第 1 页 共 26 页

基于Verilog HDL的出租车计费器设计

The design of taxi meter based on

Verilog HDL

Abstract The course design is mainly based on FPGA chip, the use of hardware description language Veriloh HDL, using \down \design method, the preparation of a taxi meter chip, and use the Max + Plus II software simulation platform. This paper describes the design idea of the taxi meter and module division. The taxi meter is divided into five modules together to achieve a taxi and analog auto billing and pre-start, stop, pause function, and dynamic scan showed the number of fare. Finally, using Max + Plus II simulation platform and the main program for each module were simulated, and the simulation from an analysis of the waveform.

Keywords Taxi charges;Verilog HDL; Max+Plus II;Simulation

第 2 页 共 26 页

基于Verilog HDL的出租车计费器设计

1 引 言

随着中国城市化的快速发展,人们出行的选择也会越来越多样化,但是出租车作为一种重要的交通工具,也越来越多的被人们所选择,虽然在大中城市,出租车已经相当普及,但是在一些小的城市,出租车行业也因为城市化进程的加快而快速发展。

当然,出租车的计费器也由当初的只能显示路程的计费方式变成现在的,能够自主计费以及打印发票和语音提示。根据出租车行业的需求,国内各机械厂家纷纷推出国产计价器,传统的出租车计费器由于发展使用了十几年,在稳定性、成本、以及使用习惯上都具有一定的优势。

Verilog HDL和VHDL是目前世界上最流行的两种硬件描述语言(HDL:Hardware Description Language),均为IEEE标准,被广泛地应用于基于可编程逻辑器件的项目开发。二者都是在20世纪80年代中期开发出来的,前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发,后者由美国军方研发。 HDL语言以文本形式来描述数字系统硬件结构和行为[1],是一种用形式化方法来描述数字电路和系统的语言,可以从上层到下层来逐层描述自己的设计思想。即用一系列分层次的模块来表示复杂的数字系统,并逐层进行验证仿真,再把具体的模块组合由综合工具转化成门级网表,接下去再利用布局布线工具把网表转化为具体电路结构的实现。目前,这种自顶向下的方法已被广泛使用。

本文介绍了相关的软件平台Max+Plus II及硬件编程语言----Verilog HDL。主要论述了一个出租车计费器从设计思路到系统仿真的整个设计过程。

本次设计的目的就是在掌握计算机组成原理理论的基础上,了解EDA技术,掌握Verilog HDL硬件描述语言的设计方法和思想,通过学习的Verilog HDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,通过本课程设计,达到巩固和综合运用计算机原理中的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决计算机实际问题的能力。

通过这次EDA方面的课程设计,可以提高我们对EDA领域及通信电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力。一人一题特别有利于锻炼我们独立分析问题和解决问题的能力。设计过程的复杂加老师的严格要求有益于培养我们严谨的工作作风。

第 3 页 共 26 页

基于Verilog HDL的出租车计费器设计

2 理论基础

2.1 Verilog HDL语言的功能和设计方法

Verilog HDL语言以文本形式来描述数字系统硬件结构和行为[3],是一种用形式化方法来描述数字电路和系统的语言,可以从上层到下层来逐层描述自己的设计思想。即用一系列分层次的模块来表示复杂的数字系统[4],并逐层进行验证仿真,再把具体的模块组合由综合工具转化成门级网表,接下去再利用布局布线工具把网表转化为具体电路结构的实现。目前,这种自顶向下的方法已被广泛使用。概括地讲,HDL语言包含以下主要特征:

(1) HDL语言既包含一些高级程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体结构。

(2) 通过使用结构级行为描述,可以在不同的抽象层次描述设计。HDL语言采用自顶向下的数字电路设计方法,主要包括3个领域5个抽象层次。

(3) HDL语言是并行处理的,具有同一时刻执行多任务的能力。这和一般高级设计语言(例如C语言等)串行执行的特征是不同的。

(4) HDL语言具有时序的概念。一般的高级编程语言是没有时序概念的,但在硬件电路中从输入到输出总是有延时存在的,为了描述这一特征,需要引入时延的概念。HDL语言不仅可以描述硬件电路的功能,还可以描述电路的时序。

Verilog HDL的主要能力:

Verilog HDL既是一种行为描述语言,也是一种结构描述语言。如果按照一定的规则和风格编写代码,就可以将功能行为模块通过工具自动转化为门级互连的结构模块。这意味着利用Verilog语言所提供的功能,就可以构造一个模块间的清晰结构来描述复杂的大型设计,并对所需的逻辑电路进行严格的设计。 下面列出的是Verilog语言的主要功能:

(1) 可描述顺序执行或并行执行的程序结构;

(2) 用延迟表示式或事件表达式来明确地控制过程的启动时间; (3) 通过命名的事件来触发其他过程里的激活行为或停止行为; (4) 提供了条件和循环等程序结构;

(5) 提供了可带参数且非零延续时间的任务程序结构;

第 4 页 共 26 页

基于Verilog HDL的出租车计费器设计

(6) 提供了可定义新的操作符的函数结构;

(7) 提供了用于建立表达式的算术运算符、逻辑运算符和位运算符; (8) 提供了一套完整的表示组合逻辑基本元件的原语; (9) 提供了双向通路和电阻器件的描述; (10)可建立MOS器件的电荷分享和衰减模型; (11)可以通过构造性语句精确地建立信号模型; Verilog HDL设计方法: 自下而上的设计方法

自下而上的设计是传统的设计方法,是从基本单元出发,对设计进行逐层划分的过程。这种设计方法与用电子元件在模拟实现板上建立一个系统的步骤有密切的关系。优、缺点分别如下:

优点, 设计人员对这种设计方法比较熟悉;实现各个子模块所需的时间较短。 缺点, 对系统的整体功能把握不足;由于必须先对多个子模块进行设计,因此实现整个系统的功能所需的时间长;另外,对设计人员之间相互协作也有较高的要求。

自上而下的设计方法

自上而下的设计是从系统级开始,把系统划分为基本单元,然后再把基本单元划分为下一层次的基本单元,直到可用EDA元件实现为止。这种方法的优、缺点如下。

优点, 在设计周期开始就做好了系统分析;由于设计的主要仿真和调试过程是在高层完成的,所以能够早期发现结构设计上的错误,避免了设计工作的浪费,方便了系统的划分和整个项目的管理,可减少设计人员劳动,避免了重复设计。

缺点 ,得到的最小单元不标准,且制造成本高。 混合的设计方法

复杂数字逻辑电路和系统设计过程[5],通常是以上两种设计方法的结合。设计时需要考虑多个目标的综合平衡。在高层系统用自上而下的设计方法实现,而使用自下而上的方法从库元件或以往设计库中调用已有的设计单元。混合设计方法兼有以上两种方法的优点,并且可使用先进的矢量测试方法。

第 5 页 共 26 页

基于Verilog HDL的出租车计费器设计

2.2 Max+Plus II设计流程

Max+plusⅡ是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件[2]的供应商之一。Max+plusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。

设计流程:

使用Max+plusⅡ软件设计流程由以下几部分组成。

(1) 设计输入:可以采用原理图输入、HDL语言描述、EDIF网表输入及波形输入等几种方式。

(2) 编译:先根据设计要求设定编译参数和编译策略,如器件的选择、逻辑综合方式的选择等。然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合和器件适配,并产生报告文件、延时信息文件及编程文件,供分析仿真和编程使用。

(3) 仿真:仿真包括功能仿真、时序仿真和定时分析,可以利用软件的仿真功能来验证设计项目的逻辑功能是否正确。

(4) 编程与验证:用经过仿真确认后的编程文件通过编程器(Programmer)将设计下载到实际芯片中,最后测试芯片在系统中的实际运行性能。

在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电

路后重复上述过程。

第 6 页 共 26 页

基于Verilog HDL的出租车计费器设计

3 出租车计费器设计

随着中国城市化的快速发展,人们出行的选择也会越来越多样化,但是出租车作为一种重要的交通工具,也越来越多的被人们所选择,虽然在大中城市,出租车已经相当普及,但是在一些小的城市,出租车行业也因为城市化进程的加快而快速发展。此次设计采用EDA技术,把出租车计费器划分为五大模块,共同实现了出租车计费以及预置和模拟汽车启动、停止、暂停等功能,并动态扫描显示车费数目。最后,使用Max+Plus II仿真软件对每个模块和主程序分别进行了结果仿真,并对仿真出来的结果作了分析。

3.1 整体设计方案

根据自己对出租车从启动记费到停止打印发票的整个过程的理解,将整个出租车计费系统主要划分为3大块。计费器按里程收费,每100米开始一次计费。各模块功能如下:

(1) 车速控制模块

当起停键为启动状态时(高电平),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于停止状态时暂停发出脉冲,此时计费器和里程显示模块相应的停止计数。

(2) 里程动态显示模块

其包括计数车速控制模块发出的脉冲以及将计数显示动态显示出来,每来一个脉冲里程值加0.1(控制器每发一个脉冲代表运行了0.1公里)。

(3) 计费动态显示模块

其初值为10元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,并且计数显示动态显示出来,每来一个脉冲(代表运行了0.5公里)其数值加1元,当收费超过20时数值加1.5元。

第 7 页 共 26 页

基于Verilog HDL的出租车计费器设计

根据上述要求,绘制出计费器的大致设计构想框图,如图3-1所示。

车速选择 起/停开关 车速控 基本速率 制模块 Rest

里程动态 显示 扫描时钟 计费动态显示 显示输出 显示输出 图3-1计费器设计构想框图

3.2详细设计思路

本次出租车计费器的设计主要是基于FPGA芯片,使用硬件描述语言Verilog HDL,采用“自顶向下”的设计方法,编写一个出租车计费器芯片,并使用Max+Plus II软件仿真结果。把出租车计费器划分为五大模块,共同实现了出租车计费以及预置和模拟汽车启动、停止、暂停等功能,并动态扫描显示车费数目。最后,使用Max+Plus II仿真平台对每个模块和主程序分别进行了波形仿真,并对仿真出来的波形作了分析。本次出租车计费器设计要求实现如下功能:

(1) 能实现计费功能,计费标准为:按行驶里程收费,起步费为10.00元,并在车行3公里后再按2元/公里,当计费器计费达到或超过一定收费(如20元)时,每公里加收50%的车费,车停止不计费。

(2) 实现预置功能:能预置起步费、每公里收费、车行加费里程。 (3) 实现模拟功能:能模拟汽车启动、停止、暂停、车速等状态。 (4) 设计动态扫描电路:将车费显示出来,有两位小数。

(5) 用Verilog HDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。

第 8 页 共 26 页

基于Verilog HDL的出租车计费器设计

(6) 各计数器的计数状态用功能仿真的方法验证,并通过有关波形确认电路设计是否正确。

(7) 完成电路全部设计后,通过系统实验箱下载验证设计的正确性。

3.3 模块实现

为了使各模块间能够无冲突地完成各自的工作,加入适当的辅助模块,并结合计费器设计要求及各模块要实现的功能,在设计构想框图基础上,将其细化,得到系统总体模型图,如图3-2所示。

加速信号 匀速信号 车速控制 (MS) 扫描时钟 (PULSE) 加速按键 使能信号 暂停信号 模拟计费 (COUNTER) 车行状态输出 (SOUT) 清零信号 路程、车费显示 (SCAN-LED) 时钟信号

图3-2计费器系统总体模型图

在图3-2中,车速控制模块主要将车行驶的状态,加速或者匀速,转换成脉冲信号;扫描时钟模块,每隔一段时间,扫描一次车行速度,并将状态信号送给计费器;车行状态输出模块,将车速控制模送来的脉冲信号进行翻译,判断车是何种行驶状态;模拟计费模块,根据扫描时钟的信号,定时对路程计算,并将编码信号送给显示模块;路程、车费显示模块,对计费模块送来的信号进行编译,并显示出来。

结合系统设计的总体要求和各模块的详细功能要求,接下来,便是使用硬件描述语言Verilog HDL和软件仿真平台Max+Plus II,编写出各模块的功能语言,并进行编译、仿真,最终得到系统模块图。

第 9 页 共 26 页

基于Verilog HDL的出租车计费器设计

其设计流程如图3-3所示。

功 能 编 写 编译成功 仿真成功 功 能 编译波形

分 析 语 言 检 错 仿 真 出 错 出 错 图3-3计费器模块设计流程图

根据设计流程,按照从部分到整体的设计思路,先设计出各个功能模块,最后,结合图3-2将各功能模块连接在一起,形成了计费器整体系统模块图,如图3-4所示。

开 始 检 错 修 改 检 错 修 改 结 束

图3-4 计费器整体系统模块图

在图3-4中

模块MS,输入端口CK0、CK1为两个不同的时钟信号,高电平有效。来模拟汽车的加速和匀速,JS加速按键,高电平有效。CLK-OUT为状态脉冲输出信号。

模块PULSE实现将时钟信号5分频功能。

第 10 页 共 26 页

基于Verilog HDL的出租车计费器设计

模块COUNTER实现汽车模拟计费功能。CLR1为清零信号,CLK-DIV为时钟扫描信号;SI为状态信号,c1,c2,c3分别为费用的三为显示。

模块SOUT实现车行状态输出功能,其中clk为时钟信号,enable 为启动使能信号,sto暂停信号,匀为高电平有效。clr为清零信号,低电平有效,st为状态信号,0电平表示匀速,1电平表示加速。

模块SCAN-LED实现显示车费功能。BT为选位信号,SG译码信号。

将图3-4形成的系统在Max+plusⅡ平台中进行编译、仿真,形成了计费器最终顶层模块如图3-5所示。

图3-5 TAXI模块图

该模块为计费器最终顶层模块,T_CLK0、T_CLK1、T_CLK2为三个时钟信号,T-JS 加速信号,高电平有效,T-ENABLE为启动使能信号,高电平有效,T-CLR为清零信号,低电平有效,STO为暂停信号,高电平有效。T-BT为选位信号,T-SG为译码信号。

第 11 页 共 26 页

基于Verilog HDL的出租车计费器设计

4 计费器各模块的仿真

4.1模块MS的仿真

依据设计思路和Max+plus II设计平台以及Verilog HDL语言,编写出模块程序,调试完成后,进行波形仿真,得到MS模块仿真图,如图4-1所示。

图4-1 MS模块仿真图

图4-1中,JS为加速输入信号,高电平有效;CK0为匀速输入信号;CK1时钟信号,高电平有效。如图,在有加速信号持续输入的状态下,每隔一段时间,CLK-OUT端有一个加速脉冲输出,由仿真图象可以看出,MS模块正常运行。

4.2模块SOUT的仿真

依据设计思路和Max+Plus II设计平台以及Verilog HDL语言,编写出模块程序,调试完成后,进行波形仿真,得到SOUT模块仿真图,如图4-2所示。

图4-2 SOUT模块仿真图

图4-2中,STO为暂停信号,高电平有效;ENABLE为启动使能信号,高电平有效;CLR为清零信号,高电平有效;ST为状态信号;CLK为时钟信号;ST为状态信号,

第 12 页 共 26 页

基于Verilog HDL的出租车计费器设计

0电平表示匀速,1电平表示加速。如图,汽车在有启动信号持续输入的状态下,车行状态输出端有相应的状态信号输出,由仿真图象可以看出,SOUT模块正常运行。

4.3模块PULSE的仿真

依据设计思路和Max+Plus II设计平台以及Verilog HDL语言,编写出模块程序,调试完成后,进行波形仿真,得到PULSE模块仿真图,如图4-3所示。

图4-3 PULSE模块仿真图

图4-3中,CLK0为时钟信号,由仿真图象可以看出,PULSE模块正常运行,输出了0到4,实现时钟扫描的5分频功能。

4.4模块COUNTER的仿真

依据设计思路和Max+Plus II设计平台以及Verilog HDL语言,编写出模块程序,调试完成后,进行波形仿真,得到COUNTER模块仿真图,如图4-4所示。

图4-4 COUNTER模块仿真图

图4-4中,CLR1为清零信号,低电平有效;SI为状态信号;CLK-DIV为时钟扫描信号;C1、C2、C3为费用信号的三行显示。如图,汽车在行驶状态下,每隔一段时间,费用显示输出端会有相应的信号输出,由仿真图象可以看出,COUNTER模块正常运行。

第 13 页 共 26 页

基于Verilog HDL的出租车计费器设计

4.5模块SCAN_LED的仿真

依据设计思路和Max+Plus II设计平台以及Verilog HDL语言,编写出模块程序,调试完成后,进行波形仿真,得到SCAN-LED模块仿真图,如图4-5所示。

图4-5 SCAN-LED模块仿真图

图4-5中,BT为选位信号;SG译码信号。如图,每行驶一段时间,显示位上的不同数位上会有信号输出,仿真图象可以看出,SCAN-LED模块正常运行。

4.6模块TAXI的仿真

依据设计思路和Max+Plus II设计平台以及Verilog HDL语言,编写出模块程序,调试完成后,进行波形仿真,得到TAXI模块仿真图,如图4-6所示。

图4-6 TAXI模块仿真图

第 14 页 共 26 页

基于Verilog HDL的出租车计费器设计

图4-6中,js为加速输入信号,高电平有效;enable为启动使能信号,高电平有效;clr为清零信号,高电平有效;clk2 ck1 ck2为时钟信号。结合前面各模块的输入、输出端功能介绍和各模块仿真图像说明,可以看出,TAXI模块正常运行。

第 15 页 共 26 页

本文来源:https://www.bwwdw.com/article/mndt.html

Top