(57)【特許請求の範囲】
【請求項１】
磁気共鳴測定を実行するための実行用情報の中で先行処理の対象となる部分を特定し、その部分から生成された命令列をプロシージャー実体として第１記憶部へ転送すると共に、当該部分に代えて前記プロシージャー実体を特定するための参照情報が埋め込まれた転送用の命令列を生成する先行処理を実行する先行処理手段と、
前記先行処理後の転送用の命令列について先頭から転送単位で順次、第２記憶部への転送を繰り返す単位転送手段と、
前記第２記憶部上に順次転送される転送用の命令列を先頭から参照して実行用の命令列を再構成する手段であって、前記参照情報に基づいて前記第１記憶部上のプロシージャー実体を参照することにより前記実行用の命令列を再構成する再構成手段と、
前記再構成された前記実行用の命令列を実行するシーケンサー部と、
を含むことを特徴とする磁気共鳴測定装置。
【請求項２】
請求項１に記載の磁気共鳴測定装置において、
前記シーケンサー部は複数のシーケンサーを含み、
前記実行用の命令列は個々のシーケンサー毎に生成され、
前記複数のシーケンサーに対する複数の実行用の命令列に含まれる同一のプロシージャー実体が、前記複数のシーケンサーで共用される、
ことを特徴とする磁気共鳴測定装置。
【請求項３】
請求項１又は請求項２に記載の磁気共鳴測定装置において、
前記実行用情報の中に、同一内容をもった複数のプロシージャー実体に対応する部分が含まれる場合、前記先行処理手段は、当該複数のプロシージャー実体の中の１つを前記第１記憶部へ転送する、
ことを特徴とする磁気共鳴測定装置。
【請求項４】
請求項１から請求項３のいずれか一項に記載の磁気共鳴測定装置において、
前記先行処理手段は、前記実行用情報の中でプロシージャー化条件を満たす部分を特定する手段を含む、
ことを特徴とする磁気共鳴測定装置。
【請求項５】
請求項４に記載の磁気共鳴測定装置において、
前記プロシージャー化条件を満たす部分は、特定パルスシーケンスを実現するための部分である、
ことを特徴とする磁気共鳴測定装置。
【請求項６】
請求項１から請求項５のいずれか一項に記載の磁気共鳴測定装置において、
前記参照情報は、前記第１記憶部上のアドレス又はそれを特定可能な情報である、
ことを特徴とする磁気共鳴測定装置。
【請求項７】
請求項１から請求項６のいずれか一項に記載の磁気共鳴測定装置において、
単位転送はストリーミング転送であり、前記シーケンサー部による前記実行用の命令列の実行開始後においても並列的に実行される、
ことを特徴とする磁気共鳴測定装置。
【請求項８】
請求項１から請求項７のいずれか一項に記載の磁気共鳴測定装置において、
単位転送はストリーミング転送であり、前記転送用の命令列の生成、前記転送用の命令列の転送、前記実行用の命令列の再構成、及び、前記実行用の命令列の実行が、並列的に実行される、
ことを特徴とする磁気共鳴測定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は磁気共鳴測定装置に関し、特に、パルスシーケンスを実行するための命令列の転送技術に関する。
【背景技術】
【０００２】
磁気共鳴測定装置として、核磁気共鳴（NMR：Nuclear Magnetic Resonance）測定装置、及び、電子スピン共鳴（ESR：Electron Spin Resonance）測定装置が知られている。ＮＭＲ測定装置に類する装置として、磁気共鳴画像（MRI：Magnetic Resonance Imaging）装置も知られている。以下、ＮＭＲ測定装置について説明する。
【０００３】
ＮＭＲは静磁場中におかれた原子核が固有の周波数をもった電磁波と相互作用する現象である。その現象を利用して原子レベルで試料の測定を行う装置がＮＭＲ測定装置である。今日、ＮＭＲ測定装置は、有機化合物（例えば薬品、農薬）、高分子材料（例えばビニール、ポリエチレン）、生体物質（例えば、核酸、タンパク質）、等の分析において活用されている。ＮＭＲ測定装置を利用すれば例えば試料の分子構造を解明することが可能である。
【０００４】
ＮＭＲ測定装置は、一般に、制御コンピューター、ＲＦ信号送信部、ＮＭＲ信号検出器（プローブ）、静磁場発生器（超伝導磁石）、ＮＭＲ信号受信部等を含む。もっとも、それらの一部をＮＭＲ測定装置と称することもあり、例えば、制御コンピューター、ＲＦ信号送信部及びＮＭＲ信号受信部を含む分光計（Spectrometer）の部分をＮＭＲ測定装置と称することもある。典型的なＮＭＲ測定では、送信部においてＮＭＲ測定用の高周波信号（ＲＦ送信信号）が生成され、その送信信号がプローブ内の送受信コイルに供給される。これにより生じた電磁波によって試料中の観測核において共鳴吸収現象が生じる。その後に、送受信コイルに誘起されるＮＭＲ信号（ＲＦ受信信号）が受信部に送られ、その受信信号のスペクトルが解析される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−３３５９５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＮＭＲ測定装置においては、パルスプログラムがコンパイラーによってコンパイルされ、これにより命令列が生成される。パルスプログラムは、所望のＮＭＲ測定を実現するためのパルスシーケンスの記述である。命令列は、コンパイラーからシーケンサー部に転送される。シーケンサー部は、転送された命令列に従って、ＮＭＲ測定装置の送信部及び受信部等の動作を制御する。これにより、ＮＭＲ測定が実現される。
【０００７】
複雑なＮＭＲ測定になるほど、シーケンサー部に与えられる命令列は膨大となり、命令列の転送時間は増大する。また、一般のバスを利用してコンパイラーからシーケンサー部へ命令列を転送する場合、転送レート上の制約がある。また、転送先の格納領域の制約もある。転送レートの制約上、命令列の全部を生成してシーケンサー部に転送してからパルスシーケンス動作を開始すると、シーケンサー部の起動つまり測定開始が遅れてしまう問題がある。また、転送先において大容量の格納領域を確保しておく必要がある。これに対処するために、命令列の生成と転送とを並列的に行いながら、測定を開始することが考えられる。しかし、命令列中に一連の高密度部分（例えば、多数のパラメーターを短時間で高速に変更するための命令部分）が存在していると、その部分で命令列の生成及び転送が遅延し、その結果、シーケンサー部が参照する命令列が枯渇する場合がある。これらの問題は他の磁気共鳴測定装置においても指摘し得る。
【０００８】
なお、特許文献１に開示されているＮＭＲ装置においては、パルスシーケンスをパルスの特徴によって複数種類に分け、各セグメントメモリーにそれぞれの種類の単位パルスのデータを記憶させている。しかし、測定開始の遅延及び命令列の枯渇に対処するための構成は、特許文献１に開示されていない。
【０００９】
本発明の目的は、磁気共鳴測定装置において、測定開始の遅延を低減又は防止するとともに、シーケンサー部が参照する命令列の枯渇を回避することにある。
【課題を解決するための手段】
【００１０】
本発明に係る磁気共鳴測定装置は、磁気共鳴測定を実行するための実行用情報の中で先行処理の対象となる部分を特定し、その部分から生成された命令列をプロシージャー実体として第１記憶部へ転送すると共に、当該部分に代えて前記プロシージャー実体を特定するための参照情報が埋め込まれた転送用の命令列を生成する先行処理を実行する先行処理手段と、前記先行処理後の転送用の命令列について先頭から転送単位で順次、第２記憶部への転送を繰り返す単位転送手段と、前記第２記憶部上に順次転送される転送用の命令列を先頭から参照して実行用の命令列を再構成する手段であって、前記参照情報に基づいて前記第１記憶部上のプロシージャー実体を参照することにより前記実行用の命令列を再構成する再構成手段と、前記再構成された前記実行用の命令列を実行するシーケンサー部と、を含むものである。
【００１１】
すなわち、本発明では、命令列の先行転送と順次転送とを併用している。例えば、律速的な重い命令列部分が先行転送の対象となり、軽い命令列部分が順次転送の対象となる。すなわち、重い命令列部分が先に転送され、軽い命令列部分が後から断片的に転送される。重い命令列部分は、例えば、命令が高密度の部分であり、軽い命令列部分は、命令が低密度の部分である。例えば、多数のパラメーターを短時間で高速に変更するための命令列部分が、高密度部分に該当する。高密度部分は、低密度部分と比べて、シーケンサー部における命令列の消費速度が速い。従って、高密度部分に含まれる各命令を順次転送すると、シーケンサー部が参照する命令列が枯渇する可能性がある。つまり、シーケンサー部での命令列の消費速度が命令列の転送速度よりも速くなり、命令列の転送が命令列の消費に追い付かない場合が生じ得る。これに対処するために、本発明では、高密度部分の命令列についてはプロシージャー実体として、他の命令列に先行して転送している。但し、高密度部分以外が先行転送の対象となってもよい。一方、命令列の全部を転送してから測定開始するのでは、転送に要する時間が増大し、測定開始が遅延する問題が生じる。特に、長時間のＮＭＲ測定では、低密度部分の命令列総量が膨大になることが多く、その場合にはより顕著な問題となる。また、命令列が膨大な場合には、転送先において大容量の格納領域を確保しておく必要があるが、無尽蔵の格納領域を確保することは現実的ではない。そこで、本発明では、残余部分に相当する命令列についてはプロシージャー化せずに、順次転送を適用している。これにより、全命令列の転送を待たずに、測定を開始することが可能となる。このように、命令列の先行転送と順次転送とを併用することにより、シーケンサー部が参照する命令列の枯渇を回避することが可能となるとともに、命令列の全部を転送してから測定開始する場合と比べて、測定開始を早めることが可能となる。また、転送先において大容量の格納領域を確保せずに済む。
【００１２】
望ましくは、前記シーケンサー部は複数のシーケンサーを含み、前記実行用の命令列は個々のシーケンサー毎に生成され、前記複数のシーケンサーに対する複数の実行用の命令列に含まれる同一のプロシージャー実体が、前記複数のシーケンサーで共用される。この構成によれば、同一のプロシージャー実体が複数存在する場合であっても、それら複数のプロシージャー実体を転送せずに済む。複数のうちの１つのプロシージャー実体が転送されれば、各シーケンサーでそのプロシージャー実体が共用されて、各シーケンサーで命令が実行される。これにより、命令列の転送量及び転送時間が削減される。また、転送先の格納領域を削減することができる。
【００１３】
望ましくは、前記実行用情報の中に、同一内容をもった複数のプロシージャー実体に対応する部分が含まれる場合、前記先行処理手段は、当該複数のプロシージャー実体の中の１つを前記第１記憶部へ転送する。この構成においても、複数の同一のプロシージャー実体を転送せずに済むため、転送量、転送時間及び転送先の格納領域を削減することが可能となる。
【００１４】
望ましくは、前記先行処理手段は、前記実行用情報の中でプロシージャー化条件を満たす部分を特定する手段を含む。望ましくは、前記プロシージャー化条件を満たす部分は、特定パルスシーケンスを実現するための部分である。例えば、矩形以外の高速な変調を伴う成形パルス（例えば山型状のパルス）を照射するための命令列部分が、プロシージャー実体として扱われる。このような命令列は高密度部分に相当することが多いので、これらを先行処理の対象とすることにより、シーケンサー部における命令列の枯渇を回避することが可能となる。
【００１５】
望ましくは、前記参照情報は、前記第１記憶部上のアドレス又はそれを特定可能な情報である。参照情報を参照することにより、プロシージャー実体の格納先を特定し、その格納先からプロシージャー実体を読み出すことが可能となる。これにより、実行用の命令列が再構成される。
【００１６】
望ましくは、単位転送はストリーミング転送であり、前記シーケンサー部による前記実行用の命令列の実行開始後においても並列的に実行される。この構成によれば、ストリーミング転送の対象となる命令列の転送、命令列の再構成、及び、シーケンサー部による命令列の実行が並列的に実行される。また、望ましくは、単位転送はストリーミング転送であり、前記転送用の命令列の生成、前記転送用の命令列の転送、前記実行用の命令列の再構成、及び、前記実行用の命令列の実行が、並列的に実行される。この構成によれば、ストリーミング転送の対象となる命令列の生成、転送、命令列の再構成、及び、シーケンサー部による命令列の実行が並列的に実行される。
【発明の効果】
【００１７】
本発明によれば、磁気共鳴測定装置において、測定開始の遅延を低減又は防止することが可能となるとともに、シーケンサー部が参照する命令列の枯渇を回避することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】本発明に係るＮＭＲ測定装置の好適な実施形態を示すブロック図である。
【図２】メモリーの構成例を模式的に示す図である。
【図３】パルスプログラムの一例を模式的に示す図である。
【図４】パルスシーケンスの一例を模式的に示す図である。
【図５】ストリーミング命令列とプロシージャー命令列とを説明するための図である。
【図６】命令列の転送条件を説明するための図である。
【図７】各シーケンサー用の命令列の一例を模式的に示す図である。
【図８】命令列の転送処理及び再構成処理の概略を説明するための図である。
【図９】命令列の生成処理及び転送処理を時系列に沿って説明するための図である。
【図１０】命令列が格納されたメモリーを模式的に示す図である。
【図１１】命令列の再構成処理を説明するための図である。
【発明を実施するための形態】
【００１９】
以下、本発明の好適な実施形態を図面に基づいて説明する。
【００２０】
（ＮＭＲ測定装置）
図１には、本発明に係るＮＭＲ測定装置の実施形態が示されている。このＮＭＲ測定装置は、有機化合物、高分子材料、生体物質、その他の物質の分析において用いられるものである。測定対象となるサンプルは液体サンプル、固体サンプル等である。なお、本発明は、他の磁気共鳴測定装置に対しても適用可能である。
【００２１】
図１において、ホストコンピューター１０は、パルスプログラムを生成するものである。パルスプログラムは、所望の測定を実現するためのパルスシーケンスを記述したものであり、それはユーザーによりあるいは自動的に生成される。パルスプログラムは、例えば、周波数、位相、強度、出力タイミング、出力時間等の異なる複数の高周波（ＲＦ）パルス、及び、その受信タイミングや受信時間等が組み合わされたものである。パルスプログラムはホストコンピューター１０から分光計制御コンピューター１２へ送られる。ホストコンピューター１０は一般的なパーソナルコンピューターで構成され得る。
【００２２】
分光計制御コンピューター１２は、以下に詳述する送受信ユニット２２の動作を制御し、また送受信ユニット２２から得られる受信データを解析するものである。分光計制御コンピューター１２及び送受信ユニット２２により分光計が構成される。本実施形態において、分光計制御コンピューター１２は、パルスプログラム（実行用情報の一例に相当）を命令列に変換するコンパイラーを搭載している。そのコンパイラーが図１において命令列生成部１４として表されている。本実施形態において、コンパイラーは、転送用の命令列を生成しており、その転送用の命令列が送受信ユニット２２に送られている。命令列の転送は、転送制御部１６によって行われる。送受信ユニット２２において、転送された命令列から最終的な命令列（実行用の命令列）が生成される。
【００２３】
命令列生成部１４は、パルスプログラムから転送用の命令列を生成する際に、パルスプログラムの中で先行転送の対象となる部分を特定し、その部分の命令列をプロシージャー命令列として生成する。または、命令列生成部１４は、パルスプログラムを命令列に変換してから、先行転送の対象となるプロシージャー命令列を特定してもよい。また、命令列生成部１４は、パルスプログラムについて、先頭から転送単位で順次、命令列（以下、「ストリーミング命令列」と称する）を生成する。このとき、命令列生成部１４は、先行転送の対象となる部分に代えてプロシージャー命令列を特定するための参照情報が埋め込まれたストリーミング命令列を生成する。プロシージャー命令列及びストリーミング命令列が、転送用の命令列に該当する。転送単位は予め決定された単位であってもよいし、任意の単位に変更されてもよい。例えば、転送レートに合わせて転送単位が変更されてもよい。転送制御部１６は、ストリーミング命令列に先行してプロシージャー命令列を送受信ユニット２２に転送する。プロシージャー命令列の先行転送が完了した後、転送制御部１６は、先頭から順次、ストリーミング命令列を送受信ユニット２２に転送する。ストリーミング命令列については、生成と転送とが並列的に実行される。以下において、プロシージャー命令列の転送を「先行転送」と称し、ストリーミング命令列の転送を「ＳＴ転送（ストリーミング転送）」と称することとする。プロシージャー命令列、ストリーミング命令列、及び、転送処理については、後で詳述する。
【００２４】
分光計制御コンピューター１２は、通信バス２０を経由して、送受信ユニット２２に接続されている。図示の例では、分光計制御コンピューター１２は、ホストコンピューター１０に対してネットワークを介して接続されている。分光計制御コンピューター１２は、例えば、専用又は汎用のコンピューターによって構成される。本実施形態において、分光計制御コンピューター１２は、受信信号スペクトルを解析するＦＦＴ演算機能を搭載している。それが図１において受信信号解析部１８として表されている。分光計制御コンピューター１２は、スペクトル解析機能の他、ＮＭＲ測定において必要となる制御機能、解析機能及び管理機能を搭載している。なお、ホストコンピューター１０と分光計制御コンピューター１２が一体化されてもよい。
【００２５】
送受信ユニット２２について説明する。送受信ユニット２２は、ＮＭＲ測定で必要となる送信信号を生成し、またＮＭＲ測定結果である受信信号を処理するものである。送受信ユニット２２又はそれと分光計制御コンピューター１２とを合わせた部分をＮＭＲ測定装置と称することも可能である。
【００２６】
メモリー２６には、分光計制御コンピューター１２から送られてきた命令列が格納される。命令列の格納制御は、メモリー制御部２４によって行われる。なお、メモリー制御部２４は、分光計制御コンピューター１２に含まれていてもよい。再構成部３２によって、メモリー２６に格納された命令列から最終的な命令列（実行用の命令列の一例に相当）が生成される。もちろん、他の回路によって最終的な命令列が生成されてもよい。本実施形態では、測定を実行しながら、それと並行して、命令列を生成し得る。メモリー２６上には、命令列をシーケンサー単位で格納する複数のＦＩＦＯ領域等が設けられる。
【００２７】
複数のメモリー３４には、個々のシーケンサーによって実行される命令列（実行用の命令列の一例に相当）が格納される。本実施形態においては、６個のシーケンサー（マスターシーケンサー３６、４つの送信シーケンサー３８及び受信シーケンサー４０）が設けられており、それに合わせて６個のメモリー３４が設けられている。具体的には、第１のメモリー３４には、マスターシーケンサー３６によって実行される命令列が格納される。第２のメモリー３４には、第１の送信シーケンサー３８によって実行される命令列が格納され、第３のメモリー３４には、第２の送信シーケンサー３８によって実行される命令列が格納され、第４のメモリー３４には、第３の送信シーケンサー３８によって実行される命令列が格納され、第５のメモリー３４には、第４の送信シーケンサー３８によって実行される命令列が格納される。第６のメモリー３４には、受信シーケンサー４０によって実行される命令列が格納される。各メモリー３４上には、命令列を格納するＦＩＦＯ領域等が設けられる。このように、命令列をシーケンサー単位で格納する複数のメモリー３４が設けられている。各シーケンサーの内部にそのようなＦＩＦＯ領域が設けられていてもよい。命令列は多様な命令からなり、それには個々の回路へ与える設定値が含まれる。
【００２８】
マスターシーケンサー３６は、複数の送信シーケンサー３８及び受信シーケンサー４０の動作タイミング等を制御するものである。具体的には、マスターシーケンサー３６は、マスターシーケンサー３６用のメモリー３４に格納された命令列を先頭から順次実行する。マスターシーケンサー３６の同期制御により、複数の送信シーケンサー３８及び受信シーケンサー４０が同期動作を行う。
【００２９】
複数の送信シーケンサー３８は、送信信号生成部４２が有する複数の送信信号生成器等の動作を制御するものである。具体的には、個々の送信シーケンサー３８は、個々の送信シーケンサー３８用のメモリー３４に格納された命令列を先頭から順次実行する。本実施形態においては、一例として、４つの送信信号生成器（４つの信号発生器）が設けられており、それに合わせて４つの送信シーケンサー３８が設けられている。なお、４つの信号発生器にて生成された複数の送信信号は、合成されて送信信号生成部４２から出力される。本実施形態では、第１の送信シーケンサー３８は第１信号発生器を制御しており、第２の送信シーケンサー３８は第２信号発生器を制御しており、第３の送信シーケンサー３８は第３信号発生器を制御しており、第４の送信シーケンサー３８は第４信号発生器を制御している。但し、１対１の対応関係は必須ではなく、１つの送信シーケンサー３８が複数の信号発生器を制御してもよく、あるいは、複数の送信シーケンサー３８が１つの信号発生器を制御してもよい。複数の送信信号の合成を行う回路及びそれ以降に設けられる回路の動作の制御については、４つの送信シーケンサー３８のうちの一部又は全部が担っている。なお、本願明細書において明示する数値はいずれも例示に過ぎないものである。
【００３０】
受信シーケンサー４０は、基本的に個々の送信シーケンサー３８と同一の構成を備えている。受信シーケンサー４０は、受信シーケンサー４０用のメモリー３４に格納された命令列を先頭から順次実行する。これによって、受信信号処理部４８が有する各回路の動作が制御される。
【００３１】
送信信号生成部４２は、複数の送信信号生成器としての複数の信号発生器、合成器としての加算器、ＤＡ変換器（ＤＡＣ）、信号処理回路、周波数変換回路等を備えている。送信信号生成部４２によって、ＮＭＲ測定用のＲＦ送信信号４３が生成される。ＲＦ送信信号４３はアナログ信号であり、それは線形増幅を行うパワーアンプ４４に送られる。パワーアンプ４４において増幅されたＲＦ送信信号がＴ／Ｒスイッチ（送受信切替器）５２を介してプローブ５６に送られる。
【００３２】
プローブ５６は、送受信コイル（図示されていない）を備えた挿入部５６Ａと、その根元部分に相当する筐体部５６Ｂと、により構成される。図示の例では、プローブが１つのポートを備えており、つまり１つのＲＦ送信信号がプローブに入力されている。２つあるいはそれ以上の個数のポートを備えたプローブを利用することも可能である。挿入部５６Ａは、円筒形を有し、それは静磁場発生器５８のボア（円筒腔）内に挿入される。送受信コイルにＲＦ送信信号が供給されると、そこで生じた電磁波が試料に照射され、観測核において共鳴吸収現象が生じる。その後、送受信コイルに誘起されるＮＭＲ信号（ＲＦ受信信号）がプローブ５６からＴ／Ｒスイッチ５２を経由して受信信号処理部４８へ送られている。
【００３３】
本実施形態において、Ｔ／Ｒスイッチ５２は、送信時にＲＦ送信信号をプローブへ送り、受信時にプローブからのＲＦ受信信号を受信信号処理部４８へ送るルーティング機能を有している。Ｔ／Ｒスイッチ５２からの受信信号５４はプリアンプ４５で増幅され、増幅された受信信号４６が受信信号処理部４８に送られている。プリアンプ４５がＴ／Ｒスイッチ５２に内蔵されてもよい。
【００３４】
送受信ユニット２２内の受信信号処理部４８は、入力されたＲＦ受信信号に対して周波数変換、ＡＤ変換、直交検波、等の処理を実行する回路である。処理後の受信信号（複素信号）が受信データとして受信メモリー５０上にいったん格納される。受信メモリー５０から読み出された受信データが分光計制御コンピューター１２へ送られ、そこで受信データの解析が実行される。但し、送受信ユニット２２内において受信データの解析を行うようにしてもよい。
【００３５】
図２を参照してメモリー２６の構成について説明する。メモリー２６上には、ＦＩＦＯ領域２８とプロシージャー格納領域３０とが設けられている。ＦＩＦＯ領域２８には、命令列をシーケンサー単位で格納する複数のＦＩＦＯ領域（ＦＩＦＯ領域２８０〜２８５）が設けられている。具体的には、ＦＩＦＯ領域２８０には、マスターシーケンサー３６用の命令列が格納される。ＦＩＦＯ領域２８１には、第１の送信シーケンサー３８用の命令列が格納され、ＦＩＦＯ領域２８２には、第２の送信シーケンサー３８用の命令列が格納され、ＦＩＦＯ領域２８３には、第３の送信シーケンサー３８用の命令列が格納され、ＦＩＦＯ領域２８４には、第４の送信シーケンサー３８用の命令列が格納される。ＦＩＦＯ領域２８５には、受信シーケンサー４０用の命令列が格納される。プロシージャー格納領域３０は共有メモリーとして機能し、マスターシーケンサー３６、複数の送信シーケンサー３８及び受信シーケンサー４０によって共有される。後述するように、プロシージャー格納領域３０には、特定のパルスシーケンスを実行するための命令列（プロシージャー命令列）が格納される。ＦＩＦＯ領域２８０〜２８５には、命令列の中でプロシージャー命令列以外の命令列（ストリーミング命令列）が格納される。なお、ＦＩＦＯ領域２８０〜２８５は、例えばリングバッファで構成されている。
【００３６】
図３を参照してパルスプログラムについて説明する。パルスプログラム７０にはパルスシーケンスが記述されている。パルスプログラム７０には、例えば、複数の高周波パルスの設定値（周波数、位相、強度）、高周波パルスの出力タイミング、受信信号の検出タイミング、各回路の設定値、等の各種実行用情報が記述されている。パルスプログラム７０の中には、所定のパルスシーケンスを繰り返して実行するための一連の部分７２（図３中、「Loop」と記述された部分）、特定の高周波パルスの照射を実行するための一連の部分７４，７６（図３中、「Shaped pulse」と記述された部分）等が含まれる。部分７２，７４，７６は、複数のパルスシーケンス記述の集合体である。命令列生成部１４によってパルスプログラム７０がコンパイルされることにより、命令列（プロシージャー命令列、ストリーミング命令列）が生成される。
【００３７】
図４にパルスシーケンスの一例を示す。図４（Ａ）〜（Ｃ）には、パルスシーケンスの一部が示されている。図４（Ａ）には、受信チャンネル用のパルスシーケンス（ＲＣＶ）が示されている。三角８０は受信信号の検出タイミングを示している。このパルスシーケンスは受信シーケンサー４０によって実行される。図４（Ｂ）、（Ｃ）には、送信チャンネル用のパルスシーケンスが示されている。これらのパルスシーケンスは送信シーケンサー３８によって実行される。図４（Ｂ）に示されているパルスシーケンス（ＯＢＳ）はＮＭＲ信号を得るためのものであり、出力されるパルス８２が示されている。このパルス８２は、上記の「Shaped pulse」（シェープドパルス）に相当し、山型の形状を有する。図４（Ｃ）に示されているパルスシーケンス（ＩＲＲ）は、デカップリング用のパルスシーケンス、つまり、不要な相互作用の結合を切り離すためのパルスシーケンスである。図４には示されていないが、パルスシーケンスには、９０度パルスや１８０度パルス等を出力するための命令が含まれ得る。
【００３８】
図５を参照して命令列の生成処理について説明する。命令列生成部１４は、パルスプログラム７０の中で先行転送の対象となる部分を特定し、その部分の命令列をプロシージャー命令列として生成する。一例として、ループ処理を実行するための部分７２、シェープドパルスを照射するための部分７４，７６が、先行転送の対象となる。命令列生成部１４は、部分７２をコンパイルすることにより、部分７２からプロシージャー命令列Ｐ１を生成する。同様に、命令列生成部１４は、部分７４，７６をそれぞれコンパイルすることにより、部分７４，７６のそれぞれからプロシージャー命令列Ｐ２，Ｐ３を生成する。命令列生成部１４は、マスターシーケンサー３６用のプロシージャー命令列、個々の送信シーケンサー３８用のプロシージャー命令列、及び、受信シーケンサー４０用のプロシージャー命令列を生成する。例えば、命令列生成部１４は、各シーケンサーの機能に応じて各シーケンサー用のプロシージャー命令列を生成する。命令列生成部１４は、例えば、複数の送信シーケンサー３８及び受信シーケンサー４０の動作タイミング等を制御するための部分から、マスターシーケンサー３６用のプロシージャー命令列を生成する。命令列生成部１４は、送信信号生成部４２の動作を制御するための部分から、個々の送信シーケンサー３８用のプロシージャー命令列を生成する。命令列生成部１４は、受信信号処理部４８の動作を制御するための部分から、受信シーケンサー４０用のプロシージャー命令列を生成する。なお、プロシージャー命令列によって示される命令列を実行しないシーケンサーが存在する場合もある。この場合、そのシーケンサー用のプロシージャー命令列は生成されない。
【００３９】
パルスプログラム７０において同一のプロシージャー命令列に該当する部分が複数存在する場合、命令列生成部１４は、それら複数のプロシージャー命令列の中から１つのプロシージャー命令列を生成する。生成されたプロシージャー命令列が、代表（共通）のプロシージャー命令列となる。例えば、部分７４，７６が同一の場合、つまり、プロシージャー命令列Ｐ２，Ｐ３が同一の場合、命令列生成部１４は、プロシージャー命令列Ｐ２，Ｐ３の中から１つのプロシージャー命令列（例えば先に登場するプロシージャー命令列Ｐ２）を生成する。なお、命令列生成部１４は、複数の同一のプロシージャー命令列を生成してもよい。
【００４０】
命令列生成部１４は、送受信ユニット２２のメモリー２６のアドレスを管理しており、プロシージャー命令列の格納先の先頭アドレス（プロシージャー格納領域３０におけるアドレス）を指定する。なお、参照情報は、先頭アドレスを示すアドレス情報に限らず、プロシージャー命令列の格納先のアドレスを特定可能な情報であればよい。同一のプロシージャー命令列が複数存在し、それらの中で代表のプロシージャー命令列がプロシージャー格納領域３０に格納される場合、先行転送の対象となる各部分に同一のアドレス情報を埋め込む。
【００４１】
命令列生成部１４は、パルスプログラム７０について、先頭から転送単位で順次、ストリーミング命令列Ｓを生成する。これにより、部分７８Ａ，７８Ｂ，７８Ｃ，・・・に対応するストリーミング命令列Ｓが生成される。このとき、命令列生成部１４は、先行転送の対象となる部分に代えてプロシージャー命令列の格納先の先頭アドレスを示すアドレス情報（参照情報の一例に相当）が埋め込まれたストリーミング命令列を生成する。ストリーミング命令列中のアドレス情報を参照することにより、プロシージャー命令列の格納先を特定することが可能となる。命令列生成部１４は、各シーケンサーの機能に応じて、マスターシーケンサー３６用のストリーミング命令列、個々の送信シーケンサー３８用のストリーミング命令列、及び、受信シーケンサー４０用のストリーミング命令列を生成する。
【００４２】
プロシージャー命令列及びストリーミング命令列は、送受信ユニット２２に送られ、メモリー２６に格納される。プロシージャー命令列は、図２に示されているメモリー２６上のプロシージャー格納領域３０に格納される。ストリーミング命令列は、ＦＩＦＯ領域２８に格納される。
【００４３】
ここで、命令の量及び密度の観点から、命令列の転送条件について説明する。本実施形態では、命令列中の一連の高密度部分が、プロシージャー化されて先行転送の対象となる。例えば、多数のパラメーターを短時間で高速に変更するための命令列が、高密度部分に該当する。図３に示す例では、ループ処理を実行するための命令列部分７２、シェープドパルスを出力・照射するための部分７４，７６が、高密度部分に該当する。例えば部分７４，７６には、シェープドパルスを形成するために、多数のパラメーターを短時間で高速に変更するための複数の命令が含まれる。このような高密度部分に含まれる命令列は、他の部分の命令列と比べて、シーケンサーにおける消費速度が速い。従って、高密度部分における各命令列をストリーミング命令列として生成し、その生成と転送とを並列的に実行すると（ＳＴ転送を実行すると）、シーケンサーが参照する命令列が枯渇する可能性がある。つまり、シーケンサーでの命令列の消費速度がストリーミング命令列の生成及び転送の速度よりも速くなり、ストリーミング命令列の生成及び転送が命令の消費に追い付かず、シーケンサーで命令列が枯渇する場合が生じ得る。それに対処するために、本実施形態では、高密度部分の命令列についてはＳＴ転送の対象とせずにプロシージャー化し、他の命令列に先行して転送している。
【００４４】
一方で、命令列の全部を転送してから測定開始するのでは、全命令列の生成及び転送に要する時間が増大し、測定開始が遅延する問題が生じる。また、転送先の送受信ユニット２２に、全命令列を格納することが可能な大容量のメモリーを設置しておく必要がある。そこで、本実施形態では、低密度部分の命令列についてはプロシージャー化せずに、ＳＴ転送の対象としている。つまり、低密度部分からストリーミング命令列を順次生成し、生成されたストリーミング命令列を順次転送している。これにより、全命令列の生成及び転送を待たずに、測定を開始することが可能となる。また、大容量のメモリーを送受信ユニット２２に設置せずに済む。このように本実施形態では、命令列の先行転送とＳＴ転送とを併用している。
【００４５】
以上の点をまとめたものが、図６に表で示されている。命令列中の高密度部分についてはプロシージャー化して先行転送し、低密度部分についてはストリーミング命令列を生成してＳＴ転送を実行する。低密度部分については、その部分の命令量が少ない場合及び多い場合のいずれの場合であっても、ＳＴ転送の対象としている。一方、高密度かつ命令量が多い部分を先行転送の対象とすると、プロシージャー命令列の生成及び転送に要する時間が増大し、その分、測定開始が遅延する。従って、本実施形態では、高密度かつ命令量が少ない部分を先行転送の対象としている。なお、ＮＭＲ測定の性質上、高密度の命令部分が延々と継続することは想定し得ず、実際、高密度かつ命令量の多い部分が生じる可能性は少ない。
【００４６】
図７に、各シーケンサー用の命令列の一例を示す。符号８０は、マスターシーケンサー３６用の命令列を示すものである。符号８２〜８８は、個々の送信シーケンサー３８用の命令列を示すものである。例えば、符号８２は、第１の送信シーケンサー３８用の命令列を示すものであり、符号８４は、第２の送信シーケンサー３８用の命令列を示すものであり、符号８６は、第３の送信シーケンサー３８用の命令列を示すものであり、符号８８は、第４の送信シーケンサー３８用の命令列を示すものである。符号９０は、受信シーケンサー４０用の命令列を示すものである。また、符号Ｐはプロシージャー命令列を示すものであり、符号Ｓはストリーミング命令列を示すものである。縦軸は時間ｔであり、矢印の方向（下方）に向かって処理が進んでいく。各シーケンサーでは、命令列の順番に従って各命令列が実行されていく。
【００４７】
具体例を挙げて説明すると、マスターシーケンサー３６用の命令列（符号８０の命令列）には、ストリーミング命令列ＳＭ１〜ＳＭ５，・・・、及び、プロシージャー命令列Ｐ１，Ｐ２，・・・が含まれる。マスターシーケンサー３６では、ストリーミング命令列ＳＭ１，Ｐ１，ＳＭ２，ＳＭ３，ＳＭ４，ＳＭ５，Ｐ２，・・・の順番で各命令が実行される。一例として、ストリーミング命令列ＳＭ１には、プロシージャー命令列Ｐ１の格納先の先頭アドレスを示すアドレス情報が含まれている（埋め込まれている）。そのアドレス情報を参照することにより、ストリーミング命令列ＳＭ１の次に実行されるプロシージャー命令列Ｐ１の格納先が特定できるようになっている。同様に、ストリーミング命令列ＳＭ５には、プロシージャー命令列Ｐ２の格納先の先頭アドレスを示すアドレス情報が含まれている。
【００４８】
他のシーケンサーについても同様である。第１の送信シーケンサー３８用の命令列（符号８２の命令列）には、ストリーミング命令列ＳＡ１〜ＳＡ５，・・・、及び、プロシージャー命令列Ｐ１，Ｐ３，・・・が含まれる。第２の送信シーケンサー３８用の命令列（符号８４の命令列）には、ストリーミング命令列ＳＢ１〜ＳＢ５，・・・、及び、プロシージャー命令列Ｐ２，Ｐ４，・・・が含まれる。第３の送信シーケンサー３８用の命令列（符号８６の命令列）には、ストリーミング命令列ＳＣ１〜ＳＣ５，・・・、及び、プロシージャー命令列Ｐ１，・・・が含まれる。第４の送信シーケンサー３８用の命令列（符号８８の命令列）には、命令列が含まれておらず、当該シーケンサーは使用されていない。受信シーケンサー４０用の命令列（符号９０の命令列）には、ストリーミング命令列ＳＲ１〜ＳＲ５，・・・が含まれる。なお、図７に示されている例では、受信シーケンサー４０用の命令列には、プロシージャー命令列が含まれていないが、受信シーケンサー４０用の命令列に、プロシージャー命令列が含まれていてもよい。また、第４の送信シーケンサー３８用の命令列には、ストリーミング命令列とプロシージャー命令列のいずれも含まれていないが、プロシージャー命令列とそれを参照するためのストリーミング命令列が含まれていてもよい。
【００４９】
同一のプロシージャー命令列が、複数のシーケンサーのそれぞれによって実行される場合がある。例えば、プロシージャー命令列Ｐ２は、マスターシーケンサー３６（符号８０）及び第２の送信シーケンサー３８（符号８４）に対する命令列に含まれている。従って、プロシージャー命令列Ｐ２は、マスターシーケンサー３６によって実行されるとともに、第２の送信シーケンサー３８によっても実行される。この場合であっても、上記のように、１つのプロシージャー命令列Ｐ２がメモリー２６のプロシージャー格納領域３０に格納され、マスターシーケンサー３６と第２の送信シーケンサー３８とによって、プロシージャー命令列Ｐ２が共用される。他のプロシージャー命令列についても同様であり、同一のプロシージャー命令列が、複数のシーケンサーのそれぞれによって実行される場合、複数の同一のプロシージャー命令列のうちの１つが、メモリー２６のプロシージャー格納領域３０に格納される。
【００５０】
なお、図７に示されているプロシージャー命令列とストリーミング命令列との対応関係は、実行される命令の順番を説明するために便宜上、整理されて示されたものである。図７は、メモリー２６における命令列の格納の態様を示すものではない。例えば、同一のプロシージャー命令列が複数図示されているが、これは、各シーケンサーによって実行される命令列を説明するために図示されたものである。本実施形態では、それらのうちの１つのプロシージャー命令列がメモリー２６に格納される。
【００５１】
次に、図８を参照して、命令列の転送処理及び再構成処理の概略について説明する。図８には、転送処理及び再構成処理に関わる構成が示されており、それらの処理に関わらない構成は省略されている。
【００５２】
まず、ホストコンピューター１０によってパルスプログラムが生成される。そのパルスプログラムは、分光計制御コンピューター１２へ送られる。命令列生成部１４は、パルスプログラムの全体を参照して先行転送の対象となる部分を抽出し、抽出した部分からプロシージャー命令列を生成する。また、命令列生成部１４は、パルスプログラムについて、先頭から転送単位で順次、ストリーミング命令列を生成する。このとき、命令列生成部１４は、先行対象となる部分に代えてプロシージャー命令列の格納先のアドレス情報が埋め込まれたストリーミング命令列を生成する。または、命令列生成部１４は、パルスプログラムをコンパイルすることにより、一旦、命令列を生成し、その命令列の中から先行転送の対象となるプロシージャー命令列を特定してもよい。この場合も、ストリーミング命令列の生成に際して、先行転送の対象となる部分に代えてプロシージャー命令列の格納先のアドレス情報が格納されたストリーミング命令列が生成される。
【００５３】
そして、転送制御部１６は、プロシージャー命令列（図８中の「命令列（Ｐｒｏｃ）」）を、ストリーミング命令列（図８中の「命令列（Ｓｔｒｅａｍ）」）に先行して送受信ユニット２２に転送する。プロシージャー命令列の転送が完了した後、転送制御部１６は、順次生成されるストリーミング命令列を、順次、送受信ユニット２２に転送する。複数のプロシージャー命令列が生成された場合、それら複数のプロシージャー命令列の全部が転送された後に、ストリーミング命令列の転送が開始される。
【００５４】
メモリー制御部２４は、プロシージャー命令列（命令列（Ｐｒｏｃ））を、メモリー２６上のプロシージャー格納領域３０（共有領域）に格納させる。また、メモリー制御部２４は、ストリーミング命令列（命令列（Ｓｔｒｅａｍ））を、メモリー２６上のＦＩＦＯ領域２８に格納させる。
【００５５】
再構成部３２は、メモリー２６に格納されている命令列から最終的な命令列を生成する。具体的には、再構成部３２は、ＦＩＦＯ領域２８に含まれる各ＦＩＦＯ領域（図２中のＦＩＦＯ領域２８０〜２８５）上のストリーミング命令列を先頭から読み出し、対応するメモリー３４（ＦＩＦＯメモリー）に書き込む。例えば、再構成部３２は、ＦＩＦＯ領域２８０上のストリーミング命令列を先頭から読み出し、マスターシーケンサー３６用のメモリー３４に書き込む。読み出したストリーミング命令列にアドレス情報が含まれている場合（埋め込まれている場合）、再構成部３２は、そのアドレス情報が示すアドレスに格納されているプロシージャー命令列をプロシージャー格納領域３０から読み出す。再構成部３２は、プロシージャー命令列を解釈展開した上で、マスターシーケンサー３６用のメモリー３４に書き込む。他のシーケンサーについても同様である。このようにして、各メモリー３４には、各シーケンサーによって実行される最終的な命令列が書き込まれることになる。そして、測定開始の指示が与えられると、各シーケンサーは、自身のメモリー３４に格納されている命令列を先頭から順次実行する。
【００５６】
測定開始後においては、命令列生成部１４によるストリーミング命令列の生成、転送制御部１６による送受信ユニット２２へのストリーミング命令列の転送、再構成部３２におる命令列の再構成、及び、各シーケンサーによる命令列の実行が、並列的に行われる。つまり、ストリーミング命令列の生成、転送及び再構成処理が実行されながら、各シーケンサーによって命令列が実行されていく。
【００５７】
次に、図９を参照して、命令列の生成処理及び転送処理の詳細について説明する。図９中、横軸は時間ｔを示している。時間ｔ１に、パルスプログラムが分光計制御コンピューター１２に送られたものとする。時間ｔ２までの間に、命令列生成部１４は、パルスプログラムの全体を参照し、先行転送の対象となる部分を特定する。そして、時間ｔ２〜ｔ３の間に、命令列生成部１４は、パルスプログラムからプロシージャー命令列Ｐ１〜ＰＮを生成する。同一のプロシージャー命令列が複数存在する場合には、それらの中から１つのプロシージャー命令列が生成される。
【００５８】
転送制御部１６は、プロシージャー命令列Ｐ１〜ＰＮを送受信ユニット２２に転送する（先行転送）。転送制御部１６は、プロシージャー命令列が生成される度に、生成されたプロシージャー命令列を、順次、送受信ユニット２２に転送してもよい。別の例として、転送制御部１６は、プロシージャー命令列Ｐ１〜ＰＮの全部が生成された後に、プロシージャー命令列Ｐ１〜ＰＮを送受信ユニット２２に転送してもよい。図９に示されている例では、プロシージャー命令列は、生成される度に順次、送受信ユニット２２に転送されている。転送されたプロシージャー命令列Ｐ１〜ＰＮは、メモリー２６上のプロシージャー格納領域３０に格納される。
【００５９】
一方、プロシージャー命令列Ｐ１〜ＰＮの生成が完了すると、命令列生成部１４は、パルスプログラムについて、先頭から転送単位で順次、ストリーミング命令列を生成する。このとき、命令列生成部１４は、パルスプログラム中の先行対象となる部分に代えてプロシージャー命令列の格納先のアドレス情報が埋め込まれたストリーミング命令列を生成する。一例として、命令列生成部１４は、各シーケンサー用のストリーミング命令列を転送単位数（例えば１つ）ずつ順番に生成する。具体的には、命令列生成部１４は、マスターシーケンサー３６用のストリーミング命令列ＳＭ１、第１の送信シーケンサー３８用のストリーミング命令列ＳＡ１、第２の送信シーケンサー３８用のストリーミング命令列ＳＢ１、第３の送信シーケンサー３８用のストリーミング命令列ＳＣ１、第４の送信シーケンサー３８用のストリーミング命令列ＳＤ１、受信シーケンサー４０用のストリーミング命令列ＳＲ１、マスターシーケンサー３６用のストリーミング命令列ＳＭ２、第１の送信シーケンサー３８用のストリーミング命令列ＳＡ２，・・・を順次、生成する。その後も、命令列生成部１４は、各シーケンサー用のストリーミング命令列を転送単位数ずつ順番に生成する。転送制御部１６は、ストリーミング命令列が生成される度に、そのストリーミング命令列を送受信ユニット２２に転送する。すなわち、ストリーミング命令列の生成と転送とが並列的に行われる。これにより、ストリーミング転送（ＳＴ転送）が実現される。例えば、ストリーミング命令列ＳＭ１，ＳＡ１，ＳＢ１，ＳＣ１，ＳＤ１，ＳＲ１，ＳＭ2，ＳＡ2，・・・がその順番で生成された場合、転送制御部１６は、各ストリーミング命令列が生成される度に、その生成の順番で各ストリーミング命令列を送受信ユニット２２に転送する。
【００６０】
なお、ストリーミング命令列の生成の順番は上記の例に限られない。例えば、マスターシーケンサー３６用及び各送信シーケンサー３８用のストリーミング命令列が一定量生成されて転送された後に、受信シーケンサー４０用のストリーミング命令列が生成されて転送されてもよい。これに限らず、ストリーミング命令列の生成及び転送の順番は、適宜変更されてもよい。また、上記の例では、各シーケンサー用のストリーミング命令列が、シーケンサー毎に順次生成されているが、各シーケンサー用のストリーミング命令列が、並行して又は同時に生成されてもよい。
【００６１】
送受信ユニット２２に転送されたストリーミング命令列は、メモリー２６上のＦＩＦＯ領域２８に格納される。各ストリーミング命令列は、転送された順番でＦＩＦＯ領域２８に格納されていく。本実施形態では、各ストリーミング命令列は、シーケンサー毎に用意されたＦＩＦＯ領域に格納される。具体的には、マスターシーケンサー３６用のストリーミング命令列ＳＭ１は、マスターシーケンサー３６用のＦＩＦＯ領域２８０に格納される。第１の送信シーケンサー３８用のストリーミング命令列ＳＡ１は、第１の送信シーケンサー３８用のＦＩＦＯ領域２８１に格納される。第２の送信シーケンサー３８用のストリーミング命令列ＳＢ１は、第２の送信シーケンサー３８用のＦＩＦＯ領域２８２に格納される。第３の送信シーケンサー３８用のストリーミング命令列ＳＣ１は、第３の送信シーケンサー３８用のＦＩＦＯ領域２８３に格納される。第４の送信シーケンサー３８用のストリーミング命令列ＳＤ１は、第４の送信シーケンサー３８用のＦＩＦＯ領域２８４に格納される。受信シーケンサー４０用のストリーミング命令列ＳＲ１は、受信シーケンサー４０用のＦＩＦＯ領域２８５に格納される。マスターシーケンサー３６用のストリーミング命令列ＳＭ2は、マスターシーケンサー３６用のＦＩＦＯ領域２８０に格納される。第１の送信シーケンサー３８用のストリーミング命令列ＳＡ2は、第１の送信シーケンサー３８用のＦＩＦＯ領域２８１に格納される。ストリーミング命令列ＳＭ１，ＳＡ１，ＳＢ１，ＳＣ１，ＳＤ１，ＳＲ１，ＳＭ2，ＳＡ2，・・・は、その順番で各ＦＩＦＯ領域に格納されていく。以降についても同様であり、転送されたストリーミング命令列は、順次、対応するＦＩＦＯ領域に格納されていく。また、上記転送のうち、各シーケンサーの一部又はすべての転送が、並行して行われてもよい。
【００６２】
ＳＴ転送について整理する。例えば、ストリーミング命令列ＳＭ１，ＳＡ１，ＳＢ１，ＳＣ１，ＳＤ１，ＳＲ１，ＳＭ2，ＳＡ2，・・・がその順番で生成される。そして、ストリーミング命令列が生成される度に、生成されたストリーミング命令列が送受信ユニット２２に転送される。従って、ストリーミング命令列ＳＭ１，ＳＡ１，ＳＢ１，ＳＣ１，ＳＤ１，ＳＲ１，ＳＭ2，ＳＡ2，・・・がその順番で送受信ユニット２２に転送される。そして、ストリーミング命令列ＳＭ１，ＳＡ１，ＳＢ１，ＳＣ１，ＳＤ１，ＳＲ１，ＳＭ2，ＳＡ2，・・・がその順番で、メモリー２６上において自身に対して用意されたＦＩＦＯ領域に格納されていく。
【００６３】
図１０には、命令列が格納された状態のメモリー２６が示されている。プロシージャー格納領域３０には、プロシージャー命令列Ｐ１，Ｐ２，・・・，ＰＮが格納されている。一方、マスターシーケンサー３６用のＦＩＦＯ領域２８０には、マスターシーケンサー３６用のストリーミング命令列ＳＭ１，ＳＭ２、ＳＭ３が格納されている。第１の送信シーケンサー３８用のＦＩＦＯ領域２８１には、第１の送信シーケンサー３８用のストリーミング命令列ＳＡ１，ＳＡ２，ＳＡ３が格納されている。第２の送信シーケンサー３８用のＦＩＦＯ領域２８２には、第２の送信シーケンサー３８用のストリーミング命令列ＳＢ１，ＳＢ２，ＳＢ３が格納されている。第３の送信シーケンサー３８用のＦＩＦＯ領域２８３には、第３の送信シーケンサー３８用のストリーミング命令列ＳＣ１，ＳＣ２が格納されている。第４の送信シーケンサー３８用のＦＩＦＯ領域２８４には、第４の送信シーケンサー３８用のストリーミング命令列ＳＤ１，ＳＤ２が格納されている。受信シーケンサー４０用のＦＩＦＯ領域２８５には、受信シーケンサー４０用のストリーミング命令列ＳＲ１，ＳＲ２が格納されている。各シーケンサー用のストリーミング命令列が生成されて転送される度に、各ＦＩＦＯ領域には、転送されたストリーミング命令列が、順次、格納されていく。
【００６４】
次に、図１１を参照して命令列の再構成処理の詳細について説明する。メモリー２６にストリーミング命令列が格納されると、再構成部３２は、ＦＩＦＯ領域２８０〜２８５上のストリーミング命令列を先頭から読み出し、各シーケンサー用のメモリー３４（ＦＩＦＯメモリー）に書き込む。ここでは、マスターシーケンサー３６用の命令列の再構成処理を例に挙げて説明する。再構成部３２は、ＦＩＦＯ領域２８０上のストリーミング命令列を先頭から読み出す。図１１に示す例では、再構成部３２は、ＦＩＦＯ領域２８０からストリーミング命令列ＳＭ１を読み出し、ストリーミング命令列ＳＭ１をマスターシーケンサー３６用のメモリー３４に書き込む。ストリーミング命令列ＳＭ１に、プロシージャー命令列の格納先を示すアドレス情報が埋め込まれている場合、再構成部３２は、メモリー２６上のプロシージャー格納領域３０を参照し、そのアドレス情報が示すアドレスからプロシージャー命令列を読み出す。ここでは、プロシージャー命令列Ｐ１の格納先を示すアドレス情報が、ストリーミング命令列ＳＭ１に埋め込まれているものとする。この場合、再構成部３２は、プロシージャー格納領域３０からプロシージャー命令列Ｐ１を読み出し、プロシージャー命令列Ｐ１を解釈展開した上で、メモリー３４に書き込む。続けて、再構成部３２は、次のストリーミング命令列ＳＭ２をＦＩＦＯ領域２８０から読み出し、ストリーミング命令列ＳＭ２をメモリー３４に書き込む。ストリーミング命令列ＳＭ２にアドレス情報が埋め込まれている場合、再構成部３２は、そのアドレス情報に基づいてプロシージャー命令列を読み出す。図１１に示す例では、ストリーミング命令列ＳＭ２にアドレス情報は埋め込まれていないものとする。続けて、再構成部３２は、次のストリーミング命令列ＳＭ３をＦＩＦＯ領域２８０から読み出し、ストリーミング命令列ＳＭ３をメモリー３４に書き込む。以降も同様であり、再構成部３２は、最終のストリーミング命令列まで上記の処理を繰り返す。これにより、最終的な命令列がメモリー３４に書き込まれていく。送信シーケンサー３８及び受信シーケンサー４０についても同様であり、各シーケンサー用のメモリー３４に、各シーケンサー用の命令列が書き込まれていく。上述したように、同一のプロシージャー命令列に該当する部分がパルスプログラムに複数存在する場合、それら複数のうちの１つのプロシージャー命令列がプロシージャー格納領域３０に格納される。この場合、そのプロシージャー命令列が複数回利用されることにより、プロシージャー化された各部分の命令列が生成されていく。
【００６５】
なお、ＦＩＦＯ領域２８からメモリー３４に書き込まれる命令列の単位、つまり、再構成される命令列の単位は、ストリーミング命令列の単位と同一であってもよいし、異なっていてもよい。図１１に示す例では、再構成される命令列の単位は、ストリーミング命令列の単位と同一である。それに限らず、再構成部３２は、ＦＩＦＯ領域２８０〜２８５のそれぞれの先頭から読み出し単位で命令列を順次、読み出し、読み出した命令列を対応するメモリー３４に書き込んでもよい。読み出し単位は、予め決定された単位であってもよいし、任意の単位に変更されてもよい。
【００６６】
そして、測定開始の指示が与えられると、各シーケンサーは、自身のメモリー３４から命令を読み出し、読み出した命令を実行する。例えば、全シーケンサーのメモリー３４に１つの命令列（例えば１つのストリーミング命令列）が書き込まれたタイミングで、測定が開始されてもよい。勿論、全シーケンサーのメモリー３４に複数の命令列が書き込まれたタイミングで、測定が開始されてもよい。図７を参照して説明したように、各シーケンサーは、自身のメモリー３４から命令を順次読み出して、読み出した命令を実行していく。
【００６７】
本実施形態では、再構成処理を行いながら、測定開始の指示を受けた時点から、各シーケンサーが命令列をメモリー３４から読み出し、読み出した命令列を実行していく。また、ストリーミング命令列の生成及び転送が、命令列の実行と並行して実行される。従って、各シーケンサーによって命令列が実行されている間に、命令列生成部１４によってストリーミング命令列が順次生成され、転送制御部１６によってＦＩＦＯ領域２８にストリーミング命令列が順次転送されてくる。
【００６８】
なお、メモリー３４において命令列が枯渇しないことを前提として、ストリーミング命令列のデータ量、測定開始のタイミングが決定される。
【００６９】
以上のように、本実施形態では、命令列中の高密度部分をプロシージャー化して先行転送し、その他の部分についてはＳＴ転送を実行する。ＳＴ転送を実行することにより、命令列の全部を生成してから送受信ユニット２２に命令列を転送する場合と比べて、測定の開始を早めることが可能となる。また、全命令列を格納するための大容量のメモリーを送受信ユニット２２に設置せずに済む。一方で、命令列の全部をＳＴ転送の対象とすると、高密度部分においてストリーミング命令列の生成及び転送がシーケンサーでの命令列の消費に間に合わず、シーケンサーが参照する命令が枯渇する可能性がある。これに対処するために、本実施形態では、高密度部分をプロシージャー化して先行転送している。これにより、命令列の枯渇を回避することが可能となる。まとめると、先行転送とＳＴ転送とを併用したことにより、ＮＭＲ測定の開始を早めることが可能となるとともに、シーケンサーが参照する命令列の枯渇を回避することが可能となる。また、大容量のメモリーを送受信ユニット２２に設置せずに済み、メモリーの容量を削減することが可能となる。
【００７０】
また、同一のプロシージャー命令列に該当する部分がパルスプログラムに複数存在する場合、それら複数の中で１つのプロシージャー命令列が送受信ユニット２２に転送される。そして、その１つのプロシージャー命令列が複数回利用されることにより、プロシージャー化された各部分の命令列が生成される。これにより、命令列の総転送量が削減され、先行転送の完了に要する時間を削減することが可能となる。また、命令列の総量が削減されるので、メモリーの容量を削減することが可能となる。
【００７１】
なお、本実施形態では、複数のシーケンサーが設けられているが、シーケンサーの数は１つであってもよい。この場合も、１つのシーケンサーによって実行されるプロシージャー命令列が分光計制御コンピューター１２から送受信ユニット２２に先行転送され、その先行転送が完了した後、ストリーミング命令列が分光計制御コンピューター１２から送受信ユニット２２に順次転送される。これにより、上記と同様の効果が得られる。
【符号の説明】
【００７２】
１０  ホストコンピューター、１２  分光計制御コンピューター、１４  命令列生成部、１６  転送制御部、１８  受信信号解析部、２２  送受信ユニット、２４  メモリー制御部、２６，３４  メモリー、２８  ＦＩＦＯ領域、３０  プロシージャー格納領域、３２  再構成部、３６  マスターシーケンサー、３８  送信シーケンサー、４０  受信シーケンサー、４２  送信信号生成部、４８  受信信号処理部、５６  プローブ、７０  パルスプログラム。
【図１】
0006268402.tif 000002
【図２】
0006268402.tif 000003
【図３】
0006268402.tif 000004
【図４】
0006268402.tif 000005
【図５】
0006268402.tif 000006
【図６】
0006268402.tif 000007
【図７】
0006268402.tif 000008
【図８】
0006268402.tif 000009
【図９】
0006268402.tif 000010
【図１０】
0006268402.tif 000011
【図１１】
0006268402.tif 000012