HOME Corporate Product Verilog VHDL Link Contact Site map


ここではalways文の例を紹介いたします。


D−F/F
   module D_FF (CLK,DIN,DOUT);
      input CLK,DIN;
      output DOUT;
      reg DOUT;

      always@(posedge CLK)begin
         DOUT <= DIN;
      end
   endmodule

   [解説] CLKの立ち上がり毎にDOUTにDINを代入する。
        また、立ち上がり変化がないときは値を保持する。



同期リセット付きD−F/F
   module SYNC_FF (CLK,RST,D,Q);
      input CLK,RST,D;
      output Q; reg Q;

      always@(posedge CLK)begin
         if(RST == 1)
            Q <= 0;
         else
            Q <= D;
      end 
   endmodule

   [解説] CLKの立ち上がり毎にRST==1ならばQに0を代入する。
        RST==1でないならQにDを代入する。
        また、立ち上がり変化がないときは値を保持する。


非同期リセット付きD−F/F
   module ASINC_FF (CLK,RST,D,Q);
      input CLK,RST,D;
      output Q; reg Q;

      always@(posedge CLK or posedge RST) begin
         if(RST == 1)
            Q <= 0;
         else
            Q <= D;
      end
   endmodule

   
[解説] RST==1に変化したときQに0を代入する。
        そうでないならCLKの立ち上がり毎にQにDを代入する。
        また、立ち上がり変化がないときは値を保持する。


イネーブルD−F/F
   module ENA_FF (CLK,CE,D,Q);
      input CLK,CE,D;
      output Q;
      reg Q;

      always@(posedge CLK)begin
         if(CE == 1)
            Q <= D;
      end
   endmodule

   [解説] CLKの立ち上がり毎にCE==1が成立すればQにDを代入する。
        それ以外は値を保持する。


ラッチの記述
   module LATCH (EN,D,Q);
      input EN,D;
      output Q;
      reg Q;

      always@(EN or D)begin
         if(EN == 1)
            Q <= D;
      end
   endmodule

   
[解説] EN==1の間、QにDを代入する。
        それ以外は値を保持する。


非同期リセット付き同期式カウンタ
   module B_COUNTER4(CLK,RESET,QOUT);
      input CLK,RESET;
      output [3:0] QOUT;
      reg [3:0] QOUT;
   
      always@(posedge CLK or posedge RESET)begin
         if(RESET == 1)
            QOUT <= 0;
         else
            QOUT <= QOUT + 1;
      end
   endmodule

   
[解説] RST==1に変化したときQに0を代入する。
       そうでないならCLKの立ち上がり毎にQOUT<=QOUT+1を行う。
       また、立ち上がり変化がないときは値を保持する。



Back

HOME Corporate Product Verilog VHDL Link Contact Site map