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のハードウェア構造を理解する必要があります。