PSD8××F的在系统编程技术
2009-05-31
作者:颜荣江
摘 要:介绍了WSI公司的在系统可编程单片机外围器件PSD8××F系列芯片的组成及其性能。描述了如何通过端口C实现JTAG接口的软件、硬件配置以及利用WSI公司的FlashLink编程适配器和PSDsoft软件进行在系统编程的相关问题。
关键词:在系统编程 JTAG接口 PSD8××F器件 FlashLink适配器 PSDsfot软件
采用模块化设计技术,由WSI公司研制的可编程微控制器系统外围器件PSD系列芯片,将构成一个单片机应用系统所需的多个外围功能块,如EPROM、SRAM、I/O、PLD等,集成在单一硅片上,为简化嵌入式应用系统的设计、缩短产品的开发周期、提高系统的可靠性、降低系统的成本、缩小产品尺寸提供了一条便利的捷径。PSD系列器件的可编程特性及其潜在的优点已逐步为广大的产品设计和应用工程师所理解和掌握,并将其应用在各自的产品设计中,从PSD2××、PSD3××、PSD4××、PSD5××、PSD6××、PSD7××各系列产品中,用户可根据实际电路工作的需要,选择合适的PSD芯片来完成各自的功能。为进一步方便工程师的研发及产品的更新、升级,WSI最近又推出了新一代在系统可编程的微控制器外围器件:PSD8××F系列芯片。该系列产品具有完整的在系统可编程特性,从而可使嵌入式系统的设计更加简单、灵活。
PSD8××F除提供与各种微控制器直接连接的总线接口逻辑外,片内还集成了优化的“宏单元”逻辑阵列块,它包括输入宏单元和输出宏单元。这些宏单元,既可传递组合逻辑信号,又可在时钟同步下寄存输出,以完成一定的时序要求。其中,输入宏单元可将来自引脚的输入信号经锁存、寄存后或直接传至内部PLD阵列的输入总线,一个典型的应用就是分离地址/数据复用总线上的地址信息,或在两个CPU通过共享存储体传递数据时提供握手通信信号。而输出宏单元既可作为一个内部节点,通过器件内部的反馈网络将宏单元的输出信号反馈至PLD的输入总线,也可直接通过引脚输出,一个典型的应用是可利用这些输出宏单元构成一个定时器/计数器,或实现状态机逻辑功能。以PSD813F1为例,单个芯片内集成有:
64字节的E2PROM(OTP)存储器,由用户存入特殊的文档信息;
128K字节的Flash存储器,分成8个大小相同的块,每个块均可被设定为程序空间或数据空间,以分别用来存放程序或数据;
32K字节的E2PROM存储器,分成4个大小相同的块,每个块均可被设定为程序空间或数据空间,以分别用来存放程序或数据;
2K字节的SRAM存储器,掉电时可自动切换到备用电源供电,以保持数据;
24个输入宏单元和16个输出宏单元,可有效地实现多种逻辑功能,包括状态机和地址译码器;
27个独立可配置输入/输出引脚,可用作标准MCU I/O,PLD I/O,锁存地址输出及特殊功能I/O;
8个页面寄存器,使微控制器的寻址空间扩展256倍;
内置的JTAG从属串口,可在现场对空白器件进行在系统编程或对已编程器件进行重新编程;
10万次的擦除/写入,10年的数据保存期。
零功耗CMOS技术,可编程的电源管理单元,支持两种独立的低功耗工作方式,+5V时,待机状态的电流典型值为10μA,且芯片可自动检测微控制器活动的停止,并使PSD进入低功耗方式。
该系列芯片为真正的现场可编程器件,芯片的PSD配置、PLD阵列、E2PROM存储器和Flash存储器均能在系统中编程,通过WSI公司提供的PSDsoft软件包,可生成各种编程器所需的目标文件,包括标准的BSDL和SVF文件格式。由WSI公司自身提供的编程器有三种。它们分别是:MagicProⅢ、PSDPro和FlashLink,其中FlashLink为低成本的编程适配器,其一端与PC机的并行打印口相连,另一端则是标准14引脚的JTAG带状连接器,可直接与目标系统板上的JTAG接口相连,通过JTAG信号线对PSD8××F器件进行在系统编程,从而省去专用的器件编程器。当电路设计中不使用JTAG信号对器件进行编程时,可使用另外两种编程器完成对器件的编程任务。此时对应的引脚可用作其它目的。
由于PSD8××F片内集成有多个功能块,受篇幅限制,本文只着重介绍与JTAG接口有关的内容。
1 JTAG技术规范
PSD8××F遵守IEEE1149.1 JTAG技术规范的基本要求,但不支持该技术规范内定义的边界扫描功能,而支持JTAG接口的在系统配置(ISC)规范,并允许PSD8××F与其它工作于边界扫描方式的器件一起存在于JTAG链中,此时,PSD8××F支持BYPASS命令。
IEEE JTAG-ISC规范仍在制订中,尽管如此,许多应用系统均采用通用可接受数据文件格式来反映最近的ISP规范。同样,在PSD编程环境,需要两个文件来定义ISC功能,一个文件是边界扫描定义语言(BSDL)文件,它用来定义被编程器件的引脚和内部寄存器(JTAG编程方式);另一个文件是串行矢量格式(SVF)文件,它用来定义所产生的动作。这两个文件均可由PSDsoft软件包产生(关于JTAG和文件格式的详细信息,请参见德州仪器网址www.ti.com搜索JTAG和PRIMER)。
标准JTAG采用4个基本信号:TCK、TMS、TDI、TDO。其中,TCK为同步时钟,TDI和TDO分别为串行数据输入和串行数据输出,TMS为JTAG方式选择。WSI还提供增强的JTAG引脚信号,即在上述4个标准信号的基础上,又附加两个信号线:和。其中,代表正在进行的当前动作的瞬时状态,TERR指示对字节或扇区的编程/擦除是否超时。到目前为止,还没有一个标准的JTAG引脚信号分配方案,由WSI公司定义的连接器引脚信号如图1。这里,除上述已介绍的6个信号外,附加的信号有:提供低电平有效的使能输入信号,以便使PSD8××F的JTAG功能在端口C引脚上有效;RST,复位目标系统;,复位目标板上的JTAG;CNTL,由用户定义的信号。
2 编程/擦除流程控制
有三种方法控制JTAG器件编程器和PSD器件之间的数据传输,其中option2和option3是WSI增强型ISP特性的选择。
option1:无流程控制(使用标准的4个JTAG引脚)。通常不予推荐。它涉及并考虑每次编程或擦除动作的最差情况下的最大时间。
option2:软件流程控制(使用标准的4个JTAG引脚)。用软件方法扫描硬件信号TSTAT和TERR,使用串行方式传输信息,不必等待每次编程/擦除动作的最大时间,此方法较option1有较大改进。
option3:硬件流程控制(使用增强的6个JTAG引脚)。对于每次编程/擦除动作,器件编程器将直接轮询TSTAT和信号,相对option2有可观的改进。
3 JTAG信号引脚的使能控制
在PSD8××F器件内部,所有与JTAG接口有关的信号均可从PSD8××F的端口C引脚上输出。由于端口C是一个多功能口,当JTAG编程完毕后,可将端口C用作其它目的。为了允许这种情况的出现,在PSD8××F器件内部,提供了三个不同的条件来使能标准的JTAG信号。这三个条件在逻辑上组织成“或”的关系。即只要其中任何一个条件为真,均使能JTAG信号连至端口C,其逻辑表达式如下:
JTAG_ON = !Jtag_en + Jtag_FF + Jtag_PT
(1)Jtag_en由PSDsoft软件包中→PSD configuration(或Device config)→JTAG configura-tion→JTAG Functions中的第一个选择框Enable TMS/TCK/TDI/TDO on PC0/PC1/PC5/ PC6确定。允许时,Jtag_en=0,未选择时,Jtag_en=1。当器件空白时,Jtag_en=0,即JTAG在端口C上被使能,以允许FlashLink对器件进行首次编程,一旦器件被编程且JTAG功能被禁止,则无法通过Flash Link对已编程器件中的内容进行第二次更新。在此情况下,只能通过WSI的专用编程器对其进行后续的擦除/编程操作。
(2)Jtag_FF为PSD器件内部的JTAG使能寄存器的位0,其地址为CSIOP+C4H,其配置如下:
JTAG使能寄存器(地址为CSIOP+C4H)
在该寄存器中,位1~7未用,应置为0,位0的定义如下:
JTAG_EN=1 JTAG端口被使能 即Jtag_FF = 1
JTAG_EN=0 JTAG端口被禁止 即Jtag_FF = 0
(3)Jtag_PT是在PSDabel内定义的JTAG使能乘积项,该乘积项由PSD器件内部的一个节点输出,并由PSDabel提供一个保留名jtag sel。
4 专用JTAG引脚功能
将PSD8××F的端口C专用于JTAG功能的基本连接方法如图2。
对于option1和option 2,可不连接TSTAT和,此时PSD8××F的PC3、PC4可用于其它功能。这里假定PC口被设定为CMOS输出,若设置为开路输出,应分别在每一个信号的引出端连接100kΩ的上拉电阻。为了减少与电缆有关的尖峰或振铃造成的虚假TCK信号,推荐在TCK的输入端使用斯密特触发器进行缓冲。
专用于JTAG引脚功能对芯片的JTAG配置如下:
(1)在PSDabel中,书写方程:jtag sel = 0,即无需任何乘积项。
(2)在PSD configuration中,选中Enable TMS/TCK/TDI/TDO on PC0/PC1/PC5/PC6以保证JTAG信号在端口C上始终有效。
5 复用JTAG引脚功能
仅当使用FlashLink编程器通过JTAG连线编程PSD8××F时,片内的JTAG信号才被连至端口C相应的引脚上,而当编程结束后可将端口C用于其它目的。这样,可使同一端口用于多种目的。而IEEE1149.1规范并不支持JTAG引脚与其它功能多路复用,这是WSI的PSD8××F器件特有的功能。为保证该功能的正确实现,可利用FlashLink编程适配器上提供的JEN信号,该信号为低电平有效,并将其作为PSD8××F内部PLD阵列的一个逻辑输入,参与JTAG乘积项的控制,其基本连接方法如图3(这里假设被连至PC7)。
对于option1和option 2,开路输出及TCK斯密特触发器的缓冲的说明与专用JTAG引脚部分的说明相同。特别需要注意的是,要确保在编程期间内,用户电路组件上的专用I/O信号与JTAG信号不发生冲突。即在JTAG工作期间没有用户指定的逻辑电平驱动JTAG信号或没有JTAG信号以有害的方式驱动用户指定的逻辑,这里是在用户I/O与PSD8××端口C之间插入双向三态缓冲器,当JEN信号有效时,使缓冲器处于高阻态,从而阻断用户I/O端口与PC口JTAG信号之间的联系,用户可根据实际电路工作的需要,选择合适的三态缓冲器,以确保得到正确的逻辑状态。
该方案对芯片的JTAG配置如下:
(1)在PSDabel中,书写方式为
JEN pin 11 ;这里指定PC7用于JEN输入,也可将JEN连至其它引脚
jtag sel =! JEN ;仅当JEN信号有效时,才将芯片内部JTAG功能连至端口C相应引脚
(2)在PSD configuration中,禁止Enable TMS/TCK/TDI/TDO on PC0/PC1/PC5/PC6,以便于端口C在JTAG无效时可用于其它目的。
6 使用JTAG接口在线编程
WSI的PSDsoft软件包支持在系统编程,只需将FlashLink编程适配器连接在PC机并口与用户JTAG接口之间,即可进行实时在系统编程,其物理连接如图4。
为了实现在系统编程,在启动PSDsoft软件后,选择JTAG Programming进入JTAG chain setup对话窗,在此窗中可完成PSD8××F器件的在系统编程操作,其操作步骤如下:
(1)在chain Information框的File Name栏下,输入目标文件名(其文件扩展名为.obj),也可用鼠标点击按钮框,以浏览并选取相关的文件,然后打开该文件。如选中JTAG_TEST.obj文件名,并打开。
(2)在chain Information框的Device Name栏下,选定器件型号,如PSD813F1。
(3)点击Add按钮,则该芯片的JTAG链路信息被加入,并在Operation栏下显示ByPass,表示该链路目前正处于“旁路”状态。
(4)将鼠标指向刚出现的行上,单击鼠标右键以选择属性配置Properties,此时弹出JTAG chain setup Properties对话窗。
(5)点击Set Pin/Flow Control,选择编程/擦除的流程控制及端口A、B、C、D上电时的状态,一般可选option3或option2流程控制。对JTAG Attributes和user code栏可暂不设置,采用当前的内定值即可,并返回至链路设置对话窗。
(6)同步骤(4),右击鼠标,此时选program,然后按Go按钮,即可开始在线编程。
(7)点击Create SVF按钮,保存当前的配置信息至扩展名为.JCF的文件,以便下次调用时通过JTAG chain File显示框下的File Name栏,将所配置的信息调入使用。
PSD8××F系列芯片为真正的在系统可编程单片机外围芯片,包括MCU接口,flash存储器和E2PROM存储器,均可通过JTAG进行重新编程。另外,还可由MCU控制器来编程PSD8××F内的Flash和E2PROM存储器,利用在一个块内执行程序,编程/擦除另一个块的方法,也可完成对整个片内存储器内容的更新。Flash存储器的8个块和E2PROM或第二flash存储器(取决于所使用器件的型号)的4个块均可分别被擦除和编程,从而为用户的应用设计带来了很大的灵活性。
参考文献
1 WSI PSD8××F系列数据手册. 武汉力源电子股份有限公司, 1999.2