公交车自动报站系统.docx

上传人:b****1 文档编号:2994205 上传时间:2023-05-05 格式:DOCX 页数:35 大小:539.92KB
下载 相关 举报
公交车自动报站系统.docx_第1页
第1页 / 共35页
公交车自动报站系统.docx_第2页
第2页 / 共35页
公交车自动报站系统.docx_第3页
第3页 / 共35页
公交车自动报站系统.docx_第4页
第4页 / 共35页
公交车自动报站系统.docx_第5页
第5页 / 共35页
公交车自动报站系统.docx_第6页
第6页 / 共35页
公交车自动报站系统.docx_第7页
第7页 / 共35页
公交车自动报站系统.docx_第8页
第8页 / 共35页
公交车自动报站系统.docx_第9页
第9页 / 共35页
公交车自动报站系统.docx_第10页
第10页 / 共35页
公交车自动报站系统.docx_第11页
第11页 / 共35页
公交车自动报站系统.docx_第12页
第12页 / 共35页
公交车自动报站系统.docx_第13页
第13页 / 共35页
公交车自动报站系统.docx_第14页
第14页 / 共35页
公交车自动报站系统.docx_第15页
第15页 / 共35页
公交车自动报站系统.docx_第16页
第16页 / 共35页
公交车自动报站系统.docx_第17页
第17页 / 共35页
公交车自动报站系统.docx_第18页
第18页 / 共35页
公交车自动报站系统.docx_第19页
第19页 / 共35页
公交车自动报站系统.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

公交车自动报站系统.docx

《公交车自动报站系统.docx》由会员分享,可在线阅读,更多相关《公交车自动报站系统.docx(35页珍藏版)》请在冰点文库上搜索。

公交车自动报站系统.docx

公交车自动报站系统

西安文理学院机械与材料工程学院

 

课程设计报告

 

专业班级测控1301

课程专业课程设计

题目基于FPGA的公交车自动报站系统设计

学号0703130117

学生姓名毛铭

指导教师师超

2016年11月

西安文理学院机械与材料工程学院

课程设计任务书

学生姓名

毛铭

专业班级

测控1301

学号

0703130117

指导教师

师超

职称

讲师

教研室

测控

课程

专业课程设计

题目

基于FPGA的公交车自动报站系统设计

任务与要求

(1)设计方案选择

(2)系统组成和原理

(3)绘制电路原理图

(4)设计软件流程图

(5)撰写设计报告

 

开始日期2016年11月7日完成日期2016年12月2日

指导教师签名

2016年11月3日

摘要

传统的公交车语音报站系统常采用微处理器进行控制,其缺点是可靠性低、维护和升级不方便。

目前,许多中等以上城市的公交车上都实现了无人售票,公交司机对行车安全责任也就更大,这就迫切需要在每辆公交车上安装自动报站系统。

针对中小城市公交系统的特点,使用FPGA技术设计出低成本自动报站器,系统硬件电路简单,调试和升级方便,可靠性高,实用性强。

关键词:

FPGA;仿真;自动报站;VHDL语言

 

1概述

1.1技术简介

FPGA是英文Field-Programmable GateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。

2设计要求及思路

2.1基本要求

针对中小城市公交系统的特点,使用FPGA技术设计出低成本的自动报站系统,可兼有手动和自动两种报站方式的功能。

熟练使用FPGA器件,掌握VHDL程序设计,通过对公交车自动报站系统的设计学会分析以及设计一个数字系统。

2.2设计思路

设计流程图如下:

图2.2流程图

3设计原理

3.1ISD1420单片20秒高保真语音录放IC

ISD1420为美国ISD公司出品的单片语音录放电路。

内部电路由振荡器、语音存储单元、前置放大电路、抗干扰滤波器和输出放大器组成。

最小的录放系统仅由一个麦克风、一个喇叭、两个按钮、一个电源和少数电阻电容组成。

