きょうのかんぱぱ

デジモノが大好きなかんぱぱの日記です。

ZK-80 mini (PIC32MX1チップTK-80互換機)で書き初めをしてみた

  • 投稿日:
  • by
  • Category:

あけましておめでとうございます。新春初プログラミングは8080アセンブラでした。

私はZK-80 miniで動かしましたが、TK-80でも動くと思います。

プログラムリストは以下の通りです。8000番地から実行してください。

                                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                ;; ZK-80 mini(TK-80 compatible)
                                ;; Happy New Year 2007 PROGRAM
                                ;; 2017/1/1 by @kanpapa
                                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                ORG    8000H
8000: 01 30 80                  START:	LXI	B,SDATA1
8003: 1E 17                     	MVI	E,17H
8005: 21 F8 83                  LOOP1:	LXI	H,83F8H
8008: 16 08                     	MVI	D,08H
800A: C5                        	PUSH	B
800B: 0A                        LOOP2:	LDAX	B
800C: 77                        	MOV	M,A
800D: 23                        	INX	H
800E: 03                        	INX	B
800F: 15                        	DCR	D
8010: C2 0B 80                  	JNZ	LOOP2
8013: CD 1F 80                  	CALL	WAIT
8016: C1                        	POP	B
8017: 03                        	INX	B
8018: 1D                        	DCR	E
8019: C2 05 80                  	JNZ	LOOP1
801C: C3 00 80                  	JMP	START
                                ;;
                                ;; WAIT ROUTINE
801F: C5                        WAIT:	PUSH	B
8020: D5                        	PUSH	D
8021: 16 FF                     	MVI	D,0FFH
8023: 06 00                     WAIT2:	MVI	B,0
8025: 05                        WAIT3:	DCR	B
8026: C2 25 80                  	JNZ	WAIT3
8029: 15                        	DCR	D
802A: C2 23 80                  	JNZ	WAIT2
802D: D1                        	POP	D
802E: C1                        	POP	B
802F: C9                        	RET
                                ;; SEGMENT DATA
8030: 00 00 76 77 73 73 6E 00   SDATA1:	DB	0,0,76H,77H,73H,73H,6EH,0	;; HAPPY
8038: 54 79 7E 00 6E 79 77 50   	DB	54H,79H,7EH,0,6EH,79H,77H,50H	;; NEW YEAR
8040: 00 5B 5C 06 27 00 00 00   	DB	0,5BH,5CH,06H,27H,0,0,0,0	;; 2007
8049: 76 77 73 73 6E 00         	DB	76H,77H,73H,73H,6EH,0		;; HAPPY
                                	END

ZK-80 mini (PIC32MX1チップTK-80互換機)を作ってみた

  • 投稿日:
  • by
  • Category:

NECの8ビットワンボードマイコンTK-80について調べていたところ、ZK-80 miniというPIC32MX 1チップで実装したTK-80互換機の製作記事をみつけました。PIC32であればTK-80ぐらいの仕組みは作れるとは思っていましたが、実際に動作しているのには感心しました。しかも回路図も非常にシンプルでさすがです。

電子ブロック工房 ZK-80 mini (PIC32MXを使った1チップTK-80互換機)

この記事をみて、TK-80のキーボードをそのまま保管していたことを思い出しました。実は工場ハックというイベントで偶然TK-80のキーボードを手にいれていたのです。
これが使えるとよりTK-80に近い感覚で使えるので、ますます楽しくなるのではと思ったのです。

まずは、ZK-80 miniをブレッドボードで組み立てました。配線は多いように見えますが大したことはありません。

zk80_tk80kbd_1.jpg

SECCON CTF 2016 online 予選のWrite-upをまとめました

  • 投稿日:
  • by
  • Category:

SECCON CTF 2016 オンライン予選に参加しました。
前回同様一人チームでのんびり取り組みましたが、今回は前回までとは違って難易度がかなり高くなったと感じました。誰でも解ける練習用問題もありませんでしたし・・・。
結局解いた問題は2つだけです。合計で200点獲得できました。

  • Vigenere (Crypto) 100点 777人が回答済
  • VoIP (Forensics) 100点 733人が回答済

忘れないうちにWrite-upを書いておきました。

Vigenere (Crypto) 100点

Vigenereとはヴィジュネル暗号のことで、暗号表と鍵を組み合わせて使う暗号のようです。
このような古典的な暗号の場合は、解読ツールがいろいろあるので探してみましたが、今回のSECCON問題ではフラグに含まれる{}が暗号表に含まれているのでそのままでは使えませんでした。

