Icarus VerilogでVerilogシミュレートしてみた
お久しぶりです。やぎ湯です。
これからFPGAもいじっていくつもりでいるので、今回はVerilog-HDLについて学ぼうと、Icarus Verilogでコンパイルと波形のシミュレートをやってみました。
OSはOSXでやりました。
まず、autoconf、iverilog、GTKwaveのインストールからです。ターミナルから、
$ mkdir aconf
$ cd aconf
$ curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-2.68.tar.gz
$ tar xvzf autoconf-2.68.tar.gz
$ cd autoconf-2.68
$ ./configure
$ make
$ sudo make install
でautoconfをインストールします。
次に
$ git clone git://github.com/steveicarus/iverilog.git
を実行してiverilogを入手し、
$ cd iverilog
$ autoconf
$ ./configure
$ make
でiverilogをコンパイルします。動作確認のために、
$ make check
を実行して、最後の行に"Hello, World"と出ていればOKです。
そして、
$ sudo make install
でインストールします。
GTKwaveは、このリンク先の
http://gtkwave.sourceforge.net
下の画像の矢印のところからダウンロードしてアプリとして入手しました。
あとはターミナルから、
$ iverilog -o [出力ファイル名] [Verilogソースファイル]
という感じに書いてやればVerilogソースコードのコンパイルができる、というわけです。
例えば、
$ ls iverilog/examples/
で見つかるhello.vlなら、
$ iverilog -o hello ./iverilog/examples/hello.vl
$ ./hello
で実行でき、"Hello, World"と実行されます。
こんなふうにして、レジスタをカウントアップする回路をVerilogで記述し、コンパイル・シミュレーションし、wave.vcd(波形データファイル)を生成しました。
※ソースコードはこちらより↓
http://cellspe.matrix.jp/zerofpga/icarus.html
リンク先のページのように操作していき、wave.vcdを波形として出力しました。
これでFPGAボードが届くまでVerilogの記述の練習ができそうです。まだMacにParallelsでWindowsを入れてなく、WindowsPCがデスクトップだけなのでVerilogをいじる環境が外出先になかったわけです(笑) その点でもIcarus Verilogは便利だと思いましたね。これからFPGAの勉強も頑張っていきたいと思います。
それでは次の更新まで。
投げ銭していただければ、めちゃくちゃ喜ぶのでよかったらよろしくお願いします。
基本情報技術者試験に合格してました
テストが近づいてきて少し憂鬱な最近です。
さて、4月17日にあった基本情報技術者試験ですが,合格してました!不安だっただけに嬉しかったです。
昨日確認したら春に受けた基本情報技術者試験に合格してました
— やぎ湯@発展途上のMaker (@yagiyums) 2016年5月16日
資格試験自体が初めての受験でしたが、受かって良かったです pic.twitter.com/k5o9OwNzli
技術関係の資格試験で初めての受験で本番でも一日中の試験には疲れましたが,こうして一発で合格できたのでその甲斐がありました。
と、このままではどうでもいい自分語りになってしまうので、勉強に使った書籍やツールを紹介したいと思います。
本番の流れについては以前の記事にあります。*1
○書籍
・イメージ&クレバー方式でよくわかる栢木先生の基本情報技術者教室 (情報処理技術者試験)
平成28年度 イメージ&クレバー方式でよくわかる栢木先生の基本情報技術者教室 (情報処理技術者試験)
- 作者: 栢木厚
- 出版社/メーカー: 技術評論社
- 発売日: 2015/12/12
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
…まず、試験に出てくる専門用語やその説明、使う公式はこの本でまとめました。「〇〇とくれば××」と、試験の問いと答えによく出てくる組み合わせで覚えることができるコーナーがあります。項目ごとに確認問題があり、その項目で得た知識が身についているか確認できます。午前問題に必要な知識はおおよそこの本で得る事ができると思います。
・基本情報技術者 パーフェクトラーニング過去問題集 (情報処理技術者試験)
平成28年度【春期】基本情報技術者 パーフェクトラーニング過去問題集 (情報処理技術者試験)
- 作者: 山本三雄
- 出版社/メーカー: 技術評論社
- 発売日: 2015/12/18
- メディア: 大型本
- この商品を含むブログを見る
...午後問題に出る応用的な問題はこの本を使って演習しました。午後問題は長文を読み解けば解ける問題も多かったですが、前提知識が必要な問題も少なくはないので、本番で慌てないように十分に演習しておく必要があると思います。この本は図も解説も分かりやすかったのでスムーズに勉強ができました。
○サイト
...午前問題の演習は、おおよそこのサイトで繰り返しやりました。問題も豊富ですが、基本情報技術者試験自体に関しての情報も十分にあるので、試験勉強に当たってこのサイトを訪れておいて、まず損はないと思います。午後問題は解説が十分に網羅されていないので、このサイトで両方の対策を済ませるというのは得策ではないでしょう。
過去問題は平成13年度春分から最新のものまであり、携帯サイトからも閲覧できるので、空き時間があればこのサイトで勉強していました。私はこのサイトで5年分の過去問をやりました。
対策を始めたのは2月末からだったので、勉強期間は1ヶ月半でした。専門知識のまとめに半月、問題演習に1ヶ月かけました。
午後問題はとにかく過去問に挑戦して問題の形式に慣れることが大事だと思います。長文を読み解く事がまず関門になると思います。
ソフトウェア開発の選択問題はC言語を選択したので他の言語の問題はわかりませんが、C言語は基本的な前提知識で対処できました。ですが、過去問は今年出た問題よりも難しかった問題もあったので、過去問を解いたり、他に専門書を用意して知識を広げておいたほうがいいと思います。
試験にあたって参考にしたページを以下にまとめておきます。
・IPA 独立行政法人 情報処理推進機構:情報処理技術者試験
・基本情報技術者試験に合格した人の勉強法 - Something Beyond
・基本情報技術者試験に一ヶ月勉強して一発合格したので、勉強法とか使った本とか書いておきます - しがない学生の雑記
・基本情報技術者試験当日の持ち物は?: 基本情報技術者試験受けてみない?
今後の受験の際の参考になれば幸いです。次は来年の春のエンベデッドシステムスペシャリスト試験に挑戦しようと思っています。
それでは、次の更新まで。
See you again!
投げ銭していただければ、めちゃくちゃ喜ぶのでよかったらよろしくお願いします。
ArduinoUNOをMIDI音源にしてみる
ゴールデンウィークが過ぎましたが、皆さんはどうお過ごしになられたでしょうか。私は家でずっといました。まあ予想通りでした。
この前の自作プリント基板の記事が予想以上の反響だったようで、アクセス解析では1日だけアクセス数が桁違いになっていました。ありがとうございました。
さて、今回はArduinoをMIDI音源にするということで、n番煎じですがやってみました。
この前のOnlyMyRailgunの手動プログラム打ち出しでの演奏に比べて随分楽に音が聴けます...(当たり前)
MacでArduinoをUSBMIDIデバイスにするまで – necobit.com(ねこびっと)
作業にあたって、こちらの記事を参考にさせていただきました。ありがとうございました。
では手順についてまとめていきます。
公式のページにありますが、画像のようにUSB側のICSPピンのRESETピンとGNDピンをジャンパでショートさせてArduinoをPCに接続します。するとDFUがリセットされるので、ジャンパを外します。
2. PC側の設定
Xcodeの"Preferences..."をクリックします。
"Locations"の"Command Line Tools"オプションでXcodeのバージョンが表示されていればCommandLineToolsがインストールされています。私は見たときにはインストールされていました。
Mac での Xcode コマンド ライン ツールのインストール - RAD Studio
こちらに詳細があります。
次に、MacPortsをインストールします。
The MacPorts Project -- Download & Installation
それも完了したら、ターミナルから「sudo port install dfu-programmer」と入力してdfu-programmerをインストールします。
PC側はこれで準備完了です。
3.Arduino側の設定
まずはこちらからMIDI Firmware forArduinoUno(Moco)をダウンロードします。
GitHub - kuwatay/mocolufa: mocoLUFA (MIDI firmware for Arduino Uno)
ダウンロードした中の"dualMoco.hex"をデスクトップにでも移動します。
ArduinoUNOを接続し、ターミナルで
dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash (dualMoco.hexのパス)
dfu-programmer atmega16u2 reset
を実行します。
dualMoco.hexのパスは、FinderからdualMoco.hexのアイコンをドラッグ&ドロップしてターミナルに持っていくと簡単に入力できました。
Macのターミナル.appでファイルやフォルダのパスを簡単に入力する方法 / Inforati
4.書き換えの確認
これでArduinoをMIDI音源にできたはずなので、一度Arduinoの接続を外してもう一度PCに接続します。
DAWやMIDIプレイヤーで"MocoLUFA"と表示されていることを確認します。私は無料アプリのMIDITrailで確認しました。
5.Arduinoにプログラム
ArduinoにMIDI信号を処理するプログラムを入れます。まずはMIDIライブラリをインストールし、「スケッチ>ライブラリを使用>Add Library...」から追加します。
Arduino Playground - MIDILibrary
MIDI INのプログラムでToneライブラリ(デフォルトで入っているtone関数とは別物)を使っている記事もありますが、ここではtone関数を使うことにします。
※Toneライブラリを使っていて、Tone.cppのエラーが出ることがありました。これはTone.cppのヘッダ挿入の部分で「#include "Arduino.h"」が抜けていたためでした。なので、ライブラリを追加する前にXcodeなどで追加しておくと、Finderで検索する手間が省けます。
プログラムはこちらを参考にしました。
「int vol = 1;」となっているところを「int vol = 0;」に変更しました。
ちなみに、MIDI音源にしたArduinoのプログラムを書き換えるには、画像のようにMOSIとGNDをジャンパでショートさせて接続して書き換えます。ジャンパピンがあればそれを使うのがめんどくさくなくていいと思います。
ジャンパの接続がないことを確認して、MIDI音源としてPCにArduinoを接続し、MIDIプレイヤーでMIDIデータを再生します。
MIDIをRonald McDonald - YouTube さんにお借りして圧電スピーカーで再生してみました。(動画の音がだいぶ小さい上に生活音も入っているのでご了承ください)
MIDI.hがマルチチャンネルに対応していないのと、Arduino自体の処理が追いついていないのとで出せていない音があったりしますね。今後改良していきたいところではあります。
というわけで、ArduinoUNOをMIDI音源にしてMIDIファイルを再生するまでできました。
ここまでくると自分でデータも作って再生するまでやってみたいですね笑
データの綺麗な再生にも挑戦していきたいところです。
それでは、次の更新まで。
See you again!
投げ銭していただければ、めちゃくちゃ喜ぶのでよかったらよろしくお願いします。