EDA 技 术 期 末 综 合 报 告_第1页
EDA 技 术 期 末 综 合 报 告_第2页
EDA 技 术 期 末 综 合 报 告_第3页
EDA 技 术 期 末 综 合 报 告_第4页
EDA 技 术 期 末 综 合 报 告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 EDA 技 术 期 末 综 合 报 告课程名称: EDA 技术 题 目: 出租车计费器 学 院: 信息工程与自动化学院 摘 要随着出租车行业的发展,对出租车计费器的要求也越来越高,用户不仅要求计费器性能稳定计费准确,而且要求在乘坐出租车时,显示起步价、行车里程二部分,由自动计费器自动记录。安装在与汽车轮相连接的传感器在汽车行进时向自动计费器发送脉冲信号,在一定的公里数内,按起步价计费;超过这一里程后,自动计费器按里程计费;超过一定费用后,则则增加里程费用;如果停车等候,则不收费。 出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的

2、利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。 而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。而采用FPGA进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。针对计费模式的切换,通过软件编程就可以轻易而举的实现。避免了机械开关带来的不稳定因素。关键词: 出租车计费器 EDA verilog语言目 录绪 论3

3、第一章 系统设计41出租车计费系统的概述:42设计的意义53设计的要求63设计的原理6第二章 系统设计方案7第三章 主要模块81 taxi(控制)模块:82 Decode(译码显示)模块:11小 结17参考文献:1818 绪 论人类社会已进入到高度发达的信息化社会,信息社会的发展离不开电子产品的进步。现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要因素是生产制造技术和电子设计技术的发展。前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管。后者的核心就是EDA技术,EDA是指以计算机为

4、工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作:IC设计,电子电路设计,PCB设计。没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不可想象的,反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。近年来,我国出租汽车行业迅猛发展,出租汽车已成为我国城市公共交通的重要组成部分和现代化城市必备的基础设施,成为人们工作、生活中不可缺少的交通工具。它对繁荣经济、促进发展、方便群众、改善交通起到了积极作用。出租汽车对我国人民物质和文化生活影响之大、作用之广是前所未有的。出租汽车行业的服务水平和程度已经成为现

5、代化的重要标志。出租汽车服务行业和出租汽车计价器紧密相关,因为出租汽车必须安装出租汽车计价器才能投入营运。出租汽车计价器是一种能根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并直接显示车费值的计量器具。计价器是出租汽车的经营者和乘坐出租汽车的消费者之间用于公平贸易结算的工具,因而计价器量值准确与否,直接关系到经营者和消费者的经济利益,用户不仅要求计费器性能稳定,计费准确,有防作弊功能;同时还要求其具有车票资料打印、IC卡付费、语音报话、和电脑串行通信等功能,而这些与电子技术的发展是分不开的。二十世纪后半期,随着集成电路和计算机技术的飞速发展,数字系统也得到了飞速发展,其实现方法经历了由分立

6、元件、SSI、MSI到LSI、VLSI以及UVLSI的过程。同时为了提高系统的可靠性与通用性,微处理器和专业集成电路(ASIC)逐渐取代了通用全硬件LSI电路,而ASIC以其体积小、重量轻、功耗低、速度快、成本低、保密性好而脱颖而出。 第一章 系统设计1出租车计费系统的概述: 在出租车是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。2设计的意义 在

7、出租车是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高。国内出租车计价器已经经历了4 个阶段的发展。从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器;再从集成电路式到目前的单片机系统设计的出租车计价器。出租

8、车计价器计费是否准确、出租车司机是否作弊才是乘客最关心的问题,而计价器营运数据的管理是否方便才是出租车司机最关注的。因此怎样设计出一种既能有效防止司机作弊又能方便司机的计价器尤为重要。因此, 本文以FPGA为核心设计一款多功能出租车计价器,该计价器能实现按时间和里程综合计算车价,能显示时间、里程、单价、总车价等相关信息显示。它比市场上的一些计价器使用更方便,功能更全,还具有有效防止司机作弊和系统稳定性好的优点。3设计的要求设计一个出租车计费器,能按路程计费,具体要求如下所述:1) 实现计费功能,计费标准为:按行驶里程计费,起步价 6.00 元,并在车行驶 3km 后按 1.2 元/km 计费,

9、当计费器达到或超过 20 元时,每 km 加收 50%的车费,车辆停止和暂停时不计费。2) 现场模拟汽车的起动、停止、暂停和换挡等状态。3) 设计数码管动态扫描电路,将车费和路程显示出来,各有两位小数。4) 系统时钟 20MHz。4设计的原理设计该出租车有起动键、停止键、暂停键和档位键。起动键为脉冲触发信号,当其为一个脉冲时,表示汽车已起动,并根据车速的选择和基本车速发出响应频率的脉冲(计费脉冲)以此来实现车费和路程的计数,同时车费显示起步价;当停止键为高电平时,表示汽车熄火,同时停止发出脉冲,此时车费和路程计数清零;当暂停键为高电平时,表示汽车暂停并停止发出脉冲,此时车费和路程计数暂停;档位

