回答 count30.v


001 `timescale 1ns / 1ps
002 //////////////////////////////////////////////////////////////////////////////////
003 // Create Date:    12:29:40 10/22/2015 
004 // Module Name:    counter30 
005 //////////////////////////////////////////////////////////////////////////////////
006 module counter30(
007 	input wire  clk0,
008 	output wire [7:0] seg7,
009 	output wire [3:0] line,
010 	output wire [6:0] led
011 );
012 	assign line = 4'b0001<<ab;	
013 	assign led  = { 2'b00, count3, count10 };
014 	assign seg7 = { 1'b0, disp }; 
015 	
016 	parameter [6:0] seg7_data[0:9]={
017 			7'b0111111, //0
018 			7'b0000110, //1
019 			7'b1011011, //2
020 			7'b1001111, //3
021 			7'b1100110, //4
022 			7'b1101101, //5
023 			7'b1111101, //6
024 			7'b0100111, //7
025 			7'b1111111, //8
026 			7'b1101111  //9
027 	};
028 
029 	// ダイナミック表示
030 	reg[6:0] disp=7'b0;
031 	reg[3:0] x;
032 	reg ab=0;
033 	always @( posedge clk0 )begin
034 		if(c[19:0]==0)begin
035 			x <= ab?count3:count10;
036 			if(x<=4'd9)
037 				disp <= seg7_data[x];
038 			else
039 				disp <= 7'b0000000;
040 			ab <= ab + 1'b1;
041 		end
042 	end
043 	
044 	// 1秒生成
045 	reg[26:0] c=27'b0;
046 	reg sec_enable=1'b0;
047 	always @( posedge clk0 )begin
048 		if( c==27'd99999999 )begin // 100,000,000-1
049 			c <= 0;
050 			sec_enable <= 1'b1;
051 		end
052 		else begin
053 			c <= c + 1'b1;
054 			sec_enable <= 1'b0;
055 		end
056 	end 
057 	
058 	// 10進カウンタ
059 	reg[3:0] count10=4'b0;
060 	reg sec10_enable = 1'b0;
061 	always @( posedge clk0 )begin
062 		if( sec_enable )begin
063 			if( count10==4'd9 )begin
064 				count10<=1'b0;
065 				sec10_enable <= 1'b1;
066 			end
067 			else begin
068 				count10 <= count10 + 1'b1;
069 				sec10_enable <= 1'b0;
070 			end
071 		end
072 		else begin
073 			sec10_enable <= 1'b0;
074 		end
075 	end
076 
077 	// 3進カウンタ
078 	reg[1:0] count3=2'b0;
079 	always @( posedge clk0 )begin
080 		if( sec10_enable )
081 			if( count3==2'd2 )
082 				count3 <= 1'b0;
083 			else
084 				count3 <= count3 + 1'b1;
085 	end
086 
087 endmodule

ssatoh@

足立工科大学 工学部 情報通信工学科