電子ブロック工房 / 一般的なこと https://www.rad51.net/blog/mycom/ IC・トランジスタで出来たコンピューターを設計・製作するためのブログ / 一般的なこと ja Jeans CMS © Weblog http://backend.userland.com/rss https://www.rad51.net/jeans/skins/jeans/images/jeans2.gif 電子ブロック工房 https://www.rad51.net/blog/mycom/ ハンダゴテを買い換え https://www.rad51.net/blog/mycom/?itemid=940 3年半前に買った物。新たに買ったのはHAKKOのFX600というタイプ。amazon.comで見つけた、日本製のハンダゴテ。
2017-05-20-1.jpg

左が壊れたハンダゴテ。小手先を固定する部品のうち、プラスティックの物が割れてしまった。とりあえず針金で固定して使っていたが、買い換えることに。右が今回購入したもの。アメリカのAmazonから買ったのだが、日本語パッケージの物が送られてきた。

2017-05-20-2.jpg
アメリカで購入したので、てっきり、アース線付きの3極のコンセントの物(FX600-01)が送られてくるのだろうと思っていたら、日本式の2極のコンセントの物(FX600-02)だった。アメリカと日本で電圧が微妙に異なるので(100 V vs 115 V)、大丈夫かなと思ったが、白光のwebページを見る限り、FX600-01とFX600-02で耐圧に違いは無さそう。ただし、両方とも100 Vだが、多分アメリカの電圧で使っても大丈夫なのであろう。

取扱説明書は、パッケージの裏に書かれているこれだけなので、ここにアップして補損しておくことにしよう。白光のwebサイトでの、説明ページはこちら

2017-05-20-3.jpg

前の前のハンダゴテ(グット製)は、30年もった。前のハンダゴテ(Radio Shack)は、3年しかもたなかった。今度の白光のハンダゴテ、何年もつかな?]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=940 Sat, 20 May 2017 23:22:33 PDT ITEM940_20170520
トランジスターCPU、NAND6TRの全回路図 https://www.rad51.net/blog/mycom/?itemid=915 2015-06-21-IMG_0866_s.jpg

NAND6TRは、RISCアーキテクチャのCPUで、演算がNANDと左シフトだけであるのが特徴。レジスターは6ビットの物が4つ。命令は2ワード固定(12ビット)で、以下の通り。
00ddyy iiiiii: (yy)とiiiiiiiiのNAND値を(dd)に代入
01xxyy yyyyyy: (xx)を左シフトし(MLBは1)、キャリーがあればyyyyyyyy0にジャンプ
10ddyy zzzzzz: (yy)と(zzzzzz)のNAND値を(dd)に代入
11xxyy dddddd: (xx)と(yy)のNAND値を(dddddd)に代入

アドレスラインは9ビット(512 ワード)であるが、RAMとして使えるのは、最後の64ワードのみ。4つのレジスターのうち、1つ(R0)は、RISCにありがちな特殊な物。NOP命令を実行するとR0=111111となり、この値を維持しなければならない。

トランジスターとしては、MOSFET-Nの、2N7000を用い、基本的に10 kΩでプルアップしてある。現在の設計では、使用トランジスターは651個で、インテル4004と比べても3分の1以下の数。

回路図の作成には、Quartus II 9.0 SP2を使用。以下に、このCPUの全回路図を示す。PDFファイルは、こちら。

まずは、全体像(クリックで拡大表示)。クロック処理部、プログラムカウンター、命令処理部、一時レジスター及び演算部、外部アクセスアドレス作成部からなる。
2015-07-27-nand6tr.png

以下は、NMOSで作成したラッチ。
2015-07-27-latch.png

Dタイプのフリップフロップ。
2015-07-27-ff.png

カウンターを構成するための、Tタイプフリップフロップ。キャリーアウト、ロード機能付き。
2015-07-27-tff.png

クロック処理部。この記事最初の写真では、この部分の回路が完成している。
2015-07-27-clock.png

クロック処理部のシミュレーション結果は以下のようになる。実機でも、予想通りの動作であることを確認した。
2015-07-27-clocksim.png

