Leebin出租车计费器设计1_出租车计费器设计

2020-02-28 其他范文 下载本文

Leebin出租车计费器设计1由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“出租车计费器设计”。

基于SOPC出租车计费器课程设计

一、主要设计条件

1.提供EDA实验室;

2.提供EL或SOPC实验箱和CPLD芯片;3.提供ALTERA公司的QUARTUSII7.2设计软件。1.说明书;

2.设计总体思路,基本原理和框图(顶层电路图); 3.单元电路设计(各次级模块电路图); 4.设计仿真; 5.编程下载;

二、设计内容与设计要求

CPLD为复杂可编程逻辑器件,通过EDA技术对其进行编程,可将一个较复杂的数字系统集成于一个芯片中,制成专用集成电路芯片,并可随时在系统修改其逻辑功能。有关知识可参见相关教材或参考书。

一)设计内容

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

(2)现场模拟功能:能模拟汽车起动、停止、暂停以及加速等状态。(3)按计动态扫描电路,将车费和路程显示出来,各有两位小数。

二)设计要求:

1、设计思路清晰,给出整体设计框图;

2、在QUARTUSII设计各单元电路,完成其功能仿真和编译并生成低层模块;

3、在QUARTUSII中完成顶层设计并编译通过;

4、在QUARTUSII中完成设计下载并调试电路;

5、写出设计报告;

三、设计背景与发展

(1)设计背景

二十世纪后半期,随着集成电路和计算机技术的飞速发展,数字系统也得到了很大的发展。其实现方法经历了由部分元件到整体元件的过程。同时,为了提高系统的可靠性与通用性,微处理器和专业集成电路(ASTC)逐渐取代了通用全硬件LSI电路,而ASIC以其体积小,重量轻,功耗低,速度快,成本低,保密性好而脱颖而出。目前,大量的可编程逻辑器件(PLD),尤其是现场可编程逻辑器件(FPLD)被大量应用在ASIC的制作中。

QUARTUSII7.2软件设计环境的灵活性和高效性为出租车计费器的设计带来了无可比拟的好处。其丰富的界面,让设计人员可以轻松的掌握和使用。

(2)EDA的发展前景

EDA技术(即Electronic Design Automation技术)就是依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Ddscription Langurage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优

化和仿真测试,直至实现既定的电子线路系统功能。它在硬件实现方面融合了大规模集成电路制造技术、IC版图设计、ASIC测试和封装、FPGA(Gield Peogrammable Gate Array)/CPLD(Complex Programmable Logic Device)编程下载和自动测试等技术;在计算机辅助工程方面融合了计算机辅助设计(CAD),计算机辅助制造(CAM),计算机辅助测试(CAT),计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术及长线技术理论等。VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,由IEEE(The Institute of Electrical and Electronics Engineets)进一步发展,并在1987年作为“IEEE标准1076”公布。从此VHDL成为硬件描述语言的业界标准之一。

四、出租车计费系统的实现

一)

系统的总体框图

图1 系统总体框图

二)系统各模块的实现

(1)jifei的实现

模块jifei见下图。输入端口js,start,pause,stop分别为出租车计费器的加速、起动、暂停、停止按键。实现计费功能,计费标准为:按行驶里程计费,起步价为6.50元,并在车行3Km后按2.00元/Km计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。

图2 模块jifei

(2)

x的实现

模块x见下图。该模块把车费和路程转化为4位十进制数,daclk的频率要比clk快得多。

图3 模块x

(3)

display的实现

模块display见下图。经过该八选一模块把车费和路程显示出来。每来一个选通地址,模块就把选到的那一位十进制输入值向后输出,同时在路程的百位和费用的十位显示小数

点。实现译码功能。译码管片的选通信号,对输入脉冲进行计数。

图4 模块display

三)系统仿真

(1)

jifei的仿真结果

输入:clk,js,start,pause,stop;

输出:chefei,luc.图7 jifei仿真结果

(2)

x的仿真结果 输入:ascore,bscore,daclk;