录音内容存入E2PROM永久存储单元,具有零功率信息存储功能,这个独一无二的方法是借助于美国ISD公司的专利——直接模拟存储技术(DASTTM)实现的。

利用它,语音和音频信号被直接存储,以其原本的模拟形式进入E2PROM存储器。

直接模拟存储允许使用一种单片固体电路方法完成其原本语音的再现,不仅语音音质优美,而且具有断电语音保护功能。

3.1.1特点

●所需外围元件少,电路简单,操作方便。

●采用直接模拟量存贮技术DAST(DirectAnalogStrorageTechnology),再现优质原声,没有常见的背景噪声。

●零功率信息存贮,省掉备用电源。

●信息可保存10年以上,可反复录放达10万次之多。

●语音固化无需专用编程或开发装置。

●较强的选址能力,可把存储器分成160段来进行管理。

●具有自动省电模式,此时仅需0.5µA的保持电流。

●单一电源供电。

3.1.2电气特性

●工作电压VDD:

5V.

●静态电流ISTB:

典型值0.85µA,最大值为2µA.

●工作电流IOP:

典型值15mA,最大值30mA

3.1.3电路图形符号及管脚功能说明

图3.1电路图形符号

各管脚功能如下表:

表3.1ISD1420管脚功能表

名称

管脚

功能

名称

管脚

功能

A0~A5

1~6

地址

ANAOUT

21

模拟输出

A6、A7

9、10

地址(MSB)

ANAIN

20

模拟输入

VCCD

28

数字电路电源

AGC

19

自动增益控制

VCCA

16

模拟电路电源

MIC

17

麦克风输入

VSSD

12

数字地

MICREF

18

麦克风参考输入

VSSA

13

模拟地

PLAYE

24

放音(边沿触发)

SP+、-

14、15

喇叭输出+、-

REC

27

录音

XCLK

26

外接定时器(可选)

RECLED

25

发光二极管接口

NC

7、8、11、22

空脚

PLAYL

23

放音(电平触发)

各管脚功能描述如下:

1).A0~A7地址输入端。

ISD1410除A3,其余均为空脚(NC)。

ISD1420的地址输入端具有两个功能:

①作为信息地址线用(A0~A7=LOW);②作为操作模选择用(A6和A7=HIGH)。

2).MIC驻极体话筒输入端。

驻极体话筒通过电容C将音频信号耦合到该输出端,C的电容值与该端内阻(10KΩ)决定ISD1420通频带下限频率。

3).MICREF驻极体话筒参考输入端。

4).ANAIN模拟信号输入端。

该端经C、R与ANAOUT端相连,语音通频带下限频率取决于C、R和该端输入阻抗(2.7kΩ),除MIC端,该端亦可作为模拟信号输入端。

5).ANAOUT来自驻极体话筒的输入信号被放大输出至该端,前置放大器的电压增益取决于AGC电平,对于小信号输入电平,其最大增益为24dB。

6).AGC自动增益控制端。

AGC可动态地调整前置放大器增益,而且可扩展加大MIC输入端的非失真信号的范围。

AGC的响应时间是由AGC内阻抗(5kΩ)和外部电容C来决定的;释放时间是C和R的RC时间常数决定的。

7).SP+、SP-喇叭输出端。

该端可直接驱动16Ω喇叭,可利用单端输出驱动喇叭,也可采用双端输出驱动喇叭。

双端输出信号的功率是单端的四倍。

单端输出则需要该脚与喇叭之间串接100μF的交流耦合电容。

8).XCLK外接时钟振荡端。

该端在实际应用中通常接地,如果需要更高的计时精度,该端可外接时钟电路。

9).RECLED发光二极管接口。

当录音时,该端输出低电平,发光二极管LED亮。

当录音停止或存储器录满时,LED熄灭。

10).PLAYE边沿触发放音控制端。

当该端输入一低脉冲,电路即进入放音状态,直到结束,电路自动进入准备状态。

11).PLAYL电平触发入音控制端。

当该端电平变低并保持,电路进入放音状态,放音结束后电路进入准备状态。

