WAPI の仕様書ドラフト

WAPI (WLAN Authentication and Privacy Infrastructure) (wikipedia)。一時はもうダメかと思った中国のWPA対抗規格であるWAPIですが、最近搭載機器が増えつつある。NokiaまでもがWAPI対応携帯電話を販売している。

ISOに提案されている WAPI の 仕様書のドラフトを見つけた。
WAPI Independent IS Sample Draft 6N13774.pdf(via Capwap ML)
ただし、このスペックには、肝心な暗号化アルゴリズムに関する情報が載っていないので(Annex I 参照)、実装することはできない。中国当局に申請が必要っぽいdせす。

WAPI対応のOphoneやAndroid端末が市販されているので、WAPI対応のサプリカント
ソースコードが出てきそうなもんだけど。

Open source ARM core implementations of HDL

ARMコアのオープンソースなHDL実装を探してみた。

  • FreeARM7
    • verilog
    • ARMv3互換
    • ソースがファイル一つ arm6.v
    • ハーバード型なので、ロード、ストアの作りがとてもシンプル
    • 作者blog blog

この他にも、知っている人がいたら教えてください。

TD4をSFLで書いてみた。その2

d:id:eggman:20091205:1260045315の続き
テストベンチっぽいものを書いた。テストベンチの構成は、m8の物ををパクってきた。

ソースコードgithubに置いときました。

board.sfl
CPUとROMを接続する。 ROMには半周期ずらすために反転クロックを入力する。
board.main
ROMファイルをロードして、クロック生成し、ダンプファイルとログファイルを出力する。
td4_led.mem
LEDチカチカ用ROMファイル
td4_timer.mem
ラーメンタイマ用ROMファイル

makeをすると、ログとダンプファイルができるので、gtkwave等で波形が見れます。

今度は3段パイプラインのプロセッサに挑戦してみる。

TD4をSFLで書いてみた。

CPUの創りかた」のTD4を、SFL(Wikipedia)で記述してみた。
組み込まれたエンジニアデザインウェーブPDP-11互換CPUを作る連載(pdf)を読んでると、SFLを勉強したくなるですよ。

良かったところ

  • cygwinを使った実行環境をhttp://www.ip-arch.jp/からダウンロードすれば、すぐにSFLを試せる。サンプルもたくさんついてくる。
  • verilogと比べて、クロックとリセット書かなくていいので、記述量が少なくなって楽です。

verilogとの違いが気になる。

  • 左項に連結やビット指定が使えない。
  • verilogみたく、don't care を掛けない。

verilogのコードをベースにしたので、SFLっぽくないです。
コードがSFL準拠でない。sfl2vlでしか試していない。正式なSFLだとmoduleの中で+とか使えないはず。


LEDちかちか と ラーメンタイマが動作することはシミュレーションまで動作確認しました。
テストベンチについては、後で書く予定
せっかくSFLで書いたので、パイプライン化するのがいいかも。

/*
 SFL version of TD4 (Toriaezu Dousa surudakeno 4bit CPU)

 (C)Copyright Kohei Sekine 2009.
 URL: http://d.hatena.ne.jp/eggman/
 */

declare td4 {
    input  pin<4>;
    input  min<8>;
    output pout<4>;
    output madr<4>;
}

module td4 {
    input  pin<4>;      // input port
    input  min<8>;      // rom data

    output pout<4>;     // output port
    output madr<4>;     // rom address

    reg_wr a<4>;        // A register
    reg_wr b<4>;        // B register
    reg_wr p<4>;        // output port register
    reg_wr pc<4>;       // program counter;
    reg_wr c;           // carry flag

    sel op<8>;          // <7:4>:opcode, <3:0>:operand
    sel data_sel<2>;    // ALU input data select
    sel sel_out<4>;     // ALU input data
    sel alu_out<5>;     // ALU output
    sel load<4>;        // load select
    sel n_sel_a, n_sel_b, n_sel_p, n_sel_j;     // alias of load select

    // wire
    op = min;           // read op from ROM
    madr = pc;          // output address of ROM
    pout = p;           // assgin output port

    n_sel_a = load<3>;  // select A register
    n_sel_b = load<2>;  // select B register
    n_sel_p = load<1>;  // select output port register 
    n_sel_j = load<0>;  // select jump

