摘 要:介紹了PSD813F1芯片的性能特點(diǎn)及內(nèi)部結(jié)構(gòu),結(jié)合數(shù)據(jù)采集設(shè)備進(jìn)解了PSD813F1與80C196KC組成的測(cè)量系統(tǒng)的實(shí)現(xiàn)方法。
關(guān)鍵詞: PSD單片機(jī)可編程外圍芯片 微控制器 JTAG 數(shù)據(jù)采集
由WSI公司研制的新一代可編程微控制器系統(tǒng)外圍器件PSD813F1芯片,具備完整的在系統(tǒng)可編程(In System Programmable)特性。其在系統(tǒng)可編程不僅僅是對(duì)程序存儲(chǔ)器而言,而是指整個(gè)芯片內(nèi)的所有功能塊的配置,而且可對(duì)器件的邏輯和功能進(jìn)行隨時(shí)組態(tài)或重組。該芯片采用模塊化設(shè)計(jì)技術(shù),可集成一個(gè)單片機(jī)應(yīng)用系統(tǒng)所需的多個(gè)外圍模塊,如將FLASH MEM、EEPROM、SRAM、PLD等集成到單一硅片上,為簡(jiǎn)化微控制器應(yīng)用系統(tǒng)的設(shè)計(jì)、縮短產(chǎn)品的開發(fā)周期、提高系統(tǒng)的可靠性、降低系統(tǒng)的成本、縮小產(chǎn)品尺寸、增強(qiáng)系統(tǒng)保密性提供了一條捷徑。
1 PSD813F1芯片的性能特點(diǎn)
PSD813F1的內(nèi)部結(jié)構(gòu)如圖1所示。
PSD813F1內(nèi)部集成了可分區(qū)段保護(hù)的128K字節(jié)FLASH MEM(閃速存儲(chǔ)器)和32K字節(jié)EEPROM,以及掉電時(shí)通過切換到備用電源以保持?jǐn)?shù)據(jù)的2K字節(jié)SRAM。每一個(gè)存儲(chǔ)器塊可以被用戶通過配置定位在不同地址空間。FLASH MEM分成8個(gè)大小相同的塊,EEPROM分成4個(gè)大小相同的塊,以上各塊均可被設(shè)定成程序空間或數(shù)據(jù)空間;2K字節(jié)的SRAM存儲(chǔ)器可完成數(shù)據(jù)緩存的功能。
PSD813F1具有可與微控制器相匹配的總線接口邏輯,片內(nèi)還集成了優(yōu)化的“宏單元”邏輯結(jié)構(gòu),包括24個(gè)輸入宏單元和16個(gè)輸出宏單元。這些宏單元,既可作為內(nèi)部PLD陣列的一個(gè)組合邏輯輸入信號(hào),又可用來(lái)完成寄存輸出,以完成一定的時(shí)序要求。其中輸入宏單元可將來(lái)自引腳的輸入信號(hào)經(jīng)鎖存、寄存后或直接傳至內(nèi)部PLD陣列的輸入總線。而輸出宏單元既可作為一個(gè)內(nèi)部節(jié)點(diǎn)反饋至PLD的輸入總線,也可直接通過引腳輸出。
芯片包括4個(gè)可編程I/O端口,共27個(gè)允許獨(dú)立配置的端口引腳,端口A、B和C為8位,端口D為3位,端口可設(shè)置為MCU I/O、PLD I/O、外設(shè)I/O、地址輸入輸出、數(shù)據(jù)端口等不同的配置,而且其中的16個(gè)I/O引腳可以設(shè)定為CMOS電平或漏極開路工作方式。這些端口的工作方式由數(shù)據(jù)輸入、數(shù)據(jù)輸出、方向、控制、驅(qū)動(dòng)選擇等寄存器決定,這些寄存器位于以CSIOP為基地址的256字節(jié)空間里,CSIOP基地址由配置軟件決定,不同寄存器具有唯一的相對(duì)于CSIOP基地址的偏移地址,對(duì)寄存器的操作可在程序中完成。
PSD813F1的譯碼邏輯由內(nèi)部FLASH PLD(包括FDPLD和FGPLD)實(shí)現(xiàn),具體結(jié)構(gòu)由與陣列組成。FDPLD為內(nèi)部功能部件提供地址譯碼,例如內(nèi)部的FLASH MEM、EEPROM、SRAM、寄存器,以及I/O端口的選擇。FGPLD用于實(shí)現(xiàn)系統(tǒng)邏輯,如狀態(tài)機(jī)功能塊和組合邏輯的實(shí)現(xiàn)。
PSD813F1的加密技術(shù)為系統(tǒng)的加密提供了便捷的實(shí)現(xiàn)方法,當(dāng)PSD配置寄存器中的保密位被置位時(shí),不允許在器件編程器或通過JTAG端口讀器件,當(dāng)使用JTAG端口時(shí),只有全芯片擦除命令允許,其他命令被阻斷。
2 JTAG編程
PSD813F1為真正的現(xiàn)場(chǎng)可編程器件,包括芯片的PSD配置、PLD陣列、EEPROM和FLASH MEM均能在系統(tǒng)中編程。
基于PSD技術(shù)的硬件設(shè)計(jì)方法是采用硬件描述語(yǔ)言來(lái)設(shè)計(jì)復(fù)雜的數(shù)字邏輯系統(tǒng),生成符合PSD芯片要求、在電路上可行的數(shù)字邏輯,通過WSI公司提供的PSDSOFT軟件包,可生成編程器所需的目標(biāo)文件(包括程序及系統(tǒng)配置文件),經(jīng)JTAG接口可下載到芯片中。
端口C是可復(fù)用的端口,可配置成JTAG編程端口,在現(xiàn)場(chǎng)對(duì)空白器件進(jìn)行在系統(tǒng)編程或?qū)σ丫幊唐骷M(jìn)行重新編程,而無(wú)需使用微控制器。另外,也可以通過微控制器執(zhí)行來(lái)自EEPROM的編程算法,F(xiàn)LASH MEM也可在系統(tǒng)內(nèi)被編程。通過執(zhí)行來(lái)自FLASH MEM的算法,EEPROM也可用同樣的方法進(jìn)行編程。PLD邏輯或其他PSD813F1配置同樣也可通過JTAG口或器件編程器編程。
PSD813F1遵守IEEE1149.1 JTAG(Joint Test Action Group聯(lián)合測(cè)試行動(dòng)小組)技術(shù)規(guī)范的基本內(nèi)容,支持JTAT接口的ISC(In System Configurition在系統(tǒng)配置)規(guī)范,允許PSD813F1與其他工作于邊界掃描方式的器件一起存在于JTAG鏈中,但不支持該技術(shù)規(guī)范內(nèi)定義的邊界掃描功能。
標(biāo)準(zhǔn)JTAG采用4個(gè)基本信號(hào):TCK,TMS,TDI,TDO。其中,TCK為同步時(shí)鐘,TMS為JTAG方式選擇,TDI、TDO分別為串行數(shù)據(jù)輸入和串行數(shù)據(jù)輸出。WSI公司的JTAG接口除以上4個(gè)基本信號(hào)外,還附加提供了用于增強(qiáng)功能的TSTAT和/TERR信號(hào),其中TSTAT代表正在進(jìn)行的當(dāng)前動(dòng)作的瞬時(shí)狀態(tài),/TERR指示對(duì)字節(jié)或扇區(qū)的編程/擦除是否超時(shí)。此外的附加信號(hào)為:/JEN提供低電平有效的使能輸入信號(hào),以便使PSD813F1的JTAG功能在端口C引腳上有效;
/RST復(fù)位目標(biāo)系統(tǒng),/TRST復(fù)位目標(biāo)板上的JTAG,CNTL是由用戶定義的信號(hào)。
3 PSD813F1在數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
PSD813F1可與8位或16位MCU構(gòu)成一應(yīng)用系統(tǒng),本文在此介紹了采用PSD813F1與80C196KC[2]構(gòu)成的現(xiàn)場(chǎng)數(shù)據(jù)采集電路。
3.1 硬件結(jié)構(gòu)
系統(tǒng)硬件結(jié)構(gòu)如圖2所示,核心器件為80C196KC和PSD813F1,圖中簡(jiǎn)化了復(fù)位等電路。
80C196KC為INTEL公司16位單片機(jī)。該單片機(jī)具有16位多路復(fù)用的地址/數(shù)據(jù)總線,工作于12MHz的時(shí)鐘頻率,系統(tǒng)主體程序采用C96語(yǔ)言設(shè)計(jì),程序空間大小占用32K,系統(tǒng)設(shè)計(jì)要求采用非易失性存儲(chǔ)器進(jìn)行數(shù)據(jù)存儲(chǔ),另外需外擴(kuò)SRAM用于數(shù)據(jù)緩存。程序存儲(chǔ)、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)緩存分別由PSD813F1的FLASH MEM、EEPROM和SRAM完成。
A/D轉(zhuǎn)換采用80C196KC自身的10位8路逐次比較型A/D,鍵盤/顯示接口芯片采用8279,與PC機(jī)通信采用MAXIM公司的MAX232用于RS-232通信,由MAX874經(jīng)精密調(diào)整后給80C196KC提供4.096V電壓。8279的片選和地址譯碼由PSD813F1的FGPLD完成。
3.2 軟件設(shè)計(jì)
3.2.1 PSD813F1配置文件設(shè)計(jì)
該電路在PSDSOFT(WSI公司提供的下載軟件)中的配置為:
·多路復(fù)用工作方式
·ALE高電平有效
·讀/寫控制選擇RD/WR
PSD813F1以ABEL語(yǔ)言為硬件描述語(yǔ)言,在本電路中的設(shè)計(jì)方法為:
(1)內(nèi)部譯碼實(shí)現(xiàn):
fs0=!a15*!a14*!a13*!a12; /*fs為設(shè)計(jì)中FLASH MEM的保留名fs0地址空間為0000h~0fffh*/
fs1=!a15*!a14*!a13*a12; /*fs1地址空間為1000h-->1fffh*/
fs2=!a15*!a14*a13*!a12; /*fs2地址空間為2000h-->2fffh*/
fs3=!a15*!a14*a13*a12; /*fs3地址空間為3000h-->3fffh*/
ees0=!a15*a14*!a13*a12; /*ees為EEPROM的保留名,ees0地址空間為4000h-->4fffh*/
ees1=!a15*a14*a13*!a12; /*ees1地址空間為5000h-->5fffh*/
ees2=!a15*a14*a13*!a12; /*ees2地址空間為6000h-->6fffh*/
ees3=!a15*a14*a13*a12;/*ees3地址空間為7000h-->7fffh*/
rs0=a15*!a14*!a13*!a12*!a11*!a10; /*rs為SRAM的保留名,地址空間為8000-83fffh*/
csiop=a15*!a14*!a13*a12;/*csiop基地址為9000h*/
(2) 外部譯碼的實(shí)現(xiàn):
將PB的最低位端口設(shè)計(jì)為片選信號(hào)的設(shè)計(jì)方法為
cs1 pin7; /*PB的0端口*/
cs1=!(a15 *a14*/a13*a12); /*8279的地址空間為d000h-->dfffh*/
3.2.2 程序設(shè)計(jì)
程序設(shè)計(jì)語(yǔ)言為C96,其實(shí)現(xiàn)如下:
對(duì)SRAM的操作為:
static const unsigned char *pointer_sram=0x8000; /*設(shè)置SRAM數(shù)據(jù)單元的基址指針*/
pointer_sram=0xaa; /*將數(shù)據(jù)寫入基址單元*/
pointer_sram[1]=0xbb; /*將數(shù)據(jù)寫入下一地址單元*/
……
對(duì)EEPROM的操作為:
static const unsigned char *pointer_ee=0x4000;/*設(shè)置EEPROM空間的基址指針*/
pointer_ee=0xaa;
…… /*延時(shí)等待,對(duì)EEPROM的單元寫入數(shù)據(jù)時(shí)必須增添一定的時(shí)間延時(shí)*/
pointer_ee[i]=0xbb; /*i為地址增量,即相對(duì)于基地址的偏移量*/
……
端口A、B的地址及各控制寄存器的地址由CSIOP的基地址加偏移地址來(lái)決定,本設(shè)計(jì)中PA.0用于為8279的A0提供地址信號(hào)。如不采用PSD813F1,則需在80C196KC和8279之間接74373用于地址鎖存輸出,采用PSD813F1則只需配置端口A的PA.0工作于地址鎖存工作方式,配置由A口的控制寄存器(占據(jù)一字節(jié)空間)決定,實(shí)現(xiàn)方法如下:
static const unsigned char *csiop=0x9000;
csiop[2]=0xfe; /*端口A的控制寄存器相對(duì)于CSIOP基地址的偏移地址為02H;此時(shí)PA.0在控制寄存器中的相應(yīng)位為0,因此PA.0工作于地址鎖存輸出方式,其他高7位相應(yīng)位為1,因此工作于MCU I/O方式*/
對(duì)8279的初始化操作為:
static const unsigned char *pointer_8279=0xd000h;/*基址為數(shù)據(jù)口地址*/
pointer_8279[1]=0xd1;/*對(duì)命令端口寫入清除命令*/
do{}
while((pointer_8279[1]‖0x7f==0x7f);/*等待清除完成*/
pointer 8279[1]=0x2a; /*送程序時(shí)鐘分頻常數(shù)*/pointer_8279[1]=0x08; /*寫鍵盤/顯示器工作方式命令*/
pointer_8279[1]=0x90; /*寫顯示RAM命令*/
pointer_8279=0x10;/*向數(shù)據(jù)口送入顯示數(shù)據(jù)0x10*/
總之,本文通過設(shè)計(jì)該數(shù)據(jù)采集系統(tǒng),表明PSD813F1芯片集FLASH MEM、EERPOM、SRAM、PLD等于一體,可代替電路設(shè)計(jì)中的程序存儲(chǔ)、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)緩存和譯碼等芯片,從而可使單片機(jī)系統(tǒng)大大簡(jiǎn)化,一個(gè)實(shí)用系統(tǒng)可簡(jiǎn)化為“兩片”系統(tǒng),而其JTAG技術(shù)更是為該芯片的使用增添了便捷的設(shè)計(jì)和使用手段。
參考文獻(xiàn)
1 PSD8XXF系列數(shù)據(jù)手冊(cè)及應(yīng)用筆記.武漢:武漢力源1998
2 孫涵芳.INTEL 16位單片機(jī).北京:北京航空航天大學(xué)出版社