Sim's blog

電子工作はじめてみました

マルツでpickit2が3900円

2008-12-12 22:53:27 | その他のマイコン
今月号のトラ技(p.320)に載っているのに気づいたのですが、通販サイトの方を見てみるとpickit2が3900円に値下げになっています。秋月が4000円なので国内再安でしょうか?あと1350円何かを買えば、送料も無料になります。


とかいいつつ、digikey3695円になっています。AVRISP mk2も3590円です。円高おそるべし。

PIC24USBを作ってみました。

2008-12-08 22:19:36 | その他のマイコン
すんさんの掲示板でオプティマイズさんから発売されているPIC24USB基板の話を知りました。土曜日ITプラザで買ってきたのですが、はんだづけしてみました。

部品一式

PICは最初から付いています。つけるのはチップ部品ばっかりです。一応完成品も販売されています。

表です。


裏です。

作るコツは部品をなくさないことと、つける場所を間違えないことです。

いいなと思ったところは、
- 1980円と安い
- ROM256k RAM16kとやたら広い
- セルフ書き込みなので、ライターがいらない
- 3.3V動作だけど5.5V耐圧になっている。逆にオープンドレイン出力可
- USBがそのまま使える?
- コンパクト
- サイトの説明が丁寧。PICはろくに触ったことがなかったけど、そのとおりやったらLEDチカチカまではすぐできました。

文句をつけるとすると、ブレッドボードにそのままは刺さらないというくらいでしょうか。

PICというと、アセンブラというイメージでしたが、C言語も普通に使えるみたいです。

C言語ではじめる PIC24F活用ガイドブック」も以前買ったまま積んであったものがあります。

2x13のピンソケットは秋月で売っています(C-00084)

へたくそのくせしてチップのはんだづけに異様に執念を燃やすのは、我ながら変です。1608はしたことがあったのですが、そのせいか2016は大きく感じました。中島敦の名人伝のように蚤を見る特訓を3年間しないといけないかもしれません。

トラ技PICの改造

2008-12-08 02:20:15 | FPGA
DWM付録FPGA基板でトラ技PICROMの推論の続きになります。

前回は、トラ技12月号のPIC12F508をDWM付録のSpartan-3E基板に載せました。
ROMは組み合わせ回路でしたが、せっかくSpartan-3Eに載せるのでブロックRAMにしたいものです。一応成功したのでご報告です。

トラ技12月号のRTLは、2段のパイプラインになっています。命令フェッチと解釈実行の2つです。ジャンプ命令やサブルーチンコールの直後の命令は実行しないような制御を行っています(p.111参照)。



制御はcmdClrという信号です。この信号があるクロックのときにHだと次のクロックの命令はNOPとして扱われます。図だと命令2がジャンプ命令なので、次の命令3は実行されず、さらに次のクロックで飛び先の命令10が実行されます。

どんな回路になっているかを簡単な図にしてみました。

現在のcmdをデコードした結果としてのcmdClrによって次のクロックで実行される命令がメモリから読み出したものになるかNOPになるかが決まります。

Spartan-3EのブロックRAMはFF出力なので、アドレスを出した次のクロックにデータが読めます。上の図のままだと、cmdもFF出力なので1命令1クロックでなく2クロックになってしまいます。

そこで、以下のように回路を変えてみました。

ブロックRAMにできるようにメモリの出力にFFを移動しました。1命令1クロック動作できるように、cmdは組み合わせ回路の出力にしました。つじつまを合わせるためにcmdClrをFF出力にすることで、1クロック遅れにしました。

タイミングチャートは元のものと似ていますがcmdClrが1クロック遅れになっていて、現在実行している命令をNOPにするのかどうかになっています。


変更したRTLは、かなりぐちゃぐちゃになっているので載せません。

合成結果は、回路規模 260slice (前回295slice)、動作周波数 64.291MHz (前回59.291MHz)になりました。ブロックRAMを使っているので、プログラムサイズが大きくなってもslice数は増えません。DWM付録基板のSpartan-3E xc3s250eにはブロックRAMが12個載っているので、最大24kバイトまでROMを増やせることになります。

秋月の通販番号

2008-12-07 21:19:05 | その他
ちょっと気になったのでメモ。

秋月の通販番号は「アルファベット-数字5桁」という形式になっています。通販番号はランダムに決められているはずはないので、何か意味があるに違いありません。全部解明できたわけではありませんが、分かったことを少しだけ