12).REC录音触发端。

录音期间该端必须一直保持低电平。

REC键优先于PLAYE或PLAYL其中一个放音键。

如果在放音期间,遇REC接低电平,放音立即停止,自动进入录音状态。

13).VSSD、VSSA数字地和模拟地。

14).VCCD、VCCA数字电路电源正端和模拟电路电源正端。

3.1.4操作模式应用

ISD1420地址输入端具有双重功能,根据地址中的A6、A7的电平状态决定A0~A7的功能。

如果A6、A7有一个低电平,A0~A7输入全解释为地址位,作为起始地址用,此时地址线仅作为输入端,在操作过程中不能输出内部地址信息。

根据PLAYE、PLAYL或REC的下降沿信号,地址输入被锁定。

如果A6、7同为高电平时,它们即为模式位。

使用操作模式有两点要注意:

1)所有初始操作都是从0地址开始。

0地址是ISD1420存储空间的起始端,后面的操作可模拟模式的不同,而从不同的地址开始工作。

当电路中录放音转换将进入省电状态时,地址计数器复位为0。

2)当PLAYE、PLAYL或REC变为低电平,同时A6、A7为高电平时,执行地址线所对应的操作模式。

这种操作模式一直执行到下一个低电平控制输入信号出现为止。

操作模式可以与微控制器一起使用,也可用硬件连线得到所需系统操作。

A0:

信息检索(仅用于放音工作状态)。

不知道每个信息的实际地址,A0使操作者快速检索每条信息,A0每输入一个低脉冲,可使利内部地址计数器跳到下一个信息。

这种模式仅用于放音工作,通常与A4操作同时应用。

A1:

用于删除EOM标志(仅用于录音工作状态)。

A1可使录入的分段信息成为连续的信息,使用A1可删除掉每段中间信息捷的EOM标志,仅在所有信息后留一个EOM标志。

当这个操作模式完成时,录放的所有信息就作为一个连续的信息放出。

A3:

用于循环重放信息(仅用于放音工作状态)。

A3可使存于存储空间始端的信息自动地连续重放。

一条信息可以完全占满存储空间,那么循环就可以众头至尾进行工作,并由始至终反复重放。

A4:

连续寻址。

在正常操作中,当一个信息放完,遇到一个EOM标志时,地址计数器就会复位。

A4可防止地址计数器复位,使得信息连续不断地放出。

A2、A5:

未用

3.2语音典型电路图

图3.2ISD1420典型应用电路

3.3语音芯片的分段存储设计

为了能正确地进行语音播报,必须将20秒的语音芯片分段存储所需的内容,然后根据每条播报信息的要求组合后进行播报。

根据分析,一个全长九站的线路,语音信息分18段存储即可,分段表如下:

表3.3语音芯片分段存储地址表

地址(二进制)

地址(十进制)

单元数

时间长度(s)

内容

00-01

0-1

2

0.25

空白

02-07

2-7

6

0.75

“前往”

08-0F

8-15

8

1

“北门”

10-17

16-23

8

1

“北大街”

18-1F

24-31

8

1

“钟楼”

20-27

32-39

8

1

“西大街”

28-2F

40-47

8

1

“水司”

30-37

48-55

8

1

“太白南路”

38-3F

56-63

8

1

“沙井村”

40-47

64-71

8

1

“电子城”

48-4F

72-79

8

1

“终点站”

50-57

80-87

8

1

“所有”

58-5F

88-95

8

1

“到了”

60-67

96-103

8

1

“下一站”

68-6F

104-111

8

1

“需要在”

70-81

112-129

24

3

“下车的乘客请下车”

74-81*

116-129

24

3

“(下车)的乘客请下车”

82-87

116-129

24

3

“大学城”

88-9F

136-159

24

3

“的乘客请做好准备”

其中74-81是70-81的子集,属于同一个存储段。

3.4控制电路CPLD设计

系统的几乎所有控制逻辑均由CPLD实现,其逻辑框图如图3.3所示。

