毕业设计(论文)基于VHDL的计程车计价器设计

上传人:仙*** 文档编号:28945307 上传时间:2021-09-21 格式:DOC 页数:33 大小:515.53KB
返回 下载 相关 举报
毕业设计(论文)基于VHDL的计程车计价器设计_第1页
第1页 / 共33页
毕业设计(论文)基于VHDL的计程车计价器设计_第2页
第2页 / 共33页
毕业设计(论文)基于VHDL的计程车计价器设计_第3页
第3页 / 共33页
点击查看更多>>
资源描述
重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- I -目目 录录摘摘 要要 .IABSTRACT.II目目 录录.III前前 言言.1第一章第一章 概述概述.2第一节第一节 设计背景设计背景.2第二节第二节 EDA 发展概况发展概况 .3一、一、EDA 系统框架结构系统框架结构 .6二、系统级设计二、系统级设计.7第三节第三节 EDA 技术基本特征技术基本特征 .7一、一、 “自顶向下自顶向下”的设计方法的设计方法.8二、二、ASIC 设计设计 .8三、硬件描述语言三、硬件描述语言.9四、四、VHDL 的优点的优点 .9第四节第四节 本章小结本章小结.10第二章第二章 出租车计费系统的设计出租车计费系统的设计.11第一节第一节 出租车计费目标出租车计费目标.11第二节第二节 基本设计思想基本设计思想.11第三节第三节 设计方案比较设计方案比较.12第四节第四节 本章小结本章小结.14第三章第三章 基于基于 VHDL 的出租车计费系统的实现的出租车计费系统的实现 .15第第一一节节 VHDL 相相关关介介绍绍 .15一一、FPGA 简简介介 .15二二、部部分分模模块块设设计计 .16第二节第二节 系统框图及各功能模块的实现及主程序系统框图及各功能模块的实现及主程序.17一、程序流程图一、程序流程图.17二、系统总体框图二、系统总体框图.18三、计费模块的实现三、计费模块的实现.19四、十进制转换模块的实现四、十进制转换模块的实现.20五、车费路程显示模块的实现五、车费路程显示模块的实现.21六、八进制选择模块实现六、八进制选择模块实现.22七、显示译码模块实现七、显示译码模块实现.23第三节第三节 本章小结本章小结.24第四章第四章 系统仿真系统仿真.24第一节第一节 软件软件 Altera Max+plus 介绍介绍.24一、软件功能简介一、软件功能简介.24三、三、MAX+plus II 可编程设计流程可编程设计流程.25四、项目编译(设计处理)四、项目编译(设计处理).26五、仿真和定时分析(项目校验)五、仿真和定时分析(项目校验).27重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- II -六、器件编程下载六、器件编程下载.27七、可编程逻辑常用设计输入法介绍七、可编程逻辑常用设计输入法介绍.28第二节第二节 模块仿真结果模块仿真结果.28一、十进制转换模块的仿真结果一、十进制转换模块的仿真结果.28二、计费模块的仿真结果二、计费模块的仿真结果.29三、车费路程显示模块的仿真结果三、车费路程显示模块的仿真结果.29四、八进制选择模块结果验证四、八进制选择模块结果验证.29五、显示译码模块结果验证五、显示译码模块结果验证.30第三节第三节 本章小结本章小结.30第五章第五章 结论结论.31致致 谢谢.32参考文献参考文献.33附附 录录.34一、英文原文一、英文原文.34二、中文翻译二、中文翻译.40三、源程序代码三、源程序代码.45计费程序模块程序计费程序模块程序.45十进制转换模块程序十进制转换模块程序.47车费路程显示模块程序车费路程显示模块程序.49八进制选择模块程序八进制选择模块程序.50显示译码模块程序显示译码模块程序.50重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 1 -第一节第一节 出租车计费出租车计费目标目标本文中出租车的计费工作原理一般分成 3 个阶段:车起步开始计费。首先显示起步价(本次设计起步费为 7.00 元),车在行驶 3 km 以内,只收起步价 7.00 元。车行驶超过 3 km 后,按每公里 2.2 元计费(在 7.00 元基础上每行驶 1 km 车费加 2.2 元) ,车费依次累加。行驶路程达到或超过 9 km 后(车费达到 20 元),每公里加收 50%的车费,车费变成按每公里 3.3 元开始计费。车暂时停止(行驶中遇红灯或中途暂时停车)不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始。第二节第二节 基本设计思想基本设计思想一、根据出租车计费原理,将出租车计费部分由 5 个计数器来完成分别为 counterA,counterB,counterC,counterD,counterE。计数器 A 完成车费百位计数。计数器 B 完成车费十位和个位计数器 C 完成车费角和分。计数器 D 完成计数到 30(完成车费的起步价) 。计数器 E 完成模拟实现车行驶 100m 的功能。二、行驶过程中车费附加 50%的功能:由比较器实现。三、车费的显示:由动态扫描电路来完成。用专用模块来实现,完成数据的输入即动态数据的显示。四、通过分析可以设计出系统的顶层框图如图 2.1 所示:重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 2 -显示输出基本速率起/停开关车速摇杆车速控制模块里程动态显示器计费动态显示器 图 2.1 系统的顶层框图第三章第三章 基于基于 VHDL 的出租车计费系统的的出租车计费系统的实现实现二二、部部分分模模块块设设计计 FPGA 部分可划分成两个模块,其中正弦波发生器模块又可细分成几个小模块。 锁存器设计 锁存器用来将单片机送来的频率数据锁存稳定在FPGA 中,可以用片内的锁存器资源(或用触发器)来构成。 运算器设计 运算器是用来将频率数据转换成正弦波点与点之间的定时数据。该运算器实际上最终可转换成一除法器。该除法器描述如下: VECTOR(WIDTH R1 DOWNTO 0); END COMPONENT; 上述描述实际上是调用了 Altera 公司的参数化模块库( LPM)中的一个元件。元件描述后,只要在程序中用Generic map 和 port map 语句映射该元件即可。所要注意的是,上述口信号remainder 是 numerator 和denominator 模运算的结果,所以应将 remainder 与 denominator2 相比较,实际结果应在比较的基础上决定加1 还是不加 1。 重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 3 -定时器设计 定时器根据运算器传来的定时数据定时。它可以通过对基准时钟计数来实现,当定时时间一到,就触发波形的输出。 设计中采用了两个计数模块来同时计数,一个模块计数时钟的上边沿,而另一模块则计数时钟的下边沿。这样相当于使系统时钟频率提高了一倍,充分利用了系统资源。 波形输出 波形输出是当定时器满足定时要求触发后就输出此时的正弦值,多个点的触发输出就形成了一个正弦波。 为节省芯片资源,这部分求某时正弦值的功能不采用构造运算器来算出正弦值,而是利用查表结构。象Xilinx 公司 FPGA 芯片则可以利用 CLB 块来配置 RAM 或直接利用 Logiblox 来生成。还有象 Altera 公司的 Flex10k 系列就用查找表结构( LUT)来构建片内 ROM 或 RAM。在工程文件中创建 RAM 或 ROM 块以后,可以通过将各时刻的正弦值(以ASCII字符表示)写进 MIF 文件(初始化文件)中,从而存储在RAM 或 ROM块中。在定时器触发后生成该时的地址,通过查询该RAM 或 ROM 块就可输出该时得正弦值。 第二节第二节 系统框图及各功能模块的实现系统框图及各功能模块的实现及主程序及主程序一、程序流程图一、程序流程图重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 4 -车开始启动车费、里程清零车跑完一次后里程不计数里程显示车费显示里程计数计费器计数YESYESYESNONoO车启动图 3.1 程序流程图二、系统总体框图二、系统总体框图下图所示为系统的总体框图,该系统主要由负责汽车启动,停止,暂停,加速等功能的计费模块,负责把车费和路程转化为 4 位 10 进制数的转换模块,负责显示车费和路程的显示模块,以及复位模块和显示译码模块等 5 个模块组成。重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 5 -图 3.2 系统总体框图三、计费模块的实现三、计费模块的实现计费模块如图 3.2 所示,输入端口 START、STOP、PAUSE、JS 分别为汽车起动、停止、暂停、加速按键。LUC、CHEFEI 分别表示汽车行驶的路程及相应的车费。图 3.2重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 6 -if(clkevent and clk=1)thenif(stop=0)thenchf:=0;num:=0;b:=1;aa:=0;lc:=0;elsif(start=0)thenb:=0;chf:=700;lc:=0;elsif(start=1 and js=1and pause=1)thenif(b=0)thennum:=num+1;end if;四、十进制转换模块的实现四、十进制转换模块的实现如图 3.3 所示,该模块把车费和路程转化为 4 位十进制数,daclk 的频率要比 clk 快得多图 3.3if(comb1a=9 and comb1b=9 and comb1c=9)then重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 7 -comb1a:=0000;comb1b:=0000;comb1c:=0000;comb1d:=comb1d+1;comb1:=comb1+1;elsif(comb1a=9 and comb1b=9)thencomb1a:=0000;comb1b:=0000;comb1:=comb1+1;comb1c:=comb1c+1;end if;else五、车费路程显示模块的实现五、车费路程显示模块的实现如图 3.5 所示,通过该八进制模块,车费和路程将被显示出来图 3.5 车费路程显示模块begin comb:=c; case comb is when”000”=d=a1;重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 8 - dpd=a2; dpd=a3; dpdnull;end case;end process;end rtl;六、八进制选择模块实现六、八进制选择模块实现模块如图 3.6 所示,该模块主要负责对不同时刻的车费路程的数值显示进行选择。 图 3.6 八进制选择模块begin if(clkevent and clk=1)thenif(b=”111”)thenb:=”000”;elseb:=b+1;end if;end if;aqqqqqqqqqq=100)thena:=1;aa:=0;elsea:=0;end if;if(lc300)thennull;elsif(chf=2000 and a=1)then chf:=chf+330; end if;end if;chefei=chf;luc=lc;end process;end rtl;十进制转换模块程序十进制转换模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity x is port(daclk:in std_logic;ascore,bscore:in integer range 0 to 8000;age,ashi,abai,aqian,bge,bshi,bbai,bqian:out std_logic_vector(3 downto 0);end x ;architecture rtl of x isbegin process(daclk,ascore) variable comb1:integer range 0 to 8000;variable comb1a,comb1b,comb1c,comb1d:std_logic_vector(3 downto 0);begin if(daclkevent and daclk=1)then if(comb1ascore)thenif(comb1a=9 and comb1b=9 and comb1c=9)thencomb1a:=0000;comb1b:=0000;comb1c:=0000;comb1d:=comb1d+1;重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 28 -comb1:=comb1+1;elsif(comb1a=9 and comb1b=9)thencomb1a:=0000;comb1b:=0000;comb1:=comb1+1;comb1c:=comb1c+1;elsif(comb1a=9)thencomb1a:=0000;comb1b:= comb1b+1;comb1:= comb1+1;elsecomb1a:= comb1a+1;comb1:= comb1+1;end if;elseashi= comb1b;age= comb1a;abai= comb1c;aqian= comb1d;comb1:=0;comb1a:=0000;comb1b:=0000;comb1c:=0000;comb1d:=0000;end if;end if;end process;process(daclk,bscore)variable comb2:integer range 0 to 8000;variable comb2a,comb2b, comb2c,comb2d:std_logic_vector(3 downto 0);beginif(daclkevent and daclk=1)thenif(comb2bscore)thenif(comb2a=9 and comb2b=9 and comb2c=9)thencomb2a:=0000;comb2b:=0000;comb2c:=0000;comb2d:=comb2d+1;comb2:=comb2+1;elsif(comb2a=9 and comb2b=9)thencomb2a:=0000;comb2b:=0000;comb2:= comb2+1;重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 29 -comb2c:= comb2c+1;elsif(comb2a=9)thencomb2a:=0000;comb2b:=comb2b+1;comb2:=comb2+1; elsecomb2a:= comb2a+1;comb2:= comb2+1;end if;elsebshi=comb2b;bge=comb2a;bbai=comb2c;bqiand=a1;重庆邮电大学本科毕业设计(论文)重庆邮电大学本科毕业设计(论文)- 30 - dpd=a2; dpd=a3; dpd=a4;dpd=b1;dpd=b2;dpd=b3;dpd=b4;dpnull;end case;end process;end rtl;八进制选择模块程序八进制选择模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity se isport(clk:in std_logic;a:out std_logic_vector(2 downto 0);end se;architecture rtl of se isbeginprocess(clk)variable b:std_logic_vector(2 downto 0);begin if(clkevent and clk=1)thenif(b=111)thenb:=000;elseb:=b+1;end if;end if;aqqqqqqqqqq=1101111;end case;end process;end rtl;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!