10、键用于改变车速,不同的档位对应着不同的车速,同时路程计数的速度也不同。出租车计费器可分为两大模块,即控制模块和译码显示模块。系统框图如下所示。控制模块实现了计费和路程的计数,并且通过不同的档位来控制车速。 译码显示模块实现十进制数到 4 位二进制数的转换,以及车费和路程的显示。第二章 系统设计方案 车的状态由传感器传回来当作控制信号,用控制信号来控制计算里程和车费模块,然后分别将里程和车费送到译码模块译码,输出的数据一起送到动态扫描模块,由片选信号控制哪部分译码模块输出的数据用数码管显示。 当车启动后,计算里程和车费模块就开始计数,起步价为7.00元,并在车行3Km后按2.20元/Km计费,当

11、计费器达到或超过20元时,每公里回收50%的车费,车停止和暂停时不计费;然后将里程和车费送到译码模块译码和动态显示模块动态显示,最后显示在七段数码管上,动态显示的时间间隔为秒钟。运算控制器模块将其他两个进行连接,是本次设计的核心。它包含计程器、计时器、计价器,同时还有读取外部的拨码开关控制信号,提供当前显示信号与显示位选信号,从而周期性交替显示计价/计时信息、等时信息。 计程器、计时器、计价器根据位选信号,输出相应数据的当前选中数字,由顶层模块根据显示数据类型变换信号进行选择,传输给显示模块。第三章 主要模块1 控制模块taxi: taxi进行仿真后得到的功能仿真结果如图1所示,时序仿真结果如

12、图2所示。 观察波形可知,当启动键“start”为一个脉冲时,表示汽车己起动,车费money显示起步价6.00元,同时路程distance随着计费脉冲开始计数;当停止键stop为“1”时,表示汽车已经熄火,车费money和路程distance均为0;当暂停键pause为“1”时,车费和路程停止计数;当档位键分别取2和3时,路程的计数逐渐加快,表示车速逐渐加快。图1 Taxi控制模块功能仿真图2 Taxi控制模块时序仿真代码如下:/-taxi模块-module taxi(money,distance,clk,stop,start,pause,speedup);input clk;input st

13、op;input start;input pause;input1:0 speedup;output12:0 money;output12:0 distance;reg12:0 money; reg12:0 distance;reg12:0 money_reg; /车费寄存器reg12:0 distance_reg; /路程寄存器reg3:0 num; /控制车速的计数器reg15:0 dis; /千米计数器reg d; /千米标志位always (posedge clk)beginif(stop) /车停止,路程、车费清零beginmoney_reg=d0;distance_reg=d0;d

14、is=d0;num=d0;endelse if(start) /启动后,起步价6元beginmoney_reg=d600;distance_reg=d0;dis=d0;num=d0;endelsebeginif(!start&!stop&!pause&!speedup) /1档beginif(num=d9)beginnum=d0;distance_reg=distance_reg+1;dis=dis+1;endelsebeginnum=num+1;endendelse if(!start&!stop&!pause&speedup=b01) /2档beginif(num=d9)beginnum=

15、d0;distance_reg=distance_reg+2;dis=dis+2;endelsebeginnum=num+1;endendelse if(!start&!stop&!pause&speedup=b10) /3档beginif(num=d9)beginnum=d0;distance_reg=distance_reg+5;dis=dis+5;endelsebeginnum=num+1;endendelse if(!start&!stop&!pause&speedup=b11) /4档begindistance_reg=distance_reg+1;dis=d100)begind=d

16、1;dis=d0;endelsebegind= d300)/如果超过3km,则按1.2元/km计费beginif(money_reg =d2000 & d=d1)beginmoney_reg =d2000 & d=d1)beginmoney_reg = money_reg + d180;endend/-当计费超过20元时,每km加收50%的车费-money = money_reg;distance = distance_reg;endEndmodule 6 译码显示模块Decode:将扫描数码管的分频系数改小后,对译码显示模块decoder的功能仿真结果如图3所示,时序仿真结果如图4所示。进行

17、译码的时钟频率必须比汽车的计费时钟高得多,才能实时显示出车费和路程的变化,这里直接采用晶振时钟20MHz即可。其中comb1和comb2是采用高频时钟控制的计数器,当输入车费和路程数据后,此计数器开始计数,直到与车费和路费的数值相等后才停止,这样就实现了大整数到多位十进制数的转换。comb1_a、comb1_b、 comb1_c、comb1_d为车费的4位十进制数表示;comb2_a、comb2_b、 comb2_c、comb2_d为路程的4位十进制数表示。可以看出,当输入的车费money_in和路程distance_in取不同的值时,用高频计数器转换后均输出对应的4位十进制数。图3 Deco

18、de模块功能仿真图4 Decode模块功能仿真 代码如下: /-decode模块-module decode(scan,seg,dp,clk20mhz,money_in,distance_in);output7:0 scan;output6:0 seg;output dp;input clk20mhz;input12:0 money_in;input12:0 distance_in;reg7:0 scan;reg6:0 seg;reg dp;reg clk1khz;/1khz的分频时钟,用于数码管的位选reg3:0 data;reg3:0 m_one,m_ten,m_hun,m_tho;/钱数

19、的BCDreg3:0 d_one,d_ten,d_hun,d_tho;/路程的BCDreg15:0 count;reg15:0 comb1;reg3:0 comb1_a,comb1_b,comb1_c,comb1_d;reg15:0 comb2;reg3:0 comb2_a,comb2_b,comb2_c,comb2_d;reg2:0 cnt;/-1KHz的分频时钟,用于数码管位选扫描(1ms)-always (posedge clk20mhz)beginif(count = d10000)beginclk1khz = clk1khz;count = d0;endelsebegincount

20、= count + 1;end/-将车费的十进制转化为4位十进制数(BCD)-if(comb1 money_in)begin if(comb1_a = d9 & comb1_b = d9 & comb1_c = d9)begincomb1_a = b0000;comb1_b = b0000;comb1_c = b0000;comb1_d = comb1_d + 1;comb1 = comb1 + 1;endelse if(comb1_a = d9 & comb1_b = d9)begincomb1_a = b0000;comb1_b = b0000;comb1_c = comb1_c + 1;

21、comb1 = comb1 + 1;endelse if(comb1_a = d9)begincomb1_a = b0000;comb1_b = comb1_b + 1;comb1 = comb1 + 1;endelsebegincomb1_a = comb1_a + 1;comb1 = comb1 + 1;endendelse if(comb1 = money_in)beginm_one = comb1_a;m_ten = comb1_b;m_hun = comb1_c;m_tho money_in)begincomb1_a = b0000;comb1_b = b0000;comb1_c =

22、 b0000;comb1_d = b0000;comb1 = d0;end/-将路程的十进制数转化为4位十进制数(BCD)-if(comb2 distance_in)begin if(comb2_a = d9 & comb2_b = d9 & comb2_c = d9)begincomb2_a = b0000;comb2_b = b0000;comb2_c = b0000;comb2_d = comb2_d + 1;comb2 = comb2 + 1;endelse if(comb2_a = d9 & comb2_b = d9)begincomb2_a = b0000;comb2_b = b0

23、000;comb2_c = comb2_c + 1;comb2 = comb2 + 1;endelse if(comb2_a = d9)begincomb2_a = b0000;comb2_b = comb2_b + 1;comb2 = comb2 + 1;endelsebegincomb2_a = comb2_a + 1;comb2 = comb1 + 1;endendelse if(comb2 = distance_in)begind_one = comb2_a;d_ten = comb2_b;d_hun = comb2_c;d_tho distance_in)begincomb2_a =

24、 b0000;comb2_b = b0000;comb2_c = b0000;comb2_d = b0000;comb2 = d0;endend/-数码管动态扫描-always (posedge clk1khz)begincnt = cnt + 1;endalways (cnt)begincase(cnt)b000:begin data = m_one; dp = d0; scan = b00000001;endb001:begin data = m_ten; dp = d0; scan = b00000010;endb010:begin data = m_hun; dp = d1; scan

25、 = b00000100;endb011:begin data = m_tho; dp = d0; scan = b00001000;endb100:begin data = d_one; dp = d0; scan = b00010000;endb101:begin data = d_ten; dp = d0; scan = b00100000;endb110:begin data = d_hun; dp = d1; scan = b01000000;endb111:begin data = d_tho; dp = d0; scan = b10000000;enddefault:begin

26、data = bx; dp = bx; scan = bx;endendcaseend/-7段译码-always (data)begincase(data3:0)b0000:seg6:0 = 7b1111110;b0001:seg6:0 = 7b0110000;b0010:seg6:0 = 7b1101101;b0011:seg6:0 = 7b1111001;b0100:seg6:0 = 7b0110011;b0101:seg6:0 = 7b1011011;b0110:seg6:0 = 7b1011111;b0111:seg6:0 = 7b1110000;b1000:seg6:0 = 7b11

27、11111;b1001:seg6:0 = 7b1111011;default: seg6:0 = 7b0000000;endcaseendendmodule小 结 这次课程设计是出租车计费器,开始拿到课题时候相当兴奋!觉得理论课程与生活中的实际密切结合了!然后,在接到任务后,我便开始研究程序,希望通过自己的努力,能对这个课题和程序有自己的认识。但是前期的学习得不够扎实,让我在阅读程序时频频的遇到问题。经过老师的讲解,能对程序的各模块进行修改。 然而,我还是遇到了很多棘手的问题,比如说,程序不理解,软件运用不熟练,再比如说,应用模块不熟悉,等等。真正领略到艰苦奋斗的真正含义,我才意识到学好基础的重要性。我想说,设计确实有些辛苦,但苦中也有乐。 而且,通过这次课程设计对技术有了更进一步的熟悉,VHDL 语言和语言等其他语言还是有很大的区别。VH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论