発振器からのシグナルを12分周して、6つのステップに分けて処理している。それぞれのステップにおける動作は、次のように設計した。
step #STP0STP1STP2STP3STP4STP5
data linemnr2op(op)r1res
address linepc1111111yypc111op1111111xx1111111xx or 111op
00ddyy iiiiiifetch mnfetch r2nand to r1res to Rxx
01xxyy yyyyyyfetch mnfetch r2fetch opshifted to r1res to Rxx
10ddyy zzzzzzfetch mnfetch r2fetch opnand to r1res to Rxx
11xxyy ddddddfetch mnfetch r2fetch opnand to r1res to (op)
ただし、mn:ニーモニック、op:オペランド、r1:一時レジスター1、 r2:一時レジスター2、res:結果。

プログラムカウンター。上記のTタイプフリップフロップを8つ繋げて実装してある。なお、アドレスラインは9ビットだが、最下位ビットにはカウンターは不要で、STP0かSTP2かを判断して出力している。
2015-07-27-pc.png

外部アクセスアドレス作成部。アドレスラインは別途、プルアップされていることに注意。
2015-07-27-address.png

命令処理部。ニーモニック及びオペランドを記憶する回路。
2015-07-27-code.png

一時レジスター及び演算部。ここでの一時レジスターは、ラッチを用いて形成されている。左上、12個のNMOSにより6つのNAND回路を形成している部分が、いわゆるALUに相当する部分で、NAND6 CPUではNAND演算だけである。その少し右あたりは、データーが1ビットずつずれて処理されており、左シフトに相当する。
2015-07-27-registers.png

メモリー読み出しシグナルを作成するための簡単な回路。なお、メモリー書き込みシグナルは、クロック処理部から出力される"/L5"と、同一である。
2015-07-27-read.png

データーライン及びアドレスラインのプルアップ回路。実機では、10 kΩでプルアップしておくだけでよいのだが、Quartus IIでのシミュレーションではその様な回路が組めないので、代替のものである。
2015-07-27-pullup.png

]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=915 Sun, 21 Jun 2015 19:15:06 PDT ITEM915_20150621
明けましておめでとうございます https://www.rad51.net/blog/mycom/?itemid=892
今年もよろしくお願いいたします。

2014-01-06-IMG_0416s.jpg

さて、このはんだごては、私が高校生の頃から30年以上使ってきたもの。

2014-01-06-IMG_0426s.jpg2014-01-06-IMG_0427s.jpg

大洋電機製のグット TB-30という型番のもので、高校生の時に電子工作用に購入して以来ずっと使い続けてきた。KM-Z80なども、これで作成。

ところが、残念なことに、30年使い続けてきたこのはんだごてが故障してしまったのである。通電したりしなかったりするので、どこかの配線が切れているのだろうと調べてみると…

2014-01-06-IMG_0450s.jpg

中の方の接続が切れていた。コードの断線なら付け替えればよいが、ここの部分がやられてしまっているとなると、いよいよ寿命のようである。

30年間、お疲れ様でした。

ということで、新年早々、新しいはんだごてを購入。

2014-01-06-IMG_0462s.jpg

ディジタル式の、コテ先温度調整式のもの。やはり、新しい物は良い。表面実装のICなど扱う際は、石が壊れない温度でハンダ付けが出来るので、安心して扱えるようになりそうだ。]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=892 Mon, 06 Jan 2014 13:02:51 PST ITEM892_20140106
初めてのTQFP https://www.rad51.net/blog/mycom/?itemid=887
開発を続けているKM-Z80 miniは、現在の所28 KBのRAMを搭載したMZ-80Kをエミュレートしている。MZ-80Kは最大48 KBのRAMを搭載することが出来るので、KM-Z80 miniでも、ゆくゆくはこの容量のRAMを搭載したい。それには、52 KB以上のRAMを搭載したマイコンが必要であるが、残念ながらDIPパッケージでこれだけのRAMを持っている物は無いようだ。

大容量のRAMを実現する方法は、2つ。一つは、大容量RAMを持つチップを利用すること。もう一つは、RAMを外付けで利用すること。一つ目の方法を実現するには、DIPパッケージでは無理で、表面実装の物になる。二つ目の方法では、速度の速いパラレル接続を行うには、やはり表面実装のチップになる。これは、MIPSやARMなどの高速のCPUを持ち、かつI/Oピンの数の多いものは、やはり表面実装になるためである。他方で、ピン数の少ないSPI接続のRAMがPIC32MX150F128Bで使えるが(共に、DIPパッケージ)、この場合はデーターの読み込み速度が問題になる。2 MHzのZ80をエミュレートしているKM-Z80 miniでは何とかなりそうな気もしたが、いずれMZ-700のエミュレートも行うとすると、速度が追いつかない可能性が高い。

そういったことを考え、やはり表面実装のチップもちゃんと扱える用になっておいた方が良いだろうと考え、トライしてみた。

2013-09-15-AUT17958.jpg

TQFP-64のチップ(PIC32MX350F256H)を使うことにし、それを1/10インチ幅のピッチに変換するアダプターを購入し、半田付けすることにした。この半田付けに関して参考になったのは、以下の2つの動画。




あと、やってみて分かったのは、電子工作用の、洗浄の必要がないFluxを利用する必要があると言うこと。実は、この記事のタイトルは「初めてのTQFP」となっているが、実際は2回目である。一回目の挑戦(PIC32MX695F512H)では安物のFluxを利用して、それが原因と思われる現象で失敗した。今回の半田付けでは新たに購入したFluxを利用し、位置の確認や余分な半田を取り除くなどの行程を、1時間ほどの時間をかけてゆっくり確実に行っなって、綺麗に仕上げた。このFluxは洗浄の必要がないということになっているが、半田付け後は出来る限り取り除いた。

記事最初の写真は、そのようにしてアダプタに半田付けしたPIC32MX350F256Hをユニバーサルボードに載せ、必要最小限のキャパシタとPickit3用のコネクタを接続した物。無事にPickit3との接続が確認でき、今まで通り開発を続けることが出来るようになっている。これで、48 KB搭載のKM-Z80 miniの完成にめどが付いた

TQFPパッケージのチップも、時間をかけて慎重にアダプターに半田付けすれば、DIPパッケージの物と同様に使えるようになったと思う。これが出来ると応用範囲が広がるので、色々と楽しみが増える。PSoC3などもやってみたい。

ところで、キャパシタも表面実装の物をトライしてみた。10 μFは2 mm幅のパッケージ、0.1 μFは1 mm 幅のパッケージを購入。2 mm幅の物はごまより少し大きいぐらいのサイズであるが、1/10インチ幅のユニバーサル基板にはちょうど良い大きさで、気に入った。1 mm 幅のものはケシの種ぐらいの大きさで、吹けば飛ぶよう。これについては、実体顕微鏡でもなければ、扱うのは無理のようだ。]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=887 Sun, 15 Sep 2013 20:30:51 PDT ITEM887_20130915
CPLDを使ってみる https://www.rad51.net/blog/mycom/?itemid=839
色々在って、AlteraのMAX3000Aシリーズを使うことにした。他に候補に挙げて色々と試したのはXilinxのXC9500XLシリーズである。私が個人的に行った比較では、次の通り。

1)石の入手のしやすさはあまり変わらない。どちらも、$1-$2で手に入る。
2)3.3V駆動、5Vトレラントや消費電力など、性能はほぼ同じ。
3)私のPC環境ではツールがAlteraの方が安定していた。
4)Altera用のUSB接続のダウンローダー(作成した回路を、石に転送するための道具)の制作方法が公表されている。Xilinxの場合、自作のダウンローダーは、パラレルポートに接続するものしか見あたらない(当然、市販のダウンローダーはUSB接続のものがある)。

以上の比較により、AlteraのMAX3000Aシリーズを使うことにした。

ダウンローダーには、USB-Blasterもどきを使わせていただいた。こういったツールを公表されている方には、本当に感謝である。

