LatticeXP2入門 その4 1bit信号同士の積
myDDS out : 30KHz と 
100KHzの積
(60KHzは、30KHzの元信号の第2高調波そのものが、元と同じレベルで残っている様子。)
  
     
   1.1bit信号同士の積を試す 
  
    MAXUマイクロキットで試したの同じ、verilogHDL記述を試してみました。
    LatticeXP2のPLLを使って、元クロックの1/2である、56.8MHzを使用しました。
    んっ? ispLEVERで、generate Data 
      Fileまで、行って、XP2に書き込めるのですが、出力がありません....
    QuartusUの、ModelSim Alteraを使って、simulationで、確認しているのですが....はて、困った。
   
    LatticeXP2のPLLを使っていますので、ModelSimで、どう使ったらいいのか、解りません。
    原因を掴むべく、ispLEVERで使う、Aldec ActiveHDLを、習ってみる事にしました。
    当分の間は、信号処理と言うよりは、ispLEVER、ActiveHDLで、動くようになる為に、調べる事になりそうですわ、グスン。
    
     
   2.とっても便利な ispLEVERの 'Creating a Verilog Test Fixture 
      from a Template'の機能 
  
    テストベンチを、
      verilogHDL記述から、テンプレートとして作成する機能です。
    トップレベルのverilogHDLを選択しておいて
 
    右側のProcessから、Test 
      Fixture Templateをダブルクリックすると、
    テンプレートファイルが出来上がります。
    で、このテンプレートファイルに、必要な変数を設定して、
    `timescale、Initialize等、少し変形、加筆しておきます。
     これを、'top_tf.v'等、適当な名前にして、sourceに加えておきます。
     で、このソ−スを選択し、右側のProcessをダブルクリックすると、Active−HDLが
     waveformまで、描いてくれます。
    しかしながら、test 
      moduleが選択されている限り、私の場合、信号がハイインピーダンス状態になってしまいました。
    で、UUT:top のトップ moduleのインスタンスを選択しなおして、simulateすると、よい結果がでました。
    これは、私の間違いでした。 テストベンチに、余計な変数を追加していました。(data_unsigned 等)
    テストベンチは、トップモジュールのインスタンスを生成する項目は、自動的に追加されていますから、
    後は、クロックのタイミングだけ、書けば、それだけで、よい結果が出ます。
    LatticeXP2のPLLの状態も、うまく再現されています、うれしいな。
    で、原因を探ったのですが、
    例によって、私のケアレスミスでした。
    と、書くべき所を
    clkop と、書くべき所を、 clokop と、書いてしまっていたっ! アチャー。 大ばか者ですわ、私やっ。
    出力が、ないはずですわ....(-_-;;
    まあ、お陰で、Active-HDLを使えるようになったので、良しとしましょうか。
      3.ispLEVERのレポートを読む 
    どうも、今回は、SinRomがEBR(SysMemory)に、自動配置されていない雰囲気です。
    もったいないぞ。
    このEBRは、LaitticeXP2-5Eの場合、5K LUT以外に沢山のメモリーを、もっています。 165,888bits!
    物理的には、sliceとsliceの間に、XP2-5Eの場合、9blockあります、大もうけ!
    1024 addressの20bit dataなら、楽勝。(22%位)
          
      そして、Part Number Description は
           Lattice社 テクニカルノートJPより、抜粋。
    しかしですね、IPexpressを使って、EBRを自力で使えるようにするには、タイミングを操作せな、あかんのです。
    誠に残念ながら、現在の私は、順序回路を理解できてないのです。(ちょっと、頑張ろうかなア)
    以下、レポートの抜粋です。
H.21.5.27