SSブログ

Quartusで遊ぼう (3) [プログラム三昧]このエントリーを含むはてなブックマーク#

WS000219-320.png

前回の記事「Quartusで遊ぼう (2)」では、 1bit × 12word 構成の ROM を合成させましたが、どんな風に合成されたのかわかりませんでした。 きっと、調べる方法があるに違いないと考えて、マニュアルを紐解きました

ネットリスト・ビューワ

マニュアルを探した結果、「ネットリスト・ビューワ (Netlist Viewer) 」というものが存在することがわかりました。 名前の通りですと、単にテキストのネットリストが表示されるだけのような印象がありましたが、実は、そうではなかったようです。 ネットリスト・ビューワには、三つの種類があり、いずれのビューワも Task ペインの "Compile Design → Analysis & Synthesis → Netlist Viewers" から開くことができます。

RTLビューワ

WS000172.png

ひとつ目は、「RTLビューワ (RTL Viewer) 」と呼ばれるもので、Verilogのソース・コードを解析した結果を表示してくれます。 「Quartus で遊ぼう (1)」で作成した pikapika.v を表示させると、このようにグラフィカルに表示されます。

ステート・マシン・ビューワ

WS000173.png

二つ目は、「ステート・マシン・ビューワ (State Machine Viewer) 」です。 HDL 記述中からステート・マシンを抜き出して、状態遷移図を表示してくれます。 ただし、 Quartus II が HDL 記述のをステート・マシンとして認識するための条件があるので、その条件を満たさないとステート・マシン・ビューワは働いてくれません。 この図を出したときに使ったステート・マシンは、以下の4値アップ・ダウン・カウンタです。

module udcount(q, dn, clk, reset_b);
  output        q;
  input         dn;
  input         clk;
  input         reset_b;
  
  parameter     ST_0 = 2'b00;
  parameter     ST_1 = 2'b01;
  parameter     ST_2 = 2'b11;
  parameter     ST_3 = 2'b10;
  
  reg           q;
  reg[1:0]      st;
  
  always @(posedge clk or negedge reset_b) begin
    if (!reset_b) begin
                  st <= ST_0;
    end else begin
      case (st)
        ST_0:     st <= (dn)?(ST_0):(ST_1);
        ST_1:     st <= (dn)?(ST_0):(ST_2);
        ST_2:     st <= (dn)?(ST_1):(ST_3);
        ST_3:     st <= (dn)?(ST_2):(ST_3);
      endcase
    end
  end
  
  always @(st) begin
    case (st)
      ST_2:     q = 1'b1;
      default:  q = 1'b0;
    endcase
  end  
  
endmodule

テクノロジ・マップ・ビューワ

WS000171.png

最後の「テクノロジ・マップ・ビューワ (Technology Map Viewer) 」は、合成後の状態を図示するビューワです。 この例は、「Quartusで遊ぼう (2)」で合成した 1bit × 128word 構成の ROM を示す図にキャプションを付けたものです。 左側の8個の Logic Element (LE) が、16ビットの ROM 8面分に相当し、右側の5個の LE が ROM からの8本の出力信号のマルチプレクサになっています。 これで、 1bit × 128word 構成の ROM が最大13個の LE で構成可能であることが確認できました。

参考サイト

Quartus II Development Software Literature

この記事は、このWEBページに並んでいるマニュアルの "Volume 1: Design and Synthesis → Section III. Synthesis → Chapter 12. Analyzing Designs with Quartus II Netlist Viewers" を参照して書きました。

また、ステート・マシンの認識条件は、 "Volume 1: Design and Synthesis → Section II. Design Guidelines → Chapter 6. Recommended HDL Coding Styles" の "State Machines" (page 6-51) に書いてあります。

Quartus II のマニュアルは、全部で 37MByte の巨大な PDF 文書だそうです。 そんなに巨大なファイルを Acrobat reader で開いて、大丈夫なのかなあ。

参考文献

トランジスタ技術 (Transistor Gijutsu) 2008年 12月号 [雑誌]

トランジスタ技術 (Transistor Gijutsu) 2008年 12月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2008/11/10
  • メディア: 雑誌

付録 : 「Quartus で遊ぼう」索引

Quartus で遊ぼう (1)
Altera の EPM2210F324 が話題になっているので、私も使ってみました。 ただし、ハードウェアは購入していないので、ソフトウェアで遊んだだけです。
Quartus で遊ぼう (2)
「Quartus で遊ぼう」の二回目は、組み合わせ論理回路の合成を調べます。
Quartus で遊ぼう (3)
論理合成後の状態を表示してくれるツールを探しました。
Quartus で遊ぼう (4)
前回作成した4値のアップ・ダウンカウンタで論理合成後に使われているフリップ・フロップは、何個(何ビット)でしょうか?
Quartus で遊ぼう (5)
今回は、ワン・ホット・コードを使ったステート・マシンでグリッチが発生すかどうかを観測します。
Quartus で遊ぼう (6)
トランジスタ技術誌に「リセット信号生成回路」のHDL記述がありました。 この記述は、ちょっともったいないですよ。
Quartus で遊ぼう (7)
トランジスタ技術誌に書かれていたインストラクション・デコーダは、3項演算子が連なっていました。 もっと、別の書き方はできないかな。
Quartus で遊ぼう (8)
Verilog の代入には、 <= と = の二種類が使われています。 これって、何が違うんでしょうかね。
Quartus で遊ぼう (9)
2進数の足し算で、キャリーを取り出したい時、どうしましょうか。
Quartus で遊ぼう (10)
作らせてみました。 リップル・キャリーカウンタ。
Quartus で遊ぼう (11)
先ごろ、請求していた"DVD"が届きました。

nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。