基于VHDL语言的出租车计费器设计Word文档格式.docx
《基于VHDL语言的出租车计费器设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言的出租车计费器设计Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
1.2课程设计要求
1.能实现计费功能,计费标准为:
按行驶里程收费,起步费为10.00元,并在车行3公里后再按2元/公里,当计费器计费达到或超过一定收费(如20元)时,每公里加收50%的车费,车停止不计费。
2.实现预置功能:
能预置起步费、每公里收费、车行加费里程。
3.实现模拟功能:
能模拟汽车启动、停止、暂停、车速等状态。
4.设计动态扫描电路:
将车费显示出来,有两位小数。
5.用VHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。
6.各计数器的计数状态用功能仿真的方法验证,并通过有关波形确认电路设计是否正确。
7.完成电路全部设计后,通过系统实验箱下载验证设计的正确性。
1.3设计平台
MAX+plusⅡ是美国Altera公司的一种EDA软件,用于开发CPLD和FPGA进行数字系统的设计。
2应用工具介绍
作为当今最流行的计算机软件系统,EDA技术是以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
EDA可提供文本输入以及图形编辑的方法将设计者的意图用程序或者图形方式表达出来,而我们经常用到的VHDL语言便是用于编写源程序所需的最常见的硬件描述语言(HDL)之一。
2.1EDA技术介绍
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计[1]。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。
综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。
综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。
也就是说,综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。
在今天,EDA技术已经成为电子设计的普遍工具,无论设计芯片还是设计系统,没有EDA工具的支持,都是难以完成的。
EDA工具已经成为设计师必不可少的武器,起着越来越重要的作用。
从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。
EDA技术发展迅猛,完全可以用日新月异来描述。
EDA技术的应用广泛,现在已涉及到各行各业。
EDA水平不断提高,设计工具趋于完美的地步。
2.2VHDL语言介绍
电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路。
VHDL硬件描述语言在电子设计自动化中扮演着重要的角色,他是EDA技术研究的重点之一。
硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件描述语言,VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)于1983年由美国国防部发起创建,由IEEE进一步发展并在1987年作为IEEE标准10760发布。
因此,VHDL成为硬件描述语言的业界标准之一。
VHDL作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,使用VHDL语言,可以就系统的总体要求出发,自上而下地将设计内容细化,最后完成系统硬件的整体设计。
一个完整的VHDL程序包括以下几个基本组成部分:
实体(Entity),结构体(Architecture),程序包(Package),库(Library)。
其中,实体是一个VHDL程序的基本单元,由实体说明和结构体两部分组成,实体说明用于描述设计系统的外部接口信号;
结构体用于描述系统的行为,系统数据的流程或系统组织结构形式。
程序包存放各设计模块能共享的数据类型,常数,子程序等。
库用于存放已编译的实体,机构体,程序包及配置。
VHDL语言的编译环境有不同的版本,我们应用的是Altera公司的Maxplus软件,它的操作顺序如下:
使用TEXTEDITOR编写VHDL程序使用COMPILER编译VHDL程序;
使用WAVE2FORMEDITOR,SIMULAROT仿真实验;
使用TIMINGANALTZER进行芯片的时序分析;
用FLOORPLANEDITOR锁定芯片管脚位置;
使用PROGRAMMER将编译好的VHDL程序下载到芯片中。
VHDL进行工程设计的优点是显而易见的。
1.与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
2.VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
3.VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效、高速地完成必须有多人甚至多个代发组共同并行工作才能实现。
4.对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的将VHDL描述设计转变成门级网表。
5.VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
6.用VHDL语言编写的源程序便于文档管理,用源代码描述来进行复杂控制逻辑的设计,既灵活方便,又便于设计结果的交流、保存和重用。
3设计原理
车速选择
起/停开关
基本速率
Reset
扫描时钟
显示输出显示输出
图3.1系统顶层框图
计费器按里程收费,每100米开始一次计费。
各模块功能如下:
(1)车速控制模块
当起停键为启动状态时(高电平),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;
当处于停止状态时暂停发出脉冲,此时计费器和里程显示模块相应的停止计数。
(2)里程动态显示模块
其包括计数车速控制模块发出的脉冲以及将计数显示动态显示出来,每来一个脉冲里程值加0.1(控制器每发一个脉冲代表运行了0.1公里)。
(3)计费动态显示模块
其初值为10元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,并且计数显示动态显示出来,每来一个脉冲(代表运行了0.5公里)其数值加1元,当收费超过20时数值加1.5元。
4设计步骤
VHDL设计流程图(如图4.0):
图4.0VHDL设计流程图
4.1程序设计
图4.1系统的总体模块图
(1)模块MS的实现(如图4.1.1所示)
图4.1.1模块MS图
模块MS,输入端口CK0、CK1为两个不同的时钟信号,来模拟汽车的加速和匀速,JS加速按键。
(2)模块SOUT的实现(如图4.1.2所示)
图4.1.2模块SOUT图
该模块实现车行状态输出功能,其中clk为时钟信号,enable为启动使能信号,sto暂停信号,clr为清零信号,st为状态信号。
(3)模块PULSE的实现(如图4.1.3所示)
图4.1.3模块PULSE图
该模块实现将时钟信号5分频功能。
(4)模块COUNTER的结果验证(如图4.1.4所示)
图4.1.4模块COUNTER图
实现汽车模拟计费功能。
clr1为清零信号,si为状态信号,c1,c2,c3分别为费用的三为显示。
(5)模块SCAN_LED的实现(如图4.1.5所示)
图4.1.5模块SCAN_LED图
该模块实现显示车费功能。
BT为选位信号,SG译码信号
4.2系统仿真:
系统仿真是在实际系统上进行实验研究比较困难时适用的必不可少的工具,它是指通过系统模型实验去研究一个已经存在或正在设计的系统的过程,通俗地讲,就是进行模型实验。
因而,系统仿真的结果决定整个课程设计任务完成的到位程度。
程序输入完成后进行编译,编译完成后,可以对所进行的设计进行仿真,本课程设计的仿真平台是MAX+plusⅡ,通过对VHDL源程序进行编译检错,然后创建波形文件(后缀名为.scf),加入输入输出变量,选择适用的芯片以及设定仿真结束时间,设置好输入初值进行仿真,得到仿真波形图:
1.模块MS的结果验证(如图4.2.1)
图4.2.1
当JS为高电平,CLK_OUT按照CLK1输出;
低电平时,按照CLK0输出
2模块SOUT的结果验证(如图4.2.2)
enable高电平时,每一个时钟上升沿时,CQI计数加1,若CQI<
=30时,state赋01,30<
CQI<
=80时,state赋10态,…..;
enable低电平时,CQI计数暂停,保持不变
图4.2.2
3模块PULSE的结果验证(如图4.2.3)
每个CLK0上升沿时,CNT计数加1,加到4时在下一个时钟上升沿赋值0;
cnt不为0时fout赋值低电平,否则高电平
图4.2.3
4模块COUNTER的结果验证(如图4.2.4)
SI为出租车状态信号:
“00”表示计费值停止,Q1~Q3不变;
“01”计费清零,设置为起步价10元,Q2=1,Q3=0,Q1=0;
“10”正常计费,每公里1元,“11”超过20元后,每公里1.5元;
Q1,Q2,Q3的信号分别赋值给C1,C2,C3
图4.2.4
5模块SCAN_LED的结果验证(如图4.2.5)
BT位选,SG译码