codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
module CLK_Timing(CLK,SEQ_POINT,S1,S2,S3,S4); input CLK; output[3:0] S1,S3; //7SEQの値を出力 output[2:0] S2,S4; //7SEQの値を出力 output[1:0] SEQ_POINT;//7SEQのポイントを出力 wire SCAN_ON; //待機時間が経過したので、ダイナミックドライブ動作 reg [3:0] S1,S3; //7SEQ 0-9 reg [2:0] S2,S4; //7SEQ 0-5 reg [1:0] SEQ_POINT; //ダイナミックドライブポイント reg [15:0] CLK_SEC; //クロック待機時間カウンター reg [7:0] SCAN_SEQ; //7SEQ切り替え待機時間 reg [6:0] CLK_ON; //待機時間が経過したので、動作(100回) assign SCAN_ON = (SCAN_SEQ ==(8'hff))? 1'b1 : 1'b0; //255回カウントしたらON always @(posedge CLK) begin CLK_SEC <= CLK_SEC + 1; //1秒間待機カウント SCAN_SEQ <= SCAN_SEQ + 1; //7SEQスキャン待機時間カウント //CLK_SECが6万回(60K)カウントされたら if(CLK_SEC >= 60000) begin CLK_ON <= CLK_ON + 1; //周回カウント CLK_SEC <= 0; //再度0からループ end //1秒経過した場合 //if(CLK_ON == 1'b1) //100回周回した場合、1秒経過 (60K*100=6M=1秒) if(CLK_ON == 100) begin CLK_ON <= 0; //周回回数初期化 CLK_SEC <= 16'h0; //待機時間初期化 //7Seq 1番目 if(S1 == 4'b1001) //9以上か? begin S1 <= 4'b0000; //繰り上げ初期化 S2 <= S2 + 1; //7Seq 2番目 if(S2 == 4'b0101) //5以上か? begin S2 <= 4'b0000; //繰り上げ初期化 S3 <= S3 + 1; //7Seq 3番目 if(S3 == 4'b1001) //9以上か? begin S3 <= 4'b0000; S4 <= S4+ 1; //7Seq 4番目 if(S4 == 4'b0101) //5以上か? S4 <= 4'b0000; else S4 <= S4 + 1; //S4加算 end else S3 <= S3 + 1; //S3加算 end else S2 <= S2 + 1; //S2加算 end else S1 <= S1 + 1; //S1加算 end //7Seqを移動、ダイナミックドライブ if (SCAN_ON == 1'b1) SEQ_POINT <= SEQ_POINT + 2'b1; //SEQ_POINTを加算し、移動 end endmodule
Private
[
?
]
Run code
Submit