2018年04月17日

自作キーボード (HWまとめ)

Linux SBC に添える小さなキーボードを作ろうとしているのだが、だらだらと書いてきて自分でも分からなくなったので、まとめようと思う。

レイアウト (一応確定)

    i2c_keyboard_asign.png

    これでいこうと思う。太字の右はシフト。右上は FN キーを押したとき。
     -- ◇は カーソルの4キー。
     -- SysRQ は、"Print Scr" になるかも知れない。
     -- QWER に割り当てがあるが、 最初の版にない、ESC と \ の代替。
     -- FN+R は、SCANCODE1, HID では無理かも。FN+SHIFT+E

マトリックス (確定)

    ROW1 ROW2 ROW3 ROW4 ROW5 ROW6 ROW7 ROW8
    COL1 1 TAB CTRL ALT BS ] ENTER ESC
    COL2 2 Q A Z = [ ' SHIFT
    COL3 3 W S X - P : /
    COL4 4 E D C 0 O L .
    COL5 5 R F V 9 I K ,
    COL6 6 T G B 8 U J M
    COL7 7 Y H N \ FN SP2 SP3

    発注したキーボードが 2 種類あって、さらにもう一つ検討中であるが、同一である。
     -- COL に L レベルを出力し、ROW 側で読み取る。
     -- 特殊キーは、ダイオードを入れて 同時押しをサポート。
     -- version 1 には、ESC と \ がない。(ファイルを修正はした)

続きを読む
posted by すz at 06:01| Comment(0) | TrackBack(0) | I2CKEYBOARD

2018年04月14日

圧着ペンチ

ピンヘッダ用の ケーブルがいろいろ売っているが、コネクタは、"Dupont terminal" というものらしい。メス(female) 以外に オス (male) もある。

    dopont-terminal.jpg
    秋月だと ケーブル用コネクタTJC8コネクター として売っている。ちょっとお高いのだが、金フラッシュだかの処理がされている。aliexpress だと かなり安いものがある("dupont terminal female" で検索)。

このコネクタどうやってカシメるのか、恥ずかしながら詳しくは知らなかった。ラジオペンチで潰しておいてハンダ付けするとかしていたのだが、ケーブルを固定するのが面倒だったり、熱で皮膜が溶けてしまったり。これは、当然ながら 専用の工具がある。 英語では、"climping plier"。

climping-plier-die.jpg
aliexpress で検索したところ、"SN-28B" と "SN-48B" が 該当するらしい。"SN-28B" は、ダイの形状のことらしく、0.25 0.5 1.0 の 3つの大きさで AWG 28-18 に対応し、 "SN-48B" は、0.5 1.0 1.5 の 3つで AWG 26-16 に対応。横から見ると段差があり、皮膜の方も一気にカシメるもののようだ。

    0.25 AWG 24-26-28
    0.5 AWG 22-24-26
    1.0 AWG 18-20-22
    1.5 AWG 16-18-20

こういうことだろうか?

climping-plier-ali.jpg
"climping plier SN-48B" で検索すると、それに応じたプライヤーが見つかる。どれもこれも同じ形であり、ダイも交換可能のように思われる。

climping-plier-daiso.jpg
ちなみに、普通の電工ペンチは、1.5 2.5 5.5 の3つが多いようだ。

線材だが、ファーストン端子(小)やキボシには、AWG 18 〜 20 を使うらしい。"Dupont terminal" には、AWG 24 が普通。せいぜい 22 まで。ということは、0.5 があれば良い。

    直径 断面積 最大電流
    AWG 16 1.291 mm 1.309 mm2 22A
    AWG 18 1.024 mm 0.8226 mm2 16A
    AWG 20 0.8118 mm 0.5174 mm2 11A
    AWG 22 0.6438 mm 0.3256 mm2 7A
    AWG 24 0.5106 mm 0.2047 mm2 3.5A

こういうことなので、SN-48B あたりが良さそうである。

さて、"Dupont terminal" だが、 両端あるいは、片側にコネクタだけ圧着したケーブルも売っている("dupont wire" で検索)。ただ、両端 1P のケーブルの方が安いかも知れない。あるいは、10cm などにカットしハンダ処理をしたブレッドボード用ワイヤ("jumper wire 130pcs" で検索)。これらは、いろいろな色がセットになっていて、少量買うのに都合が良い。

    1P のケーブルは、外してハウジングに付けなおすことが出来そうだ。めんどくさいなら、テープで巻いて使う手もある。自分で気軽に作れるのであれば、ブレッドボード用ワイヤが一番良いかも。
    wire-stripper-daiso.jpg
    ワイヤーストリッパーは、ダイソーの 200円のものが使いやすいらしい ーというのを見て買ってみた。確かに便利そうである。

ハウジングは、最近秋月で扱いだした。安いものであるが、ハウジングのみのセットも aliexpress で安価で買える。


付録 aliexpress 価格調査
1pin メス-メス ケーブル 10cm 40本 $0.59
Dupont Housing sets 115pcs set $2.12
Dupont Female Terminal 100本 $0.59
Breadboard Jumper Cable set (24AWG) 130本 $1.40

10cm で間に合うならば、1pin ケーブルを買うのがコスパが良い。決まった型のハウジングに収めたいならば +ハウジングだけのセットで十分。
posted by すz at 19:16| Comment(0) | TrackBack(0) | 日記

2018年04月03日

キーパッドめも

操作用のキーパッドを付けたい場合どうしたら良いかという話。1〜3 個ぐらいなら直結すれば良いわけだが、それ以上の場合。ただし、キーボードはまた別の話とする。

1) パラレル入力シフトレジスタ