最初のアルファベットですが、秋月のページの右上のワンタッチ注文のドロップリストを見ると、K I M B C P S T R89種類があります(12/16 追記前田さん情報でRを追加しました。Rは抵抗です。)。検索で「K-」と入力すると通販番号に「K-」が含まれるものも検索されます。「K-」の検索はできますが「I-」の検索はできません。「I-0」だと検索できます。
検索結果からすると、最初のアルファベットは商品の種類を示しているようでした。

K- キット (ソリッドステートリレーキットとか)

I- これは色々ひっかかります。PICマイコンやがあるのでICかと思ったら、トランジスタやLEDもあります。たぶん電子部品くらいでしょうか。でも、LEDキャップなんかも含まれています。

M- オシロやACアダプタが検索できます。完成品でしょうか。

B- 電池です。BはバッテリーのBですね。

C- コネクタです。CはコネクタのCですね。

P- ここも色々ひっかかります。ユニバーサル基板、ブレッドボード、パスコン、ボリューム、電池ボックス、ポリスイッチ、インダクタ、ICソケット・・・。パーツのP?

S- 本とCD-ROM、なぜかSDカードがひっかかります。

T- 工具類。ツールのTでしょうか。

下位の5桁ですが、新しいものほど大きな番号がついている雰囲気です。「0260*」という検索で?-0260?を検索できます。

「0261*」の検索結果
T-02610 ラジオペンチ RA3-150
I-02611 トランジスタ 2SC1815Y(20個入)
I-02612 トランジスタ 2SA1015Y(20個入)
P-02613 積層セラミックコンデンサー 1.5μF 25V(500個入)
P-02614 SSOP28ピン(0.65mm)DIP変換基板
P-02615 SOP28ピン(1.27mm)DIP変換基板
P-02616 SOT223 DIP変換基板
K-02617 パラメトリック・スピーカー実験キット
I-02618 ヤマハ音源IC(YMZ285)
M-02619 USB接続GPSモジュール

連番でついているのかと思ったら、そうでないものもあります。例えば「-00004」で検索すると以下の4つがひっかかります。

K-00004 AKI-H8/3048開発キット
I-00004 4現象電流モード乗算器 EL4083CN
C-00004 RS232C Dサブ9Pオス-9Pメス ストレートケーブル(1.8m)
P-00004 超デカEL発光パネル・専用インバータセット(白色)

雰囲気的に、昔はカテゴリー毎に連番でつけていたのが、最近は連番+カテゴリーに変わった感じです。

えっと、あくまで暇つぶしの独自の調査結果ですのであまり信用しないでください(笑)

秋葉原でお買い物

2008-12-06 21:47:26 | その他
Makeで有名なALTOIDSを買ってきました。売っているのはFOODS SHOP WATABEさんです。1個298円でした。

以前おぐらむさんが秋葉で買っていたので探してみました。

リナックスカフェでSpursEngineのイベントがあるというので、行ってみましたが人がいっぱいではいれませんでした。

昨日、とりはずしたファンの代わりに買ってきたファンです。

ainexのSS-F50SSという型番です。ドスパラとTWOTOPの両方とも1280円でした。元々のファンと同じT&Tというメーカーのものも見かけましたが、50mm角のものはありませんでした。50mm角ということだと、千石電商に1000円のがありました。秋月の40mm角のも一応買ってきましたが、今朝、sitgesさんに教えてもらったのでP-2433は避けてP-2478の方にしました。P-2433は10mm厚くらいでしたが、P-2478の方は20mm厚くらいあります。
ケーブルはマルツで売っていたものです。

プリンタポートの延長ケーブルです。

以前からほしいと思っていたのですが、実はプリンタケーブルではなくRS232Cケーブルとして売っていました。買ったのは千石です。

ピンそろったです。

