崔艾東,趙國華
(1.中國電子科技集團公司第四十七研究所,沈陽 110000;2.海軍青島雷達聲納修理廠,青島 266121)
目前的新型八位MCU類產品,架構上結合了流水線[1-3]設計理念,大大提高了指令執行效率。芯片內部往往集成了大容量FLASH或EEPROM作為程序存儲器,結合專用通信接口,可實現在系統的快速編程能力。除此之外,為滿足芯片小型化和功能多元化的共同需求,其內部也大多集成了豐富的模擬資源[4-5]和串行通信接口,如較高精度的ADC和DAC等。然而芯片制造工藝往往存在不穩定性,最終會導致芯片的個體性能差異,因此每顆芯片在出廠使用前必須經過參數的修調校準。本研究即以MCU內DAC模塊[6-8]為例,介紹一套基于程序算法和硬件電路的修調方法。
DAC為電壓輸出型數/模轉換器,可用來控制寄存器中的DACEN位以使能或禁止DAC電壓輸出,并通過配置控制寄存器來改變最大輸出電壓大小。
DAC有三種更新方式:寫DACH、定時器溢出、外部引腳邊沿觸發。其中DAC的缺省更新方式為“On-Demand”,更新發生在寫DAC數據寄存器高字節(DACH)時。在該模式下,寫低字節(DACL)時數據被保持,在寫DACH之前DAC的輸出不會發生變化。如果要向DAC的數據寄存器寫12位的數據字,則12位數據字要寫入DACL和DACH數據寄存器。在執行完對DACH的寫操作后,數據被鎖存到DAC中,因此要達到12位分辨率,應先寫DACL,再寫DACH。DAC的結構原理如圖1所示。

圖1 DAC結構原理圖
DAC控制寄存器的最高位為模塊電路總使能位,DACCM2-DACCM0可選數據更新觸發方式,可利用內部定時器觸發,也可利用外部信號觸發,或利用寫DACH寄存器來進行觸發,DACMD1-DACMD0選擇最大輸出電壓大小。
DAC數據寄存器(DACH和DACL)中的數據是左對齊的,這意味著DAC輸出數據字的高8位被映射到DACH的7~0位,而DAC輸出數據字的低4位被映射到DACL的位7~4位。
新型的MCU內部通常集成固定容量的FLASH程序存儲器,可通過內部集成的專用通信接口按照特定協議對FLASH存儲器進行在系統編程,且不需外部的編程條件。
DAC的修調控制電路如圖2所示。由圖可知,整個FLASH空間劃分為兩部分:用戶可編程區和引導區。以常規方式是無法直接對引導區域進行擦寫操作的,且引導區內部包含特定程序,主要用于實現兩部分功能:

圖2 DAC的修調控制電路
其一:可通過專用通信接口外接下載電纜來實現與軟件開發環境的在系統編程協同功能;
其二:在芯片上電復位后,完成內部指定寄存器的初始化配置,完成出廠前的校準,因此需設計一套可行的修調方法來解決此問題。
DAC的控制電路主要由DACCN和DACCN_B兩組寄存器共同組成,內部含有可編程自鎖電路設計,其中DACCN_B為修調寄存器,DACCN為模式控制寄存器。
修調寄存器DACCN_B由7組觸發器和二選一邏輯門組合設計而成,前5位DACCN_B<4:0>為預設修調位,可通過外部修調方式改寫預設碼,此5位預設碼可直接用于改善DAC模塊的輸出性能,預設碼經過譯碼后的MOS開關來改變DAC電路內部分壓電阻,進而實現對輸出電壓的可變調節。
第7位DACCN_B<6>為修調鎖信號,控制著鎖定/解鎖狀態的切換。當DACCN_B<6>=0時,修調電路處于解鎖狀態,通過總線寫操作可直接實現對預設修調位的編程動作,與此同時,后面的DACCN寄存器處于鎖死狀態,不可完成對DAC模式控制信號的加載,但DACCN的最高位DACCN<7>并不受鎖信號控制,可使能或禁止DAC模塊。
反之,當DACCN_B<6>=1時,DACCN_B修調寄存器被上鎖,此時即可對DACCN模式控制寄存器進行編程。此狀態屬于MCU上電復位后的默認操作方式。
通過內部專用通信接口按照特定協議可對被修芯片內部所有寄存器進行編程操作,利用此方法搭建驗證平臺。具體修調流程圖如圖3所示。

圖3 DAC自動修調流程圖
基于上述軟硬件修調原理,在Cadence環境中搭建對應仿真平臺,即可模擬仿真主控芯片對被控芯片內部DAC模塊的修調控制過程。其中主要關注通信協議的建立、被控芯片DAC的鎖信號以及主控芯片ADC的電壓采集和比較,最終實現修調碼的下載。仿真實驗得到的具體實現波形如圖4所示。

圖4 仿真DAC修調過程波形圖
由于MCU內部集成模擬外設的精度往往要求較高,相關的軟硬件電路修調的重要性在其中便有充分體現。根據本研究介紹的設計和方法,可在相當程度上解決由工藝偏差造成的性能差異問題,且不占用額外的MCU資源,易于實現非侵入式操作,為解決工程技術問題提供助益。