74lv165a.png

74HC165 (など) を 1つまたは 2つ使って 〜8個 または 〜16個のキーを入力する。このやり方は FPGA で扱うには実に簡単そうである。また、このやり方は、ファミコンやスーファミのコントローラで採用されている。

    ファミコンは、CD4021B などが使われているが、74系165でも機能は同じである。また、入力はプルアップ。ボタン押下で L になるようにする。新規で作るのであれば、今は 74LV165A がある。ただ、tiny2313 で同じ機能を作ったほうが安上がりな上、機能拡張も可能。ただし、クロックは、6us でトグルされるので、適当なコードではまずい。

操作用といっても似たようなものになるわけだから、いっそのこと、そのものを使ってしまっても良いかも知れない。

    < 7 6 5 | 4 3 2 1 ]
    1 VCC , 2 CLK, 3 P/S,4 DATA,7 GND
    こういう接続らしい。(ケーブルの信号が 5本なので、他は NC ?)

    P/S を H にして、ボタンの状態を取り込む。(ボタンを押せばL)
    P/S を L にすると 取り込んだデータを シフトするモードになる。CLK の立ち上がり でシフト。
    出力されるデータは、負論理で B,Y,SELECT,START,UP,DOWN,LEFT,RIGHT,A,X,L,R の順。

      165 では SH/~LD の論理がP/S と逆で L にしたときの値を取り込むので注意。

      なお、実機では 60Hz でスキャンしているとのこと。

    ハードオフでジャンクを買える可能性もあるが、未だに、サードパーティーの コントローラも 本体側コネクタや延長ケーブルも aliexpress で売っている。
続きを読む
posted by すz at 20:20| Comment(0) | TrackBack(0) | MachXO2

2018年03月29日

高速通信の検討

FPGA で、高速通信をしてみたいと書いた。それについてのメモ:

世の中のインターフェイスは、みな数Gbps になってしまった。SATA が 6Gbps, USB が 5Gbps , イーサネットは 1Gbps だが、同じ RJ45 のタイプで、2.5/5 Gbps もある。そんなものは、(安物の FPGA) では 扱えない。たとえ扱えたとしても、電子工作では電気特性的に無理だろう。

映像系の一方向通信では、HDMI 2.0 が 18Gbps ! カメラインターフェイスの CSI-2 とかも G2a - 2.5 Gbps/G2b - 2.9 Gbps 。

どれもこれも、電子工作では手も足も出ない感じ。しかも普及しているから安価に使えるのである。電子工作の出番はない。

では、電子工作で扱えるレベルは、どれぐらいなのだろうか?続きを読む
posted by すz at 21:02| Comment(0) | TrackBack(0) | MachXO2

2018年03月25日

ΣΔDAC (2) オーバーサンプリング

ΣΔDAC (1) の続き

