2014年3月23日日曜日

なんちゃってロジアナ 2

レジスタレイアウトを若干修正した。


・ACQ_INT:割り込み関連レジスタ追加
  このロジックアナライザの実装では割り込み機能は必ずしも必要ではないが、将来CPUと組み合わせて使いたくなるかも知れない。それに、FIFOオーバライトの事象はキチンと捕獲してステータスとしてチェックできるようにしておく必要があるので、このレジスタを追加することにした。マスクとステータスはレジスタを別にしたい所ではあるのだが、今回はレジスタ数が多いので1レジスタに纏めることにした。



・BUFF_PARAM:バッファパラメータレジスタ
SDRAM上に確保するバッファの起点アドレスとサイズを設定する。以前は別個でワード単位で設定できるようにしていた。しかし、データFIFOは256深度で、メモリへは基本的に128バーストライトで書き込むようにしているので、それよりも細かい粒度でのアドレス設定は意味が無い。また、バッファサイズの設定も細かい粒度は意味がないので、これも以下のような粒度での設定とした。


・全体シミュレーション
上記インプリメンテーションでシュミレーション実行できるようになった。

バッファアドレスは0x0100、サイズは1MBでトリガモードはPRE_TRIGとしている。
入力信号は20ns周期(50MHz)でインクリメントさせている。トリガはCH11がHの時のCH0の立ち上がりで且つトリガカウントを16とした。


バッファリング開始部分
設定どおり、アドレスは0x100から始まっている


トリガ検出点(データ)のバッファ上の位置はTRG_ADDRレジスタに自動的に格納される。
以下はその様子であり、このシミュレーションでは0x8AEであった。


また、トリガモードがPRE_TRIGなのでトリガ点は格納データの左端(先頭)に位置することになる。つまり、バッファリングはトリガ検出点からバッファサイズ分行われて完了する。以下は、バッファリングの後端部で、バッファリングがトリガ検出点(0x8AE)の一つ前の0x8ADで終わっている。


FPGAのリソースに余裕があるので、トリガ機能をもっと追加したい気もする。例えば、ステートを定義し、そのステート遷移のパターンをトリガ条件にする等。 が、早く実機で動かしてみたい気もするので実機確認を優先しようと思う。



0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...