基于cpldfpga的出租车计费器内容摘要:
仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真) (3) 逻辑综合: 将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。 逻辑综合软件 会生成 .edf 或 .edif 的 EDA 工业标准文件。 (4) 布局布线: 将 .edf 文件调入 PLD 厂家提供的软件中进行布线,即把设计好的逻辑安放 PLD/FPGA内。 (5) 时序仿真: 需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。 (也叫后仿真) 通常以上过程可以都在 PLD/FPGA 厂家提供的开发工具。 (6) 器件编程 合肥师范学院 2020届本科生毕业论文(设计) 5 二 系统的设计流程 设计要求 本文拟设计一个出租车计费系统。 其功能要求如下: 计费标准为起步 3 元,车行 3公里后为 /公里,当计费达到 20 元后,每公里加收 50%的车费,车停止每 3分钟增加 元。 车费显示出来,有一位小数。 设计规划 设计的关键在于计价 block 的设计。 计价 block 可用组合逻辑去构建,也可用时序逻辑去构建。 组合逻辑:公里和时间作为输入,价格为输出。 由于是跳档方式计价,公里与时间的组合与价格是多对一的关系,实际上本质是一个二元函数,通过译码器实现比较困难。 时序逻辑:让里程的档与档之间变换的时刻产生脉冲,让等待时间每满 3分钟产生一个脉冲,计价 block 的输入端为脉冲,每来一个脉冲,输出价格状态变一次,可实现设计。 根据上面的分析,选择 时序方式实现。 那么,工程可分为三部分:里程,等待时间,计价。 系统的原理图 图 23 系统框图 系统接收到 reset 信号后,总费用变为 3元,同时其他计数器、寄存器等全部清零。 系统接收到 start 信号后,首先把部分寄存器赋值,总费用不变,单价 price 寄存器通过对总费用的判断后赋为 3元。 其他寄存器和计数器等继续保持为 0。 速度模块:通过对速度信号 sp 的判断,决定变量 kinside 的值。 Kinside 即是行进100m 所需要的时钟周期数,然后 每行进 100m,则产生一个脉冲 clkout。 Speed模块 Time模块 Kilometers 模块 Kmmoney 模块 总费用 总里程 Reset Sp Start 合肥师范学院 2020届本科生毕业论文(设计) 6 计程模块:由于一个 clkout 信号代表行进 100m,故通过对 clkout 计数,可以获得共行进的距离 kmcount。 计时模块:在汽车启动后,当遇到顾客等人或红灯时,出租车采用计时收费的方式。 通过对速度信号 sp 的判断决定是否开始记录时间。 当 sp=0 时,开始记录时间。 当时间达到足够长时产生 timecount 脉冲,并重新计时。 一个 timecount 脉冲相当于等待的时间达到了时间计费的长度。 计费模块 : 由两个进程组成。 其中,一个进程根据条件对 enable 和 price 赋值 ,当记录的距离达到 3公里后 enable 变为 1,开始进行每公里收费,当总费用大于 20元后,则单价 price 由原来的 ;第二个进程在每个时钟周期判断timeout 和 clkout 的值。 当其为 1时,则在总费用上加上相应的费用。 合肥师范学院 2020届本科生毕业论文(设计) 7 三 系统模块设计 根据以上分析,本系统主要包含以下模块: 速度模块 速度模块首先根据 start信号判断是否开始计费,然后根据输入的速度档位 sp的判断,确定行驶 100m 所需要的时钟数,每前进 100m,输出一个 clkout 信号。 同时由 t对 clk进行计 数,当 t等于 kinside 时,把 clkout 信号置 1, t 清 0。 VHDL 语言程序见附录,模块原件符号如下。 图 31 速度模块 计程模块 此模块主要用于记录行进的距离。 通过对 clkout 信号的计数,可以计算行驶的距离kmcount。 一个 clkout 脉冲相当于行进 100m 所以只要记录 clkout 的脉冲数目即可确定共行进的距离。 Kmcount1 为十分位, kmcount2 为个位, kmcount3 为十位,分别为十进制数。 VHDL 语言程序见附录,模块原件符号如下。 图 32 计程模块 计时模块 该 模块主要用于计时收费,记录计程车速度为 0的时间(如等待红灯)。 通过对 sp信号的判断,当 sp=0,开始记录时间。 当时间达到足够长时,产生 timecount 脉冲,并重新计时。 VHDL 语言程序见附录,模块原件符号如下。 合肥师范学院 2020届本科生毕业论文(设计) 8 图 33 计时 模块 计费模块 计费模块可分为 kmmoney1 和 kmmoney2 两个进程。 计费模块 Kmmoney1 用于产生 enable 和 price 信号。 当记录距离达到 3km 后, enable信号为 1,开始进行每公里收费。 当总费用大于 20 元后,单价 price 由原来的 元变成 元,用作计时收费。 通过对 sp 信号的判断,当 sp=0,开始记录时间。 当时间达到足够长时,产生 timecount 脉冲,并重新计时。 计费模块 Kmmoney2 用于判断 timecount 和 clkout 的值,当其为 1时,总费用加 1。 最终输出为总费用。 VHDL 语言程序见附录,模块原件符号如下。 图 34 计费模块 合肥师范学院 2020届本科生毕业论文(设计) 9 四 系统仿真 将各个功能模块的 VHDL 语言程序输入到 Quartus Ⅱ进行仿真,得到的仿真波形图如下: 速度模块仿真 速度模块的仿真波形图如图 41所示。 该模块根据出租车所 处的运行状态和不同的形式速度,对相应数目的时钟周期进行计数,车每行驶 100m 时输出信号 clkout 输出高电平。 图 41 速度模块仿真波形图 计程模块仿真 计程模块的仿真波形如图 42所示。 图中,当 reset 信号有效时,系统复位清零;否则,对输入信号 clkout 进行十进制计数。 图 42 计程模块仿真波形图 合肥师范学院 2020届本科生毕业论文(设计) 10 计时模块仿真 计时模块的仿真波形图如图 43所示。 预设 9000 个时钟周期为 180s,对时钟周期进行计数,每计 9000 个时钟周期输出高电平,指示计时 180 秒。 图 43 计时模块仿真波形图 计费模块仿真 计费模块的仿真波形图如图 44所示。 当 reset 信号有效时,系统复位清零;否则,当计时计费信号 timecount 和计程计费信号 clkout 为高电平时,按照一定计费规则进行计费。 图 44 计费模块仿真功能图 合肥师范学院 2020届本科生毕业论文(设计) 11 系统电路及 仿真 系统顶层电路的设计既可以采用原理图的输入法,也可以使用文本( VHDL 语言程序)输入法。 本出租车计费系统的 VHDL 语言程序见附录。 由各个模块电路元件连接而成的系统电路图如图 , clk 为时 钟周期信号, start/stop 是启动停止按键电路, reset 为自动清零电路。 图 45 系统 电路图 在 Quartus Ⅱ 中 对 系统 进行仿真 ,得出如下仿真波形图 46。 由图中可以看出 ,当复位信号 reset 为高电平时,系统所有寄存器、计数器都清零;当开始计费信号 start 信号有效时,计费器开始计费,根据出租车行驶的速度 sp的取值计算所用花费和行驶里程;当停止计费信号有效时,计费器停止工作。 图 46 系统仿真波形图 合肥师范学院 2020届本科生毕业论文(设计) 12 论文总结 毕业论文是学习阶段一次非常难得的理论与实际相结合 的机会,通过这次设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,提高了编程设计的能力。 而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的设计能力得到了锻炼,经验得到了丰富,并且意志品质力,抗压能力及耐力也都得到了不同程度的提升。 这是我们都希望看到的也正是我们进行毕业设计的目的所在。 虽然毕业设计内容繁多,过程繁琐但我的收获却更加丰富。 各种系统的适用条件,各种模块的选用标准,各种设计方案的合理选择,我都是随着设计的不断深入而不断熟悉并学会应用的。 和老 师的沟通交流更使我从其他的角度对 EDA 设计有了新的认识,也对自己提出了新的要求。 提高是有限的但提高也是全面的,正是这一次设计让我积累了无数实际经验,使我的头脑更好的被知识武装了起来,也必然会让我在未来的工作学习中表现出更高的应变能力,更强的沟通力和理解力。 合肥师范学院 2020届本科生毕业论文(设计) 13 参考文献 [1] 冯占岭 .数字电压表及数字多用表检测技术 [M].北京: 中国计量出版社 , 2020, 247. [2] ALTERA 公司 .VDHL 语言 [M].北京 :清华大学出版社 , 1998, 91103. [3] 宋万杰 ,罗丰 ,吴顺君 .CPLD 技术应用及其应用 [M].西安 : 电子 科技。基于cpldfpga的出租车计费器
相关推荐
,只需 设置相应的 I/O 输出口的 高低 电平。 而动态显示 的原理 则 利用了人眼对物体的视觉延迟来达到所有 LED 的同时显示。 实际上,在每一个时刻,只有一组 LED 是处于显示的状态,而其他 LED组均为关闭状态 , 即在每一瞬间只 使某一位显示字符。 在此瞬间 , 段选控制 I/O口输出相应字符段选码 (字型码 ), 而位选则控制 I/O 口在该显示相应字符。 如此基于
*256/5 =》 VIN=5*N/256=*N 实际上 VIN=*N 就是 VIN 模拟量真正意义上对应的数字量,而在 VIN 通过 A/D 转换器后所得到的是 N,若要在数值上等值,还要 在 N 的基础上再乘以 . 例如:若输入的模拟电压为 ,则转换后的数字量为: N=( VINVREF( ) *256/( VREF( +) VREF( )) =( ) *256/(50)=128 即
闸门电路 计数译码器 门控电路 时基信号发生器 预置门控电路 D Q 标准频率信号 被测信号 清零信号 CLKEN CLK CNT1 OUT1 CLR CLKEN CLK CNT2 OUT2 CLR 当方波预置门控信号由低变为高电平时, 经整形后的被测信号上升沿启动 D触发器,由 D 触发器的 R 端同时启动可控计数器 CNT1 和 CNT2 同时计数,当预置门为低电平时
语言 . Cocos2DX 引擎架构 如图 2. 1 所示 : 图 2. 1 Cocos2DX 引擎架构 2. 3 开发工具 游戏在 Windows XP 系统下开发,基于 visual studio C++ 2020 的开发平台,采用了cocos2dx 技术进行开发 . 操作系统: Mac(OX X 10. 10. 3) 程序语言: C++ 开发工具: Xcode,Eclipse,SVN,
.... 49 1 1 绪论 在计算机自动控制系统急速发展的今天,特别是考虑到现场总线已经普片的渗透到自动控制的各个领域中,现场总线技术必将成为自动控制领域主要发展方向之一。 现场总线一直是国际上各大公司激烈竞争的领域,并且某些国外的大公司已经在大力的开拓中国市场,发展我国的现场总线技术已经刻不容缓。 现场总线对自动化技术影响意义深远,当今可以认为现场总线 是提高自动化系统整体水平的基础技术
帧 出错帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,后随的第二个场是出错界定符。 出错帧的组成如图。 数据帧 出错帧 错误标志 帧间空间 或超载帧 错误叠加标志 错误界定符 图 出错帧组成 帧间空间 远程帧 帧间空间 或超载帧 帧起始 仲裁场 控制场 CRC场 ACK场 帧结束 图 远程帧组成 本科生毕业设计(论文) 8 错误标志具有两种形式,一种是活动错误标志( active