ΣΔDAC はできたとして、普通のサウンドDAC として使うには、オーバーサンプリングが必須である。それをするためには、デジタルフィルタ(LPF) が必要だそうだ。もとのサンプリングデータに 0 のデータを挿入したものに LPF をかけると、綺麗に補間されたデータが出来るとのこと。デジタルフィルタには FIR フィルタというものを使う。この FIR フィルタを作ってみよう。

おさらい

    14.314 MHz から作った 45.8 MHz を 16 x 65 で分周して 44.056 kHz を作る。オーバーサンプリングは 65 で 16 までのタップ数の FIR フィルタを使う。

    もし NTSC 画面表示と同時に使うのであれば、44.056 kHZ の 15/16 にサンプリング周波数を下げる。
    (外部 PLL が使えれば、44.056 kHZ も可能になる。クロックが変わるだけで、コードは変えない。 )

    NTSC 画面表示は、14.314 MHz の 3倍クロックで検討する。
続きを読む
posted by すz at 16:55| Comment(0) | TrackBack(0) | MachXO2

ΣΔDAC (1)

次は、サウンド用 ΣΔDAC を設計してみよう。

ハードウェアのおさらい
icedip-dac.png

4bit DAC で スピーカ用 BTL アンプに接続。負帰還でゲイン2倍。(片側1倍)
テスト用なのに音が大きすぎるかも、そこは RI(R61) か RF(R60) で調整する。RI を N 倍にすれば、それだけ小さくなる。

とりあえずスピーカーに直結するつもりだが、LC LPF を入れたほうが良いだろう。でもそれは、音が出るというレベルをクリアした後で考える。

4 bit フルに使うつもりはない。1 bit もしくは 3 bit を予定。
続きを読む
posted by すz at 15:37| Comment(0) | TrackBack(0) | MachXO2

2018年03月22日

NTSC エンコーダー(1)

さて、NTSC エンコーダーを設計してみよう。

ハードウェアのおさらい
icedip-vdacpng.png

4bit DAC で 1Vp-p DC出力。0 = -40IRE , 4 = 0 0IRE, 14 = 100IRE (のつもり)。
輝度信号は、4 - 11 の 8 レベルしか使わない。U,V 信号は、-4 〜 +4 で 合成したときに 15 になる場合が出てくる。続きを読む
posted by すz at 22:44| Comment(0) | TrackBack(0) | MachXO2

2018年03月20日

iCEDIP 基板

iCEDIP-02ct.png
iCEDIP2-elec.jpg
 ・icedip-02-out.zip(発注ファイル)
 ・icedip-02.zip (EAGLE ファイル)
iCEDIP 基板の2つめを発注。iCEDIP24 基板の周囲に実験用回路と電源を配置した。大きさは 63mm x 37mm 。本当は、モジュールだけ作るつもりだったのだが、iCEDIP24基板 も付けて配線してしまった。電源は、MINI-360 を使う。モニタが 12V なので 12V が使えるものを選択。

これは、基本テスト用で モニタに画像が出力できて、ちょっと音を鳴らせたら良いなと考えている。その先は考えていないが、なにか入力する手段が必要だろう。一応ピンは、左上の 6 本と右中央の 2本が空いている。また、SPI 通信ができるホスト -- SBC を使って開発すれば、お手軽にテストできそう。

異種面付けのように見えるが、ばらせるようにしただけで、本来一枚の基板。寄せ集めなので、取り付け穴は付けられなかった。スリットを使って、ずれないようにしたうえで、ねじ穴を空けて固定する -- というのを考慮はした。左下、右のコーナーにある端子は、潰しても良い。また、0.1 インチにアラインしている。

    (メモ)画像は、Fusion PCB の Viewer 。 https://gerber-viewer.easyeda.com/ がオリジナル。

    elecrow で発注したが、63mm x 37mm 10 枚で、$4.9 + 送料$6.06 = $11.96 のところポイントが使えて $9 = 991 円だった。 昔は 50mm 角に収めようとがんばったものだが、気にしなくて良くなったのはありがたい。一方送料が上がった気がする。大元の中国郵便が値上げしたのかも。
続きを読む
posted by すz at 19:28| Comment(0) | TrackBack(0) | MachXO2

2018年03月17日

iCE40 を使ってみる

手始めに iCE40 UP5K で 以前作った MachXO2 QFN32 用の Verilog ソースを論理合成してみようと思う。iCE40 は、iCEcube2 というツールを使う。論理合成エンジンは、Synplify Pro と Lattice LSE で Diamond と同じである。だが、iCE シリーズは、買収した SiliconBlue Technologies が開発元であり、なにかと違うものと思われる。

    iCEDIP-01t.png

    icedip.png

