UbuntuでVerilogをいじるためのツールを導入してみました(・ω・)/


まずはEmacsに「Verilogモード」を追加します。

Ubuntuソフトウェアセンターを「Verilog」で検索すると出てきました。


これを入れると、verilogファイルを開いたときに、

自動で色付けやインデントをしてくれます。


インデントの幅に若干不満がありますが、

自分でやるよりは100倍便利です(*^-^)b


くらいまーず はい


次にVerilogのコンパイラーを、

これまたソフトウェアセンターから探して2つ入れてみました。


・Icarus verilog compiler

・GPL Cver


ざっとWebを見た感じだと、

Icarusの方が情報が多そうです。


Users Guideもしっかりしてて、

読み応えがありました。

http://iverilog.wikia.com/wiki/User_Guide


両方ともコンパイルの仕方は簡単で、


「hello.v」と名前を付けたファイルに下の内容を書きこんだら


module main;
  initial 
    begin
      $display("Hello, World");
      $finish ;
    end
endmodule


Icarusの場合は


$iverilog -o hello hello.v

$vvp hello


GPL Cverの場合は


$cver hello.v


と打てば、コンソール上に「Hello, World」と表示されます。


とても簡単です(`・ω・´)


もちろん両方ともシミュレーションにも使えます。


ただ、そのまま使うと画面上に数字が出てくるだけで寂しいので

(↓こんな感じです)

% iverilog -osqrt_readmem.vvp sqrt_readmem.vl sqrt.vl
% vvp sqrt_readmem.vvp
y=    9
y=    5
y=    5
y=    4
y=    1

波形を表示させるために


・GTKwave


をインストールしました。


IcarusかCverでvcdファイルを生成して読み込ませると、

こんな感じで表示してくれます。


何かをやってる気になりますね。



くらいまーず はい

(波形を表示させるには、左下隅の「Append」ボタンを押して、

Signalをクリックしてあげてください)


これでお勉強するための環境は整いました(多分)!!


頑張って勉強します(・ω・)/


Spartan-3E Starter Kitです(・ω・)/

4年くらい前にひょんなことから入手しました



くらいまーず はい


1回位LEDを光らせてみた事がある気がするものの、

何となく 眺める->しまう->眺める->しまう を繰り返し

今に至っています(;^_^A


中に入っているのはこんな感じ


くらいまーず はい



ボードには

  • Spartan-3E FPGA (XC3S500E-4FG320C)
  • CoolRunner™-II CPLD (XC2C64A-5VQ44C)
  • Platform Flash (XCF04S-VO20C)

が実装されてます。


コネクタとインターフェイスは

  • イーサネット 10/100 Phy
  • JTAG USB ダウンロード ケーブル
  • 2 つの 9 ピン RS-232 シリアル ポート
  • PS/ 2 スタイル マウス/キーボード ポート、プッシュ ボタンつきロータリ エンコーダ
  • 4 つのスライド スイッチ
  • 8 つの個別 LED 出力
  • 4 つの瞬時コンタクト プッシュ ボタン
  • # 100 ピン拡張接続ポート
  • 3 つの 6 ピン拡張コネクタ

こんな感じです。


写真からも分かるように、

液晶もマウントされてます。


その他DAC/ADCが付いてたりと盛りだくさんです。



右端の100ピンコネクタにつながっているIOで、

LVDSも選択できるみたいなので、

何か映像系の処理をするか・・・


VGAコネクタが付いてるので、

オシロスコープを作ると、

55inchの大画面で波形が見れるとか・・・

(PCオシロをつなげば良いという話もありますが)


キーボードやマウスが繋がるので、

何かゲームを作って見るとか・・・


2ラインの液晶が付いてるので、

30年くらい前のワープロ位は作れるのかなぁとか・・・


何となくいじってなかったのは、

これで何をするべきか判然としなかったからなのですが、

さすがに勿体ないので、

少しいじってみようと思います。


何をやるにしても千里の道は一歩からです!



取り敢えず会社の帰りに参考書を買ってきました(・ω・)/


くらいまーず はい


記述はVerilogで初めて見たいと思います

名前が格好良いから会社でFPGA設計してるグループがVerilogを使っているので

右側の「入門Verilog HDL記述」という本は、

会社の先輩お勧めの入門書です。

取り敢えず明日ばらしてスキャンします!!



まずはXilinxのHPから、

ISE 12.2のフルインストール版を落としてきました。

これだけで3GB・・・

ダウンロード時間1時間とか表示されてました((゚m゚;)


くらいまーず はい


その後解凍してインストール


インストールに必要なHDD容量は9GBだそうです・・・



ダウンロード->インストールで2時間以上使ったので、

お勉強は明日からにします( ・(ェ)・)


今日の東京は、雷が煩い位鳴っていました。

こういう日はお家で遊ぶに限ります(・ω・)/


という訳で、気づいたら家に有った大人の化学で遊んでみました


大人の科学マガジン Vol.27(8ビットマイコン) (Gakken Mook)/大人の科学マガジン編集部
¥3,360
Amazon.co.jp

付録の中身はこんな感じです。

赤い基盤がマイコンボード

くらいまーず はい


本誌では「ジャパニーノ」と名前を付けていますが、

「Arduino」と呼ばれるマイコンボードがベースになってるとか


そういえばこんな本を書店で見かけた覚えがあります。

Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ/小林 茂
¥3,990
Amazon.co.jp

付録の基盤に乗っているマイコンはATmega168V

ようするにAtmelのAVRマイコンです


AVRは興味がありながら手を付けていなかったので、

ちょうどよい機会かもしれません


一応、「LEDのマウントされたバーを左右に動かして、

LEDの光る順番を制御することで、

空中に文字を書くキット」が付属されているので、

先に組み立ててしまいます。


説明にしたがって、組立前の動作確認

LEDを光らせてスピーカーを鳴らすプログラムが最初から入っているので、

所定のピンに接続して電源を入れると動きます。


これで動かなかったらどうするんでしょう(;^_^A

交換とか面倒くさいですね・・・


くらいまーず はい

取り敢えずせっせとビスで部品を固定します。

回転機構の部分も中心をビスで固定するだけ・・・

ちゃんと動くか若干不安です


くらいまーず はい

途中、使うビスを間違えて貫通してしまいました・・・


くらいまーず はい

一通り組立完了!

左の写真にあるノブを回すと上に突き出たバーが左右に振れます。


ギアを2つ組み合わせているのですが、

固定がビス止めなもので、

ビスが緩いとギアが傾いてうまく回らず

ビスがきついと摩擦でうまく回らず

になります


ちなみに回す時の音は結構うるさいです(・_・;)



くらいまーず はい くらいまーず はい


メカの部分は一通り組んだので、

マイコンの開発環境をPCにインストールします(・ω・)/


大人の科学のHPにリンクが貼ってあるので、

クリックしてIDEとドライバーをインストールします


くらいまーず はい


IDE Arduino 0018の起動画面

シンプルな見た目の割に重いです

特に「ツール」メニュー


くらいまーず はい



Arduinoではプログラムの事を「スケッチ」と呼ぶらしいです

デフォルトで幾つかのスケッチ例が入っています



くらいまーず はい

下が文字を表示させるプログラム例です

大人の科学のHPからダウンロードできます


// Japanino POV by Musashinodenpa

#define LEDPIN 7 // どのピンからLEDをつなぐか
#define SWPIN 6 // スイッチをつなぐピン

// ビットマップ(画像)を定義
byte bitmap[] = {
0b00000000,
0b01000001,
0b01111111,
0b01000001,
0b00000000,
0b00000000,
0b00001110,
0b00011111,
0b00111111,
0b01111110,
0b00111111,
0b00011111,
0b00001110,
0b00000000,
0b00000000,
0b00111111,
0b01000000,
0b01000000,
0b00111111,
0b10000000 // 最後の行は0b10000000(つまり目印)
};


unsigned char pos = 0; // 現在のビットマップ中の位置
unsigned char i = 0;


void setup() {
// LEDが接続されたピンを出力に設定します
  for(char pin = LEDPIN; pin < LEDPIN + 7; pin++) {
    pinMode(pin, OUTPUT);
  }


  pinMode(SWPIN, INPUT); // スイッチのピンを入力に
  digitalWrite(SWPIN, HIGH); // 内蔵プルアップ有効
}


void loop() {

  if(digitalRead(SWPIN) == LOW) { // スイッチがオンならば1回描画

    delay(6); // すぐ始めると詰まって見えるのでちょっと待つ
    pos = 0;

    while(bitmap[++pos] != 0b10000000) { // ビットマップの端まで繰り返し
    for(i = 0; i < 7; i++) { // ビットマップの高さの分だけ繰り返し
    // ビットマップデータから1ビットを取り出してピンの状態に反映
      digitalWrite(LEDPIN + 6 - i, (bitmap[pos] >> i) & 0b00000001);
    }
    delay(1); // LEDが光っている時間
  }


  for(i = LEDPIN; i < LEDPIN + 7; i++) { // 全ドット、消灯
  digitalWrite(i, LOW);
  }
 }
}



見てみると、コードはC言語ですが、どこにもmain関数がいません

ヘッダの読み込みも書かなくてOK見たいです


コンパイルしたときにIDEがヘッダとmain関数を補完してるんでしょうか・・・?



後は基板についているUSB端子をPCに接続して、

書き込みボタンを押せば終了です!


くらいまーず はい

基板内にライター部分の回路も実装して、

プログラムも動作部分だけ記述すれば良いようにして、

少しでも楽にマイコンをいじれるようにした環境を

「Arduino」と名付けているんでしょうね


AVRは弄った事がありませんが、

きっと自分で部品を買ってきて1からやろうとすると、

もっと面倒なはずです・・・


秋月のHPを見ると、ライターだけで4,000円しますので、

初期投資も必要ですね


基板に実装するにしても、持ってなかったら半田コテと工具を買って来て、

ユニバーサル基板に一生懸命組むと時間もかかります。


確かに手っ取り早くマイコンを弄るにはもってこいのキットかもしれません


ちなみに上のコードを焼いて動かしてみたところ、

一応文字が出てきました

動かすのに両手が必要なので、

写真は撮ってません(;^_^A


10bitのAD入力が8port有って、

GPIOが14port(そのうち6portはPWM出力可)、

Tx/RxのUART通信が出来るので、

このボードだけでも結構遊べそうです。


もっとも何をつないで遊ぶか・・・

が今は全く思いつきませんZzz…(*´?`*)。o○


ゆっくり考えようと思います