版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字电路与逻辑设计实验 题目: 简易出租车计价器 学号: 姓名: 班级: 学院: 时间:2013/11/4一 设计课题的任务要求设计一台出租车计价器,不同情况具有不同的收费标准。基本要求:1、行驶公里: 用时钟 2 秒钟表示出租车匀速行驶1 公里,在行车5 公里以内,按起步价13 元收费,超过5 公里部分,以每公里2 元收费。燃油附加费为每运次1 元。2、途中等待:用按键控制中途等待,等待少于(包括)5 秒不收费,超过5 秒后每等待3 秒钟加收1 元。3、用数码管分时显示计费金额、行驶里程和等候时间。字母a 表示当前处于显示计费金额状态,字母b 表示当前处于显示行驶里程状态,字母c 表示当前处
2、于显示等候时间状态。4、用按键控制出租车空驶、载客状态并用点阵显示空驶、载客状态。二、系统设计(包括设计思路、总体框图、分块设计)1、设计思路: 将整个计价器分为控制和计费模块,按键及防抖模块,数码管显示模块,点阵显示模块。其中控制和计费模块作为系统核心,负责给出所有控制和对外显示信号。按键及防抖模块提供输入按键信号,用于状态间切换。数码管用于显示计费金额、里程和等待时间信息。点阵模块用于显示出租车载客和空驶状态。2、设计框图:3、分块设计控制和计费模块:采用状态机的设计方式,根据计费计时方式的不同,分为了s0、s1、s2、s3四个状态,四个状态的含义和状态转移图如图所示:s0等待开始s1行驶
3、s2等待s3停车付费按键防抖模块:如图:按键防抖模块的原理是利用信号延迟,每个防抖模块都有一个输入时钟,每按下一次按键后输出端将产生一个输入时钟宽度的脉冲,输入时钟频率与主控模块中的状态切换扫描时钟频率相同,使状态能够及时的切换。点阵显示模块:点阵模块主要用于显示出租车的空载和载客状态。空载时显示汉字“空”,载客时显示标志“x”。输出信号lie和com分别连接到点阵控制的行和列。en是由计费控制模块给出的空载/载客信号。数码管显示模块数码管主要用于显示计费、里程、等待时间信息。clk_shu连接1khz时钟扫描信号,s0s6用于接收计费控制模块输出的各个数码管显示的数字。weixuan和dua
4、nxuan控制数码管的位选和段选信号。时钟分频模块将50mhz片上时钟分频为1hz、1khz、200hz时钟信号,其中1hz用于计费和计时。200hz用于按键防抖和状态切换。1khz用于数码管和点阵的扫描。三、仿真波形及波形分析数码管显示模块:下图是固定s0s6为数字951413后的仿真波形,由于s1位在程序中没有用到,于是将其始终置为高电平(灭),实际输出应为9 1413。如图所示:weixuan信号每隔6个时钟周期扫描一次,扫描频率为166hz足以使人眼产生连续显示的感觉。观察duanxuan信号,在圆圈处应显示数字“1”,duanxuan为0000110正是“1”的段选码。说明数码管能将
5、s0s6传输的数字正确的显示。按键防抖模块如图,keyin输入一个持续时间约为0.1s的按键信号并用高频时钟模拟抖动,keyout输出一个时钟周期(5ms)的高电平。时钟分频模块:由于分频比例太高,仿真到1s需要花费大量时间,故只仿真到20ms,观察1khz和200hz信号如下:点阵显示模块:将en置高电平,输出应为x,如图,显示正确。计费计时模块:等待模式:如图在2s和3s间分别按start-stop和pause进入s2模式,初始计费为14(起步费+燃油费),2s(即等待3s)后计费变为15。而在切换至s1后outen信号置高电平使点阵显示“x”。结束和清零:如图,再次按start-stop
6、后停止计费,按clear后计时计费清零行驶状态:5s内为14元,之后每2s 加2元,计费正常。四、源程序计费和控制模块:mytaxi.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity mytaxi isport ( signal clk1k,clk1,clk5ms:in std_logic; -频率为1khz,1hz,5ms的信号 start_stop:in std_logic; -开始-结束信号 pause:in std
7、_logic; -等待-重新行驶信号 clear:in std_logic; -清零信号 t0:out integer range 0 to 13; -与数码管连接 t1:out integer range 0 to 13; t2:out integer range 0 to 9; t3:out integer range 0 to 9; t4:out integer range 0 to 9; t5:out integer range 0 to 9; outen:out std_logic);-点阵控制信号 end mytaxi; architecture behav of mytaxi i
8、ssignal sec1:integer range 0 to 5; -秒计数十位signal sec0:integer range 0 to 9; -秒计数个位signal m1:integer range 0 to 5; -分的十位计数器signal m0:integer range 0 to 9; -分的个位计数器signal c2,c1,c0:integer range 0 to 9; -费用计数器signal k2,k1,k0:integer range 0 to 9; -公里计数器signal v:integer range 0 to 5:=1; -车速signal fei:int
9、eger range 0 to 999;-费用计数器signal bai,shi,ge:integer range 0 to 9; -费用计数百位,十位,个位type state_type is (s0, s1, s2, s3); -状态列表signal state : state_type;beginprocess(clk5ms,start_stop,pause,clear) -状态切换进程begin if clear= 1 then state if start_stop = 1 thenstate = s1;else state if start_stop=1 then state =
10、s3;elsif pause = 1 thenstate = s2;elsestate if start_stop = 1 thenstate = s3;elsif pause = 1 thenstate = s1;elsestate if clear= 1 thenstate = s0;elsestate -等待模式 outen4 then -等待超过5s进行计费if cntf22=2 then cntf22:=0; -每3s加1元fei=fei+1; else cntf22:=cntf22+1;end if;else cntf2 :=cntf2+1;end if; if sec0=9 th
11、en sec0=0; -此语句完成秒计数 if sec1=6 then sec1=0; if m0=9 then m0=0; -此语句完成分计数 if m1=6 then m1=0; else m1=m1+1; end if; else m0=m0+1; end if; else sec1=sec1+1; end if; else sec0=sec0+1;end if; bai=fei/100; -将费用重新计算成三位便于显示 shi=(fei/10) mod 10; ge -行驶模式 outen=1;-点阵显示载客 if cntk=v then cntk:=0; -2s一公里 if k0=9
12、 then k0=0; if k1=9 then k1=0;if k2=9 then k2=0; -公里计数else k2=k2+1;end if;else k1=k1+1;end if; else k0=k0+1;fei4 then fei=fei+2; -超过5公里开始计费else cntf11:=cntf11+1;end if; else cntf1:=cntf1+1; end if; bai=fei/100; shi=(fei/10) mod 10; ge -按下clear后各项数字清零 outen=0; cntf1:=0;cntf11:=0;cntf2:=0;cntf22:=0;cn
13、tk:=0; fei=14; bai=0;shi=0;ge=0; sec1=0;sec0=0; m1=0;m0=0;k1=0;k0=0;k2 outent0=10;t1=0;t2=0;t3=bai;t4=shi;t5t0=11;t1=0;t2=0;t3=k2;t4=k1;t5t0=12;t1=0;t2=m1;t3=m0;t4=sec1;t5t1 weixuan weixuan weixuan weixuan weixuan weixuan null; end case ;end process p1;p2:process(clk_shu)begin if clk_shuevent and cl
14、k_shu= 1 then -实现模6计数器if cnt6= 5 then cnt6= 0; else cnt6cccccc duanxuan duanxuan duanxuan duanxuan duanxuan duanxuan duanxuan duanxuan duanxuan duanxuan duanxuan duanxuan duanxuan null ; end case ;end process p4; end ace;分频:div50m.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsign
15、ed.all;entity div50m isport(clk_in : in std_logic; clk_out_1hz : out std_logic; clk_out_5ms : out std_logic; clk_out_1khz : out std_logic );end;architecture a of div50m issignal cnt : integer range 0 to 24999; signal cnt1: integer range 0 to 999; signal cnt2: integer range 0 to 5;signal clk_tmp1k :
16、std_logic;signal clk_tmp1: std_logic;signal clk_tmp5ms: std_logic;beginprocess(clk_in)beginif (clk_inevent and clk_in=1) then-分频到1khzif cnt=24999 thencnt=0;clk_tmp1k= not clk_tmp1k;elsecnt=cnt+1;end if;end if;end process;process(clk_tmp1k) -分频到1hzbeginif (clk_tmp1kevent and clk_tmp1k=1) thenif cnt1=
17、499 thencnt1=0;clk_tmp1= not clk_tmp1;elsecnt1=cnt1+1;end if;end if;end process;process(clk_tmp1k) -分频到5msbeginif (clk_tmp1kevent and clk_tmp1k=1) thenif cnt2=4 thencnt2=0;clk_tmp5ms= not clk_tmp5ms;elsecnt2=cnt2+1;end if;end if;end process;clk_out_1khz=clk_tmp1k;clk_out_1hz=clk_tmp1; clk_out_5ms=cl
18、k_tmp5ms;end;防抖模块:fangdou.vhdlibrary ieee;use ieee.std_logic_1164.all;entity fangdou isport(keyin,clk_fd:in std_logic;keyout:out std_logic);end;architecture b of fangdou issignal key_tmp0,key_tmp1,key_tmp2,key_tmp3:std_logic;begin process(clk_fd) begin if (clk_fdevent and clk_fd=1) then key_tmp0 = k
19、eyin; key_tmp1 = key_tmp0; end if; end process;-利用信号赋值延时将前后信号相与完成防抖key_tmp2 = key_tmp0 and key_tmp1; process( clk_fd ) begin if (clk_fdevent and clk_fd=1) then key_tmp3 = key_tmp2; keyout = not( key_tmp2 ) and key_tmp3; end if; end process; end; -时钟上升沿输出一个时钟周期宽度的脉冲点阵模块:peng.vhdlibrary ieee;use ieee.
20、std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity peng isport(clkpeng,en:in std_logic; lie:out std_logic_vector(7 downto 0); -列 com:out std_logic_vector(7 downto 0);-行end peng;architecture a of peng issignal st1:std_logic_vector(7 downto 0);signal data:std_logic_
21、vector(7 downto 0);signal d0,d1,d2,d3,d4,d5,d6,d7:std_logic_vector(7 downto 0);signal e0,e1,e2,e3,e4,e5,e6,e7:std_logic_vector(7 downto 0);-signal lie0,lie1,lie2,lie3,lie4,lie5,lie6,lie7:std_logic_vector(7 downto 0);begincom=data;lie=st1;d0=00110000;-汉字“空”d1=01011001;d2=01111001;d3=11001111;d4=11001
22、111;d5=01111001;d6=01111001;d7=00110000;e0=10000001;-符号“x”e1=01000010;e2=00100100;e3=00011000;e4=00011000;e5=00100100;e6=01000010;e7=10000001;second:process(clkpeng)begin if(clkpeng=1 and clkpengevent )then逐行扫描,下同if en=0 thenif st1(7 downto 0)=00000000or st1(7 downto 0)=01111111then st1(7 downto 0)=
23、11111110;data=d0;elsif st1(7 downto 0)=11111110then st1(7 downto 0)=11111101;data=d1;elsif st1(7 downto 0)=11111101then st1(7 downto 0)=11111011;data=d2;elsif st1(7 downto 0)=11111011then st1(7 downto 0)=11110111;data=d3;elsif st1(7 downto 0)=11110111then st1(7 downto 0)=11101111;data=d4;elsif st1(7
24、 downto 0)=11101111then st1(7 downto 0)=11011111;data=d5;elsif st1(7 downto 0)=11011111thenst1(7 downto 0)=10111111;data=d6;elsif st1(7 downto 0)=10111111thenst1(7 downto 0)=01111111;data=d7;end if;elseif st1(7 downto 0)=00000000or st1(7 downto 0)=01111111then st1(7 downto 0)=11111110;data=e0;elsif
25、st1(7 downto 0)=11111110then st1(7 downto 0)=11111101;data=e1;elsif st1(7 downto 0)=11111101then st1(7 downto 0)=11111011;data=e2;elsif st1(7 downto 0)=11111011then st1(7 downto 0)=11110111;data=e3;elsif st1(7 downto 0)=11110111then st1(7 downto 0)=11101111;data=e4;elsif st1(7 downto 0)=11101111then st1(7 downto 0)=11011111;data=e5;elsif st1(7 downto 0)=11011111thenst1(7 downto 0)=10111111;data=e6;elsif st1(7 downto 0)=10111111thenst1(7 downto 0)=01111111;da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保护环境从我做起的演讲稿
- 中秋佳节致辞范文(15篇)
- 人生大事观后感(19篇)
- 为开学典礼的致辞(25篇)
- 中学生开学典礼致辞(8篇)
- 影响学生个性形成与发展的因素
- 集合课件教学课件
- 2025年安徽宣城广德市引进高层次医疗卫生人才15人笔试备考题库及答案解析
- 2025年高考语文复习知识清单第六章文言文阅读专题05选择性必修下册文言知识梳理(学生版+解析)
- 2024年11月6日车辆伤害事故演练方案
- 2024年广东省公务员录用考试《行测》试题及答案解析
- 黑龙江省 哈尔滨市第四十七中学校2024-2025学年七年级上学期期中考试语文试题
- 泵站机组预调试运行方案
- 初中英语阅读教学中渗透德育的路径例析
- 2024年软装公司合同模板
- 2024-2030年智慧环保行业市场发展分析及竞争形势与投资发展前景研究报告
- 部编版语文四年级上册习作《记一次游戏》精美课件
- 2025年高考作文备考之作文审题强化训练(6)(客观题+主观题)
- 期中(1-4单元)(试题)-2024-2025学年六年级数学上册西师大版
- 《乌鲁木齐市国土空间总体规划(2021-2035年)》
- 河南省城市生命线安全工程建设指引V1
评论
0/150
提交评论