ただ問題の中に鍵の長さは12文字であること、途中まで平文と暗号文が対応していたので、その部分と暗号表を照らし合わせて鍵の頭の文字はVIGENERであることがわかりました。あと5文字の鍵を見つけなければなりません。この場合はプログラムを書いて総当たりでキーを作って試していくしかありません。フラグのMD5ハッシュ値がありますので、作成した平文をこのハッシュ値と付き合わせればいいでしょう。

結局慣れているCでプログラムを書きました。急いで作ったので汚いプログラムですが、ソースファイルはgithubに入れておきました。コンパイルはcc v.c -lcryptoで行なってください。

このプログラムを動かして、無事フラグを取ることができました。

seccon_ctf_vigener.png

VoIP (Forensics) 100点

これはpcapが添付されていましたので、WireSharkで読み込みました。VoIPなのでツールバーの「VoIP通話」を選ぶと、ストリームを再生することができました。

ctf_voip.png

聞き取りにくい声ですが、フラグを教えてくれているようです。SECCON{9001???}と聞き取れたのですが、数字の後の3文字がなかなか聞き取れません。これかなと思ったアルファベットを組み合わせて入力しても回答が一致しません。この手の問題であればランダムな英字3文字をフラグにするというのは無いように思います。意味のある英字3文字・・・あ、そういえばこの音声って自動音声応答装置だよなぁ・・「IVR」だ! ということで無事フラグが取れました。こういう発想もSECCONには必要なんですよね。

総評

今回が4回目のSECCON CTFですが、合計200点ということで残念な結果となりました。
他の問題も手をつけてみたもののなかなか先にすすめず、やはりチームでないと厳しいですね。
まあ、SECCONは国際大会なのでレベルが高くなるのはやむを得ませんが・・。
他の参加者の皆様のWrite-Upを参考にして次回に備えたいと思います。
運営の皆様もお疲れさまでした。

NHK みんなの科学 たのしい実験室のカウンタユニット基板を作ってみた

  • 投稿日:
  • by
  • Category:

私は小学生ぐらいの時にNHK みんなの科学 「たのしい実験室」を毎週見ていました。確か毎週木曜日の夕方だったでしょうか。

この番組では電子工作もよく取り上げられ、特にTTL-ICと7セグメントLEDを使って、電子サイコロ、ストップウォッチ、デジタル時計といったものを作るシリーズがありました。このシリーズは大変興味がありNHKに返信用封筒を送って回路図をいただいたりとか、秋葉原のお店に見積もりを取って通信販売で部品を入手して組み立てていました。そのおかげでデジタルICや電子工作のノウハウを身につけることができました。

今でもこれらの記事は大切に保管しているのですが、つい先日CQ出版社のトランジスタ技術でKiCadをつかった基板製作の特集があり、付録DVDに作業の様子が動画で収録されていました。これを見たおかげでKiCadでのいろいろなテクニックを知ることができました。

kikad_toragi.jpg

実はまだ一度も基板を起こしたことがなく、良い機会なので一度簡単な回路で基板を作ってみようと、「たのしい実験室」で作ったことがあるTTL-ICをつかったカウンタユニットの基板を起こすことにしました。基板を発注すると10枚ぐらい作ることになるので、複数枚組み立てれば桁数を増やすこともできます。回路は非常にシンプルでTTL-ICの74LS47と74LS90、7セグメントLEDのTLR-306だけです。パスコンすら入っていません。

TTL_counter_schematic.png

秋月電子の球体液晶ユニットでミクさんを動かしてみた

  • 投稿日:
  • by
  • Category:

秋月電子の球体液晶ユニットの実験の続きです。前回はRGBデータを固定で与えることでカラーストライプまで表示できることを確認しました。

やはり何らかの画像を表示してみたいと思い、いろいろ調べたところFPGAで液晶に画像を表示しているこちらの記事を参考にさせていただきました。

MAX10にもSRAMがありますので、MAX10のSRAM上にROMの領域を作成し、画像データをそちらに格納して表示させることにします。画像データはROMの初期化ファイル(.mifファイル)として作成しますが、これはUbuntuにopencvをインストールして作成しました。

液晶モジュールは196×196ピクセルで各色6ビットの深度です。このままのデータだとSRAMに収まらないのでやむなく各色3ビットに落としてデータを作成し、LCDに色データを与えるルーチンを書き換えてミクさんの画像が表示できました。

