CQ版Lattice XP2を試したのですが....


Lattice XP2によるDDS: out 10KHz(MAXUに比べて高調波のレベルが大きすぎる。)
PLLを使用した。 clock=56.8MHz LPFあり


全く同じverilogHLD記述を、MAXUで作動させた。
clock=50MHzに戻した。LPF無し

 1.あかんがな、高調波のレベルが高過ぎる

   ディジタルデザインテクノロジー創刊号付属の、LatticeXP2を試したのですが

    どうも、いけません。

    最初の図は、

    PLLを使用して、元クロック 113.6MHzの水晶発信器を、使ったものです。

    1/2に分周して使っています。(実は、水晶発信器は、33MHzも試してみた。結果は殆ど同じでした。)

    動作がおかしいので、水晶発信器を付けないもので、内部発信器を使ってみました。
    
    これは、CQ版Lattice XP2も、もうひとつ購入していたので、予備を使いました。

    XP2の内部発信器を40MHzに設定して、全く同じverilogHDL記述を実行したのが、下図です。

    
        ノイズレベルの上昇が、ありますが、傾向は、XP2で PLLを使ったものと同じです。

    MAXUを壊したようなので、(水晶発信器の換装のせいで、以前に比べて、高調波のレベルが上がってしまった)

    Lattice XP2を試してみたのですが、結果はよくありません、涙。

    Lattice XP2用に、ダウンロードケーブルも購入して(送料込みで$199位)

    内部オシレータと、PLLも使えるように、調べたのにイ。

    ここんところを、メモっておきます。

 2.Lattice XP2の内部発信器を使う

    なにしろ、発信器を使わない事には、LEDチカチカも、できません。

module OSC_TOP(OSC_CLK);
  output OSC_CLK;
  OSCE OSCinst0 (OSC_CLK);
  defparam OSCinst0.NOM_FREQ = "2.5";
endmodule

        これを、おまじないに、プログラムの何処かに貼り付けて下さい。

    そして、LEDチカチカ プログラムで、このインスタンスを使います。
    
    wire clock をコメントアウトしてしまっていますが、実際は、必要です。


    ここで、右側の Syplify Synthesize Verilog File しておきます。

   

    次に 

    左の最上段の LFXP2-5E-5TN144Cの所に、焦点を合わせて、




    右側のDesign Planner (Pre-Map)をクリック。



    CQ版Lattice基板のLEDのポートの一部は、74に設定されていますので、74を設定します。

    で、下のタブを clock attributes に変更して、ここで、内部クロックを Primary  ,ALL , PURE に設定しました。



    保存後、Design Plannerを閉じて、いっきに、最後の Generate Data File(JEDEC) を押すと、ispLeverが必要な事を、すべてやってくれます。

    後は、ispVMを使って書き込みます。



 3.PLLを使った、LEDチカチカ プログラム

    基本的に、内部発信器を使ったときと同じです。

    moduleをIPexpressにて作り、そのインスタンスを使うのです。



    今度は、 module myLED の入力に input clock; を宣言します。

    この clockは、PLLの入力clock、 CLKI に、なります。

    水晶発信器を取り付けますと、この発信器の出力は GCLK1 と命名されて、

    CQ版 LatticeXP2 の 65番に繋がれています。



    IPExpressの使い方です。



    configureすると


    ここで、CLKI は、水晶発信器の周波数を指定します。

    で、clkop が、出力周波数になります。

    もし、PLLの出力周波数を 20MHz付近にしたい時は、

    clkopに 20MHzを設定します。

    そして、Tolerance を最大の10に設定して、calculate ボタンをクリックすると



    113.6MHzの元クロックから、20.654545MHzが生成され、それが、PLLの出力周波数( clkop )に、なります。

    ですので、PLLの出力は、clkop です。 

    それ故、メインのプログラムの clockのタイミングは、 clkop に対して 行う事になります。

        always @(posedge clkop) begin

                   ...................

                  end

    最後に、configure ボタンを押して確定します。 Close ボタン

     次に、命名した PLL ( myPLL.v ) moduleを、projectに取り込んでおきます。 ( Source ->import )


   ここで、右側の Syplify Synthesize Verilog File しておきます。

   

   次に 

    左の最上段の LFXP2-5E-5TN144Cの所に、焦点を合わせて、




    Design plannerを立ち上げます。

    以下のように設定しました。





    saveして、 Designe planner をclose。

    後は、いっきに makeして下さい。

    以下は、 DDSを、内部発信器を使って作成した時の、プログラムのレポートです。

    sin波のデータである 20bit data、1024個のaddressが、

    自動的に EBRメモリーに配置されている事がわかります。




    まあ、こんな具合なんですが、 冒頭の図のように、高調波のレベルが大きいと、

    どうも、使うのをためらいます。 どないしょ?

    XP2は、信号処理には、向かないんやろか..... そんなはずは無いと思うんやけど。

   そんな折、Lattice semiconductor からのメールに、こんなんがあった。


    MachXO(マックエックスオー)と、発音してる。   

    調べてみると、all in one で



    何! デルタシグマ ADC/DAC回路付いてるって.......2280LUT以外に、 PLL2個、EBR付き、
    $59 !   (5月末までの価格らしい)

    Lattice と言う名前からして、 クリスタルフィルターで馴染みある名前やし、興味あってん。

    うーん、買うしかないなあ.... 
  
       送料込みで、$103.25でした、ナハハ (^_^;;


H21.5.15