输出:age,ashi,abai,aqian,bge,bshi,bbai,bqian;

图8 x仿真结果

(3)display的仿真结果

输入:a1,a2,a3,a4,b1,b2,b3,b4,CLK;

输出:d,dp,q

图9 display仿真结果

(4)chuzu的仿真结果

输入:clk0,daclk0,tingzhi,qidong,jiasu,zanting;

输出:d0,dq0,q0.图12 chuzu仿真结果

五、设计心得

这次课程设计是出租车计费器,开始拿到课题时候相当兴奋!觉得大学四年的理论课程与生活中的实际密切结合了!

首先,我查阅了相关书籍。认识到Quartus Ⅱ包括模块化的编译器。编译器包括的功能模块有分析/综合器(Analysis & Synthesis)、适配器(Fitter)、装配器(Aembler)、时序分析器(TimingAnalyzer)、设计辅助模块(Design Aistant)、EDA网表文件生成器(EDA Netlist Writer)、编辑数据接口(Compiler Database Interface)等。可以通过选择Start Compilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择Compiler Tool,在Compiler Tool窗口中运行该模块来启动编译器模块。

然后,在接到任务后,我便开始研究程序,希望通过自己的努力,能对这个课题和程序有自己的认识。但是前期的学习得不够扎实,让我在阅读程序时频频的遇到问题。经过老师的讲解,能对程序的各模块进行修改。然而,我还是遇到了很多棘手的问题,比如说,程序不理解,软件运用不熟练,再比如说,应用模块不熟悉,等等。真正领略到艰苦奋斗的真正含义,我才意识到学好基础的重要性。我想说,设计确实有些辛苦,但苦中也有乐。

而且,通过这次课程设计对EDA技术有了更进一步的熟悉,VHDL 语言和C语言等其他语言还是有很大的区别。VHDL是EDA技术的重要组成部分,其具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化、结构化设计方面,表现了强大的生命力和应用潜力。其主要的也是最大的优点就在于设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。

其实,在实际操作中发现设计和课本上的知识有很大联系,但又高于课本,一个简单的原理要把它应用以及和其他功能综合起来就有些困难。通过设计也巩固了我们的书本知识以及通过借阅书籍和上网查找资料,也丰富了自己对EDA的了解。

但是,本次设计也存在一些不足,暴露了自己对EDA的掌握还有所欠缺。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.

通过这次设计,本人在多方面都有所提高。同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

不经意间,为期两周的课程设计已经接近尾声。在这次设计中,我学到了在设计这种思维很严密的报告中一定要按照老师给的要求和步骤一步一步的走下去。自己在动手之前一定要先有一个总体的设计,总的框架图,这样在设计中不至于手忙脚乱的或者丢三落四。

同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。在此感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次设计的每个细节和每个数据,都离不开老师您的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。

六、附源程序

************************leebin ************************

module exp14(clk,rst,motor,display,seg);input clk,rst,motor;output [6:0] display;output [2:0] seg;reg [2:0] seg;reg [7:0] display,decoder;integer count;integer

d1,d10,d100,d1k,m1,m10,m100;integer tmp;integer charge;

/*****distance count & charge compute*****************/ always @(negedge motor)begin

if(rst == 0)

begin

d1 = 0;

d10 = 0;

d100 = 0;

d1k = 0;

m1 = 0;

m10 = 0;

m100 = 0;

count = 0;

charge = 0;

end

else

begin

if(d1 == 9)

begin

if(d10 == 9)

begin

if(d100 ==9)

begin

if(d1k==9)begin d1k = 0;d100 = 0;d10 = 0;d1 = 0;end

else begin d1k = d1k +1;d100 = 0;d10 = 0;d1 = 0;end

end

else begin d100 = d100+1;d10 = 0;d1 = 0;end

end

else begin d10 = d10 +1;d1 = 0;end

end

else d1= d1 +1;

if(d1k==0)

begin m10 = 3;m1 = 0;m100 = 0;end

else

begin

charge = m1;

m1 = d100;

if((charge == 9)&&(m1 == 0))

begin

