崔艾東,趙國(guó)華
(1.中國(guó)電子科技集團(tuán)公司第四十七研究所,沈陽(yáng) 110000;2.海軍青島雷達(dá)聲納修理廠,青島 266121)
目前的新型八位MCU類產(chǎn)品,架構(gòu)上結(jié)合了流水線[1-3]設(shè)計(jì)理念,大大提高了指令執(zhí)行效率。芯片內(nèi)部往往集成了大容量FLASH或EEPROM作為程序存儲(chǔ)器,結(jié)合專用通信接口,可實(shí)現(xiàn)在系統(tǒng)的快速編程能力。除此之外,為滿足芯片小型化和功能多元化的共同需求,其內(nèi)部也大多集成了豐富的模擬資源[4-5]和串行通信接口,如較高精度的ADC和DAC等。然而芯片制造工藝往往存在不穩(wěn)定性,最終會(huì)導(dǎo)致芯片的個(gè)體性能差異,因此每顆芯片在出廠使用前必須經(jīng)過(guò)參數(shù)的修調(diào)校準(zhǔn)。本研究即以MCU內(nèi)DAC模塊[6-8]為例,介紹一套基于程序算法和硬件電路的修調(diào)方法。
DAC為電壓輸出型數(shù)/模轉(zhuǎn)換器,可用來(lái)控制寄存器中的DACEN位以使能或禁止DAC電壓輸出,并通過(guò)配置控制寄存器來(lái)改變最大輸出電壓大小。
DAC有三種更新方式:寫DACH、定時(shí)器溢出、外部引腳邊沿觸發(fā)。其中DAC的缺省更新方式為“On-Demand”,更新發(fā)生在寫DAC數(shù)據(jù)寄存器高字節(jié)(DACH)時(shí)。在該模式下,寫低字節(jié)(DACL)時(shí)數(shù)據(jù)被保持,在寫DACH之前DAC的輸出不會(huì)發(fā)生變化。如果要向DAC的數(shù)據(jù)寄存器寫12位的數(shù)據(jù)字,則12位數(shù)據(jù)字要寫入DACL和DACH數(shù)據(jù)寄存器。在執(zhí)行完對(duì)DACH的寫操作后,數(shù)據(jù)被鎖存到DAC中,因此要達(dá)到12位分辨率,應(yīng)先寫DACL,再寫DACH。DAC的結(jié)構(gòu)原理如圖1所示。
圖1 DAC結(jié)構(gòu)原理圖
DAC控制寄存器的最高位為模塊電路總使能位,DACCM2-DACCM0可選數(shù)據(jù)更新觸發(fā)方式,可利用內(nèi)部定時(shí)器觸發(fā),也可利用外部信號(hào)觸發(fā),或利用寫DACH寄存器來(lái)進(jìn)行觸發(fā),DACMD1-DACMD0選擇最大輸出電壓大小。
DAC數(shù)據(jù)寄存器(DACH和DACL)中的數(shù)據(jù)是左對(duì)齊的,這意味著DAC輸出數(shù)據(jù)字的高8位被映射到DACH的7~0位,而DAC輸出數(shù)據(jù)字的低4位被映射到DACL的位7~4位。
新型的MCU內(nèi)部通常集成固定容量的FLASH程序存儲(chǔ)器,可通過(guò)內(nèi)部集成的專用通信接口按照特定協(xié)議對(duì)FLASH存儲(chǔ)器進(jìn)行在系統(tǒng)編程,且不需外部的編程條件。
DAC的修調(diào)控制電路如圖2所示。由圖可知,整個(gè)FLASH空間劃分為兩部分:用戶可編程區(qū)和引導(dǎo)區(qū)。以常規(guī)方式是無(wú)法直接對(duì)引導(dǎo)區(qū)域進(jìn)行擦寫操作的,且引導(dǎo)區(qū)內(nèi)部包含特定程序,主要用于實(shí)現(xiàn)兩部分功能:
圖2 DAC的修調(diào)控制電路
其一:可通過(guò)專用通信接口外接下載電纜來(lái)實(shí)現(xiàn)與軟件開發(fā)環(huán)境的在系統(tǒng)編程協(xié)同功能;
其二:在芯片上電復(fù)位后,完成內(nèi)部指定寄存器的初始化配置,完成出廠前的校準(zhǔn),因此需設(shè)計(jì)一套可行的修調(diào)方法來(lái)解決此問(wèn)題。
DAC的控制電路主要由DACCN和DACCN_B兩組寄存器共同組成,內(nèi)部含有可編程自鎖電路設(shè)計(jì),其中DACCN_B為修調(diào)寄存器,DACCN為模式控制寄存器。
修調(diào)寄存器DACCN_B由7組觸發(fā)器和二選一邏輯門組合設(shè)計(jì)而成,前5位DACCN_B<4:0>為預(yù)設(shè)修調(diào)位,可通過(guò)外部修調(diào)方式改寫預(yù)設(shè)碼,此5位預(yù)設(shè)碼可直接用于改善DAC模塊的輸出性能,預(yù)設(shè)碼經(jīng)過(guò)譯碼后的MOS開關(guān)來(lái)改變DAC電路內(nèi)部分壓電阻,進(jìn)而實(shí)現(xiàn)對(duì)輸出電壓的可變調(diào)節(jié)。
第7位DACCN_B<6>為修調(diào)鎖信號(hào),控制著鎖定/解鎖狀態(tài)的切換。當(dāng)DACCN_B<6>=0時(shí),修調(diào)電路處于解鎖狀態(tài),通過(guò)總線寫操作可直接實(shí)現(xiàn)對(duì)預(yù)設(shè)修調(diào)位的編程動(dòng)作,與此同時(shí),后面的DACCN寄存器處于鎖死狀態(tài),不可完成對(duì)DAC模式控制信號(hào)的加載,但DACCN的最高位DACCN<7>并不受鎖信號(hào)控制,可使能或禁止DAC模塊。
反之,當(dāng)DACCN_B<6>=1時(shí),DACCN_B修調(diào)寄存器被上鎖,此時(shí)即可對(duì)DACCN模式控制寄存器進(jìn)行編程。此狀態(tài)屬于MCU上電復(fù)位后的默認(rèn)操作方式。
通過(guò)內(nèi)部專用通信接口按照特定協(xié)議可對(duì)被修芯片內(nèi)部所有寄存器進(jìn)行編程操作,利用此方法搭建驗(yàn)證平臺(tái)。具體修調(diào)流程圖如圖3所示。
圖3 DAC自動(dòng)修調(diào)流程圖
基于上述軟硬件修調(diào)原理,在Cadence環(huán)境中搭建對(duì)應(yīng)仿真平臺(tái),即可模擬仿真主控芯片對(duì)被控芯片內(nèi)部DAC模塊的修調(diào)控制過(guò)程。其中主要關(guān)注通信協(xié)議的建立、被控芯片DAC的鎖信號(hào)以及主控芯片ADC的電壓采集和比較,最終實(shí)現(xiàn)修調(diào)碼的下載。仿真實(shí)驗(yàn)得到的具體實(shí)現(xiàn)波形如圖4所示。
圖4 仿真DAC修調(diào)過(guò)程波形圖
由于MCU內(nèi)部集成模擬外設(shè)的精度往往要求較高,相關(guān)的軟硬件電路修調(diào)的重要性在其中便有充分體現(xiàn)。根據(jù)本研究介紹的設(shè)計(jì)和方法,可在相當(dāng)程度上解決由工藝偏差造成的性能差異問(wèn)題,且不占用額外的MCU資源,易于實(shí)現(xiàn)非侵入式操作,為解決工程技術(shù)問(wèn)題提供助益。