#contents ***picoArrayについて [#sf65b0aa] -picoArrayはpicoChip社によって開発されたマルチプロセッサである。 -PC101はpicoArrayシリーズの中のひとつである。 -picoArrayのシステムはpicoVHDLと呼ばれる記述言語によって記述する。 -picoToolsによって,picoVHDLで記述されたシステムをシミュレートすることができる。 -picoToolsによって,picoVHDLで記述されたシステムをpicoArray実機にマッピングすることができる。 -シミュレーション動作と実機動作は完全に一致することがpicoChipによって保証されているが,実機にしかないデバイスの完全なシミュレーションを行うことはできない。 -picoArrayは並列アーキテクチャであり,多数の独立したArray Element(AE)と呼ばれるプロセッサからなる。 -DSPアプリケーションの開発においては,全体の処理を互いに通信する多数のモジュールに分割する必要がある。 -AE間の通信はpicoBusと呼ばれるバスマトリクスによって行われる。 -AEとpicoBusのリソース割り当ては静的に行われるため,実行時動作の再現性を向上させることができる。 -picoBusは共有資源であるため,個々のAE間の通信はpicoBusを時分割することによって行われる。 -特定のAEとAEを接続する論理的なsignalはslot rateを持つ。 -picoVHDLにおいてslot rateは@nと表現される。 -nはクロックサイクル数であり,たとえば@4ならば4クロックサイクルに一度,データが送受されることになる。 -PC101のクロック周波数は160MHzであるから,@16ならば0.1usecの頻度となる。 -ひとつのpicoArrayは機能の異なる複数のタイプのAEを含んでいる。 -Function Acceleration Unint(FAU)は特定のDSP演算機能を持ったAEである。 -PC205はTURBO復号機能を持つFAUを持つが,PC101は持たない。 -picoVHDLは構造記述と順次処理記述からなる。 -構造記述はVHDLのサブセットであり,AEの接続関係を記述する。 -順次処理記述は標準CまたはASMによって順次処理を記述する。 -VHDLにおける同時処理文は存在しないことに注意する。 ***開発指針 [#p7915dcc] -picoArrayは並列アーキテクチャであり,一般的なマルチコアDSPとは異なった開発手法をとる必要がある。 -具体的にはC言語等のプロセス言語を用いてマルチスレッド化するというより,RTL設計に近くなる。 -データ処理のための大量の一時記憶は利用できず,処理を小さなモジュールに分割した上で,各モジュールのデータフローを主眼に置いた設計となる。 -各モジュールの動作タイミングは,コンパイル時にある程度厳密に定まる。 -picoArray開発は以下の4段階をとる。 --ビヘイビアモデル開発 --モジュール開発・単体試験 --結合試験 --実機試験 -ビヘイビアモデルはクロックの概念を導入せず,機能を忠実に実装する。 -picoArray化のを意識して,機能分割が容易となるように留意する。 -演算精度は可能な限り高くし,実行速度の向上は特に意識しない。 -ビヘイビアモデルからpicoArray開発向けのテストベクトルおよび期待値を取り出せるようにする。 -可読性や信頼性を重視し,MATLABやC言語等のプロセス言語で記述する。 -SDR-1プロジェクトにおいてはC言語によるビヘイビアモデルが提供されていた。 -しかしC言語によるビヘイビアモデルは,マルチスレッドDSP向けのモデルであり,並列アーキテクチャであるpicoArray向けのビヘイビアモデルとして利用することはできない。 -規格書を参照してビヘイビアモデルをスクラッチ実装する必要があったが, そのための工数を確保できなかった。 -そこで,完全なビヘイビアモデルは作成しないこととし,規格書およびC言語モデルを参照しながらpicoArray向けのモジュール仕様を作成した。 ***タイミング設計 [#r32de5c5] -タイミング制約にはAEにおける処理時間に関するものと送信タイミングに関するものがある。 -前者はpicoArrayの構造に起因している。 -picoBusのslot rateは@2から@1024までの2ベキに限られる。 -signalの伝送タイミングの粒度はslot rateに従う。 -picoBusの伝送タイミングに間に合うように所定の処理が完了するように設計する必要がある。 -後者はEV-DO規格に起因している。 -例えば,ATは毎FTC slotについてACK channel bitを送信する必要がある。 -slot nにFTCを受信したとき,ACK channel bitの送信はslot n + 3の最初のhalf slotとなる。 -送信タイミングを厳密に守るためには,処理の進捗に依存した構造ではなく,各AEがシステム時間を参照するような設計が必要になる場合がある。 ***ACK Channelの例 [#f4f0f5d4] -slot sは整数値でs = floor(t x 600) -tはsecond -1 slot = 1/600 sec = 1.66 msec -1 frame = 16 slots = 26.66 msec -Forward Channel: AN -> AT -Forward Control Channel: forward channelをモニタしているすべてのATが受信すべきデータを運ぶチャネル -Forward Traffic Channel: 特定のATに対する情報を運ぶチャネル -Reverse Access Channel: ATがまだtraffic channelを割り当てられていないときにANと通信するために使うチャネル -Reverse Traffic Ack Channel: FTC受信の成否を示すチャネル -Reverse Traffic Channel: 特定のATからANへ情報を運ぶチャネル -ACとRTCは1frameからなる。 -frame境界はshort PN符号のロールオーバー点にalignされなければならない。 -1 slot = 2048 PN chips -1 PN chip = 1/2048 slots = 1/(600x2048) sec = 813.8 ns -ATは,自分宛のプリアンブルに関連づけられた毎FTC slotについて,ACK Channel bitを送信しなければならない。 -ACK Channelの変調方式はBPSKで,'0'がACK,'1'がNAK。 -FTCをslot nで受信したとき,応答ACK bitをslot n+3にRTCで送信しなければならない。 -ACK Channel bitはslot n+3の最初のhalf slot 1024 PN chipsで伝送されなければならない。 -ACK Channel bitはWalsh channle W_4^8を用いる。 -ACK ChannelはI信号 -PC101の動作周波数は160MHz -1clock = 1/160MHz = 6.25 nsec -@16 = 0.1 usec