ユニバーサル基板に、このUSB-Blasterもどきと、EPM3064ALC44-10Nに合うPLCC44のソケットを載せ、この石が要求する3.3V用の3端子レギュレーターを入れ、別の基板のCPLD/FPGAと通信するためのソケットを追加して、下のようなものが出来上がった。

2012-03-24-cpld.jpg
さて、試行錯誤の結果、CPLDの回路を書くためのソフトウェア、Quartus II (Alteraのwebページから無償でダウンロードできる)をインストールし、簡単な回路を作成し、その回路をCPLDの石に焼くところまでこぎ着けた。作成した回路は、以下のような簡単なもの。

2012-03-24-schematic.png

39番ピンの入力に従って、31番ピンと33番ピンにHまたはLを出力する回路だ。これは、下のようにちゃんと動くことが確認された。

2012-03-24-cpldleft.jpg
2012-03-24-cpldright.jpg


とりあえずは、MAX3000Aデバイスにちゃんと書き込みできたらしい。次に規模の大きな回路を組むときに、これを使ってみるつもりにしている。]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=839 Sat, 24 Mar 2012 21:00:57 PDT ITEM839_20120324
源内CADでオープンコレクタ https://www.rad51.net/blog/mycom/?itemid=749
作成した回路は2つ。オープンコレクタ出力部分と、プルアップつき入力部分である。

オープンコレクタ出力プルアップ付き入力

左の回路は、オープンコレクタ出力部分。入力がLの時、左の3ステートからの出力に従って、Lが出力される。入力がHになった場合、左の3ステートはHを出力した後にハイインピーダンスになる。源内CADの場合(ver 2.05)、3ステートからの出力を複数つなげた場合、最後に変化した出力の内容が信号線に情報として保持されるようである。従って、入力がL→Hと変化した場合、この回路の出力はHになる。オープンコレクタをひとつだけ利用する場合はこれでよいが、実際には2つ以上のものをつなげて利用する(でないと、利用する意味が無い)。そこを制御するのが右側の3ステートで、入力がLの時に、出力側の値がHへ変化してしまった場合に対応している。そういう場合に、もう一度Lに戻す動作を行う。

右の回路は、プルアップ付き入力部分。上部がプルアップに相当する回路であるが、実際にはパワーオンリセットのようなものである。右の部分は、上で説明したL出力を保持する動作と関係する。このL出力保持回路が動作するまでの間、入力が一時的にHになる。これを解消するためのもの。結果として、オープンコレクタ+プルアップの場合の特徴である、シグナルがHになったときに遅延が生ずる性質についても、シミュレートされている。

この回路は源内CAD ver 2.05では意図したように動作するが、他のバージョンではどうなるか分からない。]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=749 Fri, 18 Sep 2009 11:17:14 PDT ITEM749_20090918
円周率、小数点以下70桁 https://www.rad51.net/blog/mycom/?itemid=738
#include "stdafx.h"

#include <stdlib.h>

#define FIG 37

void prt(unsigned char* v1){
    unsigned char i;
    for (i=0;i<FIG-1;i++) {
        if (v1[i]<10) printf("0%d",v1[i]);
        else printf("%d",v1[i]);
    }
    printf("\n");
}

void copy(unsigned char* res, unsigned char* v1){
    unsigned char i;
    unsigned short t,c=0;
    v1[FIG-1]=10*((v1[FIG-1]+5)/10);
    for (i=FIG-1;i<FIG;i--) {
        t=v1[i]+c;
        c=t/100;
        if (i) t-=c*100;
        res[i]=t;
    }
}

void clear(unsigned char* res){
    unsigned char i;
    for (i=0;i<FIG;i++) res[i]=0;    
}

void add(unsigned char* res, unsigned char* v1, unsigned char* v2){
    unsigned char cache[FIG];
    unsigned char i;
    unsigned short t,c=0;
    for (i=FIG-1;i<FIG;i--) {
        t=v1[i]+v2[i]+c;
        c=t/100;
        if (i) t-=c*100;
        cache[i]=t;
    }
    copy(res,(unsigned char*)&cache);
}

