出租车计费器eda技术课程设计内容摘要:

车计费器课程设计采用了两个不同的频率,一个是 1Hz和 10Hz 的时钟脉冲。 因为我要接的硬件电路时钟是 1KHz 的时钟,所以分别采用 100 分频和 1000 分频以得到 10Hz 和 1Hz 的时钟,如图 所示为100 分频和 1000 分频。 图 等待时间 min1 min0 的波形 仿真 我是用 1KHz 的时钟的 1000 分频来作为秒信号的脉冲,再通过 60进制加 1计数器来得到等待时间分钟的计数。 如图 所示,是 start=‘ 1’与stop=‘ 1’时等待时间才开始计时。 图 里程计数的波形仿真 EDA 技术课程设计报告 8 当汽车启动,并且没有暂停等候时,即 start=‘ 1’且 stop=‘ 0’时里程计数器开始计数,一个里程脉冲 10m,一个里程脉冲是时钟 clk 的 100分频。 图 里程计费的波形仿真 当汽车启动,并且没有暂停时,代表汽车在行驶中,小于 3公里时收起步价 3元,大于 3公里时 1元 /公里,根据波形仿真可以清楚的看到已经实现这个功能了。 由于之前虽然有暂停,但是没有达到 10分钟,于是等待时间收费为 0。 图 等待时间计费的波形仿真 当车启动时,即会有起步价 3 元,每等候 10 分钟收费 元,当刚刚启动没走够 3公里就停下来等候时,计费器会在 3 元起步价的基础上按照每十分钟收费 元。 由上图可以看到当 cha1 加到超过十时,虽然会产生进位,但是 个位不会保留,导致数码管无法显示。 EDA 技术课程设计报告 9 图 可以人工输入的单价 通过使能端 enable0, enable1 的低电平输入时,可以对公里单价 a,等待时间计费单价 b进行加一操作,从而得到单价可以通过人工输入的功能。 但是因为我只能实现完整的十进制加一计数器,当不定数值进行加 1以上的数值时会发生数据丢失的现象,所以我在计费模块使用的是老师设定的固定单价。 开发板调试 图 小于 3 公里时的计费 如图 所示,前四位数码管显示的是收费金额( 0~ 元),后四位数码管显示的是行驶公里数( 0~ 公里),此时行驶了 公里,小于三公里,收起步价 元。 图 行驶 公里后等待 11 分钟的计费 如图 所示,前四位数码管显示收费金额,第五位数码管显示等待时间计费单价 元 /10 分钟。 第六位数码管显示单价 1 元 /公里,第七八位数码管显示等待时间 11 分钟,应按照 10 分钟计费 元,加上如图 所示EDA 技术课程设计报告 10 里程收费,总收费金额为 元 六、 设计体会与小结 这次为时两周的 EDA 课程设计,让我学到了很多,让我对 EDA 与VHDL 语言有了从理论到实践的升华,这次的出租车计费器我采用了分频器,多种计数器,计算里程和计费总额用的是 BCD 码十进制加一计数器,而等候时间计数则用的是 60 进制加法计数器,在这里要首先搞清,出租车计费器是由多个计数器,以及控制不同计费方式的控制信号来完成自动计费的,我们要理清思路,弄好算法,并且对各种计费方式所需要的控制信号要预期到,并在对的地方对其设置,在这里我多次利用了时序逻辑电路中不完整的 if 语句会构成锁存器的概念,这样我就可以在不同的计费方式的转换的同时,将它们的计费值累加起来,构成最后的总收费金额。 一个课程设计可以考察我们对书本所学知识的掌握能力以及运用能力 ,并且我认为在课程设计中最重要的过程是调试过程。 在前期,我在网上和图书馆收集了大量资料,并且自己构思了一整套算法结构,分模块设计出了程序,并将其在 Quartus II 软件 下进行编译和仿真,时间和里程模块能够正确仿真出波形,里程计费也能仿真出结果,但是等待时间计费因为是用 BCD 码加 5 计数器,当 timeout 脉冲为‘ 1’时会发生丢失数据,而在我连接到 FPGA 板子上时得到的现象也与我所仿真的结果是一致的。 这说明我的代码有错,于是我又回头去找问题所在,最后发现我的 timeout是在分钟计数的高位加一时才产生 一个尖脉冲,而我的分钟计数是由 60s产生一分钟,因此整个 timeout 至少存在 60s,在此期间吗,数据至少发生60 次加 5,导致数据丢失。 这只是我整个课程设计过程中的问题之一,在将近两周的课程设计时间内,我有将近一半以上的时间是反复调试并修改问题代码,不断的完善我的算法。 有些设计虽然在逻辑上成立,但 FPGA的硬件结构不能实现这种设计,比如多值驱动问题,上升下降沿问题, BCD比例乘法器问题等,在我们的试验箱硬件条件下乘法和除法等稍微复杂点的都不能实现,导致许多比较直接简便的算法我都不能用,要想其他方法实现其功能。 而且在设计过程中控制信号的设置尤其重要,要看清控制信号的控制时间与什么时候才让控制信号有效。 在电路仿真的过程中总会出现一些问题,需要我们细心解决,所以这两周下来,我对电路故障的排查能力有了很大的提高;再次,通过此次课程设计,我对设计所用到的软件有了更加深刻地了解,这对我们以后的工作和学习的帮助都很有用处。 通过这次设计我们更加了解了 FPGA 的硬件结构,以后设计的时候要注意使用能实现的设计方式。 我们要因地制宜,根据给定的条件,设计最合适最简便的方案,根据现有的硬件实现环境来设计算法,写代码。 EDA 技术课程设计报告 11 七、参考文献 [1]于卫,周德芳,王茂祥 .现代数字电路与系统综合实训教程 .北京:北京邮电大学出版社, 2020 [2]杨刚,龙海燕 .现代电子技术: VHDL与数字系统设计 .北京:电子工业出版社, 2020 [3]孟庆海,张渊 .VHDL基础及经典实例开发 .西安:西安交通大学出版社, 2020 [4]周润景,图雅,张丽敏 .基于 Quartus Ⅱ的 FPGA/CPLD 数字系统设计实例 .北京:电子工业出版社, 2020 [5]陈忠平,高金定,高见芳 .基于 Quartus Ⅱ的 FPGA/CPLD设计与实践 .北京:电子工业出版社, 2020 [6]徐向民 .数字系统设计及 VHDL实践 .北京:机械电子工业出版社, 2020 [7]徐少莹,任爱锋,石光明 .数字电路与 FPGA设计实验教程 .西安:西安电子科技大学出版社, 2020 EDA 技术课程设计报告 12 八、附录 library ieee。 use。 use。 entity taxi is port( start,clk,stop,enable0,enable1,en: in std_logic。 clk,1khz,,开始 ,停止输入 sel_out:out std_logic_vector (2 downto 0)。 数码管位选信号 seg:out std_logic_vector(6 downto 0)。 段选信号 a,b:out std_logic_vector(3 downto 0)。 里程单价和等候单价 cha0,cha1,cha2,cha3: out std_logic_vector(3 downto 0)。 计费金额 min1,min0: out std_logic_vector(3。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。