Cafe'Tec Yagiyu

のんびり気ままに技術進捗

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

下の画像の矢印のところからダウンロードしてアプリとして入手しました。

f:id:yagiyu-tec:20160626223023p:plain

 あとはターミナルから、

  $ 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を波形として出力しました。

f:id:yagiyu-tec:20160626221522j:plain

 

これでFPGAボードが届くまでVerilogの記述の練習ができそうです。まだMacParallelsWindowsを入れてなく、WindowsPCがデスクトップだけなのでVerilogをいじる環境が外出先になかったわけです(笑) その点でもIcarus Verilogは便利だと思いましたね。これからFPGAの勉強も頑張っていきたいと思います。

 

それでは次の更新まで。

 

 

投げ銭していただければ、めちゃくちゃ喜ぶのでよかったらよろしくお願いします。

↓えさを投げる(Ofuseのサイトに飛びます)↓

基本情報技術者試験に合格してました

テストが近づいてきて少し憂鬱な最近です。

さて、4月17日にあった基本情報技術者試験ですが,合格してました!不安だっただけに嬉しかったです。

技術関係の資格試験で初めての受験で本番でも一日中の試験には疲れましたが,こうして一発で合格できたのでその甲斐がありました。

と、このままではどうでもいい自分語りになってしまうので、勉強に使った書籍やツールを紹介したいと思います。

本番の流れについては以前の記事にあります。*1

 

 ○書籍

・イメージ&クレバー方式でよくわかる栢木先生の基本情報技術者教室 (情報処理技術者試験)

 

 …まず、試験に出てくる専門用語やその説明、使う公式はこの本でまとめました。「〇〇とくれば××」と、試験の問いと答えによく出てくる組み合わせで覚えることができるコーナーがあります。項目ごとに確認問題があり、その項目で得た知識が身についているか確認できます。午前問題に必要な知識はおおよそこの本で得る事ができると思います。

 

基本情報技術者 パーフェクトラーニング過去問題集 (情報処理技術者試験)

 

 ...午後問題に出る応用的な問題はこの本を使って演習しました。午後問題は長文を読み解けば解ける問題も多かったですが、前提知識が必要な問題も少なくはないので、本番で慌てないように十分に演習しておく必要があると思います。この本は図も解説も分かりやすかったのでスムーズに勉強ができました。

 

○サイト

基本情報技術者試験ドットコム

...午前問題の演習は、おおよそこのサイトで繰り返しやりました。問題も豊富ですが、基本情報技術者試験自体に関しての情報も十分にあるので、試験勉強に当たってこのサイトを訪れておいて、まず損はないと思います。午後問題は解説が十分に網羅されていないので、このサイトで両方の対策を済ませるというのは得策ではないでしょう。

 過去問題は平成13年度春分から最新のものまであり、携帯サイトからも閲覧できるので、空き時間があればこのサイトで勉強していました。私はこのサイトで5年分の過去問をやりました。

 

 

 対策を始めたのは2月末からだったので、勉強期間は1ヶ月半でした。専門知識のまとめに半月、問題演習に1ヶ月かけました。

 午後問題はとにかく過去問に挑戦して問題の形式に慣れることが大事だと思います。長文を読み解く事がまず関門になると思います。

 ソフトウェア開発の選択問題はC言語を選択したので他の言語の問題はわかりませんが、C言語は基本的な前提知識で対処できました。ですが、過去問は今年出た問題よりも難しかった問題もあったので、過去問を解いたり、他に専門書を用意して知識を広げておいたほうがいいと思います。

 

試験にあたって参考にしたページを以下にまとめておきます。

IPA 独立行政法人 情報処理推進機構:情報処理技術者試験

基本情報技術者試験に合格した人の勉強法 - Something Beyond

基本情報技術者試験に一ヶ月勉強して一発合格したので、勉強法とか使った本とか書いておきます - しがない学生の雑記

基本情報技術者試験ドットコム

基本情報技術者試験当日の持ち物は?: 基本情報技術者試験受けてみない?

 

 

今後の受験の際の参考になれば幸いです。次は来年の春のエンベデッドシステムスペシャリスト試験に挑戦しようと思っています。

 

それでは、次の更新まで。

 

See you again!

 

 

投げ銭していただければ、めちゃくちゃ喜ぶのでよかったらよろしくお願いします。

