2022年出租车计费器的方案设计书.docx
课 程 设 计 报 告课程名称数字系统与规律设计课题名称出租车计费器的设计专 业通信工程班 级学 号姓 名指导老师乔汇东胡倩2021 年 7 月 9 日湖南工程学院 课 程 设 计 任 务 书课程名称 数字系统与规律设计课 题出租车计费器的设计专业班级同学姓名学号指导老师乔汇东胡倩审批乔汇东任务书下达日期 2021 年 7 月 2 日任 务 完 成 日 期2021年7月9日数字系统与规律设计课程设计任务书一 、设计目的全面熟识、把握 VHDL 语言基本学问,把握利用 VHDL 语言对常用的的组合规律电路和时序规律电路编程,把编程和实际结合起来,熟识编制和调试程序的技巧,把握分析结果的如干有效方法,进一步提高上机动手才能,培育使用设计综合电路的才能,养成供应文档资料的习惯和规范编程的思想;二、设计要求1、设计正确,方案合理;2、程序精炼,结构清晰;3、设计报告 5000 字以上,含程序设计说明,用户使用说明,源程序清单及程序框图;4、上机演示;5、有具体的文档;文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论;三、进度支配其次 十周 星期一: 课题讲解,查阅资料星期二: 总体设计,具体设计星期三: 编程,上机调试、修改程序星期四: 上机调试、完善程序星期五: 答辩星期六-星期天:撰写课程设计报告附:课程设计报告装订次序:封面、任务书、目录、正文、评分、附件(A4 大小的图纸及程序清单);正文的格式 : 一级标题用3 号黑体 ,二级标题用四号宋体加粗,正文用小四号宋体;行距为22;正文的内容 :一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现;四、系统调试与仿真;五、总结与体会;六、附件(全部程序的原代码 ,要 求 对 程 序 写 出 必 要 的 注 释 ) ; 七 、 评 分 表 ;目录一、 出租车系统主要功能 .1二、 出租车计费系统功能模块 .11.计费模块 .12.计程模块: .1三、 出租车计费系统的功能实现 .21.系统的总体框图: .22.程序流程图: .23.系统各功能模块的实现: .2四、 系统调试与仿真 .31.错误提示: .32.系统仿真结果: .4五、 总结与体会 .4六、 附录.51.顶层模块: .52.计量模块: .73.计费模块: .8七、 评分表 .9一、出租车系统主要功能设计要求:本试验要完成的任务就是设计一个简洁的出租车计费器,要求是起步价 3 元,准行 1 公里,以后 1 元/公里;时钟输入为一个1KHz 的系统时钟,直流电机模块每转一圈输出一个脉冲信号给CPU,另外用按键模块的S1 来作为整个系统的复位按钮,每复位一次,计费器从开头计费;直流电机模块用来模拟出租车的车轮子,每转动一圈认为是行走1 M,所以每旋转1000 圈,认为车子前进 1 公里;系统设计是需要检测电机的转动情形,每转一周,计 M 计数器增加 1;设计思想:整设计由计程模块,计费模块和显示模块三个部分组成;其中计量模块是整个系统实现里程计数重要部分;同时脉冲信号来实现系统的计费;显示模块主要是显示用8 个七段码管,前四个显示里程,后四个显示费用;二、出租车计费系统功能模块1. 计费模块当计费信号 S1 始终处于高电平即计费状态时,本模块依据掌握模块选择出的信号从而对不同单价的时段进行计费;即行程在1km 内,起步价 3 元; 1km 外以每公里按 1 远计费; leg0、leg1、leg2、leg3 分别表示费用的显示;模块元件为 :2. 计程模块:运算乘客所行驶的公里数,当行驶里程大于 1km 时,本模块中 pulse 脉冲信号变为 1;当 clk1 每来一个上升沿,计程器就自增 1,计程器的量程为 9.9km, 满量程后自动归零;元件框图为:三、出租车计费系统的功能实现1. 系统的总体框图:计费复位模块信号显2. 程序流程图M:脉冲计程示开头模块进程 1进程 2否否S1='1'.S1='1'.里程费用清零是是清零脉冲信号.脉冲信号 .里程 加0.001 公里计费加一元终止3. 系统各功能模块的实现:计费模块:计程模块:显示模块:四、系统调试与仿真1.错误提示:错误分析:从这可以看出来是工程名不统一,应当把工程名同意改为taxi ;这是我们常常犯的错误;错误分析: shuju 没有定义;2.系统仿真结果:五、总结与体会短短几天的 EDA 课程设计已经接近尾声了,我们从选择课设题目,查阅资料,到讨论出总体设计,具体设计,再到最终的编程上机调试,修改程序,完善程序,收成颇多;我学会 在这其中解决了很多问题,也帮同学解决了很多问题;出租车计费器系统的设计已全部完成,但我的设计不能实现动态扫描电路显示车费数目;车暂停时停止计费;如停止清零,等待下一次计费的开头;出租车计费系统设计中表达了VHDL掩盖面广,描述才能强,是一个多层次的硬件描述语言及PLD 器件速度快,使用便利,便于修改等特点;我们再次熟识和增强了对 VHDL 语言的基本学问,熟识利用 VHDL 语言对常用的的组合规律电路和时序规律电路编程,把编程和实际结合起来; VHDL 硬件描述语言打破了硬件和软件设计人员之间互不干涉的界限,可以使用语言的形式来进行数字系统的硬件结构、行为的描述,直接设计数字电路硬件系统;通过编程、下载后,该芯片已经具备了原先需要使用复杂的数字电路实现的功 能;更加明白和加深了对编制和调试程序的技巧,进一步提高了上机动手能 力,培育了使用设计综合电路的才能,养成了供应文档资料的习惯和规范编程的思想;在设计程序时,不能妄图一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完善与否不仅仅是实现功能,而应当让人一看就能明白你的思路,这样也为资料的储存和沟通供应了便利;在设计课程过程中遇到问题是很正常的,但应当将每次遇到的问题记录下来,并分析清晰,以免下次再遇到同样的问题;课程设计终止了,但是从中学到的学问会让我受益终身;发觉、提出、分析、解决问题和实践才能的提高都会受益于我在以后的学习、工作和生活中;在设计的过程中发觉了自己的不足之处,对以前所学过的学问懂得得不够深刻,把握得不够坚固;最终,我们诚心的感谢课设期间始终指导和陪伴着我们的老师;六、附录1. 顶层模块:library IEEE ;use IEEE.STD_LOGIC_1164.ALL ;use IEEE.STD_LOGIC_ARITH.ALL ;use IEEE.STD_LOGIC_UNSIGNED.ALL ;entity taxi isportclk:in std_logic ;-系统始终信号S1: in std_logic;-复位信号 pulse: in std_logic;-车轮脉冲信号LEG,BT: out std_logic_vector7 downto 0;end taxi;architecture rt4 of taxi iscomponent jifei portclk2:in std_logic ;S1: in std_logic;count0,count1,count2,count3: buffer std_logic_vector3 downto 0;end componen;t component jiliangport S1:in std_logic;clk1:in std_logic;k3,k2,k1,k0: buffer std_logic_vector3 downto 0;end componen;tsignal a,b: std_logic;signal shuju,c,d,e,f,h,i,j,k:std_logic_vector3 downto 0;signal cnt:std_logic_vector2 downto 0;beginu1:jiliang port mapclk1=>pulse,S1=>S1,k0=>c,k1=>d,k2=>e,k3=>f;-例化计量模块u2:jifeiportmapclk2=>pulse,S1=>S1,count0=>h,count1=>i,count2=>j,count3=>k; -例化计费模块M1:process cnt,clk beginif clk'event and clk='1'then case cnt iswhen "000"=>BT<="00000001" ;shuju<=c;when "001"=>BT<="00000010" ;shuju<=d;when "010"=>BT<="00000100" ;shuju<=e;when "011"=>BT<="00001000" ;shuju<=f;when "100"=>BT<="00010000" ;shuju<=h;when "101"=>BT<="00100000" ;shuju<=i;when "110"=>BT<="01000000" ;shuju<=j;when "111"=>BT<="10000000" ;shuju<=k;when others=>NULL;end case;end if;end process M1;M2:processclkbeginif clk'event and clk='1' then cnt<=cnt+1;end if;end process M2;M3:PROCESSshuju,clkbeginif clk'event and clk='1' then case shuju iswhen "0000"=>LEG<="11111100";when "0001"=>LEG<="01100000";when "0010"=>LEG<="11011010";when "0011"=>LEG<="11110010";when "0100"=>LEG<="01100110";when "0101"=>LEG<="10110110";when "0110"=>LEG<="10111110";when "0111"=>LEG<="11100000";when "1000"=>LEG<="11111110";when "1001"=>LEG<="11110110";when others =>NULL;end case;end if;end process M3;end rt4;2. 计量模块:library IEEE ;use IEEE.STD_LOGIC_1164.ALL ;use IEEE.STD_LOGIC_ARITH.ALL ;use IEEE.STD_LOGIC_UNSIGNED.ALL ;entity jiliang is portS1: in std_logic;clk1: in std_logic;k3,k2,k1,k0: buffer std_logic_vector3 downto 0;end jiliang;architecture behav of jiliang is beginprocessclk1,S1beginif S1='0' thenk3<="0000";k2<="0000" ;k1<="0000" ;k0<="0000" ;elsif clk1'event and clk1='1' thenif k0="1001" then k0<="0000" ;if k1="1001" thenk1<="0000" ;if k2="1001" then k2<="0000" ;if k3="1001" thenk3<="0000" ;elsek3<=k3+1;end if;elsek2<=k2+1;end if;elsek1<=k1+1;end if;elsek0<=k0+1;end if;end if;end process; end behav;3. 计费模块:library IEEE ;use IEEE.STD_LOGIC_1164.ALL ;use IEEE.STD_LOGIC_ARITH.ALL ;use IEEE.STD_LOGIC_UNSIGNED.ALL ;entity jifei isportclk2:in std_logic ;-时钟信号S1: in std_logic;-复位信号count0,count1,count2,count3: buffer std_logic_vector3 downto 0; end jifei ;architecture behav of jifei isbegin processclk2,S1variable m:integer range 0 to 1000:=0; -定义变量beginifS1='0'thencount3<="0000"; count2<="0000"; count1<="0000" ;count0<="0011";elsif clk2'event and clk2='1' then m:=m+1;ifm MOD 1000=0 then-取模算法if count0="1001" then count0<="0000";项目评价if count1="1001" then count1<="0000";if count2="1001" then count2<="0000";if count3="1001" then count3<="0000";else count3<=count3+1;end if;else count2<=count2+1; end if;else count1<=count1+1; end if;else count0<=count0+1; m:=0;end if;end if;end if;end process; end behav;七、评分表运算机与通信学院课程设计评分表课题名称:设计方案的合理性与制造性设计与调试结果设计说明书的质量答辩陈述与回答疑题情形课程设计周表现情形综合成果老师签名:日 期: