出租车计费器的设计

EDA 课 程 设

出租车计费器的设计

小组成员:XXX

目录

摘要................................................................ 3 关键词.............................................................. 3 引言................................................................ 3 1.题目分析.......................................................... 3 1.1 题目要求 ...................................................... 3 1.2 题目分析 ...................................................... 4 2.出租车计费系统的设计.............................................. 4 2.1系统的细化框图 ................................................ 4 2.2设计的基本思路 ................................................ 5 3.选择器件.......................................................... 5 4.软件的设计及仿真分析.............................................. 5 4.1系统各功能模块的实现: ........................................ 5 4.2系统总电路图的实现 ............................................ 7 5.硬件实现.......................................................... 9 结论:.............................................................. 9 方案设计的心得体会:............................................... 10 参考文献........................................................... 10 附录............................................................... 11

摘要

本文应用VHDL语言设计的出租车计费系统,使其具有模拟出租车起动、停止、暂停和加速等功能,并用动态扫描电路显示出租车所走的里程,显示所走路程需要的费用。所有源程序经QUARTUSⅡ9.1调试、优化、仿真正确,下载模拟结果正确,可用于实际的出租车收费系统。

关键词:VHDL语言 ;计费器 ;QUARTUSⅡ9.1;

引言

随着出租车行业的发展,对出租车计费器的要求也越来越高。二十世纪后半

期,随着集成电路和计算机技术的飞速发展,数字系统也得到了飞速发展,其实现方法经历了由分立元件、SSI、MSI到LSI、VLSI以及UVLSI的过程。同时为了提高系统的可靠性与通用性,微处理器和专业集成电路(ASIC)逐渐取代了通用全硬件LSI电路,而ASIC以其体积小、重量轻、功耗低、速度快、成本低、保密性好而脱颖而出。目前,业界大量可编程逻辑器件(PLD),尤其是现场可编程逻辑器件(FPLD)被大量地应用在ASIC的制作当中。在可编程集成电路的开发过程中,以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果的电子设计自动化(EDA)技术主要能辅助进行三方面的设计工作:IC设计,电子电路设计以及PCB设计 1.题目分析 1.1 题目要求

设计一个出租车计费器,计费标准为按行驶里程计费,起步价为8.00元,并在车行3km后按2.20元/km计费,当计费达到或超过20元时,每公里加收50%的车费。能够模拟汽车启动、停止、暂停以及加速等状态。能够将车费和路程显

示出来,各有两位小数。 1.2 题目分析

实际中出租车的计费工作原理一般分成3个阶段:

(1)车起步开始计费。首先显示起步价(本次设计起步费为8.00元),车在行驶3 km以内,只收起步价8.00元。

(2)车行驶超过3 km后,按每公里2.2元计费(在8.00元基础上每行驶1 km车费加2.2元),车费依次累加。

(3)行驶路程达到或超过8.5km后(车费达到20元),每公里加收50%的车费,车费变成按每公里3.3元开始计费。车暂时停止(行驶中遇红灯或中途暂时停车)不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始. 2.出租车计费系统的设计 2.1系统的细化框图

出租车计费器的组成如下图所示,各部分主要功能包括输入信号模块对车轮传感器传送的脉冲信号进行计数,并以高低脉冲模拟出租汽车启动、停止、暂停、加速按钮,具有输入信号作用;数据转换模块将计费模块输出的车费和路程转换成4位的十进制数据;译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动数码管;数码管显示模块将公里数和计费金额用4位LED数码管显示。

2.2设计的基本思路

计费器按里程收费,每100米开始一次计费。各模块功能如下: (1) 车速控制模块

当起停键为启动状态时(高电平),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于停止状态时暂停发出脉冲,此时计费器和里程显示模块相应的停止计数。 (2) 里程动态显示模块

其包括计数车速控制模块发出的脉冲以及将计数显示动态显示出来,每来一个脉冲里程值加0.1(控制器每发一个脉冲代表运行了0.1公里)。 (3) 计费动态显示模块

其初值为8元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,并且计数显示动态显示出来,每来一个脉冲(代表运行了0.5公里)其数值加1.1元,当收费超过20时数值加3.3元。 3.选择器件

设计开发软件:QuatusⅡ9.0 EDA实验箱

4.软件的设计及仿真分析 4.1系统各功能模块的实现:

(1)模块MS的实现

模块MS,输入端口CK0、CK1为两个不同的时钟信号,来模拟汽车的加速和匀速,JS加速按键。当JS为高电平时输出CK1,JS为低电平时输出CK0。

生成模块为:

其仿真波形图为:

(2)模块SOUT的实现

该模块实现车行状态输出功能,其中clk为时钟信号,enable 为启动使能信号,sto暂停信号, clr为清零信号,st为状态信号。

生成模块为:

其仿真波形图为:

(3)模块PULSE的实现

该模块实现将时钟信号5分频功能。 生成模块为:

其波形图为:

(4)模块COUNTER的实现

实现汽车模拟计费功能。clr1为清零信号,si为状态信号,c1,c2,c3分别为费用的三为显示。 生成模块:

其波形图为:

(5)模块SCAN_LED的实现

该模块实现显示车费功能。BT为选位信号,SG译码信号。 生成模块为:

其波形图为:

4.2系统总电路图的实现

整体工作情况; (1) 模块连接:

计费模块的clk2、ck0、ck1、enable、sto、clr和js端连接输入,其中ck0、ck1、和js通过MS模块输出的clk给pulse模块和sout模块的clk;enable、sto分别接到sout模块的enable、sto输入端;clr接入sout模块和counter模块的输入端;sout模块的输出st给counter模块的输入端si;clk2连接scan-led模块的clk输入端;counter模块的三个输出分别接到scan-led模块的三个输入端;最后 bt[2..0]和sg [6..0]通过LED显示模块显示出车费和路程。

(2)硬件连接

CLK接pin-28输入为1HZ的脉冲;daclk是实验箱上50MHZ固定晶振 START、STOP、PAUSE、JS分别连接按键开关,用于控制车的启动、停止、暂停和加速;

Sg[6..0]分别连接八段译码显示单元的a到dp; Bt[2..0]接数码管位选通端。 (3)结果分析: 生成模块为:

其仿真波形图为:

该电路的总体管脚分配图:

Ck0:pin-28;ck1:pin-153;clk2:pin-4;sto:pin-5;enable:pin-6;js:pin-7;clr:pin-82;sg[6..0]:pin-105;pin-104;pin-101;pin-100;pin-85;pin-84;pin-83;bt[2..0]:pin-86;pin-87;pin-88; 5.硬件实现

通过硬件下载,该电路可以完成硬件实现,芯片管脚定义可以直接用编辑.pin文件。完成管脚定以后选择器件,编译后生成.sof、.pof文件。选择sof文件进行下载。

通过多每一模块的仿真和下载,可以实现各个模块的逻辑功能,验证各个模块的正确性。在出租车计费系统的5个模块中,重点在于计费模块,显示模块。计费模块主要有汽车的启动、停止、暂停,加速按键;显示模块是将车费和路费显示出来。各模块完成后,再将它们组合成完整的出租车系统,在设计过程中还需要改进的是控制系统的纠错功能。

出租车计费系统的设计已全部完成,能按预期的效果进行模拟汽车启动、停止暂停等功能,并设计动态扫描电路显示车费数目,由动态扫描电路来完成。车暂时停止不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始。出租车计费系统的设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及PLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。 结论:

该计费器实现了按预置参数自动计费(最大计费金额为99.99元)

、自动计

程(最大计程公里数为99.99km)等功能;能够实现起步价、每公里收费、路程及加费里程的参数预置(如:起步价8.0元;3km后。2.20元/km;计费超过20.00元,每公里加收50%的车费等),且预置参数可调范围广。但是也存在一些问题,如系统不是很稳定,显示模块小数位没有显示出来。今后会针对这一问题继续研究,不断改善。 方案设计的心得体会:

这次课程设计中,我们主要是运用VHDL语言设计了一个出租车计费器,并且用层次化的设计方法来实现这个电路。在程序编写结束后,我们还对该程序进行了调试, 能按预期的效果进行模拟汽车启动、停止、暂停等功能,基本完成课程设计的要求。

通过此次课程设计,我们更进一步的深入了解了VHDL设计语言,并通过使用对它有了更深的体会。对于编程过程中可能遇到的问题有了一定的了解,也明白了其中的一些注意事项,对于下次进行编程设计有很大的帮助和提高。

总之,这次实验不仅仅加强了我的动手编程能力,也大大加强了团队合作以及设计能力,使我在理论学习和编程练习方面都获得了较大的收获 参考文献

[1] 候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.修订版电子工程师必备知识[M].西安:西安电子科技大学出版社,1999

[2] 张昌凡,等.可编程逻辑器件及VHDL设计技术[M].广州:华南理工大学出版社,2001

[3] 曾繁泰,陈美金.VHDL程序设计[M].北京:清华大学出版社,2001 [4] 潘松,等.VHDL实用教程[M].成都:电子科技大学出版社,2000 [5] 高健, 沈庆宏, 高敦堂. ITS 中车辆检测器设备的研究与实现[J ]. 交通与计算机, 2002. 20 (5):15218

[6] 王小平, 王彦芳, 等. 基于EDA 技术的出租车费计价单片系统 [7] 卢庆利. 将VHDL 硬件描述语言引入数字电路教学的探索[J ]. 实 验室研究与探索, 2000, 19 (5) : 67270

[8] 刘艳. EDA 技术在数字系统电路设计实验中的应用[J ]. 实验室研

究与探索, 2002, 21 (3) : 63264

[9] 潭会生,张昌凡. EDA技术及应用.西安:电子科技大学出版社.2001

附录

MS模块: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY MS IS

PORT(CK0:IN STD_LOGIC; CK1:IN STD_LOGIC; JS:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC); END MS;

ARCHITECTURE ONE OF MS IS BEGIN

PROCESS(JS, CK0,CK1) BEGIN

IF JS='0' THEN CLK_OUT

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SOUT IS PORT(CLK:IN STD_LOGIC; ENABLE:IN STD_LOGIC;

STO :IN STD_LOGIC;

CLR:IN STD_LOGIC;

ST:OUT STD_LOGIC_VECTOR(1 DOWNTO 0)); END SOUT;

ARCHITECTURE ONE OF SOUT IS BEGIN

PROCESS(CLK,ENABLE ,STO,CLR) VARIABLE CQI:STD_LOGIC_VECTOR(7 DOWNTO 0);

VARIABLE STATE:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN

IF CLR='0' THEN CQI:=(OTHERS=>'0'); ELSIF CLK'EVENT AND CLK='1' THEN IF STO='1' THEN

STATE:="00";CQI:=CQI;

ELSIF ENABLE ='1' THEN CQI:=CQI+1; IF CQI

ELSIF CQI>30 AND CQI

STATE:="11"; END IF; END IF; END IF; ST

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS

PORT(CLK0:IN STD_LOGIC; FOUT:OUT STD_LOGIC); END PULSE;

ARCHITECTURE ONE OF PULSE IS BEGIN

PROCESS(CLK0)

VARIABLE CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);

VARIABLE FULL :STD_LOGIC; BEGIN

IF CLK0'EVENT AND CLK0='1' THEN IF CNT="100" THEN CNT:="000" ; FULL:='1'; ELSE CNT:=CNT+1;

FULL:='0'; END IF; END IF; FOUT

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNTER IS