スタパさんがよく紹介しているあれです。別になくても困るようなものでもないんですが、妙に気になったのでついつい買ってしまいました。(参考 STAPA VISION #5 電子工作キットに挑戦!!)

ATMega168を買ってきました。ITプラザは2個で1000円でした。千石は微妙に安くて1個470円でした。
ITプラザはオプティマイズ製品も扱っています。すんさんの掲示板で知ったPIC24USBキットを買ってみました。組み立てにはチップ部品のはんだづけが必要です。

ATTiny85も買ってきました。pepper用です。pepperのファームがアップグレードしたときに書き込むための予備です。千石で300円でした。秋月のATMega88より高いのには多少納得がいきませんが、秋月のが安すぎるんですよね。

DCジャックです(写真左)。

右のようなDCプラグが挿せます(2.1mm)。千石にありました。DCジャックってケースにつけるのが前提のものが多いので金属部分がむき出しになっています。延長用だと思いますが、ブレッドボードなんかで使うときは、むき出しの部分が少ないのでよいのではないかと思いました。

秋月では20MHzのオシレータを買いました。これでAVGAが試せますね。

秋月で売っている20MHzのものを5種類買ってきました。一番安いのは2個100円の表面実装用(P-1141)で、一番高いのがEXO3の250円(P-1465)でした。四角い缶のは通販では扱っていないようです。

aitendoのリアルショップCoCoNet液晶工房も行ってきました。年末年始特売品も店頭にありました。

アールティでは、Gainer miniの現物を拝んできました。

若松では、ColdFire基板のベースボードが置いてありましたが、KEI-TBLCFは見かけませんでした。

久々の秋葉でしたが、あいかわらず人が多かったです。ちょっとショックだったのはラジオデパートのATラボさんがなくなっていたことです。どうなったんでしょうか。

HDDレコーダから異音が・・・

2008-12-05 00:22:19 | その他
そこそこ長く使っているのですが、HDDレコーダから異音がしました。キィーンという音です。ハードディスク逝っちゃったかなと思いつつ、コンセントを抜いてフタを開けてみました。結構スカスカの基板です。音は、ファンからでした。たぶん寿命なのでしょう。ハードディスク自体は生きています。
今まで、HDDレコーダがないとテレビが見れない配線になっていましたが、HDDレコーダがなくても見れるように配線をしなおしました。

代替品が見つかれば換装するし、そうでなければ新品を買うことにします。
サイズは50mm×50mm×25mmで、12VDC 0.07Aと書いてあるのでDCファンです。
型番の5025LL12Sでググってみると、全く同じ症状の方がおられました。
ここは酷い5025LL12Sですね
東芝RD-H1の異音

さらに、「RD-H1 異音」でググると同じ症状の方が何人かいます。というか、他の方は2007年とかなので、多少は長生きしたということでしょうか。東芝から直接部品買ってる方もいますね。

秋月に40mm角のが2種類あります(P-2433P-2478)。何が違うのかな?P-2478の方は3本線です。電源とGNDとあと1本は何?

寒い季節なので、とりあえずはファンなし運用です><。週末に買ってきます。


DOS/Vパーツだと50mm角のはCF-50SSというのがあるみたいです。


12/7 追記 昨日、秋葉原で買ってきたCF-50SSに付け替えました。ケースにもぴったりはまります。音も静かです。コネクタが違うので、そこだけ付け替えました。コネクタはマルツのです。むき出しだとショートするのが嫌なので熱収縮チューブで保護しています。
念のために買ってきた秋月のファンは出番がありませんでした。
録画の予約はハードディスクに退避しているみたいで、コンセントを抜いても残っていました。被害はというと土曜日にやっていた、まるごと24時間ゴジラ特集を取り逃したくらいでした。


厚みが25mm→10mmと薄くなっています。

ここまで書いて気づいたのですが、はずした前のファンのコネクタを使えばよかったんですね。マヌケでした(笑)。

ROMの推論

2008-12-03 01:36:20 | FPGA
XilinxのISEは、HDLのパターンを見て、専用ハードウェアを推論する機能があります。例えば、レジスタ出力のRAMのパターンを見つけるとブロックRAMにしてくれたりします。
ISE自体は外部のプログラムを使って、FPGAの論理合成や配置配線を行うのですが、推論機構はXSTというプログラムで実装されているようです。それというのも「XSTユーザーガイド」(xst.pdf)というドキュメントに、パターンはこういうふうに書けという情報が載っているからです(2章)。

XSTユーザーガイドの10.1のp.247から「ブロックRAMリソースを使用したROMのHDLコーディング手法」がはじまっています。p.251を見ると、次のように書くとROMとしてブロックRAMを推論してくれるように書いてあります。
module rom(
    input clk, en,
    input [8:0] adr,
    output reg [11:0] out);

    always @(posedge clk)
        if(en)
            case (adr)
            9'h00 : out <= 12'hA12;
            9'h01 : out <= 12'hC08;
            9'h02 : out <= 12'h006;
            9'h03 : out <= 12'hCC7;
            9'h04 : out <= 12'h002;
            9'h05 : out <= 12'h066;
            9'h06 : out <= 12'h069;
            9'h07 : out <= 12'h800;
            9'h08 : out <= 12'hC0D;
            9'h09 : out <= 12'h028;
            9'h0A : out <= 12'hC01;
            9'h0B : out <= 12'h021;
            9'h0C : out <= 12'h201;
            9'h0D : out <= 12'h743;
            9'h0E : out <= 12'hA0C;
            9'h0F : out <= 12'h2E8;
            9'h10 : out <= 12'hA0A;
            9'h11 : out <= 12'h800;
            9'h12 : out <= 12'h901;
            9'h13 : out <= 12'h249;
            9'h14 : out <= 12'h026;
            9'h15 : out <= 12'h908;
            9'h16 : out <= 12'h666;
            9'h17 : out <= 12'hA1A;
            9'h18 : out <= 12'h289;
            9'h19 : out <= 12'hA1B;
            9'h1A : out <= 12'h0C9;
            9'h1B : out <= 12'hE07;
            9'h1C : out <= 12'h029;
            9'h1D : out <= 12'hA13;
            default : out <= 12'hfff;
            endcase
endmodule

(この例の元はトラ技12月号のROMの記述を改造したものです。)

このモジュール単体だと、ブロックRAMを推論してくれるのですが、他のモジュールとまぜるとなぜかブロックRAMになってくれません。

xst.pdfを見ていると、強制的にブロックRAMを推論させる方法がありました(p.436)。1行目(moduleの前の行)に以下を書いてやります。
(* rom_style = "block" *)

enはなくてもいいみたいでした。

xst.pdfですが、日本語版もあります。ISEを最新版にupdateすると、インストールしたディレクトリの中にいます。私の環境では次のディレクトリにいました。

c:¥Xilinx¥10.1¥ISE¥doc¥japanese¥books¥docs¥xst
(¥は全角になってます)

バージョンがかわったりすると、推論機能も変わったりするので注意が必要です。心配なときは、推論に頼らない記述にしたほうがいいみたいです。ただし、推論に頼らないときは、Xilinxべったりの記述になってしまうので、Alteraにもっていきたいときとかに困ってしまいます。へたをすると、同じXilinx同士でも移植できないことがあります(VirtexのDSP48とか)。悩ましいところですね。

参考、以前書いた「core generatorでROMを作る

DWM付録FPGA基板でトラ技PIC

2008-12-01 21:46:23 | FPGA
トラ技12月号はAlteraのMAX II マイクロキット上でPICを実装しています。DesignWave 2007年7月号付録のSpartan-3E基板で動かしてみます。


プログラミングケーブルは、Spartan-3 starter kitについてきたものを変換基板を自作してつないでいます(奥に見える黒いのがケーブル)。

自作の変換基板とdigilentのパラレルケーブル

以前、ケーブルも作ったんですが、どこにしまったのか見当たりません><


名前がマイクロキットなだけあって、mmkは小さいです。秋月のブレッドボードとそんなに変わらない大きさです。

ISEは10.1.03です。アップデートにやたら時間がかかりました。
ソースはTR0812T/第3部/MAXII/MaskROMの中にあるものを使いました。

主な変更点はM508Emu.vの(1)入力に外部リセットをつけたことと(2)mResetモジュールを呼ばないようにしたことと、外側にmain.vを作ったことです。
module M508Emu(
    input  EXTCLK,
    input  EXTRST, // 追加
・・・
    assign reset = EXTRST; // 追加

    //Power On Reset ==============================================
//  mReset Rst(reset); // コメントアウト
・・・
endmodule

module main(
    output reg [3:0] led,
    input rst_x, clk);

    wire [7:0] led8;

    M508Emu cpu(
        .EXTCLK(clk),
        .EXTRST(~rst_x),
        .GPIO(),        // inout[7:0]
        .LED(led8),     // output [7:0]
        .KEY(4'hf));    // input [3:0]

    always @(posedge clk)
        led <= ~led8[3:0];
endmodule

サイズは297 / 2448 slice (12%)で、最大動作周波数は59.291MHzです。オプションはいじっていません。
論理合成のオプションをAREA HIGHにすると、228 / 2448 slice (9%)、39.131MHzになります。DWM付録基板には33MHzのクロックをつけているので、これでもよさそうです。
main.vはリセットとLEDを反転しているだけです。LEDをwireにすると4 slice減ります。
ちなみに、AlteraのQuartus II 8.1で合成したときの結果は728 / 2210 Logic Elementで52.19MHzです。XilinxのsliceとAlteraのLEで数え方がずいぶん違います。

ブロックRAMを使えるように改造できないかといじっていましたが、なかなかうまくいきません。