基于veriloghdl设计的出租车计价器内容摘要:
要求来产生计费,本设计重点就在计费控制模式模块和计费模块这两大模块的设计,则 根据出租车计费器的工作过程, 其主要原理框图如图 13 所示。 本系统采用分层次、分模块的方式设计,其本系统组成框图如下所示。 其中行驶路程计数模块、等待时间计数模块和计费模块,用来统计路程、等待时间和总费用,控制模块是用来控制计费模块,数码管显示模块用来显示行驶的公里数、等待累计时间和总费用等信息。 . . 本系统采用层次化、模块化的设计方法,设计顺序为自下向上。 首先实现系统框图中的各子模块,然后由顶层模块调用各子模块来完成整个系统。 为了便于在数码管里显示 ,这里的路程、时间和费用计数器均用十六进制表示。 分频模块 将 时钟 信号进行分频 , 分出的频率 供后面 的计程模块和计时模块用,以及后面的数码显示扫描模块都会用到。 计数器分频模块 此模块的功能是对总的时钟进行分频,分出的频率是让计数器用的,因为总的时钟是 50M的。 设计该模块的时候用了一个 32 位的计数器,当计数器计到 25_000000 的时候产生时钟。 在仿真的时候为了 快速的 方便观察 , 设计了一个 5 分频的电路。 在此时 假设车轮每转一圈为2 米, 则转动 100 圈 送一个脉冲, 即是 200 米, 则 在经 5 分频 后 ,每 1Km 送一个脉冲到里程计算模块。 同理,若知道车轮直径,即可算出分频比 来设置合理的分频电路,当下载到实物时还是 用的是 2HZ 的时 钟 图 31 计数器的分频模块 计数器分频模块仿真结果 图 32 计数器的分频模块 功能 仿真 从波形可以看出当 reset 为低电平的时候 clk 为零,当 reset 为高电平的时候 clk 的高. . 电平占了 clk_50M 的 5个周期,低电平也占了 clk_50M 的 5个周期。 数码管分频模块 此模块的功能是对总的时钟进行分频,分出的频率是让数码管用的,当计数器计到 50_000的时候产生时钟。 此模块在整体仿真时,没有用到数码管显示,在此不在 赘述以及仿真波形,在实物下载时必不可少,其模块 如下图: 图 33 数码块 分频模块 计程模块 计程模块 电路 此模块的功能是计算出租车行驶的路程。 在出租车启动并行驶的过程中 (即复位 /启动信号 reset 为 1,行驶 /停止信号 start 为 1),当时钟 clk是上升沿的时候,系统即对路程计数器 distance 的里程计数器进行加计数,当路程超过三公里时,系统将输出标志正脉冲distance_enable。 其模块如下: 图 34 计程模块 . . 计程 模块仿真结果 图 35 计程模块 功能仿真 从波形图可以看出在时钟的控制下,当 reset为高电平且 start为高电平的时候 distance开始计数,当计到大于三的时候输出了 distance_enable 为高电平。 准备对第 4 公里以后的脉冲进行加计费。 计时模块 计时模块 电路 此模块用于计算停车等待的时间。 图中 s 代表秒计时, m 代表分钟数计时。 在出租车行进中,如果车辆停止等待,计数器则在 1Hz 信号 clk 的上升沿进行加计数,每 60 次产生进位脉冲使分钟计数器位进行加计数,当累计等待时间超过 2( 不包括 2 分钟 ) 分钟时,输出标志 time_enable 正脉冲信号。 其模块如下图所示: 图 36 计时模块 计时模块的仿真结果 (包括两分钟)的仿真结果如下所示: 从波形图可以看出在 clk的控制下当 start为低电平 reset为高 电平的时候时间计数,time_enable为低电平。 . . 图 37 计时模块功能仿真( 2分钟内) (不包括两分钟)的仿真结果如下所示: 图 38 计时模块功能仿真( 2分钟外) 从波形图可以看出在 clk的控制下当 start为低电平 reset为高 电平的时候时间计数 , 当时间大于二分钟的时候, time_enable为输出高电平,为超过 2分钟后以每增加一分钟对计费进行加计数。 控制模块 控制模块电路 控制模块用于为计费模块提供时钟,当 start 高电平的时候选择公里计费,输出的时钟信号为 distance_enable,当 start 低电平的时候选择时间计费,输出的时钟信号为time_enable。 这样控制模块便控制着其计费模式。 模块如下图所示: . . 图 39控制模块 计时模块的仿真结果 1. 公里计费的仿真结果如下所示: 图 310 控制模仿真图(公里计费) 从波形图可以看出当 start为 高电平的时候输出的 信号是 distance_enable。 此时控制模块选出的是 distance_enable,即 选出距离使能脉冲计费,则实现了按公里计费。 2. 时间计费的仿真结果如下所示: 图 311 控制模仿真图(按时计费) 从波形图可以看出当 start为 低电平的时候输出的信号是 time_enable。 即选择了按等待时间脉冲计费。 仿真上的公里脉冲和时间脉冲是为了仿真而简单的设置的波形,并非是前面信号组合检测而成,在后面整体组合电路中为进行模块的组合。 这里为了便于功能仿真区别,没有设置过多的脉冲,以影响分辨控制模块所选择 的计费模式。 . . 计费模块 控制模块电路 费用计数器模块用于出租车启动后,根据行驶路程和等待时间计算费用。 当出租车停车时,时钟 reset用于将费用计数器复位为起步价 ;当车处于行驶状态 时, select_clk信号选择 distans_enable, 若满 4公里 后路程每满 1公里,费用计数器加 1元;当出租车处于停止等待状态且时钟满 2分钟时, select_clk信号选择 time_enable信号,时间每满 1分钟,费用计数器加 1元。 图 312 计费模块 计费模块的仿真结果 图 313 计费模块仿真 从波形图可以看出 reset用于将费用计数器复位为起步价 ;由于本仿真 select_clk信号并非是系统选择出来的公里脉冲和计时脉冲,通过认为设定,不影响其观察功能效果。 . . 数码管显示模块 图 314 数码管显示模块 数码管有两种显示方式动态显示与静态显示,由于在本文中用 到了八 个数码管所以选择了动态显示,在时钟的控制下,当 reset为高电平的时候把费用,公里,时间译码输出。 这里没有数码管 显示仿真效果不明显,即不给予仿真。 以上单元模块 设计 完毕,通过每个单元模块代码的 设计以及仿真验证每个模块的真确性,为确保后面整体模块电路的正确性奠定了基础。 . . 设计 整体顶层模块电路 各模块设计仿真实现后,可分别创建成元件符号。 顶层就是将各分模块用 Verilog HDL语言或者是图形方法连接起来,便可实现系统电路。 其 Verilog HDL 源代码详见其附录。 其生成的顶层原理图如下所示: 图 41 整体顶层电路 原理图 . . 调试 本设计采用 Quartus II软件进行仿真设计 , Quartus II 是 Altera公司的综合性 PLD/FPGA开发软件,支持原理图、 VHDL、 VerilogHDL以及 AHDL( Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整 PLD 设计流程。 系统仿真 及调试 各个单元模块完成后 ,即可将分模块和顶层模块进行仿真测试 ,同时可根据设计要求加入测试输入条件。 仿真后得到的相应输出结果 与预先的结果 想比较,若 不相符,则应修改设计,直到相符为止。 为了仿真得 到明显的效果,最好能能下载到带数码管的试验想上进行直接的数字观察。 由于条件有限,为了能使仿真效果明显,采用了不带译码显示的波形仿真,其电路原理图如下: 图 51 系统 仿真调试电路 首先,对以下输入输出端作以下 解释和 说明 ,如表 41: . . 表 51 测试端口说明 输入输出端口说明 端口 类型 功能定义 Clk_50M Input 全局时钟。 在时钟上升沿,计算费用。 reset Input 整体复位,在 reset=0时,等待计时为 0 start Input 选择计费模式 Start=1,计程计 费 Start=0,计时计费 m[7:0] Output 等待时间的输入 (分 ) s[7:0] Output 等待计时的输入(秒) distance[7:0] Output 所行路程的输入 fee7:0] Output 总费用 输出 功能 仿真结果 验证如下 如下所示 : a. 为行驶中未停时的系统电路仿真结果: 图 52 系统 仿真调试电路 ( a) (在两分钟之内)的系统电路仿真结果: 图 53 系统仿真调试电路( b) (在两分钟之外)的系统电路仿真结果: . . 图 54 系统仿真调试电路( c) 从 (a)可以看出当 reset为 1时,费用计数器为 8元,系统启动, start=1表示出租车行驶, distance_enable每产生一个脉冲,路程计数器加 1;路程 4公里内,费用保持 8不变,超过 4公里,费用计数器进行加计数,每增加 1公里费用加 1元,此时等待时间计数器不变。 而根据 (b),(c)的仿真波形可知,当 reset为 1时,系统启动, start=0表示出租车处于停止等待状态,此时等待时间计数器计数,在 2分钟等待时间内,费用计数器不变;等待时间超过 2分钟后,每增加 1分钟,费用计数 器增加 1元,此时路程计数器保持不变。 从以。基于veriloghdl设计的出租车计价器
相关推荐
lay 的地址是一个 URL 字符串,由如下格式构成: xdirectplay:/[data string] 在不同的网络连接上,它包含发送消息方和接受方这样的元素。 DirectPlay 对象之间的通信 DirectPlay 是基于 COM 的,而各个组件管理不同的方面,例如, DirectPlay点 (peer)对象 (CLSID_DirectPlay8Peer)就是负责管理点对点游戏的。
ument()来获取其所对应的 Document 文档数据。 (三)文挡操作 由于 MFC 机制设计出文档类对象专门负责数据的 I/O 存取和数据的运算和操作等。 一般来说 ,数据运算是通过 Document 类里面的扩展功能来实现的 ,这样做可以 形成一种密集数据处理 ,达到方便易用和管理的好处。 对于一个文件而言 ,如果文件内对象的排列顺序是固定的
略 学术刊物文献 序号 └─┘ 作者.文章名.学术刊物名.年,卷(期):引用部分起止页 学术会议文献 序号 └─┘ 作者.文章名.编者名.会议名称,会议地址,年份.出版地,出版者, 出版年 :引用部分起止页 学位论文类参考文献 序号 └─┘ 研究生名.学位论文 题目.出版地.学校(或研究单位)及学位论文级别.答 辩年份 :引用部分起止页 西文文献中第一个词和每个实词的第一个字母大写,余者小写
要,因此选择合适的语言进行算法的描述显得尤为重要。 本文选择 Visual C++,其主要优势在于以下三个方面: ( 1)执行效率高。 C++的执行代码经过编译后生成的是汇编语言,它可以直接在处理器上运行,因此它的执行效率较高。 ( 2)较高的灵活度。 指针是 C++的一种特殊的数据类型,能够获取和直接操纵地址,实现动态存储分配内存。 掌握指针就能更有效地使用内存空间, C++中指 8 针的使用
83。 26 参考文献 27 附录 29 附录 1 中文概述 29 附录 2 译文 33 本科毕业设计(论文) 1 绪 论 温度与人们的生存生活生产息息相关 .从古人类的烧火取暖 ,到今天的工业温度控制 ,处处都体现了温度控制 . 温度是工业生产中常见的工艺参数之一 ,任何物理变化和化学反应过程都与温度密切相关 .在科学研究和生产实践的诸多领 域中 ,温度控制占有着极为重要的地位 ,特别是在冶金
” 属性改为 “ 是一个按钮 ” ,然后看看 “ 窗体设计区域 ” 的按钮上显示的文字是不是改变了 [5]。 如下图 24: 图 24 属性窗口示意图 调整程序运行时,程序窗体 在屏幕中的初始位置,把鼠标移到左图屏幕中的窗体上,这时鼠标会变成移动形状,拖动窗体,就设置好了运行时此窗体的位置。 工具箱实际上是一个窗口,称为工具箱窗口,可以通过单击其右上角的“ X” 关闭,如果想打开工具箱