【QuartusII入門】LED点灯回路の作成4(寄り道:Verilogの解説2, TB_LED_BLINK)

前回に引き続き今回はテストベンチのVerilogソースについて解説していきます。

テストベンチのソースはこんな感じでした。

`timescale 1 ns/ 1 ps
module tb_led_blink();

reg clk;
reg reset_n;
wire [7:0] led;

led_blink i1 (
.clk(clk),
.led(led),
.reset_n(reset_n)
);

always #10 clk <= !clk;

initial
begin
clk <= 1'b0;
reset_n <= 1'b1;
#100 reset_n <= 1'b0;
#100 reset_n <= 1'b1;

end
endmodule

“【QuartusII入門】LED点灯回路の作成4(寄り道:Verilogの解説2, TB_LED_BLINK)” の続きを読む

【QuartusII入門】LED点灯回路の作成3(寄り道:Verilogの解説1, LED_BLINK)

前回までに使ったVerilogの解説をしていきます。

まずはLED_BLINKから。全体はこんな感じ。

`timescale 1ns/1ps
module led_blink(
    clk         , //クロック50MHz
    reset_n     , //リセット信号(ローアクティブ)
    led           //LED
    );
    input  wire        clk     ; //クロック50MHz
    input  wire        reset_n ; //リセット信号(ローアクティブ)
    output reg  [ 7:0] led     ; //LED

    reg  [31:0] ctr; //時間計測用カウンタ

    always @(posedge clk)
    begin
        if(!reset_n)//リセットボタンが押された時
        begin
            ctr <= 32'd1; //カウンタの値を1にリセット
        end
        else if(ctr == 32'd25000) //25000回クロックをカウント(=0.5ms経過)した時
        begin
            ctr <= 32'd1;//カウンタの値を1にリセット
        end
        else  begin
            ctr <= ctr + 32'd1; //それ以外の時はカウンタを加算
        end
    end

    always @(posedge clk)
    begin
        if(!reset_n)
        begin
            led <= 8'hFF;
        end
        else if(ctr == 32'd25000) //0.5ms経った時、LEDを反転
        begin
            if(led == 8'hFF)
            begin
                led <= 8'h00;
            end
            else begin
                led <= 8'hFF;
            end
        end
    end
endmodule

“【QuartusII入門】LED点灯回路の作成3(寄り道:Verilogの解説1, LED_BLINK)” の続きを読む

【QuartusII入門】LED点灯回路の作成2(テストベンチの作成とシミュレーション)

今回は前回作成した回路をシミュレーション上でテストする環境を作っていきます。

まずはテストベンチを作成します。テストベンチというのはテストしたい回路に入力する信号を用意するための回路です。
図にするとこんなイメージ。

quartusii_ele_1_17

テストしたい回路(LED_BLINK)に対して、クロックとリセット信号を入力してやる回路(TB_LED_BLINK)を作成します。
テストベンチは実際にFPGAに書込むわけではないので、入出力はありません。
また、Verilogにはシミュレーションの時にだけ使える文法がありますので、それを利用して波形を作成していきます。
“【QuartusII入門】LED点灯回路の作成2(テストベンチの作成とシミュレーション)” の続きを読む

【QuartusII入門】LED点灯回路の作成1(プロジェクトと点灯回路の作成)

では早速LEDの点灯回路を例にQuartusIIで回路を作ってみましょう。
デスクトップに追加されたQuartusIIのアイコンをクリックして起動します。
quartusii_ele_1_01

「New Project Wizard」をクリック

“【QuartusII入門】LED点灯回路の作成1(プロジェクトと点灯回路の作成)” の続きを読む

【QuartusII入門】Quartus II v13.1.4 と ModelSim Altera Starter Edition v10.1dのインストール

では早速開発環境のインストールをします。
今回インストールするのは下記の2つです。
①QuartusII Web Edition v13.1.4
②ModelSim Altera Starter Edition v10.1d

2014年10月4日時点での最新バージョンはそれぞれv14.0.2とv10.1eなのですが、安定性を考えて1つ前のバージョンにします。
ちなみに14.0からGUIが少し変わっているので注意は必要です。
と言っても13.1で流れがわかればそれほど苦労はしないと思います。

まずはAlteraのサイトからQuartusIIとModelSimをダウンロードしましょう。
http://dl.altera.com/13.1/?edition=web

13.1dl

今回はArriaIIのデバイスサポートを外します。
今のところArriaIIを使う予定はないので(高いですし)。
選択したファイルをダウンロードをクリック。

Akamaiダウンローダーのインストールを促されたらインストールしてください。
ダウンロードが途中で失敗しても再開できる機能があります。
ファイルの容量が大きいのであると便利です。

Akamai

3.6GBほどあります。光回線であれば1時間もあれば終わると思います。

13.1.2dl
ブラウザを新規に立ち上げて今度はアップデートのタブをクリックします。
サービスパックがあるのでこれも同じフォルダにダウンロードします。

サービスパックの方が先にダウンロードが終わり、実行するか訊いてきます。
これは本体をインストールした後に追加インストールするので実行しません。

本体のダウンロードが終わったら管理者権限で実行します。
13.1.0_install_01
「Next」をクリック。
13.1.0_install_02
「I accept the agreement」にチェックを入れ、「Next」をクリック。

13.1.0_install_03

インストール先を設定し、「Next」をクリック。

13.1.0_install_04先ほどダウンロードしたものにチェックが入ってることを確認し、「Next」をクリック。
OSが32bit版の場合は64bit supportのチェックを外します。

13.1.0_install_05

「Next」をクリック。

13.1.0_install_06

インストールが終わるまで待ちます。

ドライバーをインストールするか訊かれた場合はインストールしてください。

13.1.0_install_07
インストールが終了したら「Launch QuartusII」のチェックを外し「Finish」をクリック。
13.1.0_install_08
TalkBackについて訊かれたら「Enable sending TalkBack data to Altera」にチェックされてることを確認して「OK」をクリック。
ここにチェックが入っているとデバッグに役立つSignalTapIIと言う機能が無償で使えるようになります。

これでQuatusII Web Edition v13.1.0とModelSim Altera Starter Edition v10.1dがインストール出来ました。

次にQuartusIIにサービスパックを適用します。
先ほどダウンロードしておいたQuartusSetup-13.1.4.182.exeを起動します。

13.1.4_install_01
「Next」をクリック。

13.1.4_install_02
「I accept the agreement」にチェックを入れ、「Next」をクリック。

13.1.4_install_03
先ほどインストールしたQuartusIIのディレクトリが選択されていることを確認し、「Next」をクリック。

13.1.4_install_04
インストールが終わるまで待ちます。

13.1.4_install_05
インストールが終わったら「Finish」で完了です。


次回は実際にVerilogで回路を設計してシミュレーションしてみます。

そもそもFPGAとは何なのか

そもそもFPGAって何なのか、ピンと来ない方も多いかと思うんです。
(そんな人がこんなブログを見に来ることがあるのかはさておき)
一言で言ってしまうと動作を書き換えられるICです。
参考画像(Terasic社 DE0-Nano)
DE0-Nano レイアウト
画像中央右の「Altera」と書かれた大型のチップがFPGAです。
イメージとしてはマイコンが近いと思います。
大まかな違いは下記4点辺りかなと。
①タイミングを指定できる精度
②ピンの機能を変えられる自由度
③並列動作
④動作を記述する言語 “そもそもFPGAとは何なのか” の続きを読む