globe_lcd_miku1.jpg

画像は確認できましたが、各色3ビットなので512色しか表示できないので色がイマイチです。

秋月電子の球体液晶表示ユニットを動かしてみた

  • 投稿日:
  • by
  • Category:

秋月電子の新製品で興味あるデバイスが販売されていました。ドーム型スクリーン用カラー液晶プロジェクタ(球体液晶・光学表示ユニット)です。詳細な仕様書もあり、信号さえ作れば表示できそうな雰囲気です。

globe_lcd_1.jpg

このLCDは色信号をパラレルで入力してVSYNCやHSYNCといった信号を常に流し続ける必要があります。これをFPGAで動かしてみようと思いつきました。ちょうどCQ出版社のFPGA電子工作スーパーキットの付録のMAX10がありますのでこれが手頃です。

PDP-11をARTY FPGAボードで動かしてみた(4) UNIX V5を動かす

  • 投稿日:
  • by
  • Category:

これまでの作業でARTY FPGAボードはPDP-11になったと思われるのですが、やはりアプリケーションを動かさないとよくわかりません。

PDP-11のソースツリーでは各種UNIXを動かすキットが含まれています。ARTY FPGAボードではUNIX V5が動くようですので、これを動かすことで、PDP-11になっていることを確認してみます。

unix-v5のディスクセットを用意する

PDP-11用のUNIX V5のイメージデータが用意されていますので、これをソースツリーに持ってきます。

$ cd $RETROBASE/tools/oskit/unix-v5_rk
$ wget http://www.retro11.de/data/oc_w11/oskits/unix_v5_rkset.tgz
$ tar -xzf unix_v5_rkset.tgz

ターミナルを立ち上げる

UNIX V5のコンソールとなるターミナルウィンドウを立ち上げておきます。

$ cd $RETROBASE/tools/oskit/unix-v5_rk
$ console_starter -d DL0 &

PDP-11をARTY FPGAボードで動かしてみた(3) FPGAのコンフィグレーション

  • 投稿日:
  • by
  • Category:

Vivadoの開発環境OpenCoresの開発環境が準備できましたので、いよいよFPGAのコンフィグレーションを行います。

bitstreamを作る

FPGAに書き込むためのbitstreamを生成します。実はbitstreamはOpenCoresのページにも用意されているのですが、試しにmakeをしてみたら簡単にbitstreamができたのでこちらを使いました。

ここでは生成までのログを参考までにそのまま掲載します。ログを見ると内部でVivadoが使われているのがわかります。

$ cd $RETROBASE/rtl/sys_gen/w11a/arty_bram/
$ make
 :
Loading route data...
Processing options...
Creating bitmap...
Creating bitstream...
Writing bitstream ./sys_w11a_br_arty.bit...
INFO: [Vivado 12-1842] Bitgen Completed Successfully.
INFO: [Project 1-120] WebTalk data collection is mandatory when using a WebPACK part without a full Vivado license. To see the specific WebTalk data collected for your design, open the usage_statistics_webtalk.html or usage_statistics_webtalk.xml file in the implementation directory.
INFO: [Common 17-186] '/home/ocha/oc_w11/trunk/rtl/sys_gen/w11a/arty_bram/project_mflow/project_mflow.runs/impl_1/usage_statistics_webtalk.xml' has been successfully sent to Xilinx on Sat Jun 4 15:45:44 2016. For additional details about this file, please refer to the WebTalk help file at /opt/Xilinx/Vivado/2016.1/doc/webtalk_introduction.html.
INFO: [Common 17-83] Releasing license: Implementation
write_bitstream: Time (s): cpu = 00:00:29 ; elapsed = 00:00:40 . Memory (MB): peak = 1643.305 ; gain = 452.859 ; free physical = 89 ; free virtual = 832
INFO: [Vivado_Tcl 4-395] Unable to parse hwdef file sys_w11a_br_arty.hwdef
INFO: [Common 17-206] Exiting Vivado at Sat Jun 4 15:45:46 2016...
[Sat Jun 4 15:45:48 2016] impl_1 finished
wait_on_run: Time (s): cpu = 00:00:00.14 ; elapsed = 00:01:04 . Memory (MB): peak = 1626.848 ; gain = 0.000 ; free physical = 72 ; free virtual = 833
Message control rules currently in effect are:
Rule Name Rule Current Message Count
INFO: [Common 17-206] Exiting Vivado at Sat Jun 4 15:45:50 2016...
$ ls
Makefile sys_w11a_br_arty_pla_util.rpt
pdp11_hio70_arty.vbom sys_w11a_br_arty_rou.dcp
pdp11_hio70_arty.vhd sys_w11a_br_arty_rou_drc.rpt
project_mflow sys_w11a_br_arty_rou_ds.rpt
sys_conf.vhd sys_w11a_br_arty_rou_pwr.rpt
sys_w11a_br_arty.bit sys_w11a_br_arty_rou_sta.rpt
sys_w11a_br_arty.dep_vsyn sys_w11a_br_arty_rou_tim.rpt
sys_w11a_br_arty.vbom sys_w11a_br_arty_rou_util.rpt
sys_w11a_br_arty.vhd sys_w11a_br_arty_rou_util_h.rpt
sys_w11a_br_arty_bit.log sys_w11a_br_arty_syn.dcp
sys_w11a_br_arty_imp.log sys_w11a_br_arty_syn.log
sys_w11a_br_arty_opt.dcp sys_w11a_br_arty_syn_util.rpt
sys_w11a_br_arty_opt_drc.rpt tb
sys_w11a_br_arty_pla.dcp vivado.jou
sys_w11a_br_arty_pla_cset.rpt vivado.log
sys_w11a_br_arty_pla_io.rpt
$ ls -l *.bit
-rw-rw-r-- 1 ocha ocha 2192125 6月 4 15:45 sys_w11a_br_arty.bit

