0

クロックの8パルスでハイになり、残りでローになるパルスを作成しようとしています。したがって、イネーブルでクロックが高い場合、パルスは高くなり、クロックパルスの8パルス後に低くなります。Verilogでこれを実装してアプローチするにはどうすればよいですか。これまで私がやってきたことは次のとおりです。

module clkgenerator(
  input clk,
  input [3:0] count = 4'b0,
  input enable,
  output andpulse
   );
  always@(posedge enable and posedge clk)
  begin
    andpulse <= 1;
      if(count == 4'b1000);
        andpulse <= 0;
        count <= 4'b0;
      else
        count <= count + 1;
      end 
  endmodule

しかし、これはスローしてエラーになります

エラー: C:\altera\14.0\clkgenerator.v(3): "=" 付近: 構文エラー、予期しない '='、')' を期待

助けが必要。

4

3 に答える 3

0
  1. count と andpulse をレジスタとして宣言する必要があります。

    module clkgenerator(
       input clk,
       input reg [3:0] count = 4'b0,
       input enable,
       output reg andpulse
    ); 
    
  2. always ブロックの感度リストに enable を入れるべきではありません。代わりに if 条件に入れます。

    always@(posedge clk)
    if(enable)
    begin
      andpulse <= 1;
      if(count == 4'b1000)
      begin
        andpulse <= 0;
        count <= 4'b0;
      end
      else
        count <= count + 1;
      end
    endmodule
    
于 2017-10-05T09:19:30.383 に答える