研究ブログ

研究ブログ

クラピア☆

今年の卒研生は6名で,専攻科生は2名と豊作です.
さらには6月から2カ月間,タイからの留学生がやって来ます.

6名のうち1名のテーマは,
・グラウンドカバープラント「クラピア」のIoT育苗環境の構築
というテーマを与えています.(さてうまくいくものか!?)
取りあえず現状はGrand Moisture Sensor, Arduino Uno, Pompを与えており,
学生はArduinoを勉強し始めました.取りあえず研究室で育てていますが,
砂漠の緑化用に品種改良されているクラピアなので,おいおい温度や光を与えて
も良いかと考えています.IoT機器を用いたクラピアの育苗そのものにも興味が
あるのですが,農業用のシリアル通信, 農業行為のメタデータ化など色々調べて
もらいたいなと思います.

また,タイからの留学生には,
・Development of the Common Agricultural Vocabulary in Thai 
という我々も留学生にもチャレンジングなテーマで,日本語,英語,
タイ語の3つを駆使して取り組む課題になるでしょう.
0

SignalTap II(Run Analysis)

HardwareにUSB-Blasterが選択されていることを確認する.

  • [Run Analysis]アイコンをクリックする.


  • "Error: Current license file does not support incremental compilation"が出る場合
    • まず,Incremental Compilationって何?
      • 変更個所とそれによって影響を受ける個所に絞って再コンパイルする機能.
        • Sub-module3で,複数ファイルに分割してソースコードを書きましたよね.変更のあったファイルのみを再コンパイルすれば効率的ですよね.
      • 再コンパイル時間を著しく縮めるので,コーディング-コンパイル-テストのサイクルを繰り返す開発現場においては,必須の機能.
      • 一般的な開発言語だと,Makeが使われることもある.サンプル
      • Java等での開発ではAntが使われることが多い.サンプル
      • ソースコードのタイムスタンプ,オブジェクトのタイムスタンプなどを比較することで,コンパイルをし直すかどうか判定する.コードの依存関係は自分で記述する.
    • さて話を戻しまして,そもそもIncremental Compilationは指定していないはず.
      • [Assignments]-[Settings...]-[Compilation Process Settings]を見ると,そもそもIncremental Compilationの設定が出来ないようになっている.(しかしながら,上記のようなエラーメッセージが出るのは不可解)
  • さっきの話だと,Incremental Compilationは時間を短縮出来て非常に良い機能なので,使わない手は無いはず.なんで設定出来ないの?
    • 我々が使っているQuartus IIは,Terasic DE0に附属してきたQuartus II Web Editionです.
    • これは,ホームページから自由に配布されています.
      • つまり家庭でQuartus IIを学習できます.
        • 容量がかなり大きい…
        • ハードウェアで動作確認出来ない…
    • ところで,ALTERAは開発ツールを自由に配布してるので,FPGAの素子の販売のみで収入を得るビジネスモデルでしょうか??
    • アルテラQuartus II開発ソフトウェアの版によると,無償版以外に有償版があります.これらの間には,明確な機能の違いがあり,無償版は我々のように主に学習者が入門用途に手軽に利用できるように設定されていますが,複雑で規模の大きなハードウェア設計を行うには,有償版の開発ツールが必要になってます.
  • Incremental Compilation関連のエラーは,SignalTap IIのバグと思われる.これを避けるために,下記の手順を要する.
    • 当該プロジェクトを一度,[File]-[Close Project]する.
    • プロジェクト名.qsfファイルをnotepad等のテキストエディタで開き,末尾に"set_global_assignment -name INCREMENTAL_COMPILATION OFF"を入力する.
    • [File]-[Open Project...]で当該プロジェクトを再度開く.
  • 再度,[Run Analysis]を行う.
0

SignalTap IIの起動

  • SignalTap IIはLogic Analyzerです.
  • Quartus IIから起動出来ます.
TalkBackの確認(Quartus II version13においては,この作業は省略できる(はず)).
  • [Tools]-[Options...]を選択する.
  • [General]-[Internet Connectivity]を選択し,[TalkBack Options...]を選択する.
  • [Turn on the Quartus II software TalkBack feature]にチェックがはいいていることを確認し,[OK]を押す.
  • [Tools]-[SignalTap II Logic Analyzer]を選択する.
