2017-12-14 7 views
0

こんにちはVerilog文法について質問があります。Verilog with with with条件付き

@は常に普段使用されています。

しかし、変数の値が変更されたときに何らかのアクションを実行する必要があります。

たとえば、スイッチが変更されているかどうかを調べたいと思います。 (@ posedgeスイッチまたはnegedgeスイッチ)

しかし、これはエラーをした場合

だから、私は試してみました。

これを行う方法は他にありますか?あなたは同期設計を(そして、あなたがそれをやりたい;)書きたい場合は、事前

+1

'@(posedge switchまたはnegedge switch)'またはより簡単に '@(switch)' – toolic

+1

エラーを表示し、合成可能なコードの場合は –

+0

@ close-votersどのようにして、他のほとんどのVerilogの質問よりも?そして、HDLがプログラミングとは関係ないと思うなら、どうやってファクトリーパターン、加入者パターン、シングルトンパターンを教えているのでしょうか? –

答えて

1

おかげで、あなたは1つのクロックエッジ(一般的に上昇)で、すべての信号の状態を変更する必要があります。

スイッチのエッジを検出するには、スイッチの値の状態を保存し、クロックの立ち上がりエッジで実際の値と比較する必要があります。

always @(posedge clock) 
    begin 

     if (switch_old != switch) 
      switch_edge <= 1'b1; 
     else 
      switch_edge <= 1'b0; 

     switch_old <= switch; 
    end 

あなたは同期設計で聞いたことができませんし、合理的に合成することはできません。