PORT(CLK_DIV:IN STD_LOGIC; CLR1:IN STD_LOGIC; SI:IN STD_LOGIC_VECTOR(1 DOWNTO 0);

C1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

C2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

C3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COUNTER;

ARCHITECTURE ONE OF COUNTER IS BEGIN

PROCESS(CLK_DIV,CLR1,SI)

VARIABLE Q1: STD_LOGIC_VECTOR(3 DOWNTO 0);

VARIABLE Q2: STD_LOGIC_VECTOR(3 DOWNTO 0);

VARIABLE Q3: STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

IF CLR1='0' THEN

Q1:="0000";Q2:="0000";Q3:="0000"; ELSIF CLK_DIV'EVENT AND CLK_DIV='1' THEN CASE SI IS WHEN "00" =>Q1:=Q1;Q2:=Q2;Q3:=Q3; WHEN "01"=>

Q1:="0000";Q2:="0000";Q3:="0001"; WHEN "10"=> IF Q2

Q2:="0000"; IF Q3

Q3:=Q3+1; END IF; END IF; Q1:="0000"; WHEN "11"=> IF Q1

Q1:="0000"; END IF;

IF Q1="0101" THEN IF Q2

Q2:=Q2+1; ELSE

Q2:="0000";

IF Q3

Q3:=Q3+1;

END IF; END IF; ELSE

IF Q2

Q2:=Q2+2; ELSE Q2:="0001";

IF Q3

Q3:=Q3+1;

END IF; END IF; END IF; WHEN OTHERS=>NULL; END CASE; END IF; C1

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SCAN_LED IS

PORT(DI1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

DI2:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DI3:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK2:IN STD_LOGIC;

SG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); BT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END SCAN_LED;

ARCHITECTURE ONE OF SCAN_LED IS SIGNAL CNT4 :STD_LOGIC_VECTOR(1 DOWNTO 0);

SIGNAL A:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

P1:PROCESS(CLK2)

VARIABLE SQ :STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN

IF CLK2'EVENT AND CLK2='1' THEN IF SQ="10" THEN SQ:="00"; ELSE SQ:=SQ+1; END IF; END IF; CNT4

P2: PROCESS (CNT4) BEGIN CASE CNT4 IS

WHEN "00" =>BTBTBTBTNULL; END CASE; END PROCESS P2; P3:PROCESS(A) BEGIN CASE A IS

WHEN "0000"=>SGSGSGSGSGSGSGSGSGSGNULL; END CASE; END PROCESS P3; END ONE

EDA 课 程 设

出租车计费器的设计

小组成员:XXX

目录

摘要................................................................ 3 关键词.............................................................. 3 引言................................................................ 3 1.题目分析.......................................................... 3 1.1 题目要求 ...................................................... 3 1.2 题目分析 ...................................................... 4 2.出租车计费系统的设计.............................................. 4 2.1系统的细化框图 ................................................ 4 2.2设计的基本思路 ................................................ 5 3.选择器件.......................................................... 5 4.软件的设计及仿真分析.............................................. 5 4.1系统各功能模块的实现: ........................................ 5 4.2系统总电路图的实现 ............................................ 7 5.硬件实现.......................................................... 9 结论:.............................................................. 9 方案设计的心得体会:............................................... 10 参考文献........................................................... 10 附录............................................................... 11

摘要

本文应用VHDL语言设计的出租车计费系统,使其具有模拟出租车起动、停止、暂停和加速等功能,并用动态扫描电路显示出租车所走的里程,显示所走路程需要的费用。所有源程序经QUARTUSⅡ9.1调试、优化、仿真正确,下载模拟结果正确,可用于实际的出租车收费系统。

关键词:VHDL语言 ;计费器 ;QUARTUSⅡ9.1;

引言

随着出租车行业的发展,对出租车计费器的要求也越来越高。二十世纪后半

期,随着集成电路和计算机技术的飞速发展,数字系统也得到了飞速发展,其实现方法经历了由分立元件、SSI、MSI到LSI、VLSI以及UVLSI的过程。同时为了提高系统的可靠性与通用性,微处理器和专业集成电路(ASIC)逐渐取代了通用全硬件LSI电路,而ASIC以其体积小、重量轻、功耗低、速度快、成本低、保密性好而脱颖而出。目前,业界大量可编程逻辑器件(PLD),尤其是现场可编程逻辑器件(FPLD)被大量地应用在ASIC的制作当中。在可编程集成电路的开发过程中,以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果的电子设计自动化(EDA)技术主要能辅助进行三方面的设计工作:IC设计,电子电路设计以及PCB设计 1.题目分析 1.1 题目要求

设计一个出租车计费器,计费标准为按行驶里程计费,起步价为8.00元,并在车行3km后按2.20元/km计费,当计费达到或超过20元时,每公里加收50%的车费。能够模拟汽车启动、停止、暂停以及加速等状态。能够将车费和路程显

示出来,各有两位小数。 1.2 题目分析

实际中出租车的计费工作原理一般分成3个阶段:

(1)车起步开始计费。首先显示起步价(本次设计起步费为8.00元),车在行驶3 km以内,只收起步价8.00元。

(2)车行驶超过3 km后,按每公里2.2元计费(在8.00元基础上每行驶1 km车费加2.2元),车费依次累加。

(3)行驶路程达到或超过8.5km后(车费达到20元),每公里加收50%的车费,车费变成按每公里3.3元开始计费。车暂时停止(行驶中遇红灯或中途暂时停车)不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始. 2.出租车计费系统的设计 2.1系统的细化框图

出租车计费器的组成如下图所示,各部分主要功能包括输入信号模块对车轮传感器传送的脉冲信号进行计数,并以高低脉冲模拟出租汽车启动、停止、暂停、加速按钮,具有输入信号作用;数据转换模块将计费模块输出的车费和路程转换成4位的十进制数据;译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动数码管;数码管显示模块将公里数和计费金额用4位LED数码管显示。

2.2设计的基本思路

计费器按里程收费,每100米开始一次计费。各模块功能如下: (1) 车速控制模块

当起停键为启动状态时(高电平),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于停止状态时暂停发出脉冲,此时计费器和里程显示模块相应的停止计数。 (2) 里程动态显示模块

其包括计数车速控制模块发出的脉冲以及将计数显示动态显示出来,每来一个脉冲里程值加0.1(控制器每发一个脉冲代表运行了0.1公里)。 (3) 计费动态显示模块

其初值为8元,当里程超过3公里后才接受计数车速控制模块发出的脉冲的驱动,并且计数显示动态显示出来,每来一个脉冲(代表运行了0.5公里)其数值加1.1元,当收费超过20时数值加3.3元。 3.选择器件

设计开发软件:QuatusⅡ9.0 EDA实验箱

4.软件的设计及仿真分析 4.1系统各功能模块的实现:

(1)模块MS的实现

模块MS,输入端口CK0、CK1为两个不同的时钟信号,来模拟汽车的加速和匀速,JS加速按键。当JS为高电平时输出CK1,JS为低电平时输出CK0。

生成模块为:

其仿真波形图为:

(2)模块SOUT的实现

该模块实现车行状态输出功能,其中clk为时钟信号,enable 为启动使能信号,sto暂停信号, clr为清零信号,st为状态信号。

生成模块为:

其仿真波形图为:

(3)模块PULSE的实现

该模块实现将时钟信号5分频功能。 生成模块为:

其波形图为:

(4)模块COUNTER的实现

实现汽车模拟计费功能。clr1为清零信号,si为状态信号,c1,c2,c3分别为费用的三为显示。 生成模块:

其波形图为:

(5)模块SCAN_LED的实现

该模块实现显示车费功能。BT为选位信号,SG译码信号。 生成模块为:

其波形图为:

4.2系统总电路图的实现

整体工作情况; (1) 模块连接:

计费模块的clk2、ck0、ck1、enable、sto、clr和js端连接输入,其中ck0、ck1、和js通过MS模块输出的clk给pulse模块和sout模块的clk;enable、sto分别接到sout模块的enable、sto输入端;clr接入sout模块和counter模块的输入端;sout模块的输出st给counter模块的输入端si;clk2连接scan-led模块的clk输入端;counter模块的三个输出分别接到scan-led模块的三个输入端;最后 bt[2..0]和sg [6..0]通过LED显示模块显示出车费和路程。

(2)硬件连接

CLK接pin-28输入为1HZ的脉冲;daclk是实验箱上50MHZ固定晶振 START、STOP、PAUSE、JS分别连接按键开关,用于控制车的启动、停止、暂停和加速;

Sg[6..0]分别连接八段译码显示单元的a到dp; Bt[2..0]接数码管位选通端。 (3)结果分析: 生成模块为:

其仿真波形图为:

该电路的总体管脚分配图:

Ck0:pin-28;ck1:pin-153;clk2:pin-4;sto:pin-5;enable:pin-6;js:pin-7;clr:pin-82;sg[6..0]:pin-105;pin-104;pin-101;pin-100;pin-85;pin-84;pin-83;bt[2..0]:pin-86;pin-87;pin-88; 5.硬件实现

通过硬件下载,该电路可以完成硬件实现,芯片管脚定义可以直接用编辑.pin文件。完成管脚定以后选择器件,编译后生成.sof、.pof文件。选择sof文件进行下载。

通过多每一模块的仿真和下载,可以实现各个模块的逻辑功能,验证各个模块的正确性。在出租车计费系统的5个模块中,重点在于计费模块,显示模块。计费模块主要有汽车的启动、停止、暂停,加速按键;显示模块是将车费和路费显示出来。各模块完成后,再将它们组合成完整的出租车系统,在设计过程中还需要改进的是控制系统的纠错功能。

出租车计费系统的设计已全部完成,能按预期的效果进行模拟汽车启动、停止暂停等功能,并设计动态扫描电路显示车费数目,由动态扫描电路来完成。车暂时停止不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始。出租车计费系统的设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及PLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。 结论:

该计费器实现了按预置参数自动计费(最大计费金额为99.99元)

、自动计

程(最大计程公里数为99.99km)等功能;能够实现起步价、每公里收费、路程及加费里程的参数预置(如:起步价8.0元;3km后。2.20元/km;计费超过20.00元,每公里加收50%的车费等),且预置参数可调范围广。但是也存在一些问题,如系统不是很稳定,显示模块小数位没有显示出来。今后会针对这一问题继续研究,不断改善。 方案设计的心得体会:

这次课程设计中,我们主要是运用VHDL语言设计了一个出租车计费器,并且用层次化的设计方法来实现这个电路。在程序编写结束后,我们还对该程序进行了调试, 能按预期的效果进行模拟汽车启动、停止、暂停等功能,基本完成课程设计的要求。

通过此次课程设计,我们更进一步的深入了解了VHDL设计语言,并通过使用对它有了更深的体会。对于编程过程中可能遇到的问题有了一定的了解,也明白了其中的一些注意事项,对于下次进行编程设计有很大的帮助和提高。

总之,这次实验不仅仅加强了我的动手编程能力,也大大加强了团队合作以及设计能力,使我在理论学习和编程练习方面都获得了较大的收获 参考文献

[1] 候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.修订版电子工程师必备知识[M].西安:西安电子科技大学出版社,1999

[2] 张昌凡,等.可编程逻辑器件及VHDL设计技术[M].广州:华南理工大学出版社,2001

[3] 曾繁泰,陈美金.VHDL程序设计[M].北京:清华大学出版社,2001 [4] 潘松,等.VHDL实用教程[M].成都:电子科技大学出版社,2000 [5] 高健, 沈庆宏, 高敦堂. ITS 中车辆检测器设备的研究与实现[J ]. 交通与计算机, 2002. 20 (5):15218

[6] 王小平, 王彦芳, 等. 基于EDA 技术的出租车费计价单片系统 [7] 卢庆利. 将VHDL 硬件描述语言引入数字电路教学的探索[J ]. 实 验室研究与探索, 2000, 19 (5) : 67270

[8] 刘艳. EDA 技术在数字系统电路设计实验中的应用[J ]. 实验室研

究与探索, 2002, 21 (3) : 63264

[9] 潭会生,张昌凡. EDA技术及应用.西安:电子科技大学出版社.2001

附录

MS模块: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY MS IS

PORT(CK0:IN STD_LOGIC; CK1:IN STD_LOGIC; JS:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC); END MS;

ARCHITECTURE ONE OF MS IS BEGIN

PROCESS(JS, CK0,CK1) BEGIN

IF JS='0' THEN CLK_OUT

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SOUT IS PORT(CLK:IN STD_LOGIC; ENABLE:IN STD_LOGIC;

STO :IN STD_LOGIC;

CLR:IN STD_LOGIC;

ST:OUT STD_LOGIC_VECTOR(1 DOWNTO 0)); END SOUT;

ARCHITECTURE ONE OF SOUT IS BEGIN

PROCESS(CLK,ENABLE ,STO,CLR) VARIABLE CQI:STD_LOGIC_VECTOR(7 DOWNTO 0);

VARIABLE STATE:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN

IF CLR='0' THEN CQI:=(OTHERS=>'0'); ELSIF CLK'EVENT AND CLK='1' THEN IF STO='1' THEN

STATE:="00";CQI:=CQI;

ELSIF ENABLE ='1' THEN CQI:=CQI+1; IF CQI

ELSIF CQI>30 AND CQI

STATE:="11"; END IF; END IF; END IF; ST

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS

PORT(CLK0:IN STD_LOGIC; FOUT:OUT STD_LOGIC); END PULSE;

ARCHITECTURE ONE OF PULSE IS BEGIN

PROCESS(CLK0)

VARIABLE CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);