0

順序回路


  • 組み合わせ論理回路: 現時点における入力状態によって,出力状態が決定される論理回路.
  • 順序回路: 過去にどのような状態であったか?という入力状態の時間的順序によって,出力状態が決定される論理回路.

  • フリップフロップは,順序回路の代表例.
  • フリップフロップは,1ビットの記憶機能を持った論理回路要素.
  • 一方がHならば,他方はLとなる2つの出力端子を持つ.
  • 入力信号を取り去ってしまっても,出力状態が保持される.
0

JK-FF


RS-FFでは,SとRが同時に"H"の場合,出力が不定となるので,両方"H"の入力状態の組み合わせは禁止されていた.この様にRS-FFは使用に制約を受ける欠点があった.
JK-FFでは,JおよびKともに"H"の場合,出力状態が反転する.




JKFF2.v

 J K Qn+1 
 L L Qn 変化無
 L H L リセット
 H L H セット
 H H ~Qn トグル
0

D-FF

Delay Flip Flop (D-FF)の図記号とタイムチャートを示します.


入力端子はDとクロックCLKです.DがHighになっても直ちに出力は変化せず,
CLKの立ち上がりを待って,出力QがHighになります.また,DがLowになっても
直ちに出力は変化せず,CLKの立ち上がりを待って,出力QがLowになります.

CLKの”立ち下がり”の際には,Dが如何なる状態でも出力は変化しません.

DFF2.v

動作確認をしてみましょう.Switchを動かして,LEDで確認するこの手法で,この論理回路を十分確認出来たでしょうか?時間軸で3つの信号がそれぞれどのように変化しているのでしょうか?DE0ボード上のクロックに目をやりましょう.50MHzのクロックと24MHzのクロックが見えるはずです.Cyclone IIIにはこの50MHzのクロックが供給されているので,T=1/f=1/50MHz程度のオーダーで信号は時間出来るはずです.
  • 人の目でこの速度を判別することは不可能です.
  • カメラだと判別することは出来るでしょうか?(一般的なカメラのシャッタースピードは1/8000秒,連写で15コマ/秒程度)参考
  • ビデオカメラの撮影だと,30-120frames per second程度.
いずれにしても,動作確認は難しそうです.さて,他に動作確認をする手法はあるでしょうか?

3chオシロスコープを使うのはどうでしょうか?今回の場合,幸いにして,D, CLK, Qの3つの端子とも,Cyclone IIIの足と1対1対応しているので原理的にオシロスコープで波形を確認することは出来るはずです.(実際は,このDE0ボードは,絶縁用コートが塗られているので,プローブを当てても反応はしない…)
  • 仮に,絶縁用コートが塗布されていない場合においても,コードの変更無しに信号を調べるのは困難です.
シミュレーションを行って,実機を模擬した上で自由に信号を見ることは出来ないでしょうか?
  • これは,後日勉強するQuartus IIと連携しているシミュレータのModelSIMを用いれば可能です(準備中).
  • 各種信号の定性的,(ディレイなどもシミュレーションできるので)定量的理解を行う上で,また実機(ハードウェア)を用意せずに動作確認を行えるという上でも非常に強力な手法ではありますが,今まさに目の前にあるFPGA実機の動作ではありません.

  • (余談)有限要素法によるシミュレーションの事例(事例1

なんとかして実機であるCyclone IIIの,時間的に変化する信号を見ることは出来ないでしょうか?
  • JTAGロジックアナライザを用いれば可能です.
    • ハードウェアロジックアナライザ:事例
    • ソフトウェアロジックアナライザ:Quartus IIのSignalTap II
0

T-FF

Toggle Flip Flop (T-FF)の図記号とタイムチャートを示します.



入力端子はTのみです.Tが0->1と変わる毎に,Qは0->1->0->1と変化していきます.この動作をトグル動作と言います.QはTの変化の半分の変化と見ることも出来ます.仮に,Tにクロック周波数を加えたとした場合,Qにはクロック周波数の1/2の周波数が出力されるので,分周器として利用することが可能です.

TFF2.v
0