alu181

    // iCEDIP24 modified 74181 iCEDIP24
    // 37 B0 1 24 VCC
    // 43 A0 2 23 A1 36
    // 44 S3 3 22 B1 35
    // 45 S2 4 21 A2 34
    // 46 S1 5 20 B2 32
    // 47 S0 6 19 A3 31
    // 48 Cn 7 18 B3 26
    // 2 M 8 x 17 N.C. 25 (/P)
    // 3 F0 9 16 Cn+4 21
    // 4 F1 10 x 15 N.C. 20 (/G)
    // 9 F2 11 14 EQ 19
    // GND 12 13 F3 18

大昔の 4bit Arithmetic Logic Unit(ALU) 74181 である。本物は今や超高価で取引されている。せっかく 24 pin にしたのだから互換品を作ってみよう。ただし /P と /G は、carry-lookahead generator 74182 と共に使用するもので、パス。
ALU は、FF を持たないただの組み合わせ回路で非同期に動作する。
1) alu181,v を デザインファイルに入れて、論理合成 -- 問題ない。
2) pin Constants Editor で ピンアサインを変更。

    不思議なことに、制限がある信号が出てきた。とりあえず割り当てられたものをロックして、再度やりなおすと 制限がなくなっている。さらに不思議であるが、とりあえずロックして pcf ファイルを作成。(alu181.pcf: 以降使用可能)
続きを読む
posted by すz at 12:58| Comment(0) | TrackBack(0) | MachXO2

2018年03月13日

最近の lattice FPGA

以前 QFN32 の MachXO2 について記事を書いたが、久しぶりに製品をみたら、いろいろと興味深いものが出ている。

    ピン数が多い FPGA は、BGA が主流で もはや 電子工作で扱える感じではなくなっている。QFP はまだあるが、沢山の線を使うということは、たいへんな配線をしてなにかデバイスをつなぐということであり、予算と気合いがいる。QFN は配線が結構難しく、はんだづけも厳しいのだが、それゆえに電子工作としては楽しいと思っていて興味があるのだ。

MachXO2 1200HC 4SG32C(QFN32) - 509円(mouser)

QFN32 パッケージの MachXO2 に 1200HC が追加されていた。256 では出来ることが限られていたが、これだとマイクロコントローラが入る。しかも、256 と比べてそう高くない。

ICE40 LP384 SG32 - 195円(mouser)

もうひとつ QFN32 のチップが出ていた。384 だからたいしたことは出来ないが、お安い。ただし、多電源だったりして MachXO2 のように お手軽な感じではないようだ。

ICE40 UP5K (QFN48) - 876円(mouser)
ICE40 LP1K (QFN48) - 462円(mouser)

UP5K は、1Mbit - 128KB の RAM がある。それとは別に 120kbit の RAM(EBR) も。LUT 規模も 5K だからそこそこ。 さらに DSP ブロック(16x16乗算器 or ACC)が8つ。多電源ではあるが、規模が大きいし、これなら許容できる。
LP1K は、安い。UP5K 用の基板を作る場合 LP1K でお試ししてみるのも良いかも知れない。(LUT 1100, EBR 64kbit,DSP 2)

    DSP は、16x16乗算器 または 32bit アキュームレータの機能があるそうだ。メモリもあって演算が出来るわけだから、なにか面白いものが作れそうではある。が、私はあまり知識がない。とりあえず MIPS 32bit プロセッサを作ってみたい程度。あるいは、相互に高速通信が出来るようにして、多数つなげる。。。みたいな何か。

    LP1K も MachXO2 1200HC とあまり変わらないから、自作 AVR いけると思ったが厳しい。せっかく乗算器があるんだから、 と思ったが使いこなせてようやくシュリンクできる気もする。

また、これらを載せた小型ボード TinyFPGA というものもある。
type A は、MachXO2 で部品がほとんどない。type B は、iCE40 LP8K だが、なにやら部品が沢山。三端子レギュレータが2つに、SPI FLASH 。あと書き込むための USB とコントローラ(おそらく PIC)。
続きを読む
posted by すz at 21:24| Comment(0) | TrackBack(0) | MachXO2