图3.3CPLD控制逻辑框图

其中ADD是加计数按键输入;CLEAR是复位输入;REPEAT是重复播报按键输入;CLK16MHz是时钟输入端,信号频率为16MHz;PLAY_END是ISD1420的放音结束信号,该信号是低有效;P_N_SELECT是方向选择输入端,当该输入端为低电平时,播报信息是正向播报,反之,当为高电平时,播报信息是逆向播报;SUB是减计数按键输入。

PLAY_E是触发语音播放的输出端;A[7:

0]是地址输出端,用于给语音芯片播放时提供语音地址;BCD[3:

0]是驱动显示译码的输出端,用于同步显示汽车到站信息。

CPLD控制逻辑电路的内部结构如图4所示。

系统工作控制过程如下:

汽车正向行驶时将P_N_SELECT置为低电平,当需要播报语音信息时,按下ADD键即可。

注意,每按一次ADD键,播报的语音信息就自动加1,并立即播报两次,所以正常情况下只需按ADD键即可。

如果出现堵车等特殊情况,需要再次播报已经播报过的信息,驾驶员只需按下REPEAT键即可,该键可任意次重复执行。

如果出现汽车站点与播报信息错位的情况,则可以通过连续按ADD键快进或连续按SUB键快退进行调整。

时钟信号的作用是用于产生按键去抖动的50Hz信号和延时用的1kHz信号。

PLAY_END输入端不是一个按键输入,而是语音芯片的输出端,是低有效,该信号有效时表示当前播报的一段语音信息已经结束,利用该信息去触发下一段语音信息的播报,就可以使需要播报的一条完整的语音信息连续流畅地播放出来。

一条完整的语音信息由8段组成,如果每一条语音信息播报两次,则需要一个16进制的计数器,如图中的COUNT_16模块,也就是图中的I20。

图3.4CPLD控制逻辑顶层电路图

一条语音信息连续播放的原理如下:

任何时候只要按下ADD、SUB、REPEAT、CLEAR四个键中的一个,由于七输入或门I35的作用都会触发一次语音的播报,且存储语音信息的高5位地址已经确定,其中ADR[7]由P_N_SELECT确定,ADR[6:

3]由双向计数器COUNT16_U_D确定,所以按键ADD可以使ADR[6:

3]加1以指向下一条语音信息地址表的存储位置,同理按键SUB可以使ADR[6:

3]减1以指向上一条语音信息地址表的存储位置,而REPEAT将不改变ADR[6:

3]以指向当前条语音信息地址表的存储位置,按键CLEAR可以使ADR[6:

3]全为0以指向第一条语音信息地址表的存储位置。

按键ADD、SUB、REPEAT、CLEAR都有3个功能,第一个功能是前面讲的修改ADR[6:

3],第二个功能是使16进制计数器I20清零以便从该条信息的第1段开始播放,第三个功能是通过I35产生语音播放信号PLAY_E,该信号连接到语音芯片的边沿触发放音控制端PLAYE,使语音芯片开始播放语音信息。

当第1段语音信息播放完后,ISD1420将输出PLAY_END信号,PLAY_END信号作为16进制计数器的CLK输入端将使I20计数为0001,该计数器的低3位输出作为存储器的低3位地址输入将指向当前条语音信息的第2段,同时PLAY_END信号通过I32延时后经I35还将产生语音播放信号PLAY_E,该信号作用于语音芯片ISD1420后又使语音芯片开始播放语音信息,但这次播放的是第2段语音信息。

I32延时的目的是保证在PLAY_E信号有效时,PLAY_END已经使16进制计数器完成计数。

以此类推,第2段播放完成后又将播放第3段、第4段直到第8段。

当第8段播放完后I20的输出为1000,由于计数器的最高位未用,所以语音播放又将从该条的第1段重复播放,接下来是第2段、第3段直到第8段。

当第二次的第8段播放完后I20的输出变为0000,因此16进制计数器产生的进位信号CO将屏蔽PLAY_END,使语音播放停止。