void mul(unsigned char* res, unsigned char* v1, unsigned char v2){
    unsigned char cache[FIG];
    unsigned char i;
    unsigned short t,c=0;
    for (i=FIG-1;i<FIG;i--) {
        t=v1[i]*v2+c;
        c=t/100;
        if (i) t-=c*100;
        cache[i]=t;
    }
    copy(res,(unsigned char*)&cache);
}

void mul(unsigned char* res, unsigned char* v1, unsigned char* v2){
    unsigned char cache[FIG*3];
    unsigned char* r=&cache[0];
    unsigned char* t=&cache[FIG*2];
    unsigned char i;
    clear(r);
    clear(r+FIG);
    for (i=FIG-1;i<FIG;i--) {
        mul(t,v1,v2[i]);
        add(r+i,r+i,t);
    }
    copy(res,r);
}
void div(unsigned char* res, unsigned char* v1, unsigned char v2){
    unsigned char cache[FIG];
    unsigned char* r=&cache[0];
    unsigned char i;
    unsigned short c=0;
    for (i=0;i<FIG;i++) {
        c=c*100+v1[i];
        r[i]=c/v2;
        c=c-r[i]*v2;
    }
    copy(res,r);
}

int _tmain(int argc, _TCHAR* argv[])
{
    unsigned char* pi=new unsigned char[FIG];
    unsigned char* y=new unsigned char[FIG];
    unsigned char* t=new unsigned char[FIG];
    clear(pi);
    prt(pi);
    for (int n=0;n<127;n++) {
        clear(y);
        y[0]=3;
        div(y,y,2*n+1);
        for (int x=1;x<=n;x++) {
            clear(t);
            t[0]=x+n;
            div(t,t,x);
            div(t,t,16);
            mul(y,y,t);
        }
        add(pi,pi,y);
        prt(pi);
    }
    return 0;
}

copy関数内で丸めの処理をし、下2桁は表示しないようにしてある。このアルゴリズムだとこの辺が限界らしく、桁数をさらに上げると誤差が出るようだ。PICのpi calculatorにも入れてみよう。]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=738 Fri, 03 Jul 2009 18:46:32 PDT ITEM738_20090703
割り算無しで円周率の計算 https://www.rad51.net/blog/mycom/?itemid=737
for ($max=2;$max<=2000000000;$max=$max*sqrt(10)) {
    $t=time();
    echo intval($max).': '.calc_pi(intval($max))."  (".(time()-$t).")\n";
}

function calc_pi($max) {
    $total=0;
    $max2=$max*$max;
    $prev_y=$max-1;
    for ($x=0;$x<$max;$x++) {
        $max2_x2=$max2-$x*$x;
        for ($y=$prev_y;0<=$y;$y--) {
            if ($y*$y < $max2_x2) break;
        }
        $total+=$y+1;
        $prev_y=$y;
    }
    return $total;
}


実行結果は、次のとおり。
2: 4  (0)
6: 33  (0)
20: 331  (0)
63: 3175  (0)
200: 31602  (0)
632: 314319  (0)
2000: 3143579  (0)
6324: 31416676  (0)
20000: 314179205  (0)
63245: 3141600733  (0)
200000: 31416126094  (1)
632455: 314159368708  (0)
2000000: 3141594652558  (3)
6324555: 31415929675774  (8)
20000000: 3.1415928535658E+14  (24)
63245553: 3.1415926966214E+15  (76)
200000000: 3.1415926756486E+16  (242)
632455532: 3.1415926602871E+17  (757)

ただ、2進数の数値を10進数で表示させるときに、割り算は必要になるのだけれど…。ただしこの場合、10で割るだけだから何か方法を考えてみよう。掛け算して、右シフトとか。

ちなみに、Wikipediaに載っている収束の早い方法で円周率を求めるスクリプトは、次の通り。
$prev='';
for ($max=1;$max<=1073741824;$max++) {
    $t=time();
    $pi=calc_pi($max);
    echo "$max: ".$pi."  (".(time()-$t).")\n";
    if ($pi===$prev) exit;
    $prev=$pi;
}

function calc_pi($max) {
    $fig=50;
    $pi='0';
    for($n=0;$n<$max;$n++){
        $y=bcdiv('3',bcadd('1',bcmul('2',$n,$fig),$fig),$fig);//$y=3/(2*$n+1);
        for($x=1;$x<=$n;$x++) $y=bcmul($y,bcdiv(bcadd($x,$n,$fig),bcmul('16',$x,$fig),$fig),$fig);//$y*=($x+$n)/(16*$x);
        $pi=bcadd($pi,$y,$fig);//$pi+=$y;
    }
    return $pi;
}

実行結果:
1: 3.00000000000000000000000000000000000000000000000000  (0)
2: 3.12500000000000000000000000000000000000000000000000  (0)
3: 3.13906250000000000000000000000000000000000000000000  (0)
4: 3.14115513392857142857142857142857142857142857142857  (0)
5: 3.14151117234002976190476190476190476190476190476190  (0)
6: 3.14157671577486640963203463203463203463203463203462  (0)
7: 3.14158942531912159292530386280386280386280386280385  (0)
8: 3.14159198235838245718311636280386280386280386280384  (0)
9: 3.14159251115786195576584413164577456856868621574501  (0)
10: 3.14159262287061749311263384304585680541079147890290  (0)
11: 3.14159264687556079607822377507885066701793433604575  (0)
12: 3.14159265210588688135876980275995259042146694474140  (0)
13: 3.14159265325873792265602348969466213937166225724139  (0)
14: 3.14159265351533760243194355890199599553044860706777  (0)
15: 3.14159265357293032612549212123332185179268852363902  (0)
16: 3.14159265358595061661642608384639847682401749402515  (0)
17: 3.14159265358891285600131896691248906315335157085779  (0)
18: 3.14159265358959056160849298995008835905936938801550  (0)
19: 3.14159265358974637793146374412070756654526875476065  (0)
20: 3.14159265358978236182926181471105468109455961729002  (0)
21: 3.14159265358979070504702871491957876055027172123928  (0)
22: 3.14159265358979264648516079676489008081121469559402  (0)
23: 3.14159265358979309973252269314519066555395251877355  (0)
24: 3.14159265358979320586410315569955105918300479582472  (0)
25: 3.14159265358979323078381629789582891946431607133556  (0)
26: 3.14159265358979323664972132283830569814426002942394  (0)
27: 3.14159265358979323803372159223919304405740718426681  (0)
28: 3.14159265358979323836096542698221430286801580025617  (0)
29: 3.14159265358979323843849617573672865968992142865277  (0)
30: 3.14159265358979323845689896669986550549021156502481  (0)
31: 3.14159265358979323846127465763857311206335432217720  (0)
32: 3.14159265358979323846231676887659993003945930165518  (0)
33: 3.14159265358979323846256533495254514882234155307033  (0)
34: 3.14159265358979323846262470806826589448932920075401  (0)
35: 3.14159265358979323846263890915077177829682640612762  (0)
36: 3.14159265358979323846264231012430349423281705978877  (0)
37: 3.14159265358979323846264312558794378057382395120362  (0)
38: 3.14159265358979323846264332133595004570496024509324  (0)
39: 3.14159265358979323846264336837467762778641281058918  (0)
40: 3.14159265358979323846264337968969774439469471016827  (0)
41: 3.14159265358979323846264338241412060503328604254763  (0)
42: 3.14159265358979323846264338307070811563605557427481  (0)
43: 3.14159265358979323846264338322908456383432165635004  (0)
44: 3.14159265358979323846264338326731865359081966634046  (0)
45: 3.14159265358979323846264338327655619908899808301619  (0)
46: 3.14159265358979323846264338327878973382315776673073  (0)
47: 3.14159265358979323846264338327933017039204440595583  (0)
48: 3.14159265358979323846264338327946102805957801577268  (1)
49: 3.14159265358979323846264338327949273420351838380846  (0)
50: 3.14159265358979323846264338327950042135844352612057  (0)
51: 3.14159265358979323846264338327950228625461732116515  (0)
52: 3.14159265358979323846264338327950273894369663020878  (0)
53: 3.14159265358979323846264338327950284889283679480685  (0)
54: 3.14159265358979323846264338327950287561187378816546  (0)
55: 3.14159265358979323846264338327950288210835387941934  (0)
56: 3.14159265358979323846264338327950288368871178204397  (0)
57: 3.14159265358979323846264338327950288407334337413938  (0)
58: 3.14159265358979323846264338327950288416700013995681  (0)
59: 3.14159265358979323846264338327950288418981569271129  (0)
60: 3.14159265358979323846264338327950288419537619160133  (0)
61: 3.14159265358979323846264338327950288419673194616024  (0)
62: 3.14159265358979323846264338327950288419706264059075  (0)
63: 3.14159265358979323846264338327950288419714333536557  (0)
64: 3.14159265358979323846264338327950288419716303377602  (0)
65: 3.14159265358979323846264338327950288419716784415123  (0)
66: 3.14159265358979323846264338327950288419716901927533  (0)
67: 3.14159265358979323846264338327950288419716930644645  (0)
68: 3.14159265358979323846264338327950288419716937664780  (1)
69: 3.14159265358979323846264338327950288419716939381476  (0)
70: 3.14159265358979323846264338327950288419716939801409  (0)
71: 3.14159265358979323846264338327950288419716939904164  (0)
72: 3.14159265358979323846264338327950288419716939929315  (0)
73: 3.14159265358979323846264338327950288419716939935472  (0)
74: 3.14159265358979323846264338327950288419716939936980  (0)
75: 3.14159265358979323846264338327950288419716939937349  (0)
76: 3.14159265358979323846264338327950288419716939937439  (0)
77: 3.14159265358979323846264338327950288419716939937461  (0)
78: 3.14159265358979323846264338327950288419716939937466  (0)
79: 3.14159265358979323846264338327950288419716939937467  (0)
80: 3.14159265358979323846264338327950288419716939937467  (0)

