[ create a new paste ] login | about

Link: http://codepad.org/2eLWNeWr    [ raw code | output | fork ]

C++, pasted on Apr 26:
/*******************************************
クロック動作関係モジュール
======================
分周を計算し、1秒間を求め1秒ごとに1をカウントし
対応する7SEQに値を加算する。 ダイナミックドライブ使用
********************************************/
`ifdef DEFAULT_NETTYPE_NONE
`default_nettype none
`endif
module CLK_Timing(CLK,SEQ_POINT,S1,S2,S3,S4);

//入力
input wire CLK;

//出力
output[1:0] SEQ_POINT;//7SEQのポイントを出力
output[3:0] S1,S3;	//7SEQの値を出力
output[2:0] S2,S4;	//7SEQの値を出力

wire SCAN_ON;			//待機時間が経過したので、ダイナミックドライブ動作

//変数宣言
reg [15:0] CLK_SEC;	//クロック待機時間カウンター
reg [7:0] SCAN_SEQ;	//7SEQ切り替え待機時間
reg [6:0] CLK_ON;		//待機時間が経過したので、動作(100回)

//戻り値
reg [1:0] SEQ_POINT; //ダイナミックドライブポイント
reg [3:0] S1,S3;		//7SEQ 0-9
reg [2:0] S2,S4;		//7SEQ 0-5

assign SCAN_ON = (SCAN_SEQ ==(8'hff))? 1'b1 : 1'b0;		//255回カウントしたらON

/************************************
7SEQ待機時間カウント処理
************************************/
always @(posedge CLK)
begin
	SCAN_SEQ <= SCAN_SEQ + 1;	//7SEQスキャン待機時間カウント
end

/************************************
分周処理:6Mカウント@1秒間算出ループ
*************************************/
always @(posedge CLK)
begin	
	//CLK_SECが6万回(60K)カウントされたら
	if(CLK_SEC >= 60000) 
		CLK_SEC <= 0;				//再度0からループ
	else if(CLK_ON == 100)
		CLK_SEC <= 0; //待機時間初期化
	else
		CLK_SEC <= CLK_SEC + 1;		//1秒間待機カウント
end

/******************************
1秒間検出処理
*******************************/
always @(posedge CLK)
begin
	//CLK_SECが6万回(60K)カウントされたら
	if(CLK_SEC >= 60000)
		CLK_ON <= CLK_ON + 1;	//周回カウント
	//100回周回した場合、1秒経過 (60K*100=6M=1秒)
	else if(CLK_ON == 100)
		CLK_ON <= 0;		//周回回数初期化
end

/********************************
各対応する7SEQの値計算処理
*********************************/
always @(posedge CLK)
begin
	//100回周回した場合、1秒経過 (60K*100=6M=1秒)
	if(CLK_ON == 100)				
	begin
		//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
end

/*********************************
7SEQのダイナミックドライブ処理@7SEQ間ハイインピーダンス移動
**********************************/
always @(posedge CLK)
begin
	//7Seqを移動、ダイナミックドライブ
	if (SCAN_ON == 1'b1)	
		SEQ_POINT <= SEQ_POINT + 2'b1;	//SEQ_POINTを加算し、移動
end

endmodule

`default_nettype wire


Output:
1
2
Line 7: error: stray '`' in program
compilation terminated due to -Wfatal-errors.


Create a new paste based on this one


Comments: