Verilogプログラミングでの私の間違い
My Mistakes Verilog Programming
1.エラー(10137):freq_test.v(36)でのVerilog HDL手続き型割り当てエラー:割り当ての左側にあるオブジェクト 'dataoutf'は可変データ型である必要があります
理由:データ型の定義が間違っているか、割り当ての種類が間違っています
解決策:alwaysプロセスブロックで割り当てられる変数はreg(レジスタタイプ)である必要があり、assignで継続的に割り当てられるオブジェクトはwire(ラインタイプ)として定義される必要があります。
もう1つ:割り当ては常に平行である必要があります。
2.エラー(10200):seg.v(42)でのVerilog HDL条件ステートメントエラー:条件のオペランドを、always構成の囲んでいるイベントコントロールの対応するエッジに一致させることができません
always @(posedge CLK or posedge CLR) begin if(CLR) begin cnt<=16'b0 BIT_SEL<=2'b0 end else cnt<= cnt + 1'b1 if (cnt==16'd1) //Delay 1ms begin BIT_SEL <= BIT_SEL + 1'b1 //Change a digit to the display cnt <=16'b0 end end
私のプログラムセグメントはこのように書かれています、私はIf (cnt==16'd1) //Delay 1ms begin end
を置きますこの3文を削除しても問題ありません。理由はわかりません。
オンラインで見つかった関連する回答:https://zhidao.baidu.com/question/223033559.html。私はこの理由ではないようです。
3.エラー(10170):テキスト「clk_sep」の近くのwave.v(20)でのVerilogHDL構文エラー<=', or '='
モジュールのインスタンス化呼び出しはalwaysステートメントに表示できません。これは、インスタンス化が実装されるのは1回だけであり、常に機密テーブルを満たすためです。インスタンス化は常に並行している必要があります。
4.エラー(10663):wave.v(31)でのVerilog HDLポート接続エラー:出力または入力ポート 'dataouthc'を構造ネット式に接続する必要があります
モジュールがインスタンス化されたときのデータ型が正しくありません。
入力ポート:
モジュールの内部から、入力ポートはワイヤーメッシュタイプである必要があります(デフォルトはタイプ宣言のないワイヤーです)モジュールの外部から、入力ポートをnetまたはregタイプの変数に接続できます。。
出力ポート:
モジュールの内部から、出力ポートはワイヤーネットまたはregタイプにすることができますモジュールの外側から、出力ポートを金網変数に接続する必要があります。
なぜこのように定義したいのか、fpgaのハードウェア構造を理解する必要があります。