这样就达到了每条语音信息重复播放两次的目的。

值得注意的是,七输入或门I35除了对ADD、SUB、REPEAT、CLEAR和PLAY_END敏感外,它还有两个输入端,分别接的是16进制双向计数器的CO与BO,正常工作时CO与BO都为0,所以不产生任何影响,但当16进制计数器产生了进位CO或借位BO时,将封锁I35使之不能产生PLAY_E信号,即当汽车运行到终点站后,语音播报就将停止,这样就可防止语音播报器又从头播报。

因为这样的播报是错误的。

正确的播报应该是改变播报的方向重新播报。

因此,只有当按下CLEAR键后,CO或BO才会消失,语音播报才会重新正常地工作。

3.4.116进制双向计数器COUNT16_U_D

该模块有3个输入信号和三个输出信号,其中一个输出信号为逻辑向量输出信号。

该逻辑向量输出信号为Q[3..0],它是16进制计数器的BCD码输出信号,由4位BCD码组成,代表计数器的计数值。

另两个输出信号分别是进位输出信号CO和借位输出信号BO。

每当加计数从1111变为0000后就使进位输出CO为高电平,每当减计数从0000变为1111后就使借位输出BO为高电平。

CP_D是减法计数器的计数输入信号,CP_U是加法计数器的计数输入信号,RD是高有效计数器异步清零信号。

16进制双向计数器的工作时序如图5所示。

从图中可以看出计数器是双向计数的,在CP_U的作用下是加计数,在CP_D的作用下是减计数,并且不管是加计数还是减计数只要产生了进位信号CO或借位信号BO计数器都将停止计数,直到异步清零信号RD有效后,才会重新开始计数。

图3.516进制双向计数器工作时序

3.4.216进制计数器COUNT_16

该模块有两个输入信号和两个输出信号,其中一个输出信号为逻辑向量输出信号。

该逻辑向量输出信号为Q[3..0],它是16进制计数器的BCD码输出信号,由4位BCD码组成,代表计数器的计数值。

另一个输出信号是进位输出信号CO。

每当计数到1111后就使进位输出CO为低电平。

clk是计数器的计数输入信号,clear是高有效计数器异步清零信号。

16进制计数器的工作时序如图3.6所示。

图3.616进制计数器工作时序

3.4.3按键处理KEYIN

该模块有4个输入信号和三个输出信号,其中一个输入信号为时钟输入信号,其余三个输入信号为按键输入,即key1、key2和key3。

输出信号out1、out2和out3分别是三个输入信号的延时去抖动输出信号。

延时的长短与输入时钟的周期有关。

按键处理的工作时序如图7所示。

从图中可以看出按键的抖动被彻底地去掉了。

通常按键的抖动时间不大于10ms,因此为去抖动目的输入时钟信号的频率可取50Hz,如本例中的I7和I28,而如果仅仅是延时目的,则输入时钟的频率只与所需延时的长短有关,如本例中的I32。

图3.7按键处理模块工作时序图

3.4.4分频模块COUNT_X

该模块有一个输入信号和两个输出信号,输入信号为16MHz时钟输入信号,输出信号为系统所需的1kHz和50Hz信号,即CLK1kHz、CLK50Hz。

通常按键的抖动时间不大于10ms,因此为去抖动目的输入时钟信号的频率可取50Hz,延时输入时钟的频率只与所需延时的长短有关,如本例中选用延时输入时钟的频率为1kHz。

分频模块的工作时序如图3.8所示。

图3.8分频模块工作时序图

3.4.5256字节只读存储器ROM2568

该模块有三个输入信号和一个输出信号,其中两个输入信号为存储器使能信号g1和g2,另一个输入信号为存储器地址输入信号,即ADR[7:

0],此为8位逻辑向量,因此存储器的寻址能力为256,即存储器有256个存储单元。

输出信号为8位宽度的数据输出。

