唐山学院课程设计目录目录.............................................................................................................11引言..........................................................................................................12软件介绍..................................................................................................23工作原理..................................................................................................34源程序......................................................................................................54.1计算车费模块................................................................................54.2计算里程模块................................................................................64.3分频模块........................................................................................84.4系统模块........................................................................................94.5各部分模块图..............................................................................105实验箱下载验证....................................................................................125.1引脚锁定......................................................................................125.2验证结果......................................................................................12总结...........................................................................................................13参考文献...................................................................................................14唐山学院课程设计11引言随着我国经济社会的全面发展,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普通的交通工具。出租车计价器是出租车营运收费的专用智能化仪表,是使出租车市场规范化、标准化的重要设备。一种功能完备,简单易用,计量准确的出租车计价器是加强出租车行业管理,提高服务质量的必需品。所以设计一种新型出租车计费装置是我们本次课设的目的。VerilogHDL是一种硬件描述语言(HDL:HardwareDiscriptionLanguage),是一种用文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。VerilogHDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。现在,随着系统级FPGA以及片上系统的出现,软硬件协同设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计相结合。该出租车计费器采用VerilogHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,得到一种出租车计价系统的软件结构,通过QuartusⅡ软件下进行仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求。该设计虽然功能简单,智能化水平比较低,但仍具有一定的实用性。客户管理系统的需求分析主要确定系统的主要功能,对系统进行概要描述,对系统的各个主要功能分别进行需求描述,目的是使软件在设计过程中尽量符合客户的需要。唐山学院课程设计22软件介绍QuartusⅡ可编程逻辑开发软件是Altera公司为其FPGA/CPLD芯片设计的集成化专用开发工具,是Altera最新一代功能更强的集成EDA开发软件。使用QuartusII可完成从设计输入,综合适配,仿真到下载的整个设计过程。QuartusⅡ根据设计者需求提供了一个完整的多平台开发环境,它包含蕞个FPGA和CPLD设计阶段的解决方案。QuarmsⅡ软件提供的完整,操作简易的图形用户界面可以完成整个设计流程中的各个阶段。QuartusⅡ集成环境包括以下内容:系统级设计,嵌入式软件开发,可编程逻辑器件(PLD)设计,综合,布局和布线,验证和仿真。QuartusⅡ根据设计者需求提供了一个完整的多平台开发环境,它包含蕞个FPGA和CPLD设计阶段的解决方案。QuarmsⅡ软件提供的完整,操作简易的图形用户界面可以完成整个设计流程中的各个阶段。QuartusⅡ集成环境包括以下内容:系统级设计,嵌入式软件开发,可编程逻辑器件(PLD)设计,综合,布局和布线,验证和仿真。QuartusⅡ也可以直接调用SynplifyPro,LeonardoS~ctmm以及ModelSim等第三方EDA工具来完成设计任务的综合与仿真。QualtusⅡ与MATLAB和DSPBuilder结合可以进行基于FPGA的DSP系统开发,方便且快捷,还可以与SOPCBuilder结合,实现SOPC系统的开发。唐山学院课程设计33工作原理本次课程设计的要求设计的出租车计费器的模型如图2-1所示。图3-2出租车计费器模型方框图车的状态由传感器传回来当作控制信号,用控制信号来控制计算里程和车费模块,然后分别将里程和车费送到译码模块译码,输出的数据一起送到动态扫描模块,由片选信号控制哪部分译码模块输出的数据用数码管显示。当车启动后,计算里程和车费模块就开始计数,起步价为6.00元,并在车行3Km后按1.20元/Km计费,车停止和暂停时不计费;然后将里程和车费送到译码模块译码和动态显示模块动态显示,最后显示在七段数码管上,用LED数码管实时显示车费和汽车行驶里程,用两位数字显示汽车行驶里程,显示方式为“XX”,单位为km。计程范围为0—99km,计程分辨率为1km;用四位数字显示总费用,显示方式为“XX.X”,单价为元。计价范围为0—99.9元,计价分辨率为0.1元。动态显示的时间间隔为5秒钟。整个设计由分频模块、计程模块、计费模块三个部分组成。其中分频模块是把mile_clk分成八个周期的脉冲;计程模块是用来计算行驶里程;计费是用来显示行驶费用。系统结构框图如图3-2所示:唐山学院课程设计4图3-2系统结构图唐山学院课程设计54源程序4.1计算车费模块本模块主要是计算车费。计费标准为按行程里程收费,起步价为6.00元,当里程小于3公里时,按照起价计费,车行超过3公里后在按1.2元/公里收费。c2、c1、c0分别表示费用的十元、元、角的输出。当暂停信号stop为高电平时,c2,c1,c0停止计费,并显示当前费用。最后把c2,c1,c0信号给cost2~cost0。其中在计费模块中,en为计费使能端,stop为暂停计费信号,cost2~cost0为计费输出,直接送至数码管译码显示。计算车费的模块的功能结构框图如图4-1所示。图4-1计费模块功能结构框图根据模块实现的功能设计VerilogHDL源代码如下:modulejifei(cost_clk,en,cost0,cost1,cost2);inputcost_clk;inputen;output[3:0]cost0;reg[3:0]cost0;output[3:0]cost1;reg[3:0]cost1;output[3:0]cost2;reg[3:0]cost2;always@(negedgeenorposedgecost_clk)begin:xhdl0reg[3:0]c0;reg[3:0]c1;reg[3:0]c2;if(en==1'b0)beginc0=4'b0000;c1=4'b0110;c2=4'b0000;endelsebegin唐山学院课程设计6c0=c0+1'b1;if(c0==4'b1010)beginc1=c1+1'b1;c0=4'b0000;if(c1==4'b1010)beginc2=c2+1'b1;c1=4'b0000;if(c2==4'b1010)c2=4'b0000;endendendcost0=c0;cost1=c1;cost2=c2;endendmodule4.2计算里程模块实现车辆行驶的模拟:能模拟汽车的启动,停止,暂停等状态。在本模块中,一个脉冲代表是里程要加100米。计程模块主要完成计程功能即计算乘客所行驶的公里数并生成使能信号en;当计费信号start为高电平且复位信号rst为低电平时,mile_clk每来一个上升沿,计程器低位k0就自增1,当k0满9时,k0清零,k1自增1,k1满9清零,因此计程器的计程范围是0~99km,满量程后自动归零。当行驶里程大于3km时,本模块将使能信号en变为高电平,小于3km时en为低电平。stop为暂停信号,当stop为高电平时,计量模块停止计数并显示当前里程数。计算里程的模块的功能结构框图如图3-2所示。图4-2里程的模块的功能结构框图根据模块实现的功能设计VerilogHDL源代码如下:modulelicheng(cost_clk,rst,en,k0,k1);唐山学院课程设计7inputcost_clk;inputrst;outputen;regen;output[3:0]k0;reg[3:0]k0;output[3:0]k1;reg[3:0]k1;always@(posedgecost_clkorposedgerst)begin:xhdl0reg[3:0]q0;reg[3:0]q1;if(rst==1'b1)beginq0=4'b0000;q1=4'b0000;en=1'b0;endelsebeginq0=q0+1'b1;if({q1,q0}8'b00000011)beginen=1'b1;if(q0==4'b1010)beginq0=4'b0000;q1=q1+1'b1;if(q1==4'b1010)q1=4'b0000;endendendk0=q0;k1=q1;endendmodule唐山学院课程设计84.3分频模块因为每公里收费1.2元,所以0.1元约为833米,根据要求所知一个脉冲对应是10米,所以把cost_clk分频成clk每八个周期cost_clk对应一个上升沿;mile_clk分频成clk每100个周期对应一个上升沿。根据功能设计VerilogHDL源代码如下:modulefenpin(rst,clk,start,stop,mile_clk,cost