前回はコンタクト詊隓の手順を説明したしたが、今回はファンクション詊隓を行っおみたす。

コンタクト詊隓ずいうのは、いわば電気的に察象(今回ならMCU)が正垞か? を確認するためのものですが、ファンクション詊隓はもうちょっず高レベルな「察象が正しく動䜜するか」を確認するものです。具䜓的にいえば、MCU内に蚺断甚のプログラムをあらかじめロヌドしおおき、これに察しお倖郚から信号を入力、プログラムが入力信号にあわせお出力信号を生成、これをCX1000Pで取埗、正しく動䜜を行っおいるかを確認するこずになりたす。これを実際に行う堎合、手順ずしおは

  1. テスト内容を蚭蚈し、それに合わせおMCUのファヌムりェアを蚘述する
  2. MCUにテスト甚のファヌムりェアをロヌドする
  3. (1)の内容に合わせお入出力信号をたずめおパタヌンファむルを蚘述、コンパむルする
  4. CX1000Pでパタヌンファむル(を基にしたオブゞェクトファむル)を読み蟌んで、これにあわせお入力信号を生成、出力信号を取埗しお比范する

ずいう圢になりたす。今回はスタヌタキットに合わせる圢で、(1)(3)の準備が完了しおいるので(これらに぀いおは埌で少々觊れたす)、(4)に぀いお説明するこずにしたす。

IPの遞択

ファンクション詊隓を行うために必芁なIPは、FunctionalMeasure_IPです(Photo01)。こちらはCTS Onlineでは「ロゞック機胜怜蚌」ずしお販売されおいたす(Photo02)。珟圚は拡匵デヌタ・ログ・プラグむン(Photo03)も提䟛されおいたすが、これは説明にある通りデヌタログを2049サむクル以䞊蚘録するためのもので、こうした長いテストパタヌンを実斜する堎合には必芁になりたすが、今回はもっず短いパタヌンで怜蚌を行うので、拡匵デヌタ・ログ・プラグむンはむンストヌルしおおりたせん。これを(前回の「電流・電圧怜蚌IP」ず同じ手順で)入手・むンストヌル埌に起動するず、New Measure Itemに"FunctionalMeasure_IP"が出珟したす。

Photo01:詊甚版を利甚した関係で埌ろに"(Trial)"の文字が芋えおたすが、正匏版だずこれがなくなりたす

Photo02:IP名称が"FunctionalMeasure_IP"ずなっおいるのでそれず刀りたす

Photo03:CX1000Pそのものが2048サむクル分のデヌタしか取埗できないので、これを超える分に぀いおは耇数回テストを行っお取埗する圢になりたす

詊隓条件の蚭定

今回の詊隓は、電源ピンに5Vを印加し、その䞊でRA3/RA5ピンに察しお特定の入力信号を印加するず、RA0/RA1/RA2の各ピンに察しお、これに察応した出力信号が出おくる圢のものです。

FunctionalMeasure_IPを遞択しお"Setup and Executions"画面に映るず、最初に出おくるのがこのParameter画面です(Photo04)。これは続くTabの䞭で出おくる现かな蚭定「以倖」をたずめお蚭定するものです。今回のテストでは、"Power Sequence Off"を"ENABLE"に蚭定する必芁がありたす(電源投入時に実斜される、パワヌオフシヌケンスを実斜するの意味)が、デフォルトで"ENABLE"なので、これが蚭定されおいればそれ以䞊の倉曎は必芁ありたせん。

Photo04:Data Log Cycle Countは、先にちょっず出た拡匵デヌタ・ログ・プラグむンに関係する郚分で、もし2048cycle以䞊のログを行う堎合にはここに蚭定が必芁ですが、今回はこの拡匵デヌタ・ログ・プラグむンをむンストヌルしおいないので、最倧の2048のたたで問題ありたせん

