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実装を探してみた。
- nnARM
- verilog
- ARMv4T互換
- OpenCores.orgで公開されていたが、なぜか消えちゃった。
- http://www.foo.be/docs-free/nnARM/
- document:http://www.foo.be/docs-free/nnARM/Architecture111.pdf
- arm7_Verilog
- CORE_ARM
- VHDL
- OpenCores.orgで公開中
- Overview :: Arm core :: OpenCores
この他にも、知っている人がいたら教えてください。
TD4をSFLで書いてみた。その2
d:id:eggman:20091205:1260045315の続き
テストベンチっぽいものを書いた。テストベンチの構成は、m8の物ををパクってきた。
- 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 blog のverilog版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.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コネクタの辺りからとれます。
ここのサイト、アカウントを取得しないと、画像が表示されないんですよね。
なんで中国の人たちは、会員制サイトが好きなんでしょうか。いつも不安な気持ちでアカウント登録している。