CPLD with Verilog (2004)

CQ出版『VHDLで学ぶCPLD学習セット』を Quartus II と Verilog-HDL で開発する方法

「毎日コミュニケーションズ『CPUの創り方』に掲載されている TD4 CPU を CQ出版『DesignWave 2003年1月号』付録 CPLD 上に実装」は GitHub [github.com] に移転しました。

CQ出版 DesignWave 『VHDLで学ぶCPLD学習セット』は、 AlteraのCPLD (MAX7032)を用い、VHDLをMax+PlusIIで合成し、実際に動かしてみるという学習セットです。 現在(2003年12月)、LeonardoSpectrum-Alteraのライセンスが切れてしまったためか、この学習セットは販売されていません。 ライセンスが切れたからといって使えないというのはもったいないので、Max+PlusIIの代わりにQuartus IIを用いて利用する方法を紹介します。

さらに学習セットではVHDLでの開発方法が記載されていますが、 ここではVerilog-HDLを用いることにします。

Quartus II setup

Quartus II web edition 3.0のライセンスセットアップをします。詳細は省略。
  • DesignWave 2003年1月号 (付録: CPLD基板) Max+PlusII
  • DesignWave 2003年10月号 (付録: FPGA基板) Quartus II web edition 3.0
を参考に設定してください。特に Quartus II のライセンスセットアップ方法を解説している後者。

HOWTO make

  1. New Project Quartusを起動して、
    [File] -> [New Project Wizerd]
  2. New Project Wizerd: Introduction [Next]
  3. New Project Wizerd: Directory, Name, and Top-Level Entity working directoryとprojectの名前、top-level entity(後述Verilog-HDLの中のトップモジュール)を指定します。

  4. New Project Wizerd: Add Files まだファイルを作っていないので、空欄のまま。
  5. New Project Wizerd: EDA Tool Settings Quartusのみを利用するので、何も指定しない。
  6. New Project Wizerd: Device Family

    Family: MAX7000SとYesを選択
  7. New Project Wizerd: Select a Target Device

    EPM7032SLC44-10を選択
    • New Project Wizerd: Summary [Finish]
    • Assign Pins 回路図を参考にしながら、Verilog-HDL内のpinの名前と実際のデバイスのpinの対応表を作ります。
      [Assignments] -> [Assign Pins...]
      Number 1のpinを選択して、Pin nameに"GCLK1" (Verilog-HDL内での名前)と入力し、[Add]。
    同様に、すべてのI/O pinに名前を付けます。

    しかし、このダイアログで入力するのは大変なので、一旦Quartusを終了させ、 un1001b.csf というテキストファイルを直接編集してしまいます。(正当な方法かどうかは分かりません。)

    CHIP(UN1001B)
    {
    (省略)
            GCLR : LOCATION = Pin_1;
    (ここに追加。例えば、)
            OE2 : LOCATION = Pin_2;
    }
    
    というように、すべてのpinに名前を付けます。 参考 $ grep LOCATION un1001b.csf > grep.csf
  8. Verilog-HDL Verilog-HDLファイルを作成します。
    例: sample.v (このファイル内のpinの名前は上記参考のgrep.csfを利用しています。)

    [Project] -> [Add/Remove Files in Project]でVerilog-HDLファイルを追加します。
  9. Compilation compile, fittingします。
    [Processing] -> [Start Compilation]
  10. Program CPLDのEEPROMに回路情報を焼き込みます。
    [Tools] -> [Programmer]
    書き込みツールを設定します。
    [Hardware...]
    Hardware Setting tabで[Add Hardware...]
    Hardware type: ByteBlasterMV or ByteBlaster II
    Port LPT1 (プリンタケーブルを繋いでいるポート)
    を選択します。[OK]

    ByteBlasterMVを選択して、[Select Hardware] -> [Close]

    対応する*.pofファイルのProgram/Configureのcheck boxをチェックします。
    プリンタケーブルとボードを接続し、ボードの電源を入れておきます。
    [Processing] -> [Start Programming]
    書き込みが終ると、回路が構成されます。

    sample.vではDSW2-3, DSW2-4の2bitで指定した値を加算しながらインクリメントする16bitカウンタが7セグメントLEDに表示されます。

Reference

  • CQ出版 DesignWave 『VHDLで学ぶCPLD学習セット』解説書
  • CQ出版 『トランジスタ技術』 2001年7月号-2002年1月号 連載 (上記解説書の元記事)
  • CQ出版 『DesignWave』 2003年10月号