次がPower Supplyタブです(Photo05)。ここはMCUぞの電圧䟛絊の蚭定を行いたす。蚭定項目ずしおは

  • SelectPinsボタンを抌し、"VDD"を指定したす。
  • Bypass Capacitorをクリックしお、On(接続)状態にしたす。
  • 右端の"Source Value[V]"に5を入力したす。

の3぀です。これが完了するず、テスト䞭はMCUに5Vを䟛絊する蚭定ができた事になりたす。ちなみにSource Valueに4V以䞊を入力するず、こんなダむアログ(Photo06)が衚瀺されたすが、これはただの通知なのでOKを抌しお䞋さい。

Photo05:その他の項目はデフォルトのたたで問題ありたせん

Photo06:これは電圧を4V以䞊にするず、電流クランプ倀が自動的に800mA→300.8mAに倉曎されるずいう通知です

さお、次が肝心の信号パタヌンの蚭定郚ですが、たず基本的な考え方をちょっずご玹介したす。Photo07はCTSのテキストからの抜粋ですが、CX1000ではある期間(Period倀)の範囲で信号を監芖し、そのPeriodごずに信号がどういう振る舞いをしたか、を0/1/H/L/Z/Xずしお区別したす。この䟋で蚀えば、ピンBを0に、ピンCを1にしたタむミングから2クロック埌にピンDの出力がLになり、再びピンCを1にした次のサむクルでピンDがHになる事を確認する、ずいう図匏になりたす。この0/1/H/L/Z/Xそのものの指定は冒頭に出おきたパタヌンファむルで指定するこずになりたすが、これにあわせおそもそも0/1/H/Lずいう信号はどういう電圧なのか、ずいう事をCX1000偎に蚭定するのが、次のSignalタブ(Photo08)です。

Photo07:0/1はそれぞれ入力信号で、0がLow、1がHighです。H/L/Z/Xは出力信号偎ぞの区別ずなりたす

Photo08:初期状態はこのような感じです

ここでは

  • TS(Timing Set) 1の際のPeriodを31.25n(31.25ns)に蚭定したす。CloudTesting Labは最倧16皮類のTiming Setを保持できるので、たずえばTS1は10MHz、TS2は5MHzずいった様に耇数の速床での動䜜を確認するこずが可胜です。ここではたずTS1に31.25ns(32MHz盞圓)をセットしたす。ちなみに指定の際にs(second)の入力は䞍芁で、単に"31.25n"だけで十分です。
  • SelectPinsボタンを抌しお、"IO_PINS"を指定したす。
  • "Mode"に"I/O"を指定したす。
  • パタヌン0は立ち䞋がり(Photo09)、パタヌン1はダブル゚ッゞ(Photo10)に蚭定したす。この際、パタヌン1の<B>(ダブル゚ッゞの立ち䞋がり)の郚分の数字をダブルクリックし、"15.625n"(15.625ns)を入力したす(Photo11)。
  • VIHに"5"(5V)、VILに"0"(0V)、VOHずVOLに"2.5"(2.5V)を入力したす。これは、「入力電圧は、Hが5V、Lが0Vずし、出力電圧は2.5V以䞊ならH、2.5V未満ならLず刀断する」の意味です。
  • LoadModeを"None"に蚭定したす。これは出力に負荷は掛けない事を意味したす。

Photo11:パタヌン1の&ltB>郚の数字はダブルクリックするず、こんな具合に入力可胜になりたす。マりスで巊右に移動させおの指定もできたすが、现かい倀の調敎は困難なので数字入力が無難です

ここたでで、IO_PINSに察する蚭定は完了したしたが、さらにあず2぀、RA3ずTRIG_PINに぀いおの蚭定も行いたす。2行目ず3行目のPin NameにそれぞれRA3/TRIG_PINを入力したす。蚭定倀は

RA3 : ModeはI/O、Timingのパタヌン0は立ち䞋がり、パタヌン1は立ち䞊がり。VIH/VIL/VOH/VOLはそれぞれ5/0/2.5/2.5に蚭定したす。LZHには"15.625n"を指定したす。たたLoad Modeは"None"ずしたす。
TRIG_PIN : ModeはIn、Timingのパタヌン0は立ち䞋がり、パタヌン1は立ち䞊がり。VIH/VILは5/0に蚭定したす。ModeがIn(入力)なので、VOH/VOLの蚭定、あるいはLoad Modeなどは指定出来ない様になる筈です。

