课程设计报告课程名称:VHDL语言与EDA课程设计设计题目:出租车计费器系别:通信与控制工程系专业:电子信息工程班级:学生姓名:学号:起止日期:指导教师:教研室主任:指导教师评语:指导教师签名:年月日成绩评定项目权重成绩1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总成绩教研室审核意见:教研室主任签字:年月日教学系审核意见:主任签字:年月日摘要本文介绍了一种采用单片FPGA芯片进行出租车计费器的设计方法,主要阐述如何使用新兴的EDA器件取代传统的电子设计方法,利用FPGA的可编程性,简洁而又多变的设计方法,缩短了研发周期,同时使出租车计费器体积更小功能更强大。本设计实现了出租车计费器所需的一些基本功能,计费包括起步价、行车里程计费、等待时间计费,同时考虑到出租车行业的一些特殊性,更注重了把一些新的思路加入到设计中。主要包括采用了FPGA芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品升级。关键词:VHDL;计费器;QuartusⅡ;FPGA目录设计要求.................................................................11、方案论证与对比........................................................11.1、方案一...........................................................11.2、方案二...........................................................21.3、方案对比与选择...................................................32、主要模块设计..........................................................32.1、速度模块.........................................................32.2、计程模块.........................................................32.3、计时模块.........................................................42.4、计费模块.........................................................42.5、整体框图.........................................................53、仿真结果..............................................................53.1、速度模块仿真.....................................................53.2计程模块仿真......................................................63.3计时模块仿真......................................................63.4计费模块仿真......................................................73.5、整体仿真.........................................................74、整体电路图...........................................................85、引脚锁定及测试........................................................86、致谢..................................................................97、详细仪器清单.........................................................10参考文献................................................................11附录....................................................................121出租车计费器设计要求计费标准为武汉起步3元,车行3公里后为1.4元/公里,当计费达到20元后,每公里加收50%的车费,车停止每3分钟增加0.7元。车费显示出来,有一位小数。1、方案论证与对比1.1、方案一如图1所示,方案一包含运算控制模块、分频器、显示模块这三大部分。图1方案一系统框图运算控制器模块将其他两个进行连接,是本次设计的核心。它包含计程器、计时器、计价器,同时还有读取外部的拨码开关控制信号,提供当前显示信号与显示位选信号,从而周期性交替显示计价/计时信息、等时信息。计程器、计时器、计价器根据位选信号,输出相应数据的当前选中数字,由顶层模块根据显示数据类型变换信号进行选择,传输给显示模块。实验箱的时钟信号为20MHz方波,由分频器分为10Hz的计时信号(一个周期代表运算控制器分频器时钟信号按键控制LED状态显示七段译码器数码管显示计时信号计费信号序列计程信号3/8译码器分频模块控制计数模块显示模块2现实中的1s)、10Hz的计程信号(一个周期代表现实中的10m)、500Hz的数码管扫描信号(扫描频率62.5Hz)、0.2Hz的显示数据类型变换信号(变化周期5s)。显示模块由实验箱上的3/8译码器、五个LED灯构成状态的指示灯、程序编写的一个七段数码管译码器(因显示需要,原有字形“E”征用改为“—”,字形F改为“”)组成。1.2、方案二方案二流程介绍:分析系统设计要求不难得知,整个出租车计费系统按功能主要分为速度模块、计程模块、计时模块和计费模块,其系统结构图如图2所示。图2方案二系统结构图系统接收到reset信号后,总费用变为3元,同时其他计数器、寄存器等全部清零。系统接收到start信号后,首先把部分寄存器赋值,总费用不变,单价price寄存器通过对总费用的判断后赋为3元。其他寄存器和计数器等继续保持为0。速度模块:通过对速度信号sp的判断,决定变量kinside的值。Kinside即是行进100m所需要的时钟周期数,然后每行进100m,则产生一个脉冲clkout。计程模块:由于一个clkout信号代表行进100m,故通过对clkout计数,可以获得共行进的距离kmcount。计时模块:在汽车启动后,当遇到顾客等人或红灯时,出租车采用计时收费的方式。通过对速度信号sp的判断决定是否开始记录时间。当sp=0时,开始记录时间。当时间达到足够长时产生timecount脉冲,并重新计时。一个timecount脉冲相当于等待的时间达到了时间计费的长度。这里选择系统时钟频率为500Hz,180s即计数值为9000。3计费模块由两个进程组成。其中,一个进程根据条件对enable和price赋值:当记录的距离达到3公里后enable变为1,开始进行每公里收费,当总费用大于20元后,则单价price由原来的1.4元每公里变成2.1元每公里;第二个进程在每个时钟周期判断timeout和clkout的值。当其为1时,则在总费用上加上相应的费用。1.3、方案对比与选择方案一和方案二虽然基本上都能实现本次课程设计的要求,但方案一通过分频器分成的数个输入信号来进行出租车计费器的仿真,使系统变得复杂且对费用的计算不能达到课程设计对价格变化的要求。而方案二则通过一个速度模块和一个时间模块达到对速度和时间控制,从而使速度可调且实现等待计费。再通过计费模块的反馈使公里单价随总费用变化从而达到总体的要求。通过比较可知方案二简单明了且调节速度控制里程的变化快慢,易于控制显示,再结合实验室的设备。综合考虑,最终选择了方案二。2、主要模块设计2.1、速度模块速度模块首先根据start信号判断是否开始计费,然后根据输入的速度档位sp[2..0]的判断,确定行驶100m所需要的时钟数,每前进100m,输出一个clkout信号。同时由cnt对clk进行计数,当cnt等于kinside时,把clkout信号置1,cnt清0。其模块框图如图3。图3速度模块框图2.2、计程模块此模块主要用于记录行进的距离,其模块框图如图4所示。通过对clkout信号的计数,可以计算行驶的距离kmcount。一个clkout脉冲相当于行进100m所以只要记录clkout4的脉冲数目即可确定共行进的距离。Kmcount1为十分位,kmcount2为个位,kmcount3为十位,分别为十进制数。图4计程模块框图2.3、计时模块速度模块主要用于计时收费,记录计程车速度为0的时间(如等待红灯),其模块框图如图5所示。通过对sp信号的判断,当sp=0,开始记录时间。当时间达到足够长时,产生timecount脉冲,并重新计时。图5计时模块框图2.4、计费模块计费模块如图6所示,可分为kmmoney1和kmmoney2两个进程。Kmmoney1用于产生enable和price信号。当记录距离达到3km后,enable信号为1,开始进行每公里收费。当总费用大于20元后,单价price由原来的1.4元变成2.1元,用作计时收费。通过对sp信号的判断,当sp=0,开始记录时间。当时间达到足够长时,产生timecount脉冲,并重新计时。Kmmoney2用于判断timecount和clkout的值,当其为1时,总费用加1。最终输出为总费用。5图6计费模块框图2.5、整体框图从上述设计方案中我们可以大致得到出租车计费器的系统框图,如图7所示。其中clk为输入时钟脉冲,时钟上升沿有效;reset为复位信号,start为开始计费信号,stop为停止计费信号,均高电平有效;SP[2..0]表示出租车状态(停止或不同形式速度);kmcnt和count信号则分别输出出租车行驶的里程和花费。图7出租车计费器系统框图3、仿真结果3.1、速度模块仿真速度模块的仿真波形图如图8所示。该模块根据出租车所处的运行状态和不同的形式速度,对相应数目的时钟周期进行计数,车每行驶100m时输出信号clkout输出高电平。6图8速度模块仿真波形图3.2计程模块仿真计程模块的仿真波形如图9所示。图中,当reset信号有效时,系统复位清零;否则,对输入信号clkout进行十进制计数。图9计程模块仿真波形图3.3计时模块仿真计时模块的仿真波形图如图10所示。预设9000个时钟周期为180s,对时钟周期进行计数,每计9000个时钟周期输出高电平,指示计时180秒。7图10计时模块仿真波形图3.4计费模块仿真计费模块的仿真波形图如图11所示。当reset信号有效时,系统复位清零;否则,当计时计费信号timecount和计程计费信号clkout为高电平时,按照一定计费规则进行计费。图11计费模块仿真功能图3.5、整体仿真对电路整体进行仿真,得出如下仿真波形图12。图中,当复位信号reset为高电平时,系统所有寄存器、计数器都清零;当开始计费信号start信号有效时,计费器开始计费,根据出租车行驶的速度sp[2..0]的取值计算所用花费和行驶里程;当停止计费信号有效时,计费器停止工作。8图12整体仿真图综上所述,本设计的出租车计费器完全符合系统设计的要求,实现了出租车计费器所需的各项基本功能。4、整体电路图整体RTL电路如图13。硬件电路由CycloneⅡ电路板组成,clk为时钟周期信号,由试验箱产生,start/