1秒以内に40桁以上。速い。これは、先日作った、pi calculatorに入れてみたいアルゴリズムだ。]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=737 Thu, 02 Jul 2009 18:12:27 PDT ITEM737_20090702
多分必要なもの https://www.rad51.net/blog/mycom/?itemid=707
制作にあたって、たぶん次のようなツールが必要になる。USBインターフェースのI/Oポートをピックアッピしてみた。

NI USB 6501
USBee AX

NIの方は、24ポートあるのが魅力。少し値ははるが96ポートの製品もあるらしい。
USBeeの方は、8ポートだが、多分(よく調べていない)、スピードはこちらの方が速い。

どちらも、$100ちょっとの価格。とりあえず購入するのは、NIの方かな。実績もあるし。]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=707 Sat, 21 Feb 2009 13:04:26 PST ITEM707_20090221
参考になりそうなページ https://www.rad51.net/blog/mycom/?itemid=415
N.Kojima 総目次

実は、この表ページにたどり着く前に『はずかしい回路設計』というページに行き当たった。

ソフトウェアしか開発したことのないエンジニアがいきなり、簡単な回路だからあなたがハードも含めて設計しなさいと言われてしまった場合に陥りやすい誤りについて実例を見ていきましょう。(サイトから引用)

うーん、私はソフトウェアのエンジニアではないが、ギクッとする文面である。幸い、趣味で電子工作しているレベルでは、『とってもはずかしい』には該当しなかったので、ほっと一安心。それにしても、とっても参考になる。

あとは、『言語によるディジタル回路の設計 ~ VDHL』も、参考になりそう。どこかのページで見つけた『Verilog』という言語が気になっていたのであるが、そのあたりについて分かりやすく解説している。今は、ソフトウエアを使ってディジタル回路を設計する時代らしい。こういった手法が使えるようになると、FPGA も使いこなせるようになるのだろうか?

いいね、新しいものも。]]>
一般的なこと https://www.rad51.net/blog/mycom/?itemid=415 Tue, 14 Aug 2007 15:17:34 PDT ITEM415_20070814