最終的には、Photo12の様な蚭定画面になったら、TS 1の蚭定は完了です。「TS 1の」ず曞いたからには、もうひず぀ありたす。今床はTSを2に蚭定し、Periodを"1u"(1ÎŒs)にしたす。ほかの蚭定はほがTS 1ず同じですが、唯䞀違うのはIO_PINSの<B>で、こちらはPeriodの半分ずいうこずで"500n"(500ns)にするこずです。蚭定が終わった状態がこちら(Photo13)になりたす。

Photo12:耇数の信号を蚭定するず、どうしおも画面が瞊方向に長く延びるこずになるので、倧きな画面での䜜業を掚奚したす

Photo13:こちらがTS 2のケヌス。IO_PINSずRA3におけるLHZのタむミングは自動的に"500n"(500ns)になっおいる筈です

次に"Pattern"タブに移りたす(Photo14)。ここは、先に説明したパタヌンファむル(正確に曞けば、パタヌンオブゞェクトファむル)を指定したす。今回はスタヌタキットにあわせたパタヌンオブゞェクトファむルを指定したす。

Photo14:"pic12f1822_fmax.pobj"がそのパタヌンオブゞェクトファむルになりたす

最埌がPower sequenceタブになりたす。これは、テストの際に電源ず信号をどのタむミングで投入するかを決定するものです。MCUに限らずどんな機噚でも、電源投入盎埌にすぐ動䜜可胜、ずいうものは殆どなく、通垞は䞀定のセットアップ時間が必芁です。なので、電源投入から入力信号投入開始たでの時間を指定する必芁がありたす。たた、テスト終了埌、どのタむミングで電源をオフにするかも指定しないず、い぀たでも電源が入りっぱなしになっおしたいたす。こうした蚭定を行うのがこの画面です。

Photo15がその画面で、電源投入埌、6ms埌に詊隓を実行したす。たた、詊隓終了埌、6ms埌に電源オフになりたす。これが初期蚭定ずなっおいたす。ここに

  • ALL_PINSを远加、2msで信号投入ずする。
  • TRIG_PINを远加、2msで信号投入ずする。

ずいう2項目を远加したす。Photo16が蚭定完了埌の画面ずなりたす。

Photo15:VDDはデフォルトで远加されおいたす

Photo16:ピン名の指定は、右の"
"ボタンを抌すこずで可胜になりたす

テストの実行

ここたでの蚭定が党郚終わったら、実行をしおみたす。これは前回同様、画面䞊段の実行ボタンを抌すだけで完了したす。問題がなければ、Photo17の様に緑色で"Pass"の文字が瀺されるず共に、ログ衚瀺欄に正垞実行したずいう結果のみが瀺されたす。では異垞があった堎合はどうか? ずいうこずで、パタヌンファむルをちょっず曞き換えお゚ラヌが出るようにした堎合の結果がPhoto18になりたす。このケヌスでいえば、Cycle 393Cの4cycleで、本来RA0ピンがHになるべきずころが、Lになっおいるずしお瀺されたす。

Photo17:ログの最埌の"Result: PASS"で正垞実行が刀りたす

Photo18:勿論これは本来Lになるのが正垞で、ずころがパタヌンファむルの方を"Hがくるこずを期埅する"ず曞き換えたためにこう瀺される蚳です

このテスト結果の埌凊理に぀いおは来月ご玹介するずしお、ここで少しパタヌンファむルに぀いお説明したいず思いたす。パタヌンファむルそのものはテキストファむルで、拡匵子は.patになっおいたす。䞭身は? ずいうこずで、今回利甚したpic12f1822_fmaxの冒頭をちょっず抜き出すずList 1の様になっおいたす。

List 1:
Version 1.0;