この.bitファイルがFPGAのコンフィグレーションに使われるファイルです。

PDP-11をARTY FPGAボードで動かしてみた(2) OpenCores開発環境の準備

  • 投稿日:
  • by
  • Category:

Vivadoの開発環境がインストールできたところで、次はOpenCoresの開発環境を準備します。

OpenCoresのアカウントを取得する。

OpenCoresのページからアカウントを登録します。このアカウントでOpenCoresのsvnからソースツリーを取得することができます。
http://opencores.org/

必要なパッケージのインストール

開発環境に必要なパッケージをLinux環境にインストールします。

  • build-essential
  • libboost-dev
  • libboost-date-time-dev
  • libboost-thread-dev
  • libboost-regex-dev
  • libusb-1.0-0-dev
  • tcl
  • tcl-dev
  • tcllib
  • tclreadline
  • subversion

PDP-11をARTY FPGAボードで動かしてみた(1) Vivado開発環境の準備

  • 投稿日:
  • by
  • Category:

はじめに

OpenCoresFPGAでPDP-11を動かすプロジェクトにしたがって、Xilinx Artix-7が載ったDIGILENTのARTYというFPGA評価ボードでUNIX V5を動かすまでをまとめました。

FPGAについては初心者ですので、間違っているところもあるかもしれません。

今回使用するDIGILENTのARTYは秋月電子で取り扱っています。
http://akizukidenshi.com/catalog/g/gM-10034/

使用するLinux環境ですが、ubuntu 14.04 LTSをiMacのVMware Fusionにインストールしているので、この上で作業を行いました。

Vivado開発環境の準備

Xilinx社のFPGA開発環境であるVivadoのインストーラーは以下にあります。
Vivado Design Suite - HLx Editions - 2016.1 Full Product Installation
http://japan.xilinx.com/support/download.html

各種のインストーラがありますが、今回は以下のLinux版を使用します。

Vivado HLx 2016.1: WebPACK および Editions - Linux 用自己解凍型ウェブ インストーラー
(BIN - 80.67 MB)

これをubuntuのFirefoxでダウンロードしました。正常に終了するとDownloadsフォルダに保存されます。

$ cd ~/Downloads
$ ls
合計 88524
Xilinx_Vivado_SDK_2016.1_0409_1_Lin64.bin
$

Vivadoインストーラーの起動

ダウンロードしたファイルを実行してインストールします。私はsudoでインストールしてしまいましたが、sudoである必要はないらしいです。

$ chmod 555 Xilinx_Vivado_SDK_2016.1_0409_1_Lin64.bin
$ sudo ./Xilinx_Vivado_SDK_2016.1_0409_1_Lin64.bin
[sudo] password for ocha:
Verifying archive integrity... All good.
Uncompressing Xilinx Installer.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
INFO : Log file location - /root/.Xilinx/xinstall/xinstall_1465016640139.log


GUI画面が表示されるのでインストールを行います。Artix-7のチェックを忘れずに。

vivado_linux1.jpg