范文一:基于dsp的交通灯
DSP
信
息
工
程
学
院
班级,0312405
姓名,覃川
,学号031240507
摘要,
级合我的交通级和级级需求~级的活配级的交通信控制~级级定级控制方国状研灵号
式。级里主要介级信定级的具级级~系级的级级主要级级配级级置展级。本文提出了基于号体
DSP的交通信控制机的具级级方法~级出了级级的硬件、级件级级。首先提出系级号体的
级级级~然后以信机功能级主级介级上位机级级各功能的方法~以各模级体号级成级中心介
级下位机的硬件级级~级级机 程序级制的重点和级点介级了下位机的固件级级倌号~
即DSP程序~最后提出了以 U级文件方式级行配级级置~介级了 U级和文件系级级
级的基本级程.
级级字,交通信控制机号
Abstract,
COMBINING WITH THE TRAFFIC SITUATION IN CHINA AND THE ACTUAL DEMAND, TRAFFIC SIGNALCONTROL AT THE TIME OF FLEXIBLE WITH R & D, TO ACHIEVE TIMING CONTROL METHOD. HERE MAINLY INTRODUCE THE CONCRETE REALIZATION OF THE TIMING SIGNAL; SYSTEM DESIGNMAINLY AROUND THE TIMING SETTING EXPANSION. THIS PAPER PRESENTS THE CONCRETE REALIZATION METHODOF TRAFFIC SIGNAL CONTROLLER BASED ON DSP, GIVES THE DETAILEDDESIGN OF HARDWARE AND SOFTWARE. FIRST PROPOSED THE OVERALL DESIGN OF THE SYSTEM; AND THEN TO THE SIGNAL FUNCTION AS THE MAIN LINE THE COMPUTER REALIZATION METHOD OF EACH
FUNCTION, HARDWARE DESIGN AS THE CENTER TO INTRODUCE THE LOWER POSITION MACHINE BY EACH MODULE, KEY AND DIFFICULTY ABOUT PROGRAMMING MACHINEGROOM NUMBER DESCRIBES THE FIRMWARE DESIGN OF LOWER COMPUTER, NAMELY THE DSP PROGRAM; FINALLY PUTS FORWARD SETTING WITH TO U DISK FILE MODE, INTRODUCES THE BASICPROCESS OF U DISK AND FILESYSTEM IDENTIFICATION.
Key words: DSP、Traffic singnal controller
目级
1 系级述概
1.1级级目的
(1)级级自主立的级级~级级理级和级的级一~提高自我级手能力。独践
(2)利用DSP级级级境CCS C2000级源程序文件级行级级、级接、级级级~以完成基本装
的DSP级目文件级级。
(3)通级此次级程级级~级学DSPF2812芯片的I/O端口控制方法~熟悉字模的级级建构和使用~熟悉掌握在DSP级硬件级境下的程序级级流程~到以致用的目的。达学 1.2 级级任级
利用ICETEK-EDU级级箱提供的级级~级级模级级级生活中十字路口交通控制的程序灯。要求如下,
交通分级级三色~级、南、西、北各一级~用光信级级级交通的控制,级信灯黄灯号灯
号黄灯灯灯号即将表示通行~表示警告~级禁止通行~光级级表示信改级。级级级示,8×8点级级示位级~级倒级级~每秒改级级级示。两数数
正常交通控制信级序,正常交通信自级级级号灯号
(1)南北方向级~级西级灯灯(10秒)。
(2)南北方向级级级灯3次,级西级灯(4秒)。
(3)南北方向黄灯,级西级灯(2秒)。
(4)南北方向级~级西方向级;灯灯10秒,。
(5)南北方向级~级西方向级级灯灯3次(4秒)。
(6)南北方向级~级西方向;灯黄灯2秒,。
(7)返回(1)循级控制。
功能级,;1,级级级 ;启2,急救的级级级灯启
级急情级理,模级急情况仿况(重要级级通级、急救级通级等)级生级~交通警察手级控制(1)任意方向通行剩余级级多于当10秒~级级改成将10秒。
(2)正常级级到四面级灯(20秒)。
;3)直接返回正常信级序的下一通行信号个号(跳级级级级、级灯黄灯状)。2 方案级级
2.1级级思路
根据DSP的硬件中、定级器、级示断/控制模级上的级光二管控制的原理。用极定级器定级~用级接在2812DSP级展地址接口上的寄存器EWR和SNR控制级级黄灯的级级~用硬件外部中模级急救级的到。有急救级到级~向级全级~以便级急救断达达两
级通级。急救级通级后~交通恢级硬件中前的级。级级级级中申级~表示有急救灯断状触断
级通级。在级级箱上交通模级由级接在灯2812DSP级展地址接口上的寄存器EWR和SNR控制, 级寄存器均级两个6位寄存器,交通模级灯(CTRLR)的I/O地址:
0x108007。
2.2级级方案
2.2.1 级级原理
根据级级要求~由于控制是由不同的各级级按级序级生的~可以采用级机制控状状
制方法解此级级。级级方法是,首先列级所有可能级生的级~然后级些级级级来决状将状号
按级序级生级些级~级延级的级级用程序控制。级于突级情~可采用在正常级序的控状状况
制中入特殊控制序列的方式完成。级级级,采用插数250ms 一次中级行累加级断数。如表2.1所示。
级状 级 级数
信级号灯状状级定级级级(级级~起始级数级号示
级~ 级束级级) 1statusNSGreenEWRed10-1南北级灯,级西级灯10s;40~0 , 39,2statusNSFlashEWRed4-1南北级级~级西级灯灯4s ;16, 40~55 ,3statusNSYellowEWRed2-1南北~级西级黄灯灯2s ;8~56~63,4statusNSRedEWGreen10-1南北级~级西级灯灯10s;40,64,103,5statusNSRedEWFlash4-1南北级~级西级级灯灯4s ;16,104,119,6statusNSRedEWYellow2-1南北级~级西灯黄灯2s ;8,120,127,*statusNSRedEWRed20-1南北级~级西级灯灯20s;80, 0, 79,
表2.1 信级级号灯状
2.2.2 定级器级级
MS320F2812A部有三内个32位通用定级器;TIMER0/1/2,~定级器1和2被保留级级级操作系级;DSPBIOS,用~只有定级器0可以提供级用级使用。定级器采用中断方式~可以提高CPU的利用率。
2.2.3 倒级级级示级级
利用ICETEK-CTR上的级光二管级示级列模级级示。极DSP级级示的级形按列的级序将
存级起来(8×8点级~8字级~高位在下方~低位在上方个)~然后定级刷新控制级示。具方法是~以下控制字按先后级序、每级一级级送到端口体将两个0x602802~级送完级后~隔不太级的级级(以人眼级察不级级的级级级隔)再级送一遍。由于位级级“0”级点亮~所以需要级示的据将数取反。
2.2.4 级急下级级状况
利用ICETEK-CTR上级级级生外中~中正常信级序~级入突级情。断断号况
2.3 工作级状
状灯灯级一,南北级、级西级~延级10秒~10秒后南北级级灯3次~级西级延级灯4
秒~
状黄灯灯级二,南北、级西级~持级2秒~
级三,级西级、南北级~延级状灯灯10秒~10秒后级西级级灯3次~南北级灯持级4秒~
状黄灯灯级四,级西、南北级~持级2秒~
状状灯级五,级急级下级西南北均亮级~
3硬件级级
3.1硬件级级级体
1根据级级要求~由于控制是由不同的各级级按级序级生的状, 我可以采用级机制状
控制方法解此级级。级级方法是来决: 首先列级所有可能级生的级状~ 然后级些将状
级级号, 按级序级生级些级状~级延级的级级用程序控制状~级于突级情况, 可采用在正常
级序的控制中入特殊控制序列的方式完成。插
2突级事件级置, 在级级交通级程中出级突级会状况, 比如级有救级级或者110 级急级要通级,
此级就可以通级小级级级行突级模级。通级按级级入到中状况断服级子程序, 相当于原
来状况来框先要通级的级级在突级了以后就要先级级急级级通级。原理级如级3.1所示。TMS320F2812PGFA
JTAG
PORT 片上级源:
主级:150MHz
A/D RAM:128K*16bit
FLASH128*16bit
CAN
DSP级级SRAM:64K*16bit级展DSP引脚CPLDLED
数据
地址
控制
I/O
PWM
SPI级级RS232CAN
JTAG16路,12bit级级4个用级可控级级
级3.1 ICETEK-F2812-AE原理级框
3.2 交通级示模级灯
利用ICETEK-CTR上的一级级光二管极(共12只~分级级西南北四级、级级黄
三色)的亮级级级交通信的模级。号TMS320F2812 DSP有最多56级级的通用级个
入级出管脚。级些通用级入级出管脚通级级用寄存器可以由级件控制~比如指定级
入、级出以及级出级等。通级ICETEK-F2812-AE级估插板的座~级展板;通用级
出/控制模级ICETEK-CTR,将个灯板上的一指示和DSP的一通用级入个/级出
管脚直接相级。级管个脚级PWM12~可以级置成通用级入/级出管脚使用。级展原
理如级3.2所示。
级3.2 级光二管级级原理极
3.3级级示模级数
级级示采用数极放光二管级示级列级示。TMS320F2812 DSP的存级器级展接口;EMIF,用来与数大多外级级级级行级接~典型级用如级接片外级展存级器等。级一接口提供地址级、据级和一级控制级~数ICETEK-F2812-A级估将板已级些级展级引到了板
上的级展插极座上~供级展使用。级光二管级示级列由级展端口控制~EMIF接口的两个体寄存器提供具控制。原理级如级3.3所示。
级3.3 级级示原理数
3.4级级模级
级级模级采用外部外部存级器级展接口;EMIF,上的PS2接口级级~通级级描级判断级入级级。TMS320F2812 DSP的级展存级器接口;EMIF,用来与数大多外级级级级行级接~典型级用如级接片外级展存级器等。级一接口提供地址级、据级和一级控制级数~ICETEK-F2812-A级估将插板已级些级展级引到了板上的级展座上。级级的级描级由DSP的级展地址0x108001级出~有级级级入级~级此端口当当得到级描级~无级被按下级级此端口的级果级0。级级级级原理如级3.4所示。
级3.4 级级级级原理
4级件级级
4.1程序流程
级级级级级的功能是南北方向级~级西级灯10秒~南北方向级级级灯3次,级西级灯4秒~南北方向黄灯,级西级灯2秒~南北方向级~级西方向级灯灯10秒~南北方向级~级西灯方向级级灯3次4秒~南北方向级~级西方向;灯黄灯2秒,。在级急情下~任意况当方向通行剩余级级多于10秒~级级改成将10秒~正常级级到四面级灯20秒~然后直接返回正常信级序的下一通行信号个号(跳级级级级、级灯黄灯状)。程序流程级如级4.1所示。
级始
初始化, CPU级率、ICETEK-CTR、定级器、中控制寄存器、工作级断量
根据定级器级定前级数确当状
根据前级级置当状灯状指示级根据前级级置级光二管级示级列级当状极状
级取级级级入
级束?
是
否
级束
定级器中断服级程序入口
级工作级数量级在原基级上加1
退出定级器中断服级程序
级级中断服级程序入口
级置突级事件级志
退出级级中断服级程序
级4.1 程序流程级
4.2交通模级级示灯
级示/控制模级上的级光二管是由级接在极2812DSP级展地址接口上的寄存器EWR和SNR控制的。级寄存器均级两个6位寄存器~其位定级级表4.1表4.2。寄存两个器的地址均映射到2812DSP的级展空级~CTRLR地址级0x108007~DSP通级级级地址的操作写来两个状当修改寄存器上各位的级~寄存器某位取‘1’级级~相级指示灯
被点亮~取‘0’级级熄级。入当写CTRLR的据数(8位有效级)的高位级两‘00’级~数据
bit5bit4bit3bit2bit1bit0级-级 级- 黄级-级 西-级 西- 黄西-级的低6位入将写EWR寄存器~高位的级级当两‘01’级~入写SNR寄存器
表4.1 寄存器EWR
bit5bit4bit3bit2bit1bit0南-级 南- 黄南-级 北-级 北- 黄北-级
表4.2 寄存器SNR
4.3定级器及中级级断
TMS320F2812A部有三内个32位通用定级器;TIMER0/1/2,~定级 器1和2被保留级级级操作系级;DSPBIOS,用~只有定级器0可以提供级用级使用。定级器采用中方式~中级程如下,断断a,接受中级求。断断从必级由级件中;程序代级,或硬件中;一断从个个当引脚或一基于芯片的级级,提出级求去级停前主程序的级行b,响断响断断屏条级中。必级能级级中级求。如果中是可蔽的~级必级级足一定的件~按照一定的级序去级行。而级于非可屏断断会即响蔽中和级件中~立作出级。c,准级级行中断并服级程序保存寄存器的级。d,级行中断断服级子程序。级用相级得中服级程序ISR~级入级先级定的向量地址~并写且级行已好的ISR。定级器及中的流程如级断4.2。
级始
初始化DSP级级
初始化中向断量
等待中级生断
初始化定级器
改级指示级灯状
中断服级级始
中断服级级束
级4.2 定级器及中流程级断
4.4外中级级断
级急情级~利用况ICETEK-CTR上级级级生外中~中正常信级序~模级突级断断号情。级示况/控制模级ICETEK-CTR通级接口P8级接小级级~接收小级级级送的级描级~并
在每级个描级级束后保存~同级向DSP的XINT2级送中信~断号当DSP级级级级级将描级
送到据级级上。数个将小级级上每次按下一级级级生2级个描级、2次中。外中的程断断序流程级如级4.3所示。
级始
初始化,DSP级级、ICETEK-CTR初始化中控制寄存器断
等待中级生断
改级指示级灯状
中断服级级始
中断服级级束
。
级4.3 外中程序流程级断
5系级级级
5.1硬件级级
5.1.1级源级级
1,级接级源,打级级级箱~取出三相级源级接级(如右级)~级源级的一端入级级箱外部将插
左级箱壁上的级源插确孔中。级级级箱面板上级源级级级(位于级级箱底板左上角)级于“级”的位置~级接级源级的一端另至220V 交流供级插座上~保级级固级接。2,使用级源级接级(如右级~级是级插孔的)级接各模级级源,级级级箱级级源级。级接确断
ICETEK-CTR 板上级插座到级级箱底板上+12V级源 插座~ICETEK-CTR 板下级插座到级级箱底板上+5V 级源插座~如使用PP(口并)型仿真仿真插器~级级接器上座到级级箱底板上+5V级源插座~级接DSP 级估插板模级级源座到级级箱底板上+5V 级源插插插虚触座。注意各级要到底~防止接或接不良。
3,级接DSP 级估号当号板信级,需要级接信源级出到A/D 级入插号座级~使用信级接级(如右级)分级级接相级插座。
4,接通级源,级级级级箱上220V 级源插座(箱体左级)中保级管是否完好~在级接级源级以后~级级各模级供级级级是否正级接~确打级级级箱上的级源级级级(位于级级箱底板左上角)~使级级位于“级”的位置~级源级级右级的指示灯亮。
5.1.2 Emulator级级
1,启级Simulator 方式
双桌级级面上级级,
2,启级Emulator 方式
(1)首先级级箱级源级级。级接级级箱的外接级源级。将
(2)级级ICETEK-5100USB 器的仿真黑色JTAG 级是插确否正级接到ICETEK-VC5416-A 板的J3 级上。插仿真插个与注,器的级中有一孔加入了封级J3 级上插的缺级位置级重合~保级不级。会插
(3)级级是否已级用级源级接级级接了ICETEK-VC5416-A 板上的POW1 插座和级级箱底板上+5V 级源插座。
(4)级级其他级级是否符合级级要求。级级级级箱上三级级级级位置是个否符合级级要求。(5)打级级级箱上级源级级(位于级级箱底板左上角)~注意级级级上级色指示点灯亮。ICETEK-VC5416-A 板上指示灯D1 和D2 点亮。如果打级了ICETEK-CTR 的级源级级~ICETEK-CTR 板上指示灯L1、L2 和L3 点亮。如果打级了信源级源级级号~相级级级级的指示点灯亮。
(6)用级级箱附级的USB 信级级接号ICETEK-5100USB 器和仿真PC 机后面的USB 插座~注意ICETEK-5100USB 器上仿真灯指示Power 和Run 点灯亮。(7)级面上器双桌仿真初始化级级,如果出级下面级5.1提示口~表示窗初始化成功~按一下空格级级入下一步操作。
级5.1 初始化级
如果窗没窗将口中有出级“按任意级级级…”~级级级口~级级级级箱级源~再USB 级级从仿真器上拔出~返回第(2)步重级。
如果窗口中出级“The adapter returned an error.”~提示“按任意级级级并
…”表示初始瑞泰级新——ICETEK-VC5416-A-USB-EDU 级级系级级件级级教学指级III,7化失级~级级级口重级三次~如窗两将果仍然不能初始化级级级级级箱级源~再USB 级级器上从仿真拔出~返回第(2)步重级。
?双桌级级面上级级,
启级CCS2.21。
?如果级入CCS 提示级级~先级“Abort”~然后用“初始化ICETEK-5100USB2.0 仿真仿真几仿真器”初始化器~如提示出级~可多做次。如仍然出级~拔掉器上USB 接级(白色方形)~按一下ICETEK-VC5416-A 板上S1 级位按级~级接USB 接级再做“初始化ICETEK-5100 USB2.0 器”。仿真
?如果遇到反级不能级接或级位器、级入仿真CCS 级级~级打级Windows 的“任级管理器”~在“级程”片上的“卡称找映像名”级中级是否有“cc_app.exe”~级束将它再级。
5.2级件级级
5.2.1级件级级
CCS 可以工作在级级件级境中~仿真就是由级件在PC 机存中内构个虚造一级的DSP 级境~可以级级、行程序。运构但一般级件无法造DSP 中的外级~所以级件仿真通常用于级级级级件的算法和级行效率分析等。
在使用级件方式工作级~仿真卡仿真无需级接板和器等硬件。
(1)级级面上级级,级入桌CCS 级置口。窗
(2)在出级的口中按级级序级行如下级窗号5.2级置,
级5.2 级置级仿真
接着在下面出级的口中级级“窗否(N)”。
此级CCS 已级被级置成Simulator 方式(级件仿真TMS320VC5416 器件的方式)~如
果一直使用级一方式就不需要重新级行以上级置操作了。2, 级置CCS 通级ICETEK-5100USB 器级接仿真ICETEK-VC5416-A 硬件级境级
行级件级级和级级。
(1)级级面上级级,桌级入CCS 级置口窗
(2)在出级的口中按级级序级行如下级窗号5.3级置,
级5.3 CSS2级置级
(3)接着在下面的口中按级级序级行如下级窗号5.4级级,级5.4 CSS2级置级
在出级的口按级级序级行如下级窗号5.5级置,
级5.5 CSS2级置级
(5)在出级的口按级级序级行如下级窗号5.6级置,
级5.6 CSS2级置级
以上级置完成后~CCS 已级被级置成Emulator 的方式(用器级接硬件仿真卡板的方式)~并且指定通级ICETEK-5100USB 器级接仿真ICETEK-VC5416-A 级估板。如果您需要一直使用级一方式就不需要重新级行以上级置操作了。5.2.2程序行运
级级菜级“Project”的“New…”级。如级5.7所示。
级5.7 CSS2级置级
如下级~按级级序操作建立号Trafficlight.pjt 工程文件,
展级主口窗窗左级工程管理口中“Projects”下新建立的“Trafficlight.pjt”~其中各级均级空。
(2) 在工程文件中添加程序文件,
级级菜级“Project”的“Add Files to Project…”级~在“Add Files to Project”级级中框
级级文件目级级C:\ICETEK-VC5416-EDULab\Lab0601-UseCCS~改级文件级型级“C Source
Files(*.c;*.ccc)”~级级级示出的文件“来Trafficlight.c”~重级上述各步级~添加Trafficlight.cmd 文件,到volume 工程中~
添加 C:\ti\C5400\cgtools\lib\rts.lib。
(3)级级级接工程,级级菜级“Project”的“Rebuild All”级~或级级工具中的按级条~注意级级级程中CCS 主口下部的“窗Build”提示中级示级级信息~最后级出级级和窗将
警告的级级。数
5.3系级下级
(1)下级程序,级行File?Load Program ,在后随框打级的级级中级级级级建立的C:\ICETEK-VC5416-EDULab\Lab0601-UseCCS\Debug\Trafficlight.out 文件。(2) 级置级件级级点,在级目级级口中~级断窗双Trafficlight.c 激活级文件~个移级光级到main()行上~级级鼠级右级级级Toggle Breakpoint 或按F9 级置点断(外~级此行另双左级的灰色控制条断也可以级置或级除点级级)。
(3) 利用点级级程序,级级断Debug?Run 或按F5 行程序~程序自级运会停在main()函数上。
(4)在ICETEK-CTR 附级的小级级上按下按级~级察信是号否级足要求。6 致级
级学刘教从学丰期期级一直得到嵩老级的悉心级。他身上~我不级到了富的级级知级和分析级级、解级理级级的能力~决学更重要的是到了级人级事的道理和立独从研学事科工作的本级~深深感级老级级我的指级~感级老级在生活级上级我的帮助。
参献考文
[1] 和刘平等,DSP原理及级机控制级用基于—TMS320LF2407x系列[M],北京航
空航天大学出版社~2006,
[2] 改等宁娣. DSP控制器原理及级用[M],北京:科学出版社~2002.
[3] 系级使用级仿真明级~北京瑞泰级新有限公司。
[4] 源清科技.TMS320C54xDSP级用程序级级程教[M].机械工级出版社,2004.1.[5] 源清科技.TMS320C54x硬件级级程教[M].机械工级出版社,2003.1.
附级
源程序
main()
{
int nWork1,nWork2,nWork3,nWork4;
int nNowStatus,nOldStatus,nOldTimeCount,nSaveTimeCount,nSaveStatus;
unsigned int nScanCode;
nTimeCount=0; bHold=0;
uLightStatusEW=uLightStatusSN=0;
nNowStatus=0; nOldStatus=1; nOldTimeCount=0;
InitDSP();// 初始化DSP~级置行运速度
InitICETEKCTR();// 初始化级示/控制模级
InitTimer();// 级置定级器中断
// 根据级级器级数状切级级
// 根据级级置级和交通级状数灯状
while ( 1 )
{
if ( bHold && nNowStatus==statusHold )
{
if ( nTimeCount>=nStatusHold )
{
nNowStatus=nSaveStatus;
nTimeCount=nSaveTimeCount;
bHold=0;
}
}
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
if ( nNowStatus==nOldStatus )
{
switch ( nNowStatus )
{
case statusNSFlashEWRed:
nWork1=nTimeCount-
nStatusNSGreenEWRed;
nWork2=nStatusNSYellowEWRed-
nStatusNSFlashEWRed;
nWork3=nWork2/3;
nWork4=nWork3/2;
if ( nWork1>=0 && nWork2>0 &&
nWork3>0 && nWork4>0 )
uLightStatusSN=( (nWork1%nWork3)<=nwork4>=nwork4>
break;
case statusNSRedEWFlash:
nWork1=nTimeCount-
nStatusNSRedEWGreen;
nWork2=nStatusNSRedEWYellow1-nStatusNSRedEWFlash;
nWork3=nWork2/3;
nWork4=nWork3/2;
if ( nWork1>=0 && nWork2>0 &&
nWork3>0 && nWork4>0 )
uLightStatusEW=( (nWork1%nWork3)<=nwork4>=nwork4>
(0x00);
break;
case statusNSGreenEWRed:
nWork1=nStatusNSGreenEWRed/20;
if ( nWork1>0 )
{
nWork2=20-nTimeCount/nWork1;
if ( bHold )
{
if ( nWork2>10 )
{
nTimeCount=nWork1*10;
nWork2=10;
}
}
if ( nOldTimeCount!=nWork2 )
{
nOldTimeCount=nWork2;
SetLEDArray(nWork2);
}
}
break;
case statusNSRedEWGreen:
nWork1=(nStatusNSRedEWGreen-nStatusNSRedEWYellow)/20;
if ( nWork1>0 )
{
nWork2=20-(nTimeCount-
nStatusNSRedEWYellow)/nWork1;
if ( bHold )
{
if ( nWork2>10 )
{
nTimeCount=nStatusNSRedEWYellow+nWork1*10;
nWork2=10;
}
}
if ( nOldTimeCount!=nWork2 )
{
nOldTimeCount=nWork2;
SetLEDArray(nWork2);
}
}
break;
case statusHold:
nWork1=nStatusHold/20;
if ( nWork1>0 )
{
nWork2=20-nTimeCount/nWork1;
if ( nOldTimeCount!=nWork2 )
{
nOldTimeCount=nWork2;
SetLEDArray(nWork2);
}
}
break;
}
}
else
{
if ( bHold )
{
nSaveStatus=nNowStatus;
nSaveTimeCount=nTimeCount;
nNowStatus=statusHold;
nTimeCount=0;
if ( nSaveStatus==statusNSFlashEWRed ||
nSaveStatus==statusNSYellowEWRed )
{
nSaveStatus=statusNSRedEWGreen;
nSaveTimeCount=nStatusNSRedEWYellow;
}
else if ( nSaveStatus==statusNSRedEWFlash ||
nSaveStatus==statusNSRedEWYellow )
{
nSaveStatus=statusNSGreenEWRed;
nSaveTimeCount=0;
}
}
nOldStatus=nNowStatus;
switch ( nNowStatus )
{
case statusNSGreenEWRed:
uLightStatusEW=0x24; uLightStatusSN=0x49;
SetLEDArray(20);
break;
case statusNSFlashEWRed:
uLightStatusEW=0x24; uLightStatusSN=0x49;
SetLEDArray(0);
break;
case statusNSYellowEWRed:
uLightStatusEW=0x24; uLightStatusSN=0x52;
SetLEDArray(20);
break;
case statusNSRedEWYellow:
uLightStatusEW=0x12; uLightStatusSN=0x64;
SetLEDArray(20);
break;
case statusNSRedEWGreen:
uLightStatusEW=0x09; uLightStatusSN=0x64;
SetLEDArray(20);
break;
case statusNSRedEWFlash:
uLightStatusEW=0x09; uLightStatusSN=0x64;
SetLEDArray(0);
break;
case statusHold:
uLightStatusEW=0x24; uLightStatusSN=0x64;
SetLEDArray(20);
break;
}
}
CTRLR=uLightStatusEW; CTRLR=uLightStatusSN;// 级置交通
灯状级
RefreshLEDArray();// 刷新级光二管级示极
nScanCode=port8001;// 级级级级描级
nScanCode&=0x0ff;
if ( nScanCode==SCANCODE_Enter )break;
}
EndICETEKCTR();
exit(0);
}
// 定级器中断数服级程序~级行级级级
void interrupt time(void)
{
nTimeCount++;
nTimeCount%=nTotalTime;
}
// 级置级光二管级示极内容
void SetLEDArray(int nNumber)
{
int i,k,kk,kkk;
kkk=nNumber;
k=kkk/10*4; kk=kkk%10*4;
for ( i=0;i<4;i++>4;i++>
{
ledbuf[7-i]=~led[k+i];
ledbuf[3-i]=~led[kk+i];
}
}
// 级存中点级送级光二管级示将极
void RefreshLEDArray()
{
int i;
for ( i=0;i<8;i++>8;i++>
{
CTRGR=ledx[i];
CTRLA=ledbuf[i];
}
}
// 初始化DSP~级置行运速度=8MHzvoid InitDSP()
{
REGISTERCLKMD=0;// 速度级置=8MHz
}
// 级置定级器、参数断允级中
void InitTimer()
{
unsigned int k;
asm("ssbxINTM");// 级中~级行级级级置级不级断打级
// 级置通用定级器
k=PMST;// 级置PMST寄存器
PMST =k&0xff;// 中向断量表起始地址=80H
IMR = 0x0c;// 使能TINT
TCR = 0x41f;// 级分级系级数16
TIM = 0;// 级级级器数清0
PRD = 0x0f423;// 周期寄存器级0ffH
TCR = 0x42f;// 级位、级启
IFR = 0x0c;// 中级清断志位
port3004=0;// 使能XINT2
asm("rsbxINTM");// 级中断
}
// 初始化ICETEK-CTR板上级级
void InitICETEKCTR()
{
int k;
CTRGR=0;// 初始化ICETEK-CTR
CTRGR=0x80;
CTRGR=0;
CTRLR=0;// 级级级西方向的交通灯
CTRLR=0x40;// 级级南北方向的交通灯
CTRLR=0x0c1;// 级级光二管级示级列启极
for ( k=0;k<8;k++>8;k++>
{
ledbuf[k]=0x0ff;// 级示级空白
ledx[k]=(k<4);>4);>
}
k=CTRCLKEY;// 清冲区除级级级
}
void interrupt xint2(void)// XINT2中断服级程序{
bHold=1;
}
void EndICETEKCTR()
{
int k;
CTRLR=0;// 级级级西方向的交通灯
CTRLR=0x40;// 级级南北方向的交通灯
CTRLR=0x0c0;// 级级级光二管级示级列极
k=CTRCLKEY;// 清冲区除级级级}
范文二:基于dsp交通灯的设计
盐 城 师 范 学 院
毕 业 论 文 (设 计 )
2013-2014学年度
基于 DSP 的十字路口交通灯的设计
学生姓名 周志豪
学 院 黄海学院
专 业 电子信息工程
班 级 10(12)
学 号 10418208
指导教师 邱作春
2014年 5月 20日
毕业论文(设计)承诺书
本人郑重承诺:
1、本论文(设计)是在指导教师的指导下,查阅相关 文献,进行分析研究,独立撰写而成的。
2、本论文(设计)中,所有实验、数据和有关材料均 是真实的。
3、本论文(设计)中除引文和致谢的内容外,不包含 其他人或机构已经撰写发表过的研究成果。
4、本论文(设计)如有剽窃他人研究成果的情况,一 切后果自负。
学生(签名) :
2014年 5月 20日
基于 DSP 的十字路口交通灯的设计
摘 要
本文主要介绍一种基于数字信号处理的交通信号灯的设计, 该系统能够完成的主要 功能有:对城市主要十字路口路口进行控制;使各路口有固定的工作周期。该设计的主 控芯片为 TMS320LF2407,以对单个路口控制为研究对象,单个路口作为整个交通网络 最基本的组成单元,对于单个路口的控制方法的研究是对整个交通网络研究的基本,具 有非常重要的意义。
关键词:TMS320LF2407、交通信号灯、 CCS 开发软件
The traffic lights crossroads based on DSP design
ABSTRACT
This design introduces a DSP-based traffic light control system design , the main function of the system can be achieved are: to control the city's main traffic junctions ; make each intersection with a fixed duty cycle. The design for the TMS320LF2407 to a single intersection control for the design, a single junction transport network as a whole, the basic component unit , a control method for the study of a single junction is the basic research of the entire transport network , has a very important meaning.
KEY WORDS:TMS320LF2407, traffic light, Code Composer Studio
前 言 ........................................................................................................................................ 1 1 设计总体方案 ......................................................................................................................... 2 1.1设计思路 ....................................................................................................................... 2 1.2红绿灯系统工作流程图 ............................................................................................... 2 1.3系统工作原理 ............................................................................................................... 3 1.4系统设计流程 ............................................................................................................... 3
1.5设计小结 ....................................................................................................................... 3
2 硬件的选择 ............................................................................................................................. 4 2.1主制器的选择 ............................................................................................................... 4 2.1.1 TMS320LF2407的基本特点和资源配置 .................................................... 4 2.1.2 DSP引脚功能介绍 . ....................................................................................... 4 2.2电压转换芯片的选择 ................................................................................................... 5 2.3锁存器的选择 ............................................................................................................... 6 2.4 CPLD的选择 ................................................................................................................ 6 2.5 指示灯输出电路 .......................................................................................................... 7
2.6 系统总硬件电路 .......................................................................................................... 8
3 DSP芯片的开发工具介绍 . .................................................................................................... 9 3.1 CCS(Code Composer Studio) . ....................................................................................... 9 3.1.1主要功能 ........................................................................................................ 9 3.1.2 CCS的主要组件 . ......................................................................................... 10 3.2 DSP的编程 . ................................................................................................................ 10 3.3 DSP的命令文件编写 . ................................................................................................ 11
3.4 C语言的中断处理 ..................................................................................................... 11
4 系统调试 ............................................................................................................................... 11 4.1硬件调试 ..................................................................................................................... 11 4.2软件调试 ..................................................................................................................... 11 4.3程序流程图 ................................................................................................................. 12 4.4运行状态 ..................................................................................................................... 12
4.5实验结果分析 ............................................................................................................. 14
5 总结 ....................................................................................................................................... 14 参考文献 .................................................................................................................................. 15 附录 .......................................................................................................................................... 17
19世纪初在美国首次出现了运用电气工作的交通信号灯。 这种交通信号灯是由红绿 两种颜色的发光器件组成。红灯表示“停止” ,绿灯表示“通过” 。随着这些年我国经济 的迅猛发展,我国城市基础交通管控系统出现了不少用传统方法不好解决的问题。同时 交通拥挤现象日益常见,由于交通堵塞造成的经济损失越来越严重。现在交通管理系统 已不能很好的匹配我国经济快速发展发展的要求。
在车流控制中引入以数字信号处理为基础的交通灯控制代替人工在十字路口的指 挥,此举将会大大提高城市交通的安全性、同时也能很大程度上提高交通管控的服务质 量。随着近些年中国车辆的不断增加,怎么很好的解决交通拥堵问题将是一个我国必须 面对且必须解决的问题。拥有一个良好的交通管理系统,将会很大程度的节省社会资源 的浪费,同时也会为了更好的实现和谐的城市交通发挥更多作用。
1设计总体方案
1.1设计思路
一个较好的交通信号灯控制系统, 会使在道路拥挤车辆违章管制等方面产生技术层 次的革新。交通灯分为红绿两色,东,西,南,北各一组信号灯,用红绿灯亮灭来实现 对车辆通行的控制:绿色的信号灯亮表示通行, 绿色的信号灯闪烁表示信号灯将要改变, 红色的信号灯亮表示禁止通行。 同时设计时需要考虑东西方向和南北方向信号灯的亮灭 对称问题。本设计依据数字信号处理中的硬件中断模块、 I/O访问的原理,以及定时器 功能。用定时器定时, I/O口控制红绿灯的亮灭。本设计的交通灯模块是由低 8位数据 线控制。
1.2红绿灯系统工作流程图
正常情况下系统工作流程如图 1-1所示。
图 1-1 系统工作流程图
1.3系统工作原理
本设计的硬件是由 DSP 模块、 LED 模块等组成。信号灯受芯片中输出高低电平的 控制。定时模块采用硬件定时和软件定时相组合的方法,再用软件计时实现所需要的定 时。
本次设计中首先南北方向红灯亮 20秒,在南北方向红灯亮的同时,东西方向绿灯 亮 20秒。当系统运行到 20秒时,交通灯东西方向的绿灯闪烁 3次,而后南北方向绿灯 亮维持 20秒, 东西方向红灯亮维持 20秒, 系统再次运行 20秒后, 南北方向绿灯闪烁 3次后,东西方向的红灯灭,东西方向的绿灯亮。而后的时间交通灯的工作将重复以上环 节。
1.4系统设计流程
本设计主要实现对交通灯的智能控制,具体操作方式需结合实际硬件选择,软件编 写来实现。设计流程如图 1-2所示。
图 1-2 设计流程图 1.5设计小结
本章主要是介绍基于 DSP
的交通灯控制系统的功能和总体方案的构思与实际设计
方向。主要是从系统实际的的总体功能为出发点,详细展开讨论了交通灯系统的总体设 计的可行性方案。关于硬件选择,电路的搭建,软件设计,后期的调试等更加细致的问 题,将在下面的章节展开讨论。
2硬件的选择
2.1主控制器的选择
本设计采用的是美国 TI 公司的经典 DSP 芯片 TMS320LF2407。此系列的的 CPU 结构 设计成本很低廉、功耗也相对较低、但是性能却很优秀。 TMS320LF2407采用改进后的 哈佛处理结构,指令采用流水顺序操作。 TMS320LF2407的运算数据非常快,单次指令 处理周期只需要 10ns 。 同时 ,LF2407片内集成了更多的外部设备 , 构成了真正意义上的数 字信号处理器。 TMS320LF2407提供的串口功能和数据传送功能很大程度上方便它在通 信领域的应用。
2.1.1 TMS320LF2407的基本特点和资源配置
该 TMS320LF240x 系列 DSP 控制器是新一代数字信号处理器(DSP )控制器的新成 员同时也是定点 DSP 的 TMS320C2000平台的一部分。 此系列芯片内部集成更多外设, 以 提供真正的单芯片 DSP 控制器。虽然代码与现有 C24X DSP 控制器的设备通用, 但是 240X 提供了更高的处理性能。
TI 公司的 240X 一代 DSP 提供更大的存储容量,以满足各种应用所需的数组。同时高 达 32K 字闪存容量很好解决了工业化生产时产生的成本效益问题和可重编程问题。 所有的 240XDSP 提供已经被优化的数字电机控制模块和电源转换模块。 该模块的功 能包括中心或边缘对齐,避免可编程死区,并同步模拟到数字的转换。
2.1.2 DSP 引脚功能介绍
TMS320LF2407数字信号处理器具有 144条引脚,如图 2-1所示。
图 2-1 TMS320LF2407数字信号处理器引脚图
2.2电压转换芯片的选择
本设计采用 74LVC16245A 作为电压转换芯片。 该 74LVC16245A 是专为数据总线之间 的异步通信而设计的,实现最大限度地减少了外部定时要求。该芯片可作为两个 8-bit 收 发器或一 16-bit 收发器。 74LVC16245A 的输入端可承受 5.5V 信号,其输出信号的电平为 3.3V 。其功能是完成对芯片内部的 Flash 的编程工作,当程序在 PC 机上调试通过后,通 过此接口就可以把程序完整地下载到 Flash 中去。 74LVC16245A 引脚如图 2-2所示。
图 2-2 74LVC16245A 引脚图
2.3锁存器的选择
该 74HC573是高速的 Si- gate CMOS芯片,且引脚与低功率肖特基兼容 TTL (输入通 道) 。当 LE 为高电平时,数据在在 D 输入锁存器。在这种条件锁存器是透明的,即一 个锁存输出将改变状态每次其相应的 D-输入变化。
74HC573引脚如图 2-3所示。
图 2-3 74HC573引脚图
2.4 CPLD 的选择
本设计是采用 CPLD (XC95144)给 DSP 扩展了一个 I/O口,来实现 DSP 对 I/O口 的访问。 它是由八个功能块构成,提供 3,200个可用逻辑门同时系统仅有 7.5 ns的传 播延迟。电源管理中 XC95144芯片会主动关闭未使用的宏单元,以减少功耗。它的特
点如下:
? 144个宏单元 3200可用门;
?多达 133个用户 I / O引脚;
? 10000次编程 /擦除循环寿命;
?增强的引脚锁定架构;
?灵活的 36V18功能块;
?用户可编程的接地引脚功能;
?设计保护模式扩展安全功能;
? 3.3 V或 5 V的 I / O能力。
XC95144引脚图如图 2-4所示。
图 2-4 XC95144引脚图 2.5 指示灯输出电路
交通信号灯电路如图 2-5所示。
图 2-5 交通信号灯模块图
此模块由发光二极管和一个锁存器组成。
LF2407 DSP产生的数据低八位电平输入信号, 同时锁存器的控制信号由 LF2407模 块输出,但必须经由 CPLD 模块译码后再控制锁存器。
2.6 系统总硬件电路
系统硬件图如图 2-6所示。
图 2-6系统硬件图
3DSP 芯片的开发工具介绍
DSP 芯片的功能实现需要一套完备的软件和硬件开发工具。 DSP 芯片的开发工具可 以分为程序生成工具和程序调试工具两大类。
C 语言编译器将高级的 C 语言源程序自动编译成 DSP 需要的的汇编源代码程序。 汇编器的功能是将汇编语言程序文件汇编成低级的机器语言, 在源文件中包含了汇 编指令,宏命令等。
链接器把汇编生成的 COFF 目标文件组合成一个可执行的 COFF 目标模块。 它能调 整并解决外部符号参数。链接器的输入是 COFF 目标文件和由此产生的目标库,它也可 以接受来自文档管理器中的目标文件。
3.1 CCS(Code Composer Studio)
CCS (Code Composer Studio)是一种有关于 TMS320系列 DSP 的专业开发软件,它 工作在 Windows 操作系统下,采用图形接口界面,提供环境的配置、编辑源文件、程序 调试、跟踪以及分析等工具,可以帮助用户在一个软件环境下执行编辑、编译、链接以 及数据分析等工作, 能对 TMS320系列的 DSP 执行指令级的仿真以及实现数据分析的实时 化。 此外, 它还具有丰富的输入 /输出库函数和信号处理的库函数, 极大的方便了 TMS320系列 DSP 软件开发过程。
3.1.1主要功能
(1) 具有集成可视化代码编辑界面, 用户能够经过它的界面直接编写 C 语言源程序、 汇编语言源程序、 . CMD 文件等。
(2)具有集成代码生成工具,包括链接器、汇编器、优化 C 编译器等,把代码的编 辑、编译、链接和调试等很多功能集成到同一软件环境中。
(3)高性能编辑器兼容汇编文件的动态语法加亮显示,用户能很简洁的浏览代码, 察觉语法错误。
(4) 用户程序的实行项目可以由工程项目的管理工具管理。 在产生目标程序以及程 序库的流程中,构建各种程序相对应的跟踪信息,经过跟踪信息对不一样的程序进行区 别管理。
(5)基本的调试工具包含了装入实行代码、观察寄存器、变量窗口、存储器、变反
汇编等效果,而且具备 C 源代码级别的调试。
(6)断点工具,可以在程序调试的过程当中实现条件、软件和硬件断点的设置。
(7)探测点工具,能够用于算法仿真,数据实时监视等。
(8)分析工具,包含仿真器以及模拟器的分析,能够用在监视跟模拟硬件的功能、 评估代码执行的时钟。
(9)数据的图形显示工具,能够把运算结果以图形来显示,包含显示时域 /频域波 形、图像、眼图、星相图等,而且可以进行自动的刷新。
(10) 供应 GEL 工具。使用 GEL 扩展语言, 用户能够编写属于自己的控制面板 /菜单, 配置 GEL 菜单的选项,简洁容易的修改变量,配置参数等。
3.1.2 CCS 的主要组件
(1)集成代码工具:它能够对汇编语言、 C 语言及混合语言的编程的 DSP 的源程序 执行编译,并链接成能够运行的 DSP 程序,包含了链接器、汇编器、 C/C++的编译器、 建库工具等。
(2) CCS 的集成开发环境:该环境综合了编译、编辑、链接、软件的仿真、硬件的 调试以及实时的跟踪等功能为一体,含有编辑、工程管理以及调试工具等。
(3) 应用程序接口 API 和 DSP/BIOS实时内核插件:它们的设计主要是为了实时信号 处理应用,包括实时分析工具、 DSP/BIOS配置工具等。
(4)实时数据交换 RTDX 插件及相应的程序接口 API :他们可对目标系统数据进行 实时监视,实现 DSP 与其他应用程序的数据交换。
(5)由 TI 公司以外的第三方提供的各种应用模块插件。
3.2 DSP 的编程
C 语言作为当今世界上运用最为普及的高级程序设计语言之一,它具备了超强的图 形处理能力,支持大量的显示器和驱动器。同时还具备了高超的计算能力、逻辑判断能 力。对于不同的编译器也有各种适应方法。 C 是结构式语言之一,结构式语言的明显特 点是数据与代码的分隔化,就是程序除了主要的信息交流之外每个部分都是相互独立 的。该种结构化方式能够让程序层次分明,容易运用、维护和调试。 C 语言供应给用户 的形式是函数的形式,这些函数可方便的移动运用,而且含有很多循环、条件语句以便 来控制程序流向, 从而让程序完全结构化。 语法制约程度较小, 程序设计自由度比较大。
3.3 DSP 的命令文件编写
C 语言程序设计只要单独编写一个,不用思考硬件的存储空间配置状态,当用户在 CCS 集成开发环境中编写 C 程序时,在目标硬件的存储空间配置被 CMD 命令文件指明情 况之后,链接器可以主动装载数据到指定的位置空间。
3.4 C 语言的中断处理
在定点 C 编译器中, C 函数能够用来直接处理中断,中断处理运用 C 函数执行时,应 包含以下环节 :
(1)在 C 环境中创建中断服务函数。
(2)初始化中断向量表,在存储器映像中建立中断向量表。
(3)设置中断允许位和中断标志,允许中断源中断。
4系统调试
4.1硬件调试
在试验箱上按照原理图将硬件电路连接,先确定导线链接是否能正常,测量各个电 阻的阻值大小是否符合要求。
在确定所有元器件正常时,用万用表测与地相接的部分是否导通,还有各部分电路 的连接是否正常,在确定后连接正常后,打开试验箱电源。
4.2软件调试
在确定硬件系统连接正常的情况下, 用仿真器将电脑与试验箱连接, 打开 CCS2000软件,将设计好的程序装载到 CCS2000中。首先进行单步运行,以检查每一步程序是 否都能正常工作,遇到问题可以单步修改,然后再进行运行拔下仿真器,让系统进行离 线操作。
4.3程序流程图
软件流程图如图 4-1所示。
图 4-1 程序流程图
4.4运行状态
状态一:南北绿灯、东西红灯,延时 20秒, 20秒后南北绿灯闪 3次,东西红灯延 时 6秒,如图 4-2所示。
图 4-2 运行状态图
状态二:东西绿灯、南北红灯,延时 20秒, 20秒后东西绿灯闪 3次,南北红灯持 续 6秒,如图 4-3所示。
图 4-3 运行状态图
4.5实验结果分析
设计至此通过对硬件的调试和软件的调试以及程序的下载, 在实验板上已经能实现 本设计的最初构想。在多次观察交通灯的运行状态,实现了交通灯的亮灭,程序的循环 也没有出现问题。
5总结
本系统的核心是基于了 TI 公司的 TMS320LF2407芯片,同时配合了外围其他一些 芯片 (如:SN74LVC16245A 电压转换芯片, 74HC573锁存器芯片) 来设计交通灯系统, 实现了东西南北四个方向红绿灯按照设计要求的亮灭。并通过 74HC573锁存器的输出 端口实现对红,绿灯的控制。系统设计简便,实用性强,操作简便,程序设计简便。 系统不足:本系统中没有实现黄灯的等待闪烁时间,以及自动根据实际车流量的大 小改变红绿灯变化的时间,另外,本设计没有充分考虑到城市交通系统的联网并行,没 有实现城市交通系统的人工智能控制。
参考文献
[1]曾义芳 . TMS320 DSP基础知识及系列芯片 . 北京:北京航天航空大学出版社 ,2006. [2]彭启宗 . DSP技术实验指导用书 . 北京:高等教育出版社 ,2010.
[3]胡圣尧 . DSP原理及应用 . 南京:东南大学出版社 ,2008.
[4]孙承龙 . DSP实用教程 . 北京:电子工业出版社 ,2011.
[5]王玮 . DSP原理与实例应用 . 北京:清华大学出版社 ,2003.
[6]梁义涛 . 现代 DSP 技术及应用 . 北京:清华大学出版社 ,2012.
[7]周霖 . TMS320系列 DSP 原理,结构及应用 . 北京:机械工业出版社 ,2012.
[8]TMS320LF240x User’ Guide.Texas Instruments Incorporated,2002.
[9]张爱梅,孔文杰 . 基于图像处理和 DSP 的交通灯实时智能控制系统研究 . 郑州大 学学报 ,2010, 31(3) :54-56.
[10]徐向美, 黄乡生 . 基于 DSP 的交通灯综合控制系统的设计 . 电子质量 ,2008, (8) : 32-33.
致 谢
大学四年的时间,转眼即逝,如今即将毕业,回首四年,有过奋斗,有过成功,也 经历过失败,但这大学的一切时光都将成我人生的珍宝。
对于此篇论文我要感谢我的论文指导老师,他为人随和热情,细心。从选题、定题 开始,一直到最后论文的反复修改、润色,邱老师 始终认真负责地给予我深刻而细致 地指导,帮助我开拓研究思路,精心点拨、热忱鼓励。尤其是在程序的编译和仿真方面 给了我极大的鼓舞和动力。正是邱老师的无私帮助与热忱鼓励,我的毕业论文才能够得 以顺利完成, 谢谢邱老师。 老师的博学和人品, 不仅在学业对我潜心引导, 而且在生活、 做人等方面也给予我很大的关心和悉心指导,这些都令我终身难忘,我将铭记在心。
周 志 豪
2014年 5月 25日
附录
.title
.global _c_int00
.mmregs
LED_ADDR .set 5008h
STATUS0 .set 00h
STATUS1 .set 01h
STATUS2 .set 02h
STATUS3 .set 03h
STATUS4 .set 04h
STA2_PRE_0 .set 05h
STA2_PRE_1 .set 06h
STA4_PRE_0 .set 07h
STA4_PRE_1 .set 08h
CURRENT_STA .set 60h
.data
;.word 0f00h,5a00h,5f00h,0a500h,0af00h,0a00h,5a00h,0500h,0a500h .word 0f000h,0a500h,0f500h,5a00h,0fa00h,0a000h,0a500h,5000h,05a00h ;.word 0C300h,9600h,0D700h,6900h,0EB00h,08200h,9600h,04100h,06900h DELAY .macro sec_tenth ; 延时 sec_tenth/10 秒
STM sec_tenth-1,AR5
loop1 STM #09h,AR6
loop0 STM #49999,AR7
BANZ $,*AR7-
BANZ loop0,*AR6-
BANZ loop1,*AR5-
.endm
.sect
rst: B _c_int00
NOP
NOP
.space 15*4*16
int0: b bus_come
NOP
NOP
int1: nop
nop
nop
nop
int2: ;b bus_come
nop
nop
nop
nop
.space 13*4*16
.text
_c_int00
LD #0h,DP
STM #3000h,SP
SSBX INTM
SSBX SXM
STM #07FFFh,SWWSR ;IO 总线外部等待时间 14个周期 STM #01h,2Bh
STM #0h,CLKMD ;20MHz 工作
tst BITF CLKMD,#1h
BC tst,TC
STM #1087h,CLKMD
RPT #0FFh
NOP
ST #0FFFFh,IFR
ORM #0001h,IMR
RSBX INTM
LD #40h,DP
LD STATUS0,T
PORTW STATUS0,LED_ADDR ; 全部红灯
DELAY #10 ; 延时 1秒
circle LD STATUS1,T
;nop
;nop
;nop
;nop
PORTW STATUS1,LED_ADDR ; 南北红灯、东西绿灯 ;nop
;nop
;nop
;nop
DELAY #200 ; 延时 20秒
STM #2h,BRC
;nop
;nop
;nop
;nop
RPTB flash1
;nop
;nop
;nop
;nop
LD STA2_PRE_0,T
;nop
;nop
;nop
;nop
PORTW STA2_PRE_0,LED_ADDR
;nop
;nop
;nop
;nop
DELAY #3
LD STA2_PRE_1,T
;nop
;nop
;nop
;nop
PORTW STA2_PRE_1,LED_ADDR
;nop
;nop
;nop
;nop
DELAY #3
flash1 NOP ; 南北绿灯闪 3次、东西红灯
LD STATUS2,T
PORTW STATUS2,LED_ADDR ; 南北绿灯、东西红灯 DELAY #30 ; 延时 3秒
LD STATUS3,T
PORTW STATUS3,LED_ADDR ; 南北红灯、东西绿灯 DELAY #200 ; 延时 20秒
STM #2h,BRC
RPTB flash2
LD STA4_PRE_0,T
PORTW STA4_PRE_0,LED_ADDR
DELAY #3
LD STA4_PRE_1,T
PORTW STA4_PRE_1,LED_ADDR
DELAY #3 ; 南北红灯、东西绿灯闪 3次
flash2 NOP
LD STATUS4,T
PORTW STATUS4,LED_ADDR ;
DELAY #30 ; 延时 3秒
B circle
bus_come
PSHM AR5
PSHM AR6
PSHM AR7
PORTW STATUS0,LED_ADDR ; DELAY #100 ;
ST T,CURRENT_STA
PORTW CURRENT_STA,LED_ADDR ; POPM AR7
POPM AR6
POPM AR5
RET
范文三:基于图像处理和dsp的交通灯
2010年 5月
郑 州 大 学 学 报 (工 学 版 )
May 2010第 31卷 第 3期
Journal of Zhengzhou University (Engineering Science )
Vol 131 No 13
收稿日期 :2009-12-25; 修订日期 :2010-03-03
作者简介 :张爱梅 (1964-) , 女 , 河南南阳人 , 郑州大学副教授 , 硕士生导师 , 主要研究方向为图形图像处理 , E -mail:zhangai m ei@zzu . edu . cn .
文章编号 :1671-6833(2010) 03-0054-03
基于图像处理和 DSP 的交通灯实时智能控制系统研究
张爱梅 , 孔文杰
(郑州大学 机械工程学院 , 河南 郑州 450001)
摘 要 :针对道路交叉口各通行方向出现车辆分布不均的场合 , 例如在城市郊区或主干道和非主干道 的交叉口 , 提出一种以 DSP 嵌入式系统为硬件平台的交通信号灯智能化控制系统设计方案 . 该系统用
CCD 摄像机采集反映道路交通现场情况的视频图像 , 然后对获取的视频图像进行一系列的处理 , 并用背
景减除法来快速获得道路交叉口各相位的车辆信息 , 制相应红绿灯的时间和变化 , 以实现交通管制信号灯的自适应控制 . , 扩 充灵活等特点 .
关键词 :DSP 嵌入式系统 ; 图像处理 ; 交通信号灯 ; 中图分类号 :TP273. 24 文献标识码 :A
0 引言
, 我们 常看到这样的情形 :在南北方向的车道上停留了 非常多的车辆 , 在东西方向的车道上只有少数的 车辆甚至是没有 , 而这时绿灯时间却一直保持在 这个东西方向的相位上 . 显然 , 这样是不合理的 , 造成了交通延误和对时间的浪费 . 造成这种现象 的原因是现在交叉路口红绿灯的时间 , 绝大部分 是通过一个固定的时间参数机械地控制的 , 如每 60s 或 30s 变换一次红绿灯状态 , 这显然是有待 改进的 .
现有的一种根据现场情况控制红绿灯状态的 方法是依据车流量
[1]
的变化来调整红绿灯状态 ,
车流量是通过统计一段时间内道路上通过的车辆 数目的方法得到的 . 这种方法反映的是一个时间 段内通过的车辆情况 , 数据中包括已经通过的车 辆 , 它不能实时地反映现场在某一时刻的情况 . 这 显然无法满足复杂多变的现场的需要 , 因为现场 的变化是非常快的 . 而且当一个方向的车辆拥堵 、 另一个方向畅通时 , 通过测试区的相对车流量计 算误差就会大大增加 .
基于此 , 笔者提出了一种基于图像处理技术 和 DSP 的实时地根据现场情况自动地调整红绿 灯状态的控制系统 .
1 系统设计指导思想
由于本系统设计的目的就是要实时地根据现 场状况控制交通信号灯 , 以使交通信号灯因地制 宜 , 更好地控制 、 疏导交通 , 达到智能化 . 因此设计 本系统首先要满足实时性 .
本交通灯实时智能控制系统涉及到硬件系统 和软件系统 , 按照系统实时性的要求 , 硬件系统不 仅要具有很强的数据处理能力 , 而且处理速度要 快 ; 软件系统要求算法尽可能的简单实用 , 执行 快速 .
2 硬件系统设计
该系统的硬件主要由图像采集模块﹑图像处 理模块﹑控制模块三部分组成 . 图像采集模块的 主要部分是 CCD 摄像机 , 完成对现场图像的采 集 . 图像处理模块完成对摄取的图像的处理 , 硬件 基础是 DSP 芯片及一些外接存储器 . 控制模块负 责 :图像处理模块得到的参数传递到 P LC 控制器 后 , P LC 通过这个参数控制红绿灯的状态 . 其中图 像处理模块是最重要的 , DSP 芯片和外接存储器 的选择是硬件系统的核心 .
根据本系统的设计指导思想及通过查阅大量 的资料和实验 , 本系统选择 T m s320dm642作为硬 件系统的基础 , 它是 TI 公司开发的众多 DSP 系列
第 3期 张爱梅 , 等 :基于图像处理和 DSP 的交通灯实时智能控制系统研究 55
产品之一 . 相关的其他硬件以能够和其相匹配以
及反映灵敏和快速为准则 [2]
.
T m s320d m642是 T m s320c6000系列 DSP, 具 有快速的数据处理能力和强大的接口能力 , 而且 易于编程 . 它是为图像及音频处理等功能而设计 的专用 DSP, 本系统选用它作为系统处理核心 , 其 主要结构如图 1示
.
图 1 DM 642主结构图
F i g . 1 DM 642ma i n structure
其中有 3个视频输入输出端口 VP ORT0-1个以太网口 E MAC E I 等 , .
可确定为如图 2
图 2 系统的工作流程
F i g . 2 W ork i n g flow chart of the syste m
当系统工作时 , 由 CCD 摄像机摄取的图像经
过视频解码器完成 A /D转换后通过视频输入端 口 VP ORT0或 VP ORT1被送到 F I F O 缓冲器 , 然后 到数据存储器 S DRAM , 最后到 DM642处理单元 经过算法执行得到所需结果 , 这个结果是一个数 字参数 . Pl C 控制器通过这个参数控制红绿灯的 状态 . 另外对交通灯的控制还要可手动控制以应 对突发事件 , 这要通过控制中心来完成 . 各单元工 作时序的控制是通过 CP LD 时序控制电路完成 的 , 数据间的传输由 DSP 的增强型直接内存访问 控制器 E DMA 完成 . 程序存储器 F LASH, 数据存 储器 S DRAM 及 F I F O 缓冲通过 E M I F 接口与芯片 相连 , 构成了典型的 DSP 嵌入式系统 . 这些配置 都是基于快速处理的目的而选用的 .
3 软件系统设计
软件系统设计涉及到软件开发环境的配置 、
程序设计语言的选择和软件的算法的设计 . 软件 的算法是软件系统的核心 , 算法的优劣直接关系 到系统的实时性效果问题 . 3. 1 软件开发环境
TI 公司针对不同型号的 DSP 提供了一套集
成的开发环境 CCS [3]
(Code Co mposer Studi o ) , 借 助于 CCS 可以大大地缩短 DSP 软件开发周期 , 提 高开发效率 .
CCS 是一个开放式的 、 具有强大集成能力的 开发环境 , 它集文件管理 、 代码编辑 、 代码生成代 码调试 、 , 几乎 可以完成 DSP . 而且 , . 3. 2C , 又有高级语言的灵活性 , 因此我们选择 C
语言作为我们主要的程序开发语言 [4]
.
C 语言编程开发周期短 , 可读性 、 可移植性 强 , 便于维护 , 但考虑到它不能充分利用 DM642的资源 . 采用 C 语言和汇编语言混合编程的方 式 . 即以 C 代码为主要框架 , 实现系统调度 , 中断 响应等 ; 汇编代码以 C 语言可调用的函数或内联 代码的形式出现 , 主要通过汇编代码实现核心算 法和反复访问的代码段 . 3. 3 算法方案设计
基于系统对实时性的极高要求 , 我们希望设 计的算法要尽量的快速 , 以保证系统的实时性 .
所以 , 选择这样一种算法 :经过一系列的图像 处理 [5]
后 , 分别获得各相对相位车辆所占的面 积 , 比较其大小 , 获得比较值以合理地调整红绿灯 的状态和时间 . 其软件流程框图如图
3所示 .
图 3 软件设计框图
F i g . 3 Flow d i a gram of software desi gn
获得图像后 , 首先对将要处理的一帧图像进
行待处理区域截取 , 只对这个区域内的图像进行 处理 , 以尽可能的减少数据处理量 , 节省处理时 间 . 在本系统中待处理区域可理解为道路交叉口
56
郑 州 大 学 学 报 (工 学 版 ) 2010年
相对相位车道区域 . 为了便于后续处理 , 对截取出 的区域进行灰度化处理 , 使图像成为灰度图像 . 然
后 , 用背景减除法 [6]
获得目标车辆信息 , 完成目 标提取 , 这是一种被证明了的行之有效的交通图 像目标提取的方法 . 对处理后的图像进行二值化 处理 , 目标区域成为白色像素区 , 背景区域成为黑 色像素区 . 如图 4所示 , (a ) 为摄像机获取的未经 处理的相位 i 的车辆状况 , (b ) 为处理后图像 , (c ) 、 (d ) 分别为相位 i 的相对相位 ii 的处理前和 处理后的图像
.
图 4 相对相位图像处理结果
F i g . 4 I mage processi n g result of the rel a ti ve pha ses
最后 , 通过编程计算获得白色像素点面积 , 即 车辆所占面积 , 从而获得两个方向的相对相位 参数 .
我们设定 , 只有在车辆多寡相差明显的时候 , 才去改变交通灯的状态 . 当相对相位车辆状况相
差比较明显的时候 , 通过比较车辆占地面积的方 法有效地区别出来 . 这种情况下 , 本算法更显优 越性 .
通过编程计算得到 :第一幅图的面积 S 1=1. 2728e +004; 第二幅图像的面积 S 2=2. 6972e +004. 基本反映了两图像中车辆数目多寡的对比 .
所以 , 这是一种有效的算法 , 且图像处理采用 图像处理算法中比较基本的算法 , 可以保证快 速性 .
另外 , 对于图像中的车辆阴影带来的影响 , 用 面积相减的方法可以从某种程度上减轻阴影带来 的不精确问题 . 因为两幅图像上都会有阴影 , 相减
可以使阴影在一定程度上相互抵消 .
这种算法可能会有一辆两辆的误差 , 但基于 当相对相位的差别大的时候才改变交通灯的状 态 , 这不会造成大的影响 .
车辆数目多寡的具体比较是这样进行的 :用 一个相位的面积 S 2去减另一相位的面积 S 1得到 一个数值 R, 即 R =S 1-S 2. R 为正值时 , 说明该 相位车辆多 , 为负值时 , 另一相位较多 ; 当 R =S 1时 , 说明另一相位是没有车的 , 这时把该相位置为 绿灯相位 ; 当 R =0时 , 说明两相位车辆多少一 样 , 保持原来的红绿灯状况不变 ; 当 R =1时 , 说 2倍 ; 当 R =-1时 , 2倍 , 以此类推 , — R —≥ C 时 , 合理 C 值时 , 应尽量 .
4 结论
基于 DSP 的交通信号灯控制系统 , 采用图像 处理算法来快速地计算各条道路上的车辆状况 , 并以此作为红绿灯控制的依据 , 实现交通信号灯 的自适应控制 . 采用 DSP 和图像处理技术构建的 交通灯控制系统具有硬件系统成本低 、 标准化程 度高以及方便扩充等特点 , 是一种新的交通信号 灯控制模式 , 具有良好地推广应用前景 .
参考文献 :
[1] 胡佩雯 . 基于视频的实时交通流检测系统的研究
[D].武 汉 :武 汉 理 工 大 学 自 动 化 学 院 , 2008:33-52.
[2] 卜英勇 , 陈旭 , 周木容 , 等 . 基于 T MS320C6416的水
下微地形实时探测系统设计 [J ].郑州大学学报 :工 学版 , 2008, 29(3) :44-46.
[3] 王中华 . 基于 DSP 的实时图像处理的研究 [D].武
汉 :武汉理工大学自动化学院 , 2006:33-59.
[4] 李天长 . 基于 DM642的嵌入式实时图像处理的研
究 [D].重庆 :重庆大学光电工程学院 , 2008:8-14.
[5] 阮秋琦 . 数字图像处理学 [M].2版 . 北京 :电子工业
出版社 , 2007.
[6] 孙吉华 . 背景减除法的算法研究 [D].长沙 :国防科
学技术大学机电工程与自动化学院 , 2006:12-27.
(下转第 64页 )
64
郑 州 大 学 学 报 (工 学 版 ) 2010年
(3972) :669-675.
[5] 冯清海 , 刘沐宇 , 袁万城 . 基于径向基网络的钢管 混凝土拱桥安全性评价方法 [J ].公路交通科技 , 2009, 26(8) :67-72.
[6] 陆敬安 , 梁金强 , 罗文造 . 径向基函数神经网络在
计算天然气水合物饱和度中的应用研究 [J ].海洋 通报 , 2009, 28(4) :102-106.
[7] 周开利 . 神经网络模型其 MAT LAB 仿真程序设计 [M].北京 :清华大学出版社 , 2005.
RBF Neura l Network 2Ba sed Ethanol Ga s D etector S i m ul a ti on Ana lysis
JU Xin -gang 1, 2, G UO Hai -ou 2, G UO M in 1
(1. School of Physical Engineering, Zhengzhou University, Zhengzhou 450001, China; 2. Key D isci p line of Circuits and Sys 2 tem s, Henan Educati on I nstitute, Zhengzhou 450046, China )
Abstract:Neural net w ork has a str ong non 2linear fitting mapp non 2linear relati on 2 shi p, and its learning rules are si m p le and easy f or BP neural net w ork p r one t o fall int o l ocal m ini m u m , however, RBF neural w ing . The algorith m of Ethanol gas detect or is designed by the app with the radial basis functi on in Matlab . The curve 2 fitting result on data shows that the algorith m has the advantages of a s mall a 2 mount of data st err or perf or mance t o meet the syste m err or require ment . Further more, the net w ork has short ti m e and fast convergence s peed .
Key words:redial basis functi on; neural net w orks; curve fitting; Matlab si m ulati on
(上接第 56页 )
Research of Traff i c Lam p Rea l 2ti m e I n telli gen t Con trol System Ba sed
on I mage Processi n g and D SP
Z HANG A i -mei, K ONG W en -jie
(School of Mechanical Engineering , Zhengzhou University, Zhengzhou 450001, China )
Abstract:This paper puts f or ward a design of traffic signal la mp intelligent contr ol syste m that uses DSP 2e m 2 bedded syste m as hardware p latf or m , in vie w of uneven distributi on of vehicles at r oad intersecti on, f or exa m 2 p le, urban do wnt own and cr ossing of maj or r oad and m inor r oad . It acquires vedi o p ictures that reflect the sit 2 uati on of traffic with CCD vidicon, then, after a series of i m age p r ocessing, gains vehicles infor mati on by means of backgr oud substracti on, eventually contr ols the ti m ing and change of traffic signal la mp according t o the difference of vehicles number at relative phases of the r oad intersecti on, realizes self 2adap tive contr ol . Ex 2 peri m ent p r oves that this syste m is g ood at real ti m e, extensi on and s o on .
Key words:DSP 2e mbedded syste m; i m age p r ocessing; traffic signal la mp; real 2ti m e intelligent contr ol
范文四:基于DSP的交通灯
目录
1 系统概述 ......................................................... 2 1.1设计目的 ..................................................... 2
1.2 设计任务 .................................................... 2
2 方案论证 ........................................................ 3 2.1设计思路 ..................................................... 3 2.2设计方案 ..................................................... 3
2.3 工作状态 .................................................... 4
3硬件设计 .......................................................... 5 3.1硬件总体设计 ................................................. 5 3.2 交通灯显示模块 .............................................. 6 3.3计数显示模块 ................................................. 7
3.4开关模块 ..................................................... 7
4软件设计 .......................................................... 8 4.1程序流程 ..................................................... 8 4.2交通灯模拟显示 ............................................... 9 4.3定时器及中断设计 ............................................ 10
4.4外中断设计 .................................................. 11
5系统调试 ......................................................... 12 5.1硬件调试 .................................................... 12 5.2软件调试 .................................................... 14
5.3系统下载 .................................................... 17
6 设计心得 ........................................................ 17 参考文献 .......................................................... 18 附录 .............................................................. 19
1 系统概述
1.1设计目的
(1)熟悉使用 ICETEK – F2812-AE 评估板控制 ICETEK-CTR 上交通灯的方法。练习 自主独立的设计,实现理论和实践的统一,提高自我动手能力。
(2)掌握 TMS320F2812DSP 定时器的使用和编程。
(3)掌握 TMS320F2812DSP 外中断的使用和编程。
(4)学习复杂控制程序设计思路。
(5)利用 DSP 开发环境 CCS C2000对源程序文件进行编译、 链接、 装载调试, 以 完成基本的 DSP 项目文件设计。
(6)通过此次课程设计, 学习 DSPF2812芯片的 I/O端口控制方法, 熟悉字模的简 单构建和使用, 熟悉掌握在 DSP 软硬件环境下的程序开发流程, 达到学以致用的 目的。
1.2 设计任务
利用 ICETEK-EDU 实验箱提供的设备,设计模拟实际生活中十字路口交通灯控制 的程序。要求如下:
交通灯分红黄绿三色,东、南、西、北各一组,用灯光信号实现对交通的控制:绿灯信号表示通行, 黄灯表示警告, 红灯禁止通行, 灯光闪烁表示信号即将改变。 计时显示:8×8点阵显示两位计数,为倒计时,每秒改变计数显示。
正常交通控制信号顺序:正常交通灯信号自动变换
(1)南北方向绿灯,东西红灯 (10秒 ) 。
(2)南北方向绿灯闪烁 3次 , 东西红灯 (4秒 ) 。
(3)南北方向黄灯 , 东西红灯 (2秒 ) 。
(4)南北方向红灯,东西方向绿灯(10秒) 。
(5)南北方向红灯,东西方向绿灯闪 3次 (4秒 ) 。
(6)南北方向红灯,东西方向黄灯(2秒) 。
(7)返回 (1)循环控制。
功能键:(1)启动开关 (2)急救灯的启动开关
紧急情况处理:模仿紧急情况 (重要车队通过、 急救车通过等 ) 发生时, 交通警察 手动控制
(1)当任意方向通行剩余时间多于 10秒,将时间改成 10秒。
(2)正常变换到四面红灯 (20秒 ) 。
(3) 直接返回正常信号顺序的下一个通行信号 (跳过闪烁绿灯、黄灯状态 ) 。 2 方案论证
2.1设计思路
根据 DSP 的硬件中断、 定时器、 显示 /控制模块上的发光二极管控制的原理。 用定时器定时, 用连接在 2812DSP 扩展地址接口上的寄存器 EWR 和 SNR 控制红绿 黄灯的开关, 用硬件外部中断模拟急救车的到达。 有急救车到达时, 两向为全红, 以便让急救车通过。 急救车通过后, 交通灯恢复硬件中断前的状态。 触发开关为 中断申请, 表示有急救车通过。 在实验箱上交通灯模块由连接在 2812DSP 扩展地 址接口上的寄存器 EWR 和 SNR 控制 , 这两个寄存器均为 6位寄存器 , 交通灯模块 (CTRLR)的 I/O地址 : 0x108007。
2.2设计方案
2.2.1 设计原理
根据设计要求, 由于控制是由不同的各种状态按顺序发生的, 可以采用状态 机制控制方法来解决此问题。 这种方法是:首先列举所有可能发生的状态; 然后 将这些状态编号, 按顺序产生这些状态; 状态延续的时间用程序控制。 对于突发 情况, 可采用在正常顺序的控制中插入特殊控制序列的方式完成。 时钟计数:采 用 250ms 一次中断进行累加计数。如表 2.1所示。
2.2.2 定时器设计
MS320F2812A 内部有三个 32位通用定时器 (TIMER0/1/2) , 定时器 1和 2被保留给实 时操作系统(DSPBIOS )用,只有定时器 0可以提供给用户使用。定时器采用中断 方式,可以提高 CPU 的利用率。 2.2.3 倒计时显示设计
利用 ICETEK-CTR 上的发光二极管显示阵列模拟显示。 DSP 须将显示的图形按列的 顺序存储起来 (8×8点阵, 8个字节,高位在下方,低位在上方 ) ,然后定时刷新 控制显示。具体方法是,将以下控制字按先后顺序、每两个为一组发送到端口 0x602802, 发送完毕后, 隔不太长的时间 (以人眼观察不闪烁的时间间隔 ) 再发送 一遍。由于位值为“ 0”时点亮,所以需要将显示的数据取反。 2.2.4 紧急状况下设计
利用 ICETEK-CTR 上键盘产生外中断,中断正常信号顺序,进入突发情况。
2.3 工作状态
状态一:南北绿灯、东西红灯,延时 10秒, 10秒后南北绿灯闪 3次,东西 红灯延时 4秒;如图 2.1所示
图 2.1 状态一
状态二:南北黄灯、东西红灯,持续 2秒;
图 2.2 状态二
状态三:东西绿灯、南北红灯,延时 10秒, 10秒后东西绿灯闪 3次,南北红灯 持续 4秒;
图 2.3 状态三
状态四:东西黄灯、南北红灯,持续 2秒;
图 2.4
状态四
状态五:紧急状态下东西南北均亮红灯;
图 2.5 状态五
3硬件设计
3.1
硬件总体设计
① 根据设计要求,由于控制是由不同的各种状态按顺序发生的
,
我可以采用状 态机制控制方法来解决此问题。 这种方法是 : 首先列举所有可能发生的状态;
然后将这些状态编号 , 按顺序产生这些状态;状态延续的时间用程序控制, 对于突发情况 , 可采用在正常顺序的控制中插入特殊控制序列的方式完成。 ② 突发事件设置 , 在实际交通过程中会出现突发状况 , 比如说有救护车或者 110 紧急车要通过 , 此时就可以通过小键盘进行突发状况模拟。通过按键进 入到中断服务子程序 , 相当于原来先要通过的车辆在突发状况来了以后就要 先让紧急车辆通过。原理框图如图 3.1所示。
图 3.1 ICETEK-F2812-AE原理框图
3.2 交通灯显示模块
利用 ICETEK-CTR 上的一组发光二极管 (共 12只,分为东西南北四组、 红黄绿三色 ) 的亮灭实现交通信号的模拟。 TMS320F2812 DSP有最多 56个专 门的通用输入输出管脚。 这些通用输入输出管脚通过专用寄存器可以由软件 控制,比如指定输入、输出以及输出值等。通过 ICETEK-F2812-AE 评估板的 插座, 扩展板 (通用输出 /控制模块 ICETEK-CTR ) 将板上的一个指示灯和 DSP 的一个通用输入 /输出管脚直接相连。 这个管脚为 PWM12, 可以设置成通用输 入 /输出管脚使用。扩展原理如图 3.2所示。
图 3.2发光二极管设计原理
3.3计数显示模块
计数显示采用放光二极管显示阵列显示。 TMS320F2812 DSP的存储器扩展接口 (EMIF )用来与大多数外围设备进行连接,典型应用如连接片外扩展存储器等。 这一接口提供地址线、数据线和一组控制线, ICETEK-F2812-A 评估板已将这些 扩展线引到了板上的扩展插座上, 供扩展使用。 发光二极管显示阵列由扩展端口 控制, EMIF 接口的两个寄存器提供具体控制。原理图如图 3.3所示。
图 3.3 计数显示原理
3.4开关模块
开关模块采用外部外部存储器扩展接口 (EMIF ) 上的 PS2接口键盘, 通过扫描码 判断输入键值。 TMS320F2812 DSP 的扩展存储器接口(EMIF
)用来与大多数外围
设备进行连接, 典型应用如连接片外扩展存储器等。 这一接口提供地址线、 数据 线和一组控制线, ICETEK-F2812-A 评估板已将这些扩展线引到了板上的扩展插 座上。键盘的扫描码由 DSP 的扩展地址 0x108001给出,当有键盘输入时,读此 端口得到扫描码,当无键被按下时读此端口的结果为 0。开关设计原理如图 3.4所示。
图 3.4 开关设计原理
4软件设计
4.1程序流程
该设计实现的功能是南北方向绿灯,东西红 10秒,南北方向绿灯闪烁 3次 , 东 西红灯 4秒,南北方向黄灯 , 东西红灯 2秒,南北方向红灯,东西方向绿灯 10秒, 南北方向红灯, 东西方向绿灯闪 3次 4秒, 南北方向红灯, 东西方向黄灯 (2秒) 。在紧急情况下,当任意方向通行剩余时间多于 10秒,将时间改成 10秒, 正常变换到四面红灯 20秒, 然后直接返回正常信号顺序的下一个通行信号 (跳过 闪烁绿灯、黄灯状态 ) 。程序流程图如图 4.1所示。
图 4.1 程序流程图
4.2交通灯模拟显示
显示 /控制模块上的发光二极管是由连接在 2812DSP 扩展地址接口上的寄存器 EWR 和
SNR 控制的。这两个寄存器均为 6位寄存器,其位定义见表 4.1表 4.2。 两个寄存器的地址均映射到 2812DSP 的扩展空间, CTRLR 地址为 0x108007, DSP 通过
对该地址的写操作来修改两个寄存器上各位的状态, 当寄存器某位取 ‘ 1’ 值时, 相应指示灯
被点亮, 取 ‘ 0’ 值则熄灭。 当写入 CTRLR 的数据 (8位有效值 ) 的高两位为 ‘ 00’
时,数据
的低 6位将写入 EWR 寄存器;当高两位的值为‘ 01’时,写入 SNR 寄存器
表 4.1 寄存器
EWR
表 4.2 寄存器 SNR
4.3定时器及中断设计
TMS320F2812A 内部有三个 32位通用定时器(TIMER0/1/2) ,定时 器 1和 2被保 留给实时操作系统(DSPBIOS )用,只有定时器 0可以提供给用户使用。定时器 采用中断方式,中断过程如下:a .接受中断请求。必须由软件中断(从程序代 码) 或硬件中断 (从一个引脚或一个基于芯片的设备) 提出请求去暂停当前主程 序的执行。 b .响应中断。必须能够响应中断请求。如果中断是可屏蔽的,则必 须满足一定的条件,按照一定的顺序去执行。而对于非可屏蔽中断和软件中断, 会立即作出响应。 c .准备执行中断服务程序并保存寄存器的值。 d .执行中断服 务子程序。调用相应得中断服务程序 ISR ,进入预先规定的向量地址,并且执行 已写好的 ISR 。定时器及中断的流程如图 4.2。
图 4.2 定时器及中断流程图
4.4外中断设计
紧急情况时,利用 ICETEK-CTR 上键盘产生外中断,中断正常信号顺序,模 拟突发情况。显示 /控制模块 ICETEK-CTR 通过接口 P8连接小键盘,接收小键盘 传送的扫描码, 并在每个扫描码结束后保存, 同时向 DSP 的 XINT2发送中断信号; 当 DSP 读键盘时将扫描码送到数据总线上。小键盘上每次按下一个键将产生 2个扫描码、 2次中断。外中断的程序流程图如图 4.3所示。
。
图 4.3 外中断程序流程图
5系统调试
5.1硬件调试
5.1.1电源调试
1.连接电源:打开实验箱,取出三相电源连接线 (如右图 ) ,将电源线的一端插 入实验箱外部左侧箱壁上的电源插孔中。确认实验箱面板上电源总开关 (位于实 验箱底板左上角 ) 处于 “关” 的位置, 连接电源线的另一端至 220V 交流供电插座 上,保证稳固连接。
2.使用电源连接线 (如右图,插头是带孔的 ) 连接各模块电源:确认实验箱总电 源 断 开 。 连 接 ICETEK-CTR 板 上 边 插 座 到 实 验 箱 底 板 上 +12V电 源 插 座 ; ICETEK-CTR 板下边插座到实验箱底板上 +5V 电源插座;如使用 PP(并口 ) 型仿真 器,则连接仿真器上插座到实验箱底板上 +5V电源插座;连接 DSP 评估板模块电 源插座到实验箱底板上 +5V 电源插座。 注意各插头要插到底, 防止虚接或接触不 良。
3.连接 DSP 评估板信号线:当需要连接信号源输出到 A/D 输入插座时,使用信 号连接线 (如右图 ) 分别连接相应插座。
4. 接通电源:检查实验箱上 220V 电源插座 (箱体左侧 ) 中保险管是否完好, 在连 接电源线以后, 检查各模块供电连线是否正确连接, 打开实验箱上的电源总开关 (位于实验箱底板左上角 ) , 使开关位于 “开” 的位置, 电源开关右侧的指示灯亮。 5.1.2 Emulator调试
1.启动 Simulator 方式
双击桌面上图标:
2.启动 Emulator 方式
(1)首先将实验箱电源关闭。连接实验箱的外接电源线。
(2)检 查 ICETEK-5100USB 仿 真 器 的 黑 色 JTAG 插 头 是 否 正 确 连 接 到 ICETEK-VC5416-A 板的 J3 插头上。注:仿真器的插头中有一个孔加入了封针与 J3 插头上的缺针位置应重合,保证不会插错。
(3)检查是否已经用电源连接线连接了 ICETEK-VC5416-A 板上的 POW1 插座和实
验箱底板上 +5V 电源插座。
(4)检查其他连线是否符合实验要求。检查实验箱上三个拨动开关位置是否符合 实验要求。
(5)打开实验箱上电源开关 (位于实验箱底板左上角 ) ,注意开关边上红色指示灯 点亮。 ICETEK-VC5416-A 板上指示灯 D1 和 D2 点亮。如果打开了 ICETEK-CTR 的 电源开关, ICETEK-CTR 板上指示灯 L1、 L2 和 L3 点亮。如果打开了信号源电源 开关,相应开关边的指示灯点亮。
(6)用实验箱附带的 USB 信号线连接 ICETEK-5100USB 仿真器和 PC 机后面的 USB 插座,注意 ICETEK-5100USB 仿真器上指示灯 Power 和 Run 灯点亮。
(7)双击桌面上仿真器初始化图标:如果出现下面图 5.1提示窗口,表示初 始化成功,按一下空格键进入下一步操作。
图 5.1 初始化图
如果窗口中没有出现“按任意键继续?” ,请关闭窗口,关闭实验箱电源,再将 USB 电缆从仿真器上拔出,返回第 (2)步重试。
如果窗口中出现“ The adapter returned an error.” ,并提示“按任意键 继续?” 表示初始瑞泰创新—— ICETEK-VC5416-A-USB-EDU 教学实验系统软件实 验指导
III -7化失败, 请关闭窗口重试两三次, 如果仍然不能初始化则关闭实验箱电源, 再将 USB 电缆从仿真器上拔出,返回第 (2)步重试。
⑧双击桌面上图标:
启动 CCS2.21。
⑨如果进入 CCS 提示错误, 先选 “ Abort ” , 然后用 “初始化 ICETEK-5100USB2.0 仿 真器” 初始化仿真器, 如提示出错, 可多做几次。 如仍然出错, 拔掉仿真器上 USB 接头 (白色方形 ) ,按一下 ICETEK-VC5416-A 板上 S1 复位按钮,连接 USB 接头再 做“初始化 ICETEK-5100 USB2.0 仿真器” 。
⑩如果遇到反复不能连接或复位仿真器、 进入 CCS 报错, 请打开 Windows 的 “任 务管理器” ,在“进程”卡片上的“映像名称”栏中查找是否有“ cc_app.exe” , 将它结束再试。
5.2软件调试
5.2.1软件设计
CCS 可以工作在纯软件仿真环境中, 就是由软件在 PC 机内存中构造一个虚拟的 DSP 环境,可以调试、运行程序。但一般软件无法构造 DSP 中的外设,所以软件 仿真通常用于调试纯软件的算法和进行效率分析等。
在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。
(1)单击桌面上图标:进入 CCS 设置窗口。
(2)在出现的窗口中按标号顺序进行如下图 5.2设置:
图 5.2 仿真设置图
接着在下面出现的窗口中选择“否 (N)” 。
此时 CCS 已经被设置成 Simulator 方式 (软件仿真 TMS320VC5416 器件的方式 )
,
如果一直使用这一方式就不需要重新进行以上设置操作了。
2. 设置 CCS 通过 ICETEK-5100USB 仿真器连接 ICETEK-VC5416-A 硬件环境进行 软件调试和开发。
(1)单击桌面上图标:进入 CCS 设置窗口
(2)在出现的窗口中按标号顺序进行如下图 5.3设置:
图 5.3 CSS2设置图
(3)接着在下面的窗口中按标号顺序进行如下图 5.4选择:
图 5.4 CSS2设置图
在出现的窗口按标号顺序进行如下图 5.5设置:
图 5.5 CSS2设置图
(5)在出现的窗口按标号顺序进行如下图 5.6设置:
图 5.6 CSS2设置图
以上设置完成后, CCS 已经被设置成 Emulator 的方式 (用仿真器连接硬件板卡的 方式 ) , 并且指定通过 ICETEK-5100USB 仿真器连接 ICETEK-VC5416-A 评估板。 如 果您需要一直使用这一方式就不需要重新进行以上设置操作了。
5.2.2程序运行
选择菜单“ Project ”的“ New ?”项。如图 5.7所示。
图 5.7 CSS2设置图
如下图,按编号顺序操作建立 Trafficlight.pjt 工程文件 :
展开主窗口左侧工程管理窗口中 “ Projects ” 下新建立的 “ Trafficlight.pjt ” , 其中各项均为空。
(2) 在工程文件中添加程序文件:
选择菜单 “ Project ” 的 “ Add Files to Project ?” 项; 在 “ Add Files to Project ” 对话框中
选择文件目录为 C:\ICETEK-VC5416-EDULab\Lab0601-UseCCS, 改变文件类型为 “ C Source
Files(*.c;*.ccc)” , 选择显示出来的文件 “ Trafficlight.c ” ; 重复上述各步骤, 添加 Trafficlight.cmd 文件 , 到 volume 工程中;
添加 C:\ti\C5400\cgtools\lib\rts.lib。
(3)编译连接工程:选择菜单“ Project ”的“ Rebuild All ”项,或单击工具条 中的按钮; 注意编译过程中 CCS 主窗口下部的 “ Build ” 提示窗中显示编译信息, 最后将给出错误和警告的统计数。
5.3系统下载
(1)下载程序:执行 File → Load Program ,在随后打开的对话框中选择刚刚建立 的
C:\ICETEK-VC5416-EDULab\Lab0601-UseCCS\Debug\Trafficlight.out 文件。 (2) 设置软件调试断点:在项目浏览窗口中,双击 Trafficlight.c 激活这个文 件,移动光标到 main()行上,单击鼠标右键选择 Toggle Breakpoint 或按 F9 设 置断点 (另外,双击此行左边的灰色控制条也可以设置或删除断点标记 ) 。
(3) 利用断点调试程序:选择 Debug → Run 或按 F5 运行程序,程序会自动停在 main()函数上。
(4)在 ICETEK-CTR 附带的小键盘上按下按键,观察信号是否满足要求。
6 设计心得
此次课程设计, 通过学习, 我进一步熟悉了 CCS 软件, 巩固了以前所学过的 知识。 通过对书本上的理论知识与实际的操作相结合, 对所学的理论知识也有了 更深层次的理解。
本次设计中主要用到了 DSP 的硬件中断、 定时器以及 I/O访问等方面的相关 的知识。 对于这几方面知识我并不陌生, 在以前的的课程设计中, 这些内容都曾 涉及, 再加上曾经 DSP 课程的学习。 因此在本次的功能实现方面遇到的问题并不 是太多。 不过毕竟 DSP 的相关知识有别于单片机, 因此对编程的理解上还是出现
了一些问题,通过对课本以及相关资料的查询,这些问题也及时的得到了解决。 通过对问题的发现与解决, 使我更加了解 DSP 的原理及其编程的相关注意事 项,加深了对课本理论知识的理解。
参考文献
[1] 刘和平等. DSP 原理及电机控制应用—基于 TMS320LF2407x 系列 [M].北京 航空航天大学出版社, 2006.
[2] 宁改娣等 . DSP控制器原理及应用 [M].北京 :科学出版社, 2002.
[3] 仿真系统使用说明书,北京瑞泰创新有限公司。
[4] 清源科技 .TMS320C54xDSP 应用程序设计教程 [M].机械工业出版社 ,2004.1. [5] 清源科技 .TMS320C54x 硬件开发教程 [M].机械工业出版社 ,2003.1.
附录
源程序
main()
{
int nWork1,nWork2,nWork3,nWork4;
intnNowStatus,nOldStatus,nOldTimeCount,nSaveTimeCount,nSaveStatus ;
unsignedintnScanCode;
nTimeCount=0; bHold=0;
uLightStatusEW=uLightStatusSN=0;
nNowStatus=0; nOldStatus=1; nOldTimeCount=0;
InitDSP(); // 初始化 DSP ,设置运行速度
InitICETEKCTR(); // 初始化显示 /控制模块
InitTimer(); // 设置定时器中断
// 根据计时器计数切换状态
// 根据状态设置计数和交通灯状态
while ( 1 )
{
if ( bHold&&nNowStatus==statusHold )
{
if ( nTimeCount>=nStatusHold )
{
nNowStatus=nSaveStatus;
nTimeCount=nSaveTimeCount;
bHold=0;
}
}
nNowStatus=statusNSGreenEWRed;
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
else if ( nTimeCount
if ( nNowStatus==nOldStatus )
{
switch ( nNowStatus )
{
casestatusNSFlashEWRed:
nWork1=nTimeCount-nStatusNSGreenEWRed;
nWork2=nStatusNSYellowEWRed-nStatusNSFlashEWRed; nWork3=nWork2/3;
nWork4=nWork3/2;
if ( nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0 )
uLightStatusSN=( (nWork1%nWork3)<=nwork4>=nwork4>
break;
20
nWork1=nTimeCount-nStatusNSRedEWGreen;
nWork2=nStatusNSRedEWYellow1-nStatusNSRedEWFlash;
nWork3=nWork2/3;
nWork4=nWork3/2;
if ( nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0 ) uLightStatusEW=( (nWork1%nWork3)<=nwork4 )?(0x09):(0x00);="">=nwork4>
casestatusNSGreenEWRed:
nWork1=nStatusNSGreenEWRed/20;
if ( nWork1>0 )
{
nWork2=20-nTimeCount/nWork1;
if ( bHold )
{
if ( nWork2>10 )
{
nTimeCount=nWork1*10;
nWork2=10;
}
}
if ( nOldTimeCount!=nWork2 )
{
nOldTimeCount=nWork2;
SetLEDArray(nWork2);
}
}
break;
casestatusNSRedEWGreen:
21
nWork1=(nStatusNSRedEWGreen-nStatusNSRedEWYellow)/20;
if ( nWork1>0 )
{
nWork2=20-(nTimeCount-nStatusNSRedEWYellow)/nWork1;
if ( bHold )
{
if ( nWork2>10 )
{
nTimeCount=nStatusNSRedEWYellow+nWork1*10;
nWork2=10;
}
}
if ( nOldTimeCount!=nWork2 )
{
nOldTimeCount=nWork2;
SetLEDArray(nWork2);
}
}
break;
casestatusHold:
nWork1=nStatusHold/20;
if ( nWork1>0 )
{
nWork2=20-nTimeCount/nWork1;
if ( nOldTimeCount!=nWork2 )
{
nOldTimeCount=nWork2;
SetLEDArray(nWork2);
}
22
}
break;
}
}
else
{
if ( bHold )
{
nSaveStatus=nNowStatus;
nSaveTimeCount=nTimeCount;
nNowStatus=statusHold;
nTimeCount=0;
if ( nSaveStatus==statusNSFlashEWRed || nSaveStatus==statusNSYellowEWRed )
{
nSaveStatus=statusNSRedEWGreen;
nSaveTimeCount=nStatusNSRedEWYellow;
}
else if ( nSaveStatus==statusNSRedEWFlash || nSaveStatus==statusNSRedEWYellow )
{
nSaveStatus=statusNSGreenEWRed;
nSaveTimeCount=0;
}
}
nOldStatus=nNowStatus;
switch ( nNowStatus )
{
casestatusNSGreenEWRed:
23
uLightStatusEW=0x24; uLightStatusSN=0x49;
SetLEDArray(20);
break;
casestatusNSFlashEWRed:
uLightStatusEW=0x24; uLightStatusSN=0x49;
SetLEDArray(0);
break;
casestatusNSYellowEWRed:
uLightStatusEW=0x24; uLightStatusSN=0x52;
SetLEDArray(20);
break;
casestatusNSRedEWYellow:
uLightStatusEW=0x12; uLightStatusSN=0x64;
SetLEDArray(20);
break;
casestatusNSRedEWGreen:
uLightStatusEW=0x09; uLightStatusSN=0x64;
SetLEDArray(20);
break;
casestatusNSRedEWFlash:
uLightStatusEW=0x09; uLightStatusSN=0x64;
SetLEDArray(0);
break;
casestatusHold:
uLightStatusEW=0x24; uLightStatusSN=0x64;
SetLEDArray(20);
break;
}
}
24
CTRLR=uLightStatusEW; CTRLR=uLightStatusSN; // 设 置 交 通 灯 状 态
RefreshLEDArray(); // 刷新发光二极管显示
nScanCode=port8001; // 读键盘扫描码
nScanCode&=0x0ff;
if ( nScanCode==SCANCODE_Enter ) break;
}
EndICETEKCTR();
exit(0);
}
// 定时器中断服务程序,进行时钟计数
void interrupt time(void)
{
nTimeCount++;
nTimeCount%=nTotalTime;
}
// 设置发光二极管显示内容
voidSetLEDArray(intnNumber)
{
inti,k,kk,kkk;
kkk=nNumber;
k=kkk/10*4; kk=kkk%10*4;
for ( i=0;i<4;i++>4;i++>
{
ledbuf[7-i]=~led[k+i];
ledbuf[3-i]=~led[kk+i];
}
25
}
// 将缓存中点阵送发光二极管显示
voidRefreshLEDArray()
{
int i;
for ( i=0;i<8;i++>8;i++>
{
CTRGR=ledx[i];
CTRLA=ledbuf[i];
}
}
// 初始化 DSP ,设置运行速度 =8MHz
voidInitDSP()
{
REGISTERCLKMD=0; // 速度设置 =8MHz
}
// 设置定时器参数、允许中断
voidInitTimer()
{
unsignedint k;
asm(
k=PMST; // 设置 PMST 寄存器
PMST =k&0xff; // 中断向量表起始地址 =80H
IMR = 0x0c; // 使能 TINT
TCR = 0x41f; // 预分频系数为 16
TIM = 0; // 时钟计数器清 0
PRD = 0x0f423; // 周期寄存器为 0ffH
TCR = 0x42f; // 复位、启动
26
IFR = 0x0c; // 清中断标志位
port3004=0; // 使能 XINT2
asm(
}
// 初始化 ICETEK-CTR 板上设备
voidInitICETEKCTR()
{
int k;
CTRGR=0; // 初始化 ICETEK-CTR
CTRGR=0x80;
CTRGR=0;
CTRLR=0; // 关闭东西方向的交通灯
CTRLR=0x40; // 关闭南北方向的交通灯
CTRLR=0x0c1; // 开启发光二极管显示阵列
for ( k=0;k<8;k++>8;k++>
{
ledbuf[k]=0x0ff; // 显示为空白
ledx[k]=(k<4);>4);>
}
k=CTRCLKEY; // 清除键盘缓冲区
}
void interrupt xint2(void) // XINT2中断服务程序
{
bHold=1;
}
voidEndICETEKCTR()
{
27
int k;
CTRLR=0; // 关闭东西方向的交通灯
CTRLR=0x40; // 关闭南北方向的交通灯
CTRLR=0x0c0; // 关闭发光二极管显示阵列
k=CTRCLKEY; // 清除键盘缓冲区
}
28
范文五:基于FPGA的交通灯
1、绪论
当前基于 EDA技术的设计中, 有两种基本的设计思路, 一种是自上而下的设 计思路,一种是自下而上的设计思路。 Top-down 设计,即自上而下的设计,这 种设计方法首先从系统设计入手, 在顶层进行功能框图的划分和结构设计, 在功 能级别进行仿真、 纠错, 并用硬件描述语言对高层次的系统行为进行描述, 然后 用综合工具将设计转化为具体门电路网表,其对应的物理实现可以是 PLD器件 或专用集成电路 (ASIC)。 由于设计的主要仿真和调试是在高层次上完成的, 这不 仅有利于早期发现结构设计错误, 避免设计工作的浪费, 而且也减少了逻辑功能 仿真的工作量,提高了设计的一次成功的效率。在 Top-down设计中,将设计分 成系统级、功能级、门级、开关级等几个不同的层次,按照自上而下的顺序,在 不同的层次上,对系统进行设计和仿真。 Bottom-up 设计,即自下而上的设计, 这是一种传统的设计思路。当前 Top-down设计更为人们所接受,也为更多的 EDA 工具所支持,以为该设计思想更符合人们的逻辑思维的习惯,也容易使设计 者对复杂的系统进行合理的划分与不断的优化。
在该设计中采用了可编程逻辑器件(FPGA )和硬件描述语言 (Verilog HDL) , 改变了传统的设计思路, 设计者可以通过芯片设计来实现各种不同的功能。 设计 人员使用相应的仿真软件就可以在短的时间内完成电路的输入、 编译、 优化、 仿 真直到最后的芯片制作。对于 FPGA用户可以反复的编程、擦除、使用,或者在 外围电路不变的情况下, 用不同的软件就可实现不同的功能。 譬如, 如已经用该 方法设计完成的交通灯由于用在不同的路口, 对时间设置有不同的要求 (或某一 路口交通灯的时间设置需要改变) 时, 并不需要改变外围硬件电路, 只要修改软 件的时间预置数即可。
2、 FPGA 简介
FPGA 是英文 Field Programmable Gate Array 的缩写, 即现场可编程门阵列, 它是在 PAL 、 GAL 、 EPLD 等可编程器件的基础上进一步发展的产物。它是作为专 用集成电路 (ASIC ) 领域中的一种定制电路而出现的, 既解决了定制电路的不足, 又克服了原有可编程器件门电路数有限的缺点。
FPGA 一类高集成度的可编程逻辑器件,起源于美国的 Xilinx 公司,该公司 于 1985年推出了世界上第一块 FPGA 芯片。在这二十年的发展过程中, FPGA 的 硬件体系结构和软件开发工具都在不断的完善,日趋成熟。从最初的 1200个可 用门, 90年代时几十万个可用门,发展到目前数百万门至上千万门的单片 FPGA 芯片, Xilinx 、 Altera 等世界顶级厂商已经将 FPGA 器件的集成度提高到一个新 的水平。 FPGA 结合了微电子技术、电路技术、 EDA 技术,使设计者可以集中精力 进行所需逻辑功能的设计,缩短设计周期,提高设计质量。
2.1 FPGA基本结构
目前生产 FPGA 的公司主要有 Xilinx 、 Altera 、 Actel 、 Lattice 、 QuickLogic 等, 生产的 FPGA 品种和型号繁多。 尽管这些 FPGA 的具体结构和性能指标各有特 色, 但它们都有一个共同之处, 即由逻辑功能块排成阵列, 并由可编程的互连资 源连接这些逻辑功能块,从而实现不同的设计。
典型的 FPGA 通常包含三类基本资源:可编程逻辑功能块、可编程输入 /输出 块和可编程互连资源。 可编程逻辑功能块是实现用户功能的基本单元, 多个逻辑 功能块通常规则地排成一个阵列结构,分布于整个芯片;可编程输入 /输出块完 成芯片内部逻辑与外部管脚之间的接口, 围绕在逻辑单元阵列四周; 可编程内部 互连资源包括各种长度的连线线段和一些可编程连接开关, 它们将各个可编程逻 辑块或输入 /输出块连接起来,构成特定功能的电路。用户可以通过编程决定每 个单元的功能以及它们的互连关系, 从而实现所需的逻辑功能。 不同厂家或不同 型号的 FPGA ,在可编程逻辑块的内部结构、规模、内部互连的结构等方面通常 存在较大的差异。
除了上述构成 FPGA 基本结构的三种资源以外,随着工艺的进步和应用系统 需求的发展,一般在 FPGA 中还可能包含以下可选资源:
存储器资源(块 RAM 、分布式 RAM ) ;
数字时钟管理单元(分频 /倍频、数字延迟、时钟锁定) ;
算数运算单元(高速硬件乘法器、乘加器) ;
多电平标准兼容的 I/O接口;
高速串行 I/O接口;
特殊功能模块(以太网 MAC 等硬 IP 核) ;
微处理器(PowerPC405等硬处理器 IP 核) 。
下面以 Xilinx 公司的 Spartan-II 系列以及 Altera 公司的 Cyclone-II 系列 FPGA 为例, 介绍 FPGA 的一般结构。 Xilinx 公司的 Spartan-II 系列 FPGA 器件主 要包括 5个可配置部分:
(1)可配置逻辑块(Configurable Logic Blocks, CLBs ) ,用于实现大部 分逻辑功能;
(2)在 CLBs 的四周分布着可编程的输入输出块(Input/Output Blocks, IOBs ) ,提供封装引脚与内部逻辑之间的连接接口;
(3)丰富的多层互连结构的可编程连线;
(4)片上的随机存取块状 RAM (BLOCK RAM) ;
(5)全数字式延迟锁相环(DLL )时钟控制块,与每个全局时钟输入缓冲器 相连, 该闭环系统确保时钟边沿到达内部触发器与其到达输入引脚同步, 有效地 消除时钟分配的延迟。
Altera 公司 FPGA 器件 Cyclone-II 系列的基本结构主要包括:
(1)逻辑阵列,由多个逻辑阵列块(Logic Array Blocks, LABs )排列而 成,用于实现大部分逻辑功能;
(2)在 芯 片 四 周 分 布 着 可 编 程 的 输 入 输 出 单 元 (Input/Output ElementsIOEs ) ,提供封装引脚与内部逻辑之间的连接接口;
(3)丰富的多层互连结构的可编程连线;
(4)片上的随机存取块状 RAM ;
(5)锁相环(PLL ) ,用于时钟的锁定与同步、能够实现时钟的倍频和分频;
(6)高速的硬件乘法器,有助于实现高性能的 DSP 功能。
2.2 FPGA的编程技术
目前,市场上有三种基本的 FPGA 编程技术:SRAM 、反熔丝、 Flash 。其中, SRAM 是迄今为止应用范围最广的架构, 主要因为它速度快且具有可重编程能力, 而反熔丝 FPGA 只具有一次可编程(One Time Programmable, OTP )能力。基于 Flash 的 FPGA 是 FPGA 领域比较新的技术,也能提供可重编程功能。基于 SRAM 的 FPGA 器件经常带来一些其他的成本,包括:启动 PROMS 支持安全和保密应用 的备用电池等等。基于 Flash 和反熔丝的 FPGA 没有这些隐含成本,因此可保证 较低的总系统成本。
2.2.1基于 SRAM 的 FPGA 器件
这类产品是基于 SRAM 结构的可再配置型器件,上电时要将配置数据读入片 内 SRAM 中, 配置完成就可进入工作状态。 掉电后 SRAM 中的配置数据丢失, FPGA 内部逻辑关系随之消失。这种基于 SRAM 的 FPGA 可以反复使用。
2.2.2 反熔丝 FPGA
采用反熔丝编程技术的 FPGA 内部具有反熔丝阵列开关结构,其逻辑功能的 定义由专用编程器根据设计实现所给出的数据文件, 对其内部的反熔丝阵列进行 烧录, 从而使器件实现相应的逻辑功能。 这种器件的缺点是只能一次性编程; 优 点是具有高抗干扰性和低功耗,适合于要求高可靠性、高保密性的定型产品。 2.2.3 基于 Flash 的 FPGA
在这类 FPGA 器件中集成了 SRAM 和非易失性 EEPROM 两类存储结构。 其中 SRAM 用于在器件正常工作时对系统进行控制,而 EEPROM 则用来装载 SRAM 。由于这类 FPGA 将 EEPROM 集成在基于 SRAM 工艺的现场可编程器件中 , 因而可以充分发挥 EEPROM 的非易失特性和 SRAM 的重配置性。 掉电后, 配置信息保存在片内的 EEPROM 中,因此不需要片外的配置芯片,有助于降低系统成本、提高设计的安全性。
2.3 FPGA器件性能参数和指标
如前所述,目前市场上 FPGA 的品种和型号相当多,它们的具体结构、可用 资源以及性能都各具特色。为了在系统设计中选择合适的 FPGA 器件,充分发挥 器件的能力,设计者必须了解 FPGA 的各项参数和性能指标。
数字系统逻辑功能设计之前的一个重要问题就是 FPGA 器件的选型,包括厂 商的选择以及器件系列和型号的选择。
1) FPGA 厂商的选择
每个 FPGA 厂商都有自己特有的核心技术和相应的产品。对于继承性产品的 开发,尽量使用熟悉并一直使用的 FPGA 厂商的产品;对于新产品的开发,则可 以根据待设计系统的特点和要求,以及各种 FPGA 器件的特性来初步选择 FPGA 厂商和产品系列。 另外, 还可以根据 FPGA 芯片成本来选择 FPGA 器件厂商和产品 系列。 比如 Xilinx 的 Virtex 系列和 Altera 的 Stratix 系列 FPGA 属于高性能产 品;而 Xilinx 的 Spartan 系列和 Altera 的 Cyclone 系列则属于低成本 FPGA 器 件。
2) FPGA 型号的选择
选择具体型号的 FPGA 时,需要考虑的因素较多,包括管脚数量、逻辑资源、 片内存储器、功耗、封装形式等等。另外,为了保证系统具有较好的可扩展性和 可升级性,一般应留出一定的资源余量。
3) FPGA 外围器件的选择
FPGA 选定之后,还有根据 FPGA 的特性,为其选择合适的电源芯片、片外存 储器芯片、 配置信息存储器等多种器件。 在系统设计和开发阶段, 应该尽量选择 升级空间大、 管脚兼容的器件。 在产品开发后期再考虑将这些外围器件替换为其 他的兼容器件以降低成本。
2.4 FPGA的优点
FPGA 是在 PAL、 GAL 等逻辑器件的基础上发展起来的,同以往的逻辑器件相 比较, FPGA 的规模较大, 它可以替代几十甚至几千块通用 IC芯片。 可以说, FPGA 芯片是小批量系统提高集成度、可靠性的最佳选择之一。
FPGA 芯片可以被称为可订制的特殊 ASIC芯片,它除了具有 ASIC的特点之 外,还具有以下几个优点:
1) 随着 VISI(Very large Scale IC,大规模集成电路 ) 工艺的不断提高,单 一芯片内部已可以容纳上百万个晶体管, 这使得 FPGA芯片所能实现的功能也越 来越强,同时也可以实现系统集成。
2) FPGA 芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片 风险和费用, 设计人员只需在自己的实验室里通过相关的软硬件环境来完成芯片 的最终功能设计,所以, FPGA 的资金投入小,节省了许多潜在的费用。
3)用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同 软件即可实现不同的功能。
4) FPGA 软件包含各种输入工具、仿真工具、版图设计工具和编程器等全线 产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真, 直到最后芯片的制作。
5)电路设计人员使用 FPGA进行电路设计时,不需要具备专门的 IC(集成 电路)深层次的知识, FPGA 软件易学易用。
2.5 FPGA技术的发展趋势
随着微电子技术、 EDA 技术、以及应用系统需求的发展, FPGA 正在逐渐成为 数字系统开发的平台,并将在以下方面继续完善和提高:
(1)高集成度、大容量、低成本、低电压、低功耗;
(2)资源多样化;
(3)适用于片上系统:处理器、高速串行 I/O、 DSP 等等;
(4)深亚微米工艺的使用。目前基于 90nm 工艺的 FPGA 已经商用,正在向 65nm 挺进;
(5) 各种软硬 IP 库的发展和完善;
(6) 动态可重构技术实用化
3、系统概述
该系统为 Verilog HDL语言设计的十字路口交通灯控制器, A 方向和 B 方向 各设红(R ) 、黄 (Y)、绿(G )三个灯, 3个灯按合理的顺序亮灭。
3.1功能要求
两个方向各种灯亮的时间能够通过程序进行设定。
交通灯控制器的状态转换表见表 5.1-1。表中, 1表示灯亮, 0表示灯不亮。 A 方向和 B 方向的红黄绿分别用 R1、 Y1、 G1、 R2、 Y2、 G2来表示。
表 3.1-1 交通灯控制器状态转换表
从状态表中可以看出,每个方向 3盏灯依次按如下顺序点亮,并不断循环:绿灯 ----黄灯 ----红灯
并且每个方向红灯亮的时间应该与另一个方向绿灯、黄灯亮的时间相等。黄 灯所起的作用是用来在绿灯后进行缓冲,以提醒行人该方向马上要禁行了。 3.2 设计思路
根据交通灯控制器要实现的功能,考虑用两个并行执行的 always语句来分 别控制 A方向和 B方向的 3盏灯。这两个 always语句使用同一个时钟信号, 以进行同步,也就是说,两个进程的敏感信号是同一个。
每个 always语句控制一个方向的 3种灯按如下顺序点亮,并往复循环:绿灯 ----黄灯 ----红灯
每种灯亮的时间采用一个减法计数器进行计数,计数器用同步预置数法设 计, 这样只需改变预置数据, 就能改变计数器的模, 因此每个方向只要一个计数 器进行预置数就可以。
设定 A 方向红灯、 黄灯、 绿灯亮的时间分别为 :50s、 5s 、 20s , B 方向的红灯、 黄灯、绿灯亮的时间分别为 :20s、 5s 、 50s 。假如要改变这些时间,只需要改变 计数器的预置数即可。
4、系统仿真
4.1系统电路框图
利用 Quartus II软件对本设计的程序进行编译,得到系统的原理图。
图 4.1 系统整体电路图
4.2设计结果仿真
利用 Quartus II软件对本设计的程序进行编译,得到系统的仿真时序图。
图 4.2 系统时序仿真图
5、心得体会
通过本次课程设计体验到了细心对一个编程者的重要性, 和程序的规范性对 于程序的重要性, 这些平时我们忽略的问题, 其实有时候关乎着我们编程的成功 率;再者,在 verilog 语言中,我们必须注意其与 C 语言的异同,比如格式和变 量定义,还有模块的调用,和时钟信号的应用。还有, verilog HDL 设计语言是 一门很好的硬件描述语言, 可以直白的描述实际的电路, 实际的系统模型, 易懂 而且易于实现, 我觉得在以后多加练习, 可以对以后的学习和工作带来莫大的帮 助。 这次期末的课程设计就是对我们的一次考核, 也可以说是一次考验, 在平时 做题目比较简单, 而这次课程设计综合考核了我们的学习结果。 课程设计培养了 学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重 要环节,是对学生实际工作能力的具体训练和考察过程。
然而从理论到实践,我在做课程设计的几天里,使我对有了更进一步的认识 和了解, 要想学好它要重在实践, 要通过不断的实际操作才能更好地学习它, 但 是学到很多很多的的东西, 同时不仅可以巩固了以前所学过的知识, 而且学到了 很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相 结合是很重要的, 只有理论知识是远远不够的, 只有把所学的理论知识与实践相 结合起来, 从理论中得出结论, 从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题, 可以说得是困难重重, 遇到了各种各样的问题, 同时 在设计的过程中发现了自己的不足之处, 对以前所学过的知解得不够深刻, 掌握 得不够牢固, 在边编学程序的过程中我几乎是重新复习课本上的知识, 但这还是 没能让我完成这次课程设计,通过询问同学、 到网上查询资料慢慢的完善才勉 强完成。
6、参考文献
1、 《 FPGA 设计及应用 (第二版) 》 作者:褚振勇 齐亮 田红心 高楷娟 西 安 电 子 科 技 大 学 出 版 社 出 版 日 期 :2006年 12月 第 2 版 书 号 : ISBN7-5606-1132-X/TP·0574
2、 《 CPLD/FPGA 应用系统设计与 (基础篇 ) 》 作者:亿特科技人民邮电出版 社出版日期:2005年 7月 书号:ISBN 7-115-13200-3/TP.4503
3、 《基于 CPLD/FPGA 的数字通信系统建模与设计》 作者:段吉海 黄智伟 电子工业出版社 出版日期:2004年 8月 书号:ISBN 7121002124
7、附件
原程序
module traffic_led(CLK,EN,LAMPA,LAMPB,);
output[2:0] LAMPA,LAMPB;
input CLK,EN;
reg[7:0] ared,ayellow,agreen,bred,byellow,bgreen;
reg[2:0] LAMPA,LAMPB;
always @(EN)
if(!EN)
begin
ared<>
ayellow<>
agreen<>
bred<>
byellow<>
bgreen<>
end
reg [31:0] cnt;
parameter TIME_CELL = 32'd50000000; // 时间单元时间 = Time_cell * 20ns (50MHz主频 )
always @(posedge CLK or negedge EN)
begin
if(!EN)
cnt<>
else if(cnt < time_cell)=""><>
else
cnt<>
end
always @(posedge CLK)
begin
if(EN)
begin
case(counta)
0: begin numa<><><>
1: begin numa<><><>
2: begin numa<><><>
default:LAMPA<>
endcase
end
end
always @(posedge CLK)
begin
if(EN)
begin
case(counta)
0: begin numb<><><=1;end 1:="" begin="">=1;end><><><=2;end 2:="" begin="">=2;end><><><=0;end>=0;end><>
endcase
end
end
Endmodule
实物图