VARIABLE FULL :STD_LOGIC; BEGIN

IF CLK0'EVENT AND CLK0='1' THEN IF CNT="100" THEN CNT:="000" ; FULL:='1'; ELSE CNT:=CNT+1;

FULL:='0'; END IF; END IF; FOUT

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNTER IS

PORT(CLK_DIV:IN STD_LOGIC; CLR1:IN STD_LOGIC; SI:IN STD_LOGIC_VECTOR(1 DOWNTO 0);

C1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

C2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

C3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COUNTER;

ARCHITECTURE ONE OF COUNTER IS BEGIN

PROCESS(CLK_DIV,CLR1,SI)

VARIABLE Q1: STD_LOGIC_VECTOR(3 DOWNTO 0);

VARIABLE Q2: STD_LOGIC_VECTOR(3 DOWNTO 0);

VARIABLE Q3: STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

IF CLR1='0' THEN

Q1:="0000";Q2:="0000";Q3:="0000"; ELSIF CLK_DIV'EVENT AND CLK_DIV='1' THEN CASE SI IS WHEN "00" =>Q1:=Q1;Q2:=Q2;Q3:=Q3; WHEN "01"=>

Q1:="0000";Q2:="0000";Q3:="0001"; WHEN "10"=> IF Q2

Q2:="0000"; IF Q3

Q3:=Q3+1; END IF; END IF; Q1:="0000"; WHEN "11"=> IF Q1

Q1:="0000"; END IF;

IF Q1="0101" THEN IF Q2

Q2:=Q2+1; ELSE

Q2:="0000";

IF Q3

Q3:=Q3+1;

END IF; END IF; ELSE

IF Q2

Q2:=Q2+2; ELSE Q2:="0001";

IF Q3

Q3:=Q3+1;

END IF; END IF; END IF; WHEN OTHERS=>NULL; END CASE; END IF; C1

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SCAN_LED IS

PORT(DI1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

DI2:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DI3:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK2:IN STD_LOGIC;

SG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); BT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END SCAN_LED;

ARCHITECTURE ONE OF SCAN_LED IS SIGNAL CNT4 :STD_LOGIC_VECTOR(1 DOWNTO 0);

SIGNAL A:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

P1:PROCESS(CLK2)

VARIABLE SQ :STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN

IF CLK2'EVENT AND CLK2='1' THEN IF SQ="10" THEN SQ:="00"; ELSE SQ:=SQ+1; END IF; END IF; CNT4

P2: PROCESS (CNT4) BEGIN CASE CNT4 IS

WHEN "00" =>BTBTBTBTNULL; END CASE; END PROCESS P2; P3:PROCESS(A) BEGIN CASE A IS

WHEN "0000"=>SGSGSGSGSGSGSGSGSGSGNULL; END CASE; END PROCESS P3; END ONE


相关文章

  • 基于FPGA的出租车计费器设计
  • 基于FPGA的出租车计费器设计 学院:电信 专业:电子学 年级: 2011级 学号:121 姓名:柳燃 基于FPGA的出租车计费器设计 柳燃 摘要:本文介绍了一种采用FPGA芯片进行出租车计费器设计的实用方法.基于FPGA,具体采用EPC2 ...查看


  • 硬件描述语言
  • 河北北方学院 毕业论文 题目: [ 出 租 车 计 价 器 ] 院 系:信息科学与工程学院 专 业:电 子 信 息 工 程 班 级: 2011级一班 姓 名: 李俊杰 学 号: 201142344 指导教师: 刘建军 日 期: 2013年1 ...查看


  • EDA课程设计出租车计价器
  • 课程设计 学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 出租车计价器的设计 初始条件: 本设计利用QuartusⅡ软件编写VHDL代码,运用EDA实验箱上的FPGA.数码管.LED灯.拨码开关.3/8译码器.系统20MHz时钟等 ...查看


  • 分段计费的实际问题教学设计
  • 小数乘法解决问题(2) "分段计费" 2014.9.14 春晖小学 赵承丽 小数乘法解决问题(2) "分段计费"教学设计 教学内容:第16页,例9及练习. 学习目标: (1)通过在具体情境中解决实际问 ...查看


  • 基于单片机的出租车计费器的毕业论文
  • (此文档为word格式,下载后您可任意编辑修改! ) 基于单片机出租车计费器的设计 目 录 摘 要 ...................................................................... ...查看


  • 出租车计价器设计
  • 武汉工程大学 计算机科学与工程学院 课程设计报告 设计名称:设计题目: 学生学号:专业班级: 13级信息技术02班 学生姓名:学生成绩: 指导教师(职称): 徐诚 (讲师) 完成时间:2014年12月24日~2014年12月30日 武汉工程 ...查看


  • 单片机课程设计心得
  • 单片机课程设计心得(2009-11-22 14:31:20) 标签:杂谈 做了两周的单片机课程设计,我有了很多的体会和感想. 分类:单片机 我们的课程设计有两个主要内容:一个是出租车计费器系统(还包括255计数和50000计数):另一个就是 ...查看


  • 电子信息工程毕业设计题目大全
  • 1 压力容器液位测量 2 多功能遥控小车 3基于RS232的仓库多点温度.湿度.气 4压检测系统 5自动控制升降旗系统 6基于RS485的温度报警系统 7基于模糊算法的水温控制系统的设计 8多分机电话交换机 9简易火灾自动报警系统 10基于 ...查看


  • 物流服务仓储计费项设计手册
  • Global eOffice TM 解决方案附录:"物流服务仓储计费"篇 2004年6月30日 版本号:V4.1.1.8C 艾旺计算机网络系统(中国)有限公司. 版权所有 2001 – 2004 未经艾旺公司的书面允许, ...查看


热门内容