↓えさを投げる(Ofuseのサイトに飛びます)↓

*1:こちらの記事を参照

 

yagiyu.hatenablog.com

 

ArduinoUNOをMIDI音源にしてみる

ゴールデンウィークが過ぎましたが、皆さんはどうお過ごしになられたでしょうか。私は家でずっといました。まあ予想通りでした。

この前の自作プリント基板の記事が予想以上の反響だったようで、アクセス解析では1日だけアクセス数が桁違いになっていました。ありがとうございました。

 

さて、今回はArduinoMIDI音源にするということで、n番煎じですがやってみました。

この前のOnlyMyRailgunの手動プログラム打ち出しでの演奏に比べて随分楽に音が聴けます...(当たり前)

 

MacでArduinoをUSBMIDIデバイスにするまで – necobit.com(ねこびっと)

MIDI INの実験 | curious4dev

作業にあたって、こちらの記事を参考にさせていただきました。ありがとうございました。

 

では手順についてまとめていきます。

1. ArduinoをUSBMIDIデバイス化する

f:id:yagiyu-tec:20160507163627j:plain

f:id:yagiyu-tec:20160507164024j:plain

Arduino - DFUProgramming8U2

公式のページにありますが、画像のようにUSB側のICSPピンのRESETピンとGNDピンをジャンパでショートさせてArduinoをPCに接続します。するとDFUがリセットされるので、ジャンパを外します。

 

2. PC側の設定

f:id:yagiyu-tec:20160507165932p:plain

Xcodeの"Preferences..."をクリックします。

 

f:id:yagiyu-tec:20160927135142j:plain

"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.書き換えの確認

これでArduinoMIDI音源にできたはずなので、一度Arduinoの接続を外してもう一度PCに接続します。

f:id:yagiyu-tec:20160507175631p:plain

DAWMIDIプレイヤーで"MocoLUFA"と表示されていることを確認します。私は無料アプリのMIDITrailで確認しました。

MIDITrail

MIDITrail

  • WADA Masashi
  • ミュージック
  • 無料

 

5.Arduinoにプログラム

ArduinoMIDI信号を処理するプログラムを入れます。まずはMIDIライブラリをインストールし、「スケッチ>ライブラリを使用>Add Library...」から追加します。

Arduino Playground - MIDILibrary

MIDI INのプログラムでToneライブラリ(デフォルトで入っているtone関数とは別物)を使っている記事もありますが、ここではtone関数を使うことにします。

 

Toneライブラリを使っていて、Tone.cppのエラーが出ることがありました。これはTone.cppのヘッダ挿入の部分で「#include "Arduino.h"」が抜けていたためでした。なので、ライブラリを追加する前にXcodeなどで追加しておくと、Finderで検索する手間が省けます。

 

プログラムはこちらを参考にしました。

MIDI INの実験 | curious4dev

「int vol = 1;」となっているところを「int vol = 0;」に変更しました。

 

ちなみに、MIDI音源にしたArduinoのプログラムを書き換えるには、画像のようにMOSIとGNDをジャンパでショートさせて接続して書き換えます。ジャンパピンがあればそれを使うのがめんどくさくなくていいと思います。

f:id:yagiyu-tec:20160507182734j:plain

f:id:yagiyu-tec:20160507182745j:plain

 

6.ArduinoMIDI IN

ジャンパの接続がないことを確認して、MIDI音源としてPCにArduinoを接続し、MIDIプレイヤーでMIDIデータを再生します。

 

MIDIRonald McDonald - YouTube さんにお借りして圧電スピーカーで再生してみました。(動画の音がだいぶ小さい上に生活音も入っているのでご了承ください)

 

MIDI.hがマルチチャンネルに対応していないのと、Arduino自体の処理が追いついていないのとで出せていない音があったりしますね。今後改良していきたいところではあります。

 

というわけで、ArduinoUNOをMIDI音源にしてMIDIファイルを再生するまでできました。

ここまでくると自分でデータも作って再生するまでやってみたいですね笑

データの綺麗な再生にも挑戦していきたいところです。

 

それでは、次の更新まで。

 

See you again!

 

 

投げ銭していただければ、めちゃくちゃ喜ぶのでよかったらよろしくお願いします。

↓えさを投げる(Ofuseのサイトに飛びます)↓