    // decode
    any{
        op<7:4>==0x0 : par{ data_sel = 0b00; load = 0b0111; }   //ADD A,Im
        op<7:4>==0x1 : par{ data_sel = 0b01; load = 0b0111; }   //MOV A,B
        op<7:4>==0x2 : par{ data_sel = 0b10; load = 0b0111; }   //IN  A
        op<7:4>==0x3 : par{ data_sel = 0b11; load = 0b0111; }   //MOV A,Im
        op<7:4>==0x4 : par{ data_sel = 0b00; load = 0b1011; }   //MOV B,A
        op<7:4>==0x5 : par{ data_sel = 0b01; load = 0b1011; }   //ADD B,Im
        op<7:4>==0x6 : par{ data_sel = 0b10; load = 0b1011; }   //IN  B
        op<7:4>==0x7 : par{ data_sel = 0b11; load = 0b1011; }   //MOV B,Im
        op<7:4>==0x9 : par{ data_sel = 0b01; load = 0b1101; }   //OUT B
        op<7:4>==0xb : par{ data_sel = 0b11; load = 0b1101; }   //OUT Im
        op<7:4>==0xe : any{                                     //JNC Im
            c==0b0 :   par{ data_sel = 0b11; load = 0b1110; }       // jump
            c==0b1 :                         load = 0b1111;         // don't jump
                       }
        op<7:4>==0xf : par{ data_sel = 0b11; load = 0b1110; }   //JMP Im
    }

    // data selecter for ALU input
    any{
        data_sel==0b00 : sel_out = a;           // select A register
        data_sel==0b01 : sel_out = b;           // select B register
        data_sel==0b10 : sel_out = pin;         // select input port
        data_sel==0b11 : sel_out = 0x0;         // select Im
    }

    // ALU
    alu_out = (0b0||sel_out) + (0b0||op<3:0>);

    // set register
    any{
        n_sel_a==0b0 : a := alu_out<3:0>;       // set A register
        n_sel_b==0b0 : b := alu_out<3:0>;       // set B register
        n_sel_p==0b0 : p := alu_out<3:0>;       // set output port register
    }
    any{
        n_sel_j==0b0 : pc := alu_out<3:0>;      // jump
        n_sel_j==0b1 : pc := pc + 0b0001;       // increment PC
    }
    c := alu_out<4>;                            // set carry flag
}

参考:MAX II マイクロキットで「CPUの創りかた」 - Sim's blogverilog版TD4をベースにしました。

Bluetooth 3.0 + HSの概要

Bluetooth V3.0 + HS の話を聞きに、
MCPCモバイルソリューションフェア2009セミナー「Bluetooth V3.0/V3.0+HS 概要とロゴ認証 」へ行ってきた。

メモです。

  • Bluetoothの各バージョンについて
    • 1.0 セキュリティホールで無かったことに
    • 1.1 2007/8/9に廃止
    • 1.2 AFH eSCO追加 2010年廃止予定  BR basic rate
    • 2.0 EDR追加
    • 2.1 SSP(NFC, etc)
    • 3.0 HS 2009/4に仕様リリース
    • 3.0 ULP 2009/12 に仕様リリース
    • 3.0 UWB UWB->802.15.3c(60GHz)に変更 リリース時期不明 不透明になった
      • 2009/10「WiMedia Allianceと知的財産の利用に関する合意には至らなかった。Bluetooth SIGはこれ以上、UWB技術採用に向けた作業を進めないという結論を下した」 http://www.eetimes.jp/news/3480
  • 用語
    • AMP Alternative MAC PHY 802.11 AMP, 15.3c AMP
    • Host L2CAP以上のこと
    • PAL Protocol Adaption Layer   MACとHCIの間で変換する層
    • Controller PHY-MAC-PALまでの総称 BR/EDR controller, AMP controller
  • レイヤー構成
    • HCI HCI
    • Link Manager AMP PAL
    • Bt BB AMP MAC
    • Bt RF ANP PHY
  • 802.11 AMPでは、MAC PHYはIEEEの規格に従う。3.0 HSの仕様書では、802.11 PALの仕様を定義してる
  • 802.11 AMPのレートは24Mbps MAX
  • 待機、検索時はBR/EDRを使用。必要に応じてAMPを使用する。
  • ロゴ認証
    • 3.0
      • 3.0のエンハンスを1個以上搭載すればよい。 EDRはオプション
    • 3.0HS
      • ロゴに10xマークが付く
      • EDR L2CAP AMP 802.11PAL がMandatory。 802.11 PHY無くてもOK。
      • WiFiアライアンスのCAT-Cを受けることがMandarory。BT-SIG登録時にWiFi のCertification IDを記入する必要がある。
  • 3.0HSはPCから載りはじめる、携帯電話や車載はその後だろう。

この資料も参考にどうぞ→Bluetooth v3+HS

Bluetooth 3.0 HSよりも、Wi-Fi Directの方が有望な気がするなぁ。

SmartQ5 debug serial port

SmartQ5のシリアルポートの取り出し方が判明。
(via 智器SmartQ粉丝团 小Q硬件改造专贴-想加内存,外接串口的坛友可以先过来参考) tahnk you lance-san.

WLANモジュール近くのTPがTXDとRXDです。

GNDと5VはUSBのACコネクタの辺りからとれます。


ここのサイト、アカウントを取得しないと、画像が表示されないんですよね。
なんで中国の人たちは、会員制サイトが好きなんでしょうか。いつも不安な気持ちでアカウント登録している。