どのようにアクションごとにx番目のクロックパルスを行うには?

S

srinpraveen

Guest
こんにちはみんなは、私は非常に基本的な疑問を持っている。私はどのようにverilogでこれを行うには、知ってほしい。私は特定のアクションごとにx番目のクロックパルスをしたい。どうすればverilogで、これを組み込むのですか?一部の皆さんは、私はカウンタを使用する必要があると言うができます私は、私はカウンターを導入と言うことができます、クロックパルスの立ち上がりエッジ4回ごとに特定のアクションを実行する必要があるとします。カウンタ4点で最大。そして、アクションが行われます。しかし、このアクションは、単独でCLKパルスの立ち上がりエッジ4回で行われます。私はアクションが私はこの権利のカウンタのx番号を使用してすることはできません第八立ち上がりエッジ、12エッジ16エッジなど..で繰り返さ取得したいですか?私がいる場合のようにmod演算子を使用してみました(カウンタ%4 == 1'b0 ).......のように我々は、C、Cで使用する+ +。しかし、実際の問題として、mod演算子はシミュレーションエラーがスローされない場合があります一方で、デザインビジョンで合成されません。言い換えれば、mod演算子は、とにかくsynthesisableされていません。私の質問を理解してeverbodyか?そして、誰もがこのことについて知っていれば、彼らはこれにシンプルなソリューションを提供することができますか?
 
リセットすべてのx番目のクロックパルスのカウンター。
 
カウンタをresetingことをお勧めします...しかし、問題は、我々はそのための条件を書き込みを行う方法をx番目の立ち上がりエッジを....キャプチャですか?私は合成に優しいされていないmod演算子を使用して強制的にです... x番目の恵下ポイントをキャプチャするために、例えば、私がいる場合(カウンタ%× == 0のような構文を使用するように強制午前)....この問題の回避策は何ですか?私は正しくお返事を理解するか?ない場合は、親切に私はウルは、常に@(posedge clkが)カウンタが開始のようにかなったと言う仮定私..このビットをよりよく理解する助けになるようにあなたの説明を詳しく説明PLSの
 
[引用= srinpraveenは、865286]どのように我々はそのための条件を書くのですか?私は合成に優しいされていないmod演算子を使用して強制的にです... x番目の恵下ポイントをキャプチャするために、例えば、私がいる場合(カウンタ%× == 0のような構文を使用するように強制午前).... [/引用]あなたはリセットカウンタとコンパレータを使って同じことを行うことができます。
 
[引用= lostinxlationは、865298]は、リセットカウンタとコンパレータと同じことを行うことができますあなたは何を語った[/引用]私は右上の書き込み、そのコードのこの部分に対応しています。? (persualのために再度以下に示す)は、常に@(posedge clkは)は、カウンタを開始
 
すべての第五サイクルなどされていること、それは0,1,2,3,4,0,1,2,3,4,0,1,2,3,4はカウント...のいずれか1にリセットする必要がある、または3でリセットされます。
 
@順序を変える屋私は正しいされている問題を.. 1にリセット解決するわけではないことにバディ...しかし、3 resetingを手に入れたんだとyaの代わりに私がいる場合(カウンタ== 1'd3)をする場合、条件を変更する場合それは4回ごとにクロックエッジれる...そう私は、ptバディを手に入れたんだ@ lostinxlationと支援のための@順序を変える---> TKSの
 
(_to_3をリセットしないリセット_at_ 3)あなたは本当にカウンタが到達できることを任意の値に比較することができます。それだけで異なるコセットの出力を配置します。例えば、0,4,8,12対に1,5,9,13対2,6,10,14対3,7,11,14クロック。いくつかのモジュールでこのメソッドを使用する場合は、この重要なことができます。
 
これはあなたのコードは次のようにすべきです:;入力bufclkを、[コード]モジュールクロック(bufclk)[2:0] clkregを= 3'b000レッグ;レジスタdivclkは= 1'b0;常に@(posedge bufclk)clkreg開始= clkreg + 1;場合(clkreg == 4)= 0 clkreg開始。divclk =〜divclk;エンドエンドendmodule [/コード]
 
@すべてのTKSの男..モデルのコードで説明して...私はかなり明確になりましたポイントを得た私の疑問...そしてジャック、TKSのをクリアしています..
 
ジャックのコードは、分周クロックを生成し、8倍に分割します。さらに、同期プロセスのverilogの割り当てをブロックの使用一般的に悪い習慣を使用しています。ポスト5で元のコードは、FPGA、特に近い使用すべきとした。
 
レッグ[コード]は[3:0] CNTは、パラメータ[3:0] N_CYC = 4;常に@(posedge clkがやnegedgeのrst_n)が(〜rst_n)CNTを開始
 
[引用は=順序を変える; 865922]さらに、同期プロセスのverilogでの割り当てをブロックして使用する一般的に悪い習慣を使用しています。一般的で[/引用]確かに、必ずしも必要ではないがtrueにクロック分周目的のためにブロック文を使用している場合。あなたは、なぜ、VerilogおよびSystemVerilogの落とし穴にガッチャ#29を参照してください方法については、興味があれば。ガッチャ29 [引用]::ガッチャの割り当てをブロックする必要がありますシーケンシャルロジック:ここでは本からの短い引用は、私がシーケンシャルロジックで非ブロッキング割り当てを使用するための推奨事項に従うんだけど、私はまだシミュレーションで競合状態を持っています。あらすじは:モデリングする場合のクロック分周器は、RTL合成の設計ガイドラインは、常に適用されません。 [/引用]
 

Welcome to EDABoard.com

Sponsor

Back
Top