※ ChatGPTを利用し、要約された質問です(原文:FPGAでxapp495のサンプルについて)
FPGAでxapp495のサンプルを使って縦線を出力する方法について教えてください
このQ&Aのポイント
現在、Spartan6 LX45評価ボードを使用して、xapp495のサンプルを使って縦線を出力するプログラムを作成しています。
hdclrbar.v内の水平方向位置を決める際に、i_hcntの値を利用していますが、%(剰余)した場合にうまく動作しない問題が発生しています。
コンパイルエラーも発生しています。どうしてこのような結果になるのかわかる方いましたら、教えてください。
こんにちは
現在Spartan6 LX45評価ボードにて下記のPDFにあったサンプルをいじりながら目的の出力をするプログラムを作成しているところです。
http://www.xilinx.com/support/documentation/application_notes/xapp495_S6TMDS_Video_Interface.pdf
・環境
基本的な言語はVerilog HDL
開発はISE 12.2を利用しています
サンプルは、XILINKSから落としてきました。
トップモジュールに、dvi_demo.vとvtc_demo.vがあります。
今回はvtc_demo.vのカラーバー出力サンプルを利用しました。
・スキル
FPGAは先週くらいから始めたばかり。
・やりたいこと
任意位置に色を描画する。
今回は縦線を出力するだけです。
・質問
hdclrbar.v内の水平方向位置を決める際に、
i_hcntの値を利用していますが、%(剰余)した場合にうまく動作しません。
また、コンパイルエラーが発生する場合としない場合があります。
どうしてこのような結果になるのかわかる方いましたら教えてください。
問題のコード
if ((i_hcnt % 3'd111) == 0)
エラー内容は、
ERROR:Xst:2837 - Line XXX: Operator <MODULO> is only supported when the second operand is a power of 2
以下のコードの場合はコンパイルは通るのですが、結果が意図したものではありませんでした。
if ((i_hcnt % 3'd100) == 0)
この場合に表示されるのは非常に細かく描画されてしまいます。
以下のコードは特に問題なく(意図した)動作(画面に100pixelの位置に縦線を描画)をします。
if (i_hcnt == 12'd100)
ただ、この場合だとすべての描画位置を直接指定しなければならないため、
計算式から出した線を描画することが出来なくなります。
最終目標としては、サインカーブを特定Y値で横に切った時の点を表示したい。
・備考
何か根本的な部分で間違っている可能性が大だと思います。
参考資料などありましたら教えてください。
追加で必要な情報がありましたらお答え出来る範囲でします。
以上、よろしくお願いします。
お礼
回答ありがとうございます。 いろいろ試して見ましたが、 always @ (posedge clk) begin こちらの中だと使えず、 initial begin こちらだと特に問題なく動作しました。 一応剰余を利用しない方法で検討することにしましたので何とかなりそうです。 >PCからボードのメモリに画像書き込んで、フィルターかまして、出力くらいはできるんでは? 決まった画像は出力できるのですが、メモリに画像を書き込む部分がまだ良くわからず調べているところです。