本系统中存储器用于存储语音信息播放时的分段地址。

语音芯片ISD1420的分段地址为8位,所以这里设计的存储器的数据宽度也为8位。

存储器模块的工作时序如图3.9所示。

图3.9存储器模块工作时序图

存储器分配原理是这样的,根据分析,每一条播报信息可以又8段组成,因此每一条语音信息占用8个存储单元,这8个存储单元分别存储8段语音信息的在语音芯片中的存储地址。

总共9个站,除去起点站外,需要播报的只有8个站。

由于每个站需要播报两次,因此共需报站16次。

第一次播报在汽车离开上一站的时候,告诉乘客下一站是什么站,提醒需要下车的乘客作好准备,第二次播报在汽车到站以后,告诉乘客什么站已经到了,该下车的乘客请下车。

从上面的分析可见,汽车从起点站运行到终点站的过程中,需要播报16条信息,每条信息由8段组成,因此共需要168=128个存储单元。

汽车运行到终点站后,还会原路返回。

如果将前面运行的线路定义为正向行驶,那么原路返回的运行线路就定义为反向行驶。

由于反向行驶时播报的内容和顺序不能与正向行驶的公用,因此反向行驶的播报内容也必须单独存储,所以,整个系统所需存储器容量为256字节。

如下是只读存储器存储内容分配表,正向播报时ADR[7]=0,所以占用的是低128个存储器单元,反向播报时ADR[7]=1,所以占用的是高128个存储器单元。

ADR[6:

3]为0000时唯一确定了8个存储器单元,这8个单元由低3位地址ADR[2:

0]确定。

下面的表中每一行括号中的8个数值就是在ADR[7]和ADR[6:

3]确定后的一条播报语音信息中组合的8段语音段的地址表。

其中的“”表示空白语音,用于停顿。

正向播报ADR[7]=0

ADR[6:

3]:

0000------(09680208136)

“下一站”“北门”“前往”“北门”“的乘客请做好准备”

ADR[6:

3]:

0001------(0888010480112)

“北门”“到了”“需要在”“北门”“下车的乘客请下车”

ADR[6:

3]:

0010------(0961602016136)

“下一站”“北大街”“前往”“北大街”“的乘客请做好准备”

ADR[6:

3]:

0011------(016880104160112)

“北大街”“到了”“需要在”“北大街”“下车的乘客请下车”

ADR[6:

3]:

0100------(0962402024136)

“下一站”“钟楼”“前往”“钟楼”“的乘客请做好准备”

ADR[6:

3]:

0101------(024880104240112)

“钟楼”“到了”“需要在”“钟楼”“下车的乘客请下车”

ADR[6:

3]:

0110------(0963202032136)

“下一站”“西大街”“前往”“西大街”“的乘客请做好准备”

ADR[6:

3]:

0111------(032880104320112)

“西大街”“到了”“需要在”“西大街”“下车的乘客请下车”

ADR[6:

3]:

1000------(0964002040136)

“下一站”“水司”“前往”“水司”“的乘客请做好准备”

ADR[6:

3]:

1001------(040880104400112)

“水司”“到了”“需要在”“水司”“下车的乘客请下车”

ADR[6:

3]:

1010------(0964802048136)

“下一站”“太白南路”“前往”“太白南路”“的乘客请做好准备”

ADR[6:

3]:

1011------(048880104480112)

“太白南路”“到了”“需要在”“太白南路”“下车的乘客请下车”

ADR[6:

3]:

1100------(0965602056136)

“下一站”“沙井村”“前往”“沙井村”“的乘客请做好准备”

ADR[6:

3]:

1101------(056880104560112)

“沙井村”“到了”“需要在”“沙井村”“下车的乘客请下车”

ADR[6:

3]:

1110------(09672064080136)

“下一站”“终点站”“电子城”“所有”“的乘客请做好准备”

ADR[6:

3]:

1111------(07264088080112)

“终点站”“电子城”“到了”“所有”“(下车)的乘客请下车”

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2