Quartusで遊ぼう (3) [プログラム三昧]
前回の記事「Quartusで遊ぼう (2)」では、 1bit × 12word 構成の ROM を合成させましたが、どんな風に合成されたのかわかりませんでした。 きっと、調べる方法があるに違いないと考えて、マニュアルを紐解きました
ネットリスト・ビューワ
マニュアルを探した結果、「ネットリスト・ビューワ (Netlist Viewer) 」というものが存在することがわかりました。 名前の通りですと、単にテキストのネットリストが表示されるだけのような印象がありましたが、実は、そうではなかったようです。 ネットリスト・ビューワには、三つの種類があり、いずれのビューワも Task ペインの "Compile Design → Analysis & Synthesis → Netlist Viewers" から開くことができます。
RTLビューワ
ひとつ目は、「RTLビューワ (RTL Viewer) 」と呼ばれるもので、Verilogのソース・コードを解析した結果を表示してくれます。 「Quartus で遊ぼう (1)」で作成した pikapika.v を表示させると、このようにグラフィカルに表示されます。
ステート・マシン・ビューワ
二つ目は、「ステート・マシン・ビューワ (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
テクノロジ・マップ・ビューワ
最後の「テクノロジ・マップ・ビューワ (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月号 [雑誌]
- 作者:
- 出版社/メーカー: 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"が届きました。
コメント 0