资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
北邮数电实验报告4人表决器数字电路综合实验设计简易出租车计价器的设计与实现学院: 电子工程学院 班级: 20XX 学号: 20XX 姓名: 孙月鹏 班内序号: 04摘要本文介绍了利用Quartus II综合性PLD/FPGA开发软件,在MAXII 数字逻辑实验开发板上实现简易出租车计价器功能的设计与实现方法。本方案采用自上而下的设计理念,将整体电路按照功能划分为分频、计数、控制、数码管显示电路、点阵显示电路等若干模块,模块内用VHDL 语言完成逻辑设计,模块间用原理图进行连接,使整体可实现计费、计时等功能。关键字:可编程器件 模块化设计 出租车计价器 VHDL 语言一、设计任务要求基本要求:1行驶公里:用时钟2秒钟表示出租车匀速行驶1公里。在行车5公里以内,按起步价13元收费,超过5公里部分,以每公里2元收费。燃油附加费每运次1元。2途中等待:用按键控制中途等待,等待少于5秒不收费,超过5秒后没等待3秒钟加收1元。3用数码管分时显示计费金额、行驶里程和等候时间。字母A 表示当前处于显示计费金额状态,字母B 表示当前处于显示行驶里程状态,字母C 表示当前处于显示等候时间状态。4用按键控制出租车空驶、载客状态。提高要求:1用点阵滚动显示收费单据。2具有夜间模式,基本单价加收20%的费用。出租车收费以元为单位,元以下四舍五入。3出租车行驶速度可调可控。 4多人乘车,分段计价。 5自拟其他功能。二、设计思路与结构框图1. 设计思路图1 结构框图由结构框图可以分析得出,该系统的的主体是计数控制器。该系统由外部控制载客控制信号和等待控制信号,以时钟信号的翻转为计数依据,完成对时间、里程和费用的计数,并将结果通过数码管译码电路显示出来。该系统的控制信号可由拨码或按键输入,时钟由开发板内部时钟分频得出,输出有点阵输出和数码管输出。因此,可将系统分为分频器、计数控制器、数码管译码和显示以及点阵显示四部分。并以此得出系统的逻辑框图如下:图2 逻辑框图2. 控制器部分的状态转移图该控制器一共有三个基本状态: 空驶状态、载客状态和等待状态。 分别由v 、和w 来进行控制。三、分块电路和总体电路设计总体电路设计图3 状态转移图整体电路由数码管译码电路、转换电路、点阵译码电路、技术控制电路、分频电路五部分构成。分频电路将开发板内部的50MHz 时钟分为500hz 、1Hz 、 、 以及用于提高分频效率的其他若按频率。计数控制电路由四部分构成,整体完成行驶距离的计数、等待时间的计数以及费用的计数。输出为三组十位二进制数。转换电路有转换数据类型和在数码管上分时显示两个功能。首先将输入的十位二进制数转换为4位十进制数,并且利用除法和取余数的运算提取出个位、十位、百位、千位,并转换为四位二进制BCD 码。其次利用 的时钟,将行驶里程、等待时间、计费金额以2秒为周期依次out14,供给数码管以便分时显示。数码管译码电路以500HZ 实现动态扫描,并将转换电路输出的5组BCD码依次译码,完成显示。点阵译码器根据载客控制信号,分别显示“O ”、“X ”静态图案。分块电路设计 1. 分频器电路模块 关键代码ENTITY div_100 IS PORT; -END div_100;ARCHITECTURE a100 OF div_100 ISSIGNAL tmp100: INTEGER RANGE 0 TO 99; -BEGINp1:PROCESS -p1 BEGINIF clear =0 THEN tmp100ELSIF clk100event AND clk100=1 THEN IF tmp100=99 THEN tmp100tmp100END PROCESS p1;clk100 :输入时钟clear : 复位端 clk1 : 输出时钟 输入时钟 输出时钟 计数信号 进行100进制的计数p2:PROCESS -p2输出占空比为50%的新时钟 BEGINIF clk100event AND clk100=1 THEN IF tmp10049 THEN clk1clk1END PROCESS p2; END a100;仿真波形图5 200分频仿真波形图6 5分频仿真波形2. 计数控制器电路模块计数控制器由四部分组成,输入为三个不同频率的时钟、载客控制信号v 和等待控制信号w 。control1完成里程的计数cd 和行驶费用cm1,control2完成等待时间ct 的计数和等待开始计费信号outt ,control3接收到outt 后输出为等待时间的计费cm2,control4为总费用关键代码ENTITY control2 IS PORT);-等待时间输出 END control2 ;ARCHITECTURE c OF control2 IS SIGNAL tempt: STD_LOGIC_VECTOR ; SIGNAL temp1: INTEGER RANGE 0 TO 999; BEGINp3:PROCESS -累加等待时间 BEGINIF THEN IF v=0 THENtemptELSIF w=0 THEN -行驶时保持状态 tempttemp1ELSE temptIF temp14 THEN -大于5秒时outt=1 outtEND IF;END IF; END PROCESS p3;p4:PROCESS -将信号赋给输出ct BEGINctEND PROCESS p4; END c;模块control3 电路模块当输入outt 为1时,开始计数 cm2为等待时间计费关键代码ENTITY control3 IS PORT);-等待计费 END control3 ;ARCHITECTURE c OF control3 ISSIGNAL tempm: STD_LOGIC_VECTOR ; BEGINp5:PROCESS BEGINIF outt=1THEN -大于5秒时开始计费 IF THEN IF v=0 THENtempmELSE tempmEND PROCESS p5;p6: PROCESSBEGINIF V=0 THENcm2cm2END PROCESS p6; END c;control4 电路模块将等待计费cm2和行驶计费cm1相加,并加上燃油费1元,得到总费用cm关键代码ENTITY control4 IS PORT;-行驶费用 cm2: in STD_LOGIC_VECTOR; -等待费用cm: out STD_LOGIC_VECTOR);-总费用 END control4 ;ARCHITECTURE c OF control4 IS BEGINp5:PROCESS BEGINIF THEN IF v=0 THEN cmEND PROCESS p5; END c;控制计数部分的总仿真波形图8 控制计数器仿真波形3. 转换器电路模块由三个输入:行驶距离cd 、等待时间ct 、计费金额cm输出out1-5为四位二进制BCD 码实现功能:将十位二进制数按照位数转为为BCD 码关键代码ENTITY transform IS PORT;-行驶距离 ct: in STD_LOGIC_VECTOR; -等待时间 cm: in STD_LOGIC_VECTOR ;-总费用 out1: out std_logic_vector ;-输出个位 out2: out std_logic_vector; -输出十位 out3: out std_logic_vector; -输出百位 out4: out std_logic_vector; -输出千位out5: out std_logic_vector); -输出ABC END transform ;ARCHITECTURE c OF transform ISsignal cc : integer range 0 to 1023 ;signal t : std_logic_vector ; signal q1,q2,q3:integer range 0 to 1000; BEGINp1:PROCESS -p1进行3进制的计数 BEGINIF THEN IF v=0 THEN telsif t=00 then telsif t=01 then telsif t=10 then telse tEND IF;END IF;END PROCESS p1; p2:process BEGINif thenCASE t is -实现分时显示when 00 = cc cc cc ccq1q3out1end process p2; END c;4. 数码管译码电路电路模块关键代码ENTITY shumaguan IS PORT; g:OUT STD_LOGIC_VECTOR; cat:OUT STD_LOGIC_VECTOR); END shumaguan;ARCHITECTURE a OF shumaguan ISSIGNAL tmpg:STD_LOGIC_VECTOR; SIGNAL tmpn:STD_LOGIC_VECTOR; SIGNAL tmpc:INTEGER RANGE 0 TO 5; BEGINp1:PROCESS -六进制计数 BEGINifthenif tmpc = 5 then tmpctmpcEND PROCESS p1;p2:PROCESS -数码管选通轮流显示 BEGINifthen -将个位、十位等赋给各个数码管 case tmpc isWHEN 0 = tmpn tmpn tmpn tmpnWHEN 5 = tmpn tmpnEND PROCESS p2;p3:PROCESS -译码电路 BEGINCASE tmpn ISWHEN0000= tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg5. 点阵译码电路电路模块关键代码 ENTITY dz is PORT; -行col : OUT STD_LOGIC_VECTOR); -列 END dz;ARCHITECTURE a OF dz ISSIGNAL tmp_row:STD_LOGIC_VECTOR; SIGNAL tmp_col:STD_LOGIC_VECTOR; beginprocess beginif then if v = 0then case tmp_col isWHEN= tmp_col tmp_col tmp_col tmp_col tmp_col tmp_col tmp_col tmp_col tmp_c
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号