基于cpld的出租车计费系统设计(编辑修改稿)内容摘要:
是否开始记录时间。 当 sp=0 时,开始记录时间。 当时间达到足够长时产生 timecount 脉冲,并重新计时。 一个 timecount 脉冲相当于等待的时间达到了时间计费的长度。 计费模块:由两个进程组成。 其中,一个进程根据条件对 enable 和 price 赋值,当记录的距离达到 3 公里后 enable 变为 1,开始进行每公里收费,当总费用大于 20元后,则单价 price 由原来的 元每公里变成 元每公里;第二个进程在每个 时钟周期判断 timeout 和 clkout 的值。 当其为 1时,则在总费用上加上相应的费用。 出租车计费器主要模块设计 速度模块 速度模块首先根据 start 信号判断是否开始计费,然后根据输入的速度档位 sp 的判断,确定行驶 100m 所需要的时钟数,每前进 100m,输出一个 clkout 信号。 同时由t 对 clk 进行计数,当 t 等于 kinside 时,把 clkout 信号置 1, t 清 0。 VHDL 语言程序见附录,模块原件符号如下。 图 32 速度模块框图 计程模块 此模块主要用于记 录行进的距离,其模块框图如图 33 所示。 通过对 clkout 信号的计数,可以计算行驶的距离 kmcount。 一个 clkout 脉冲相当于行进 100m 所以只要记录 clkout 的脉冲数目即可确定共行进的距离。 Kmcount1 为十分位, kmcount2 为个位,kmcount3 为十位,分别为十进制数。 5 图 33 计程模块框图 计时模块 速度模块主要用于计时收费,记录计程车速度为 0的时间(如等待红灯),其模块框图如图 34所示。 通过对 sp 信号的判断,当 sp=0,开始记录时间。 当时间达到 足够长时,产生 timecount 脉冲,并重新计时。 图 34 计时模块框图 计费模块 计费模块如图 36所示,可分为 kmmoney1 和 kmmoney2 两个进程。 Kmmoney1 用于产生 enable 和 price 信号。 当记录距离达到 3km 后, enable 信号为1,开始进行每公里收费。 当总费用大于 40 元后,单价 price 由原来的 2元变成 4元,用作计时收费。 通过对 sp 信号的判断,当 sp=0,开始记录时间。 当时间达到足够长时,产生 timecount 脉冲,并重新计时。 Kmmoney2 用于判断 timecount 和 clkout 的值,当其为 1 时,总费用加 1。 最终输出为总费用。 6 图 35 计费模块框图 整体电路图 整体电路如图 41。 硬件电路由 CycloneⅡ电路板组成, clk 为时钟周期信号,由试验箱产生, start/stop 是启动停止按键电路, reset 为自动清零电路。 电源又 ADDC开关电源供电。 图 41 整体门电路 电源电路 电源采用了 ADDC开关电源,输入 115VAC 到 230VAC,输出 +5V(4A)。 使用开关电源的好处就是比较节省能源,它的转换效率很高,可达 85%以上,稳压范围宽,除此之外,还具有稳压精度高、不使用电源变压器等特点。 启动 /停止按键电路 如图 42所示,采用双刀双路开关,一路开关用于清零部分,由于显示部分特殊要求,即计费停止后屏幕上仍然要保持计费的所有信息,只有当下次计费启动时才清零从新开始计费。 另外两路开关,其中一路用于启动指示和启动 /停止输出信号给 CPLD 芯片的 I/O 口。 当按下键后,清零部分和启动计费部分同时进行,但清零只是瞬间的,计费指示灯两起。 再次按下键后,开关换到另外的两路,空车指示灯亮起。 7 图 42 启动 /停止按键电路 自动清零部分 由于显示部分的特殊要求,即计费停止后屏幕上仍然要保持计费的所有信息,只有当下次计费启动时才清零从新开始计费。 VHDL 语言的特殊性,不能在一个结构中用两个不同的动作使其赋值。 所以必须要有一个瞬间清零的信号,当 CPLD 的清零 I/O 端口为“ 1”时就自动清零。 使用电容的充放电功能来实现,按键断开时清零输出端为接地,按键闭合时电容充电清零端为高电平,充完电后清零端输出又为低电平,当按键断开后,通过一个 2k欧姆的 电阻放电,为下次充电做好准备。 如图 43所示。 图 43 自动清零电路 QuartusⅡ软件介绍 QuartusⅡ是 Altera 公司自行设计的一个完全集成化、易学易用的可编程逻辑设计环境,它提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括: 8 可利用原理图、结构框图、 VerilogHDL、 AHDL 和 VHDL 完成电路描述,并将其保存为设计实体文件; 芯片 (电路 )平面布局连线编辑; LogicLock 增量设计方法,用户可建立并优化系统,然后添加对原 始系统的性能影响较小或无影响的后续模块; 功能强大的逻辑综合工具; 完备的电路功能仿真与时序逻辑仿真工具; 定时 /时序分析与关键路径延时分析; 可使用 SignalTapⅡ逻辑分析工具进行嵌入式的逻辑分析; 支持软件源文件的添加和创建,并将它们连接起来生成编程文件; 使用组合编译方法可一次完成整体设计流程; 自动定位编译错误; 高效的期间编程与验证工具; 可读入标准的 EDIF 网表文件、 VHDL 网表文件、和 Verilog 网表文件; 能生成第三方 EDA 软件使用的 VHDL 网表文件和 Verilog 网表文件; 仿 真结果 整体仿真 对电路整体进行仿真,得出如下仿真波形图 51。 图中,当复位信号 reset 为高电平时,系统所有寄存器、计数器都清零;当开始计费信号 start 信号有效时,计费器开始计费,根据出租车行驶的速度 sp[2..0]的取值计算所用花费和行驶里程;当停止计费信号有效时,计费器停止工作。 图 51 出租车计费器仿真波形图 速度模块仿真 9 速度模块的仿真波形图如图 52所示。 该模块根据出租车所处的运行状态和不同的形式速度,对相应数目的时钟周期进行计数,车每行驶 100m 时输出信号 clkout 输出高电平。 图 52 速度模块仿真波形图 计程模块仿真 计程模块的仿真波形如图 53 所示。 图中,当 reset 信号有效时,系统复位清零;否则,对输入信号 clkout 进行十进制计数。 图 53 计程模块仿真波形图 计时模块仿真 计时模块的仿真波形图如图 54所示。 预设 1000 个时钟周期为 20s,对时钟周期进行计数,每计 1000 个时钟周期输出高电平,指示计时 20 秒。 图 54 计时模块仿真波形图 10 计费模块仿真 计费模块的仿真波形图如图 55所 示。 当 reset 信号有效时,系统复位清零;否则,当计时计费信号 timecount 和计程计费信号 clkout 为高电平时,按照一定计费规则进行计费。 图 55 计费模块仿真功能图 综上所述,本设计的出租车计费器完全符合系统设计的要求,实现了出租车计费器所需的各项基本功能。 设计测试 利用 QuartusⅡ 对所设计出租车计费器的 VHDL 代码进行了仿真,并在 CycloneⅡ型可编程数字实现系统上实现了该控制。 该数字实现系统分成两部分,一是 FPGA 的下载板,它主要包括所使用的芯片、 RS232 接头 、接脚转换插槽等;另一部分是 I/O实验板,它主要包括显示、脉冲输出等。 出租车计费器的各部分利用数字实验系统所附的 RS232 连接线将计算机中的 VHDL 代码设计的内容烧录到该实验系统的EPC2C35F672C8 芯片中进行测试,测试结果基本实现了 总费用 =起费用 +(里程 3km)里程单价 +等待时间等待单价的出租车计费模式。 本文论述了基于 CPLD 的出租车计费器设计,分别介绍了整个系统和各个模块的设计,使用 CPLD 芯片、 VHDL 硬件描述语言作为设计手段,利用自顶向下的模块化设计思路,通过在 QuartusⅡ软件下进行的模拟仿真,并进行相应的硬件下载调试,证明所设计的系统完成了出租车计费器的功能,各项技术指标符合预定标准,具有一定实用性。 由于本人在经验水平上的欠缺,设计中可能存在很多不足,请各位老师予以指证。 近年来, CPLD 在通信、控制、数据计算等领域得到了广泛的应用,利用 CPLD 来设计电子产品可减少电子系统的开发风险和开发成本; 缩短了上市时间;通过在系统编程、远程在线重构等技术降低维护升级成本。 并且, CPLD 器件的成本越来越低 ,这些都说明可编程器件已成为现在及未来很长一段时间的主流,用它来实现的出租车计费器省去很多外围电路,稳定,简单有效,将来必然可以设计出更多更强大的功能,提高产品竞争 11 力。 未来基于 CPLD 平台的出租车计费器将会有更低的成本、更小的体积、更安全、更精确和更多功能。 致谢 本次设计从选题到最后完成,都得到了指导老师邵利敏老师的悉心指导。 邵老师渊博的知识、严谨的治学态度和诲人不倦的精神永远是我学习的榜样。 在系统设计过程 中,我也遇到了较多的困难,我十分感谢我的。基于cpld的出租车计费系统设计(编辑修改稿)
相关推荐
summary. System testing is mainly used to test method and the deductive method, and in individual months of hard work and instructs under teacher39。 s help, through debugging, the success of
202008281405\\SQLEXPRESS。 Initial Catalog=MageInfom。 Integrated Security=True。 SqlConnection conn = new SqlConnection(connstr)。 ()。 int flag = 0。 //标志位 用来表示用户名是否存在 如果用户名存在,则查找密码是否正确 SqlCommand m =
per second),用来描述数据的传送速率,是衡量串行通信数据传输速度快慢的重要指标。 国际上对波特率规定了一个标准系列: 110bps、 300bps、 600bps、 1200bps、 1800bps、2400bps、 4800bps、 9600bps、 、 、 、 56Kbps。 例如:9600bps,是指每秒传送 数据 9600 位,其中包含字符的数位和其它必须的数位。
1 0 1: 2 0 21 0 1x f ( 27)1 2 1: 0 0 01 2 1y f ( 28) Sobel 算子的优缺点:该算子的优点是,计算较快,且较为简单;缺点:该算子只采用了水平和垂直两个方向的模板,对于一些图像结构较为复杂和纹理较多的图像,其检测效果较差,不能精准的检测出所有边缘。 Prewitt 边缘检测 2,23
har(6,1,timestr[4])。 LCD_write_mand(0xc0+6)。 13 while(!key3)。 } } break。 case 3: if(0 == key2) //时加 1 的设置 { Delay1Ms(5)。 if(0 == key2) { hour++。 while(!key2)。 if(24 == hour) { hour = 0。 } timestr[1]
结构( Client/Server,客户端 /服务器模式),它是一种软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理的分配到 Client 端和 Server 端来实现,降低了系统 的通信开销。 C/S 结构的优点是能充分发挥客户端 PC 的处理能力,很多工作可以在客户端处理后在提交给服务器,对应的优点就是客户端响应速度快。 毕节学院本科毕业论文(设计) 9