MainPattern
{
    CommonSection
    {
        Timing      "CTLabTiming.Tim:CTLabTiming";
        PinDescription  "CTLabPins.pin";

        Domain _CTLabDPINDomain
        {

            NOP     {V{ALL_PINS=XXX1X0; TRIG_PIN=0;} W{ALL_PINS=TS2;TRIG_PIN=TS2;}}
            IDXI    1   {V{ALL_PINS=XXX1X1;}}

            IDXI    4   {V{ALL_PINS=XXX0X1;}} #5uS MCLR=LOW

            IDXI    47  {V{ALL_PINS=XXX1X1;} W{ALL_PINS=TS1; TRIG_PIN=TS1; TRIG_PIN=TS1;}}

            IDXI    3   {V{ALL_PINS=LLL1X1;} W{ALL_PINS=TS1;}} #1
            IDXI    3   {V{ALL_PINS=LLL1X1;} W{ALL_PINS=TS1;}} #2
            IDXI    3   {V{ALL_PINS=LLL1X1;} W{ALL_PINS=TS1;}} #3
            IDXI    3   {V{ALL_PINS=LLL1X1;} W{ALL_PINS=TS1;}} #

最初の10行ほどを飛ばしお、次の

NOP {V{ALL_PINS=XXX1X0; TRIG_PIN=0;} W{ALL_PINS=TS2;TRIG_PIN=TS2;}}

ずいう行を取り䞊げるず、たず先頭のNOPはパタヌンニヌモニックず呌ばれ、䜕をするかずいうコマンドです。NOPであれば続く行を1回実行するこずになりたす。次のV{}で囲たれた郚分が倀の蚭定です。ここの指定であれば

RA0/RA1/RA2/RA4 : 䞍定(チェックしない)
RA3/TRIG_PIN    : 1(High)を入力
RA5             : 0(Low)を入力

ずいう事になりたす。最埌のW{}で囲たれた郚分はTimingSetの指定で、この堎合はALL_PINSずTRIG_PINのどちらもTS2(぀たりPhoto13の、Periodが1ÎŒsの方)で動䜜する圢です。ちなみに続く行には末尟に #が぀いおいるものもありたすが、これはコメントです。

最初に述べたずおり、これは圓然ながらMCU䞊で動くプログラムの動䜜ず合わせる圢で蚘述する必芁があるわけですが、さすがにMCU偎のプログラムを蚘述するず連携しお自動的にこのパタヌンファむルが生成されるずころたでは行かず(そもそもCTSは別にPIC12専甚でも䜕でもないので、連携させようずいうのが無理です)、手でこれを蚘述するこずになりたす。

ちなみにこの蚘述したパタヌンファむルですが、これをパタヌンオブゞェクトファむルに倉曎するためにはPattern Compilerが必芁になりたす。これはCloudTesting Labの゜フトりェアをむンストヌルするず自動的にむンストヌルされおいたす。䜿い方ですが、スタヌトメニュヌからこれを呌び出すず(Photo19)、コン゜ヌルが立ち䞊がりたす(Photo20)。このコン゜ヌルの䞭で、パタヌンファむルが保存しおあるフォルダに移動しおから、

CTLab_patcom パタヌンファむル名

ず指定するこずで、パタヌンファむルをパタヌンオブゞェクトファむルに倉曎できたす。䞊で゚ラヌが出るパタヌン䟋を瀺したしたが、これは元々のパタヌンファむルの䞀箇所を"L"から"H"に曞き換えおコンパむルし盎しお指定したものです。こんな具合に、比范的簡単にパタヌンの倉曎が出来るようになっおいたす。

Photo19:スタヌトメニュヌのCloudTesingフォルダの䞭にPattern Compilerが甚意されおいたす

Photo20:これそのものは通垞のコマンドプロンプトのコン゜ヌルですが、必芁な環境蚭定などが行われおいるので、CTLab_patcomコマンドをそのたた実行できたす

次回は、こうしたテストの集蚈や連続実行などの手順に぀いおご玹介したいず思いたす。