TD4をverilogで実装しMachXO2(Lattice)で動作させる

FPGAverilogの勉強がてら『CPUの創りかた』の 4 ビット CPU TD4を動かしてみる事にした。

MachXO2のボードを使うメリットは、追加の部品0(LED等を半田付けする必要なし)でtd4の主要機能が動かせること。とても楽だし難易度が低い。

ほぼコピペ(参考:CPUの創りかた TD4 を Spartan-3A で - 言語ゲーム)ですがこんな感じ。

元コードからの変更点はMachXO2 1200ZEには、内蔵オシレータとLED(8個)が搭載されておりその辺を使うようにしたところ。

  • 変更点
    • バイス変更(Spartan-3A -> MachXO2)に伴い内蔵オシレータを変更した。
    • LEDの上位4個でクロックカウンターを表現し、下位4個でOUTPUTを表現するようにした。

次は、8bit化や内蔵ブロックRAMを使うようにしてみたい。

メモ:スマホからGoogleハングアウトで電話をかけるために

ハングアウトのURLが変わったためか、料金をチャージする画面にたどり着けず苦労したのでメモ((2015年11月時点の情報です)。

まずは、スマホにハングアウトアプリをインストールする。

次に、PCからハングアウトのページにアクセスし、サイドにある電話アイコンをクリック→アドレス帳画面が出たら、右上の+アイコンをクリックする。

こうすると、料金をチャージをする画面にたどり着く。

後は、クレジットカードを登録しドル建てで料金を払うだけ。

私の場合はなぜかUIが英語になっていたのでアカウントタブから、言語を日本語にすることメニューも日本語になった。

なお、一度料金を払うと次回以降は以下、URLからチャージページに飛べるみたい。

https://www.google.com/voice

この料金チャージって、Google PlayiOSからチャージできると便利なんだけど...。

FPGAボードの勉強

ずいぶん前に入手し放置していたFPGA評価ボード「MACHXO2−1200ZE 評価ボード」でLチカしてみた。忘れないようにメモ。

一時このボードは2000円台で秋月等で入手できたようだが、既に発売中止となっており、最近安いFPGAボードは減ってる模様。

  • ボードの特徴
  • 開発環境(Lattice Diamond 3.6)の入手(要アカウントの申請とライセンス申請)
  • Lチカのチュートリアル

ボード自体にUSBポートとUSBシリアルが搭載されており、書き込む機材が不要なのが嬉しい。

Lattice Diamond自体は1.7GBとサイズがあるのでダウンロードに少し時間がかかる。

工作例等、他のFPGAベンダーに比べるとネット上の情報はそこまで多くないが探せば、それなりにあった。

Lチカのチュートリアル(英語):
Lattice Diamond and MachXO2 Breakout Board Tutorial (with Verilog) - Logic - eewiki

シリアル通信やLCD表示
MachXo2 BreakOutボードを使ってみる

シミュレータってあるの?
Lattice DiamondにActive-HDL(Lattice Edition) が含まれています。

LPC1114でLチカ

以前購入してそのままになっていた、LPC1114。

ふとネットを見ているとソフトでUSBを実現させ、USBブートローダーを作成した方がいたので、試してみたくなり手始めにLチカしてみた。

準備したもの(ハード)

準備したもの(ソフト)

マイコンとUSBシリアルの結線は、ココを参考にしつつ、USBシリアルを手持ちAE-FT2232(3.3vモード)に合わせる形で接続。

AE-FT2232 ピン 機能
9 :BD4 DTR
11:BD2 RTS
12:BD1 RXD
12:BD0 TXD

LEDはLPC1114のPIO0_2(25番端子)に100オーム経由で接続。

Windows環境でLPCISPを起動させ、"LPC1114アセンブラサンプルプログラム"の"blinky.bin"を書き込み以上で完成。無事動作しました。

まずはUSB Serialを3.3Vレベルにする。

元記事はFT232RLモジュール(レベルが3.3V)を利用しているが、手持ちのUSB Serialがあるので、別件の試験を兼ねて活用することにした。

通常は5V動作だけど、ジャンパーピンで設定を変えて、外部から3.3Vを給電することで動かすことができる。

ESP-WROOM-02自体も3.3V電源が必要なため、こちらの外部電源を兼用することにした。

方式としてはUSBの5V出力を秋月電子のレギュレータキット(TA48M033F)で3.3Vにする方法です。

とりあえず、下の記事を参照にして無事動作完了。ちなみに私のモデル(このモジュール自体2チャンネルあり、今回は2番目のチャネルBを利用)ではチャネルBに関して、TXが13番ピン、RXが12番ピンでした。


参考:
PCからXBeeへ接続をXBeeエクスプローラ無しで行う

今日のところはここまで...。

ESP-WROOM-02を試してみた(1)

この記事「ESP-WROOM-02で、IFTTTをhttps(SSL/TLS)で呼び出す例 - Qiita」を読んでいて、ついつい遊んでみたくなってきた。

まずは、ハードの準備ということでこの記事「ESP-WROOM-02を動かしてみた - Qiita」を読みながら進めてみる。

準備したもの

途中動かなくて???が続いたけど無事に解決しWIFIの接続とIP取得まで進むことができた。

ちなみこのモジュールATコマンドでSSIDやパスワードを設定するが、不揮発領域に保存しているみたいで、電源を再投入してもこれらの情報を覚えててくれていた。この点は便利。

QEMU(windows版)でmonitorを利用する。

忘れないようにメモ。

qemuには、エミュレーションしているハードの状態を参照できるモニター機能が存在する。通常はGUIからCtrl-Alt-[1, 2, 3]で切り替えるとドキュメントにある。

当方が利用したWindows版のQEMUだと、なぜかこのモニター機能がうまく利用できない。

仕方ないので、QEMUの起動時にオプション”-monitor telnet:127.0.0.1:1234,server,nowait”をつけることでtelnet経由でモニター画面に入る。

以下は利用例、自作OSの動作中にレジスターのステータスを表示したところ。CRxを見れるのは地味に助かる。

QEMU 2.2.1 monitor - type 'help' for more information
(qemu) info registers
EAX=00000000 EBX=00104dd0 ECX=0010a459 EDX=00000080
ESI=00123168 EDI=00123168 EBP=00104fe8 ESP=00104dd0
EIP=0010a0c8 EFL=00000246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=1
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0000 00000000 00000000 00000000
GS =0000 00000000 00000000 00000000
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     00105000 00000029
IDT=     0010a47c 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000

環境:
Windows7
QEMU 2.2.1 (http://lassauge.free.fr/qemu/)