PSD913F2在一种电台中的应用_嵌入式系统论文
关键词:isp iap 可编程系统器件
psd913f2具有128kb的主闪速存储器,32kb的第二闪速存储器和2kb的sram,可进行在系统编程isp(in-system-programming)和在应用重编程iap(in-application re-programming)。存储器isp意味着存储器在编程时没有mcu的参与(off line),而存储器iap意味着存储器在编程时有mcu的参考(on line)。iap只对存储器的部分进行编程,不对psd的配置和可编程逻辑部分进行编程;而isp则可以对存储器的全部进行编程。
利用psd913f2进行产品开发,应用2片式(psd+mcu)设计方案,即可以满足通常设计的需要。比较方便地地方就是psd913f2具有jtag口,可以实现在系统编程,这样对电路的设计和程序的修改均具有非常大的灵活性。
1 psd913f2的组成结构
psd913f2的组成框图如图1所示。
由图1可以看出,psd913f2具有丰富的i/o资源。其中pc口可以用做专用的jtag口,在这种情况下,就不能再进行引脚复用。当i/o资源紧张时,用做jtag口的引脚也可以进行引脚复用。
图1 psd913f2的顶层框图
2 psd913f2在一种电台中的应用实例
在某种电台的设计中,我们采用了psd913f2的2片方案,其mcu用的80c196kb,其部分电路如图2所示。
2.1 psd913f2的express中的配置
psd913f2具有在系统可编程的jatg口,这样对于psd芯片的重配置和应用程序的修改带来很大的方便。图2电路中,利用psd913f2作为外部程序存储空间,提供外部电路所需的片选信号及带有锁存功能的i/o输出。
首先,通过psd的应用软件psdsoft express对该2片方案进行选择配置,选定所用的mcu为80c196kb,并选定所需的工作方式等。然后,在express流程图的define psd pin /node function(定义psd的引脚功能)项对psd913f2芯片进行引脚的功能配置。在这里根据电路所需的特性要求配置如下:
①pa口作为地址锁存输出,输出低8位地址。由于该设计需要的ram空间较大,psd本身所带的2kb sram不能满足设计的要求,故需在外部扩展一片ram。这时需要用到锁存的低位地址输出,而psd913f2的pa口和pb口都具有地址存输出的功能。在地址总线和数据总线复用时,一般选择pa口作为地址锁存输出。
②pc口作为专用的jtag口,利用其全部的6个信号,可以加快程序下载的速度。
③pb口的配置或用做片选或用做具有锁存功能的i/o输出。其pb0为外部ram的片选adram;pb1为外部dtmf的片选addtmf;pb2为外部dsp芯片的片选hpien;pb3为dsp主机口的一个锁存信号hrw8;pb4、pb5为继电器控制信号,也即用做具有锁存作用的i/o mode输出;pb6、pb7是控制外部模拟开关的信号,也是具有锁存作用的i/o mode输出。
④其它的控制信号如wr、rd、ale等按使用手册的说明进行配置。
将以上这些引脚配置完毕后,下一步进行内存映射的分布。根据实际需要,程序空间25k以内,不需要利用分页。在片选信号的地址分配如下:
①rs0:8000h~87ffh.可读写,作为数据空的一部分。
②csiop:1000h~10ffh.这段地址共256字节,用做psd913f2内部资源的片选,其中1000h为内部资源的基地址。这段地址的分配在整个psd操作过程中最为重要,一定要注意不能和其它地址发生冲突;尤其对96系列的mcu,数据和程序共享64k空间,而不像51系列那样,数据空间和程序空间各64k。
⑤fs0:100h~3fffh.由于main flash中要求每个片选的范围是16k,所以程序空间的划分只能以16k为一段进行划分。同理,可得到fs1的地址范围是4000h~7fffh.这两段程序空间不能放在一个fs0内,否则仿真就会发现程序每隔16k就会重复。这种空间划分根据不同的psd型号也会有所不同,如:psd934的片选范围就是以32k为一段。
④adram:8800h~efffh。这是外部扩展ram的空间,紧跟内部2kb的sram地址分配。
⑤addtmf:f000h~fbffh。作为外部drmf发生器的片选用。
⑥hpien:fc00h~ffffh。hrw8地址也是在这一段。
至此,应用express配置psd913f2的工作已经基本上结束了。如果还需要进行iap,则还需要生成用于iap的c程序,经过修改后再嵌入式到自己的应用程序中。本例不需要进行iap,在不需要加载程序时,可以越过merge mcu/dsp firmware with psd(嵌入mcu或dsp主程序)选项,直接进行最后一步,通过isp利用flashlink将配置下载到psd内。
2.2 psd913f2在应用程序中的初始化
psd913f2的正常工作,还需要在应用程序的开始对端口的功能寄存器进行初始化操作。通过psd913f2的使用手册,可以查出各端口寄存器相对于csiop的偏移地址。利用csiop的基础加上偏移地址,就可得到该端口寄存器的地址。根据以上的配置,psd913f2在应用程序中的初始化程序如下:
;csiop在1000h~10ffh
psdpain equ 1000h ;字节读操作
psdpaout equ 1004h ;字节写操作
psdpacnt equ 1002h ;地址输出
psdpadir equ 1006h ;输出模式
psdpadrv equ 1008h ;cmos模式
psdpbin equ 1001h ;字节读
psdpbout equ 1005h ;字节写
psdpbdrv equ 1009h ;字节
psdpbdir equ 1007h ;字节
ld cx,#psdpadir
ldb al,#0ffh ;输出模式
stb al,[cx]
ld cx,#psdpacnt
ldb al,#0ffh
stb al,[cx] ;地址输出
ld cx,#psdpbdir
;output mode(pb4,pb5,pb6,pb7)
ldb al,#0f0h
stb al,[cx]
ld cx,#psdpbdrv ;开漏
stb al,[cx]
ld cx,#psdrbcnt
ldb al,#0
stb al,[cx] ;i/o模式
3 psd913f2使用中应注意的问题
在上面的配置中可以发现有两个片选的配置地址重叠,那显了所需信号时序的要求所设。外部dsp所要求的读写时序如图3所示。
由时序图可以看出,数据的读写操作在hrw8的上程式沿有效,其中hpien为片选使能端。hpien的产生可以由上面引脚定义中的地址设定,不用附加任何逻辑,这样就可以产生一较宽的低脉冲;而hrw8的上升沿也设为片选引脚,它的地址就可以和hpien的地址范围相重叠,然后附加上读写信号的逻辑,可以产生一较窄的低脉冲,类似于读写信号,这样利用其上升沿就可以达到手册所提出的时序要求。经实践检验这种方法是完全正确的,另外,在使用psd913f2时,还需要注意的一些问题如下:
①jtag口要利用其全部的6个信号,这样编程下载时可以加快下载速度。供给jtag口的电源和地之间要加一0.01μf的电容,且6个信号线和电源需用10kΩ的电阻进行上拉。
②用做具有锁存作用的i/o口,在外部要用10kΩ的电阻进行上拉,在应用程序中把这些端口初始化为开漏输出。这样才能正确利用其锁存作用,否则只能产生很窄的脉冲,脉宽很窄而使引脚失去锁存功能。
③mcu和psd913f2的复位要分开,复位的先后顺序应该是psdf在先,mcu在后,才能保证psd正常工作。两个复位在一起时,当复位的速度设计得比较低时可能反应不出来。如果mcu的复位较快,就会出现问题。在本例中,mcu的复位和psd的复位分开操作。
④用仿真器对psd的配置功能进行仿真时,一定要注意将csiop段地址放在用户板上,否则psd器件不会工作。另外,利用仿真器不能仿真psd的地址锁存作用。遇到这种情况,在仿真时,需要地址锁存的那段地址可放在系统板内。在最后下载应用程序时,利用mcu的操作,psd的地址锁存功能就可以起作用。
4
随着psd器件的发展,它的内部flash和sram越来越大,i/o口资源越来越丰富,速度也越来越快,完成可以满足常用mcu的dsp的开发应用,其isp和iap功能也在很大程序上方便了使用者。在电路设计小型化和产品的维护方面,具有非常大的优势,在以后的应用中一定会越来越广。