if(m10 == 9)begin m10 = 0;if(m10 == 9)m100 = 0;else m100 = m100 +1;end

else m10 =m10 + 1;

end

end

end

end /*always @(count)begin

charge = 3+d100*100+d10*10+d1;

m100 = charge / 100;

m10 =(charge-m100*100)/10;

m1 = charge-m100*100m10*10;

case(seg)

0:tmp = d1k;

1:tmp = d100;

2:tmp = d10;

3:tmp = d1;

4:tmp = 0;

5:tmp = m100;

6:tmp = m10;

7:tmp = m1;

endcase

seg = seg +1;

end

if(motor ==0)begin

count = count +1;

if(count >1000)

d1k = count /1000;

if(count>100)

d100 =(count-1000*d1k)/100;

if(count>10)

d10 =(count-1000*d1kd100*100-d10*10;

end

if(rst == 0)

begin

d1 = 0;

d10 = 0;

d100 = 0;

d1k = 0;

m1 = 0;

m10 = 0;

m100 = 0;

count = 0;

charge = 0;

end

end*/

always @(posedge clk)begin

//if(clk)

// begin

/*if((d1k ==0)&&(d100==0)&&(d10 ==0)&&(d1==0))

begin m1 = 3;m10 = 0;m100 = 0;charge = 3;end*/

/*case(seg+1)

0:tmp = d1k;

1:tmp = d100;

2:tmp = d10;

3:tmp = d1;

4:tmp = 10;

5:tmp = m100;

6:tmp = m10;

7:tmp = m1;

endcase*/

seg = seg +1;//end

end

/************drive the led group*************************/ always @(seg)

begin

case(seg)

0:tmp = d1k;

1:tmp = d100;

2:tmp = d10;

3:tmp = d1;

4:tmp = 10;

5:tmp = m100;

6:tmp = m10;

7:tmp = m1;

endcase

case(tmp)

0:display= 8'b00111111;

1:display=8'b00000110;

2:display=8'b01011011;

3:display=8'b01001111;

4:display=8'b01100110;

5:display=8'b01101101;

6:display=8'b01111101;

7:display=8'b00000111;

8:display=8'b01111111;

9:display=8'b01101111;

10: display=8'b01000000;

default : display = 0;

endcase

if(seg==6)

display = display+128;

end endmodule

七、系统调试

系统调试是将安装测试成功的各单元连接起来,加上输入信号进行调试,发现

问题则先对故障进行定位,找出问题所在的单元电路。一般采用故障现象估测法(根据故障情况估计问题所在位置)、对分法(将故障大致所在部分的电路对分成两部分,逐一查找)、对比法(将类型相同的电路部分进行对比或对换位置)等。

系统测试一般分静态测试和动态测试。静态测试时,在各输入端加入不同电平值,加高电平(一般接1千欧以上电阻到电源)、低电平(一般接地)后,用数字万用表测量电路各主要点的电位,分析是否满足设计要求。动态测试时,在各输入端接入规定的脉冲信号,用示波器观察各点的波形,分析它们之间的逻辑关系和延时。

除了调试电路的正常工作状态外,另外特别要注意调试初始状态、系统清零、预置等功能,检查相应的开关、按键、拨盘是否可靠,手感是否正常。

参考文献

1.康华光主编.电子技术基础(数字部分),高等教育出版社。2.阎石主编.电子技术基础(数字部分),清华大学出版社。3.陈大钦主编,电子技术基础实验,高等教育出版社。

4.彭介华主编,电子技术课程设计指导,高等教育出版社。5.张

原编著,可编程逻辑器件设计及应用,机械工业出版社。6.荀殿栋,徐志军编著,数字电路设计实用手册,电子工业出版社。7.QUARTUSII入门

8.刘洪喜,陆颖编著.VHDL电路设计实用教程

清华大学出版社

《Leebin出租车计费器设计1.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
Leebin出租车计费器设计1
点击下载文档
相关专题 出租车计费器设计 设计 出租车 计费器 出租车计费器设计 设计 出租车 计费器
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文