module cesgi(mclk,reset,type,ledout ); //reset复位,type控制 input mclk,reset; input[1:0]type; output reg [7:0]ledout; reg[24:0]count; reg[3:0]state; wire clk; //分频器 always @ (posedge mclk or posedge reset) begin if (reset) count<= 0; else count <= count + 1; end assign clk = count[24]; // 1.5 Hz //花样设计 always @ (posedge clk or posedge reset) begin if (reset) begin ledout<=8'b00000000;state<=4'b0000; end else if(type==2'b00) begin case(state) 4'b0000:ledout<=8'b10000000;//第一个灯亮 4'b0001:ledout<=8'b01000000;//第二个灯亮 4'b0010:ledout<=8'b00100000;//第三个灯亮 4'b0011:ledout<=8'b00010000;//第四个灯亮 4'b0100:ledout<=8'b00001000;//第五个灯亮 4'b0101:ledout<=8'b00000100;//第六个灯亮 4'b0110:ledout<=8'b00000010;//第七个灯亮 4'b0111:ledout<=8'b00000001;//第八个灯亮 4'b1000:ledout<=8'b00000010;//第七个灯亮 4'b1001:ledout<=8'b00000100;//第六个灯亮 4'b1010:ledout<=8'b00001000;//第五个灯亮 4'b1011:ledout<=8'b00010000;//第四个灯亮 4'b1100:ledout<=8'b00100000;//第三个灯亮 4'b1101:ledout<=8'b01000000;//第二个灯亮 default:ledout<=8'b00000000; endcase state<=state+1;//计数器产生state的各种状态 end else if(type==2'b01) begin case(state) 4'b0000:ledout <= 8'b01010101; 4'b0001:ledout<=8'b10101010; 4'b0010:ledout<=8'b11001100; 4'b0011:ledout<=8'b00110011; 4'b0100:ledout<=8'b11000011; 4'b0101:ledout<=8'b00111100; default:ledout<=8'b00000000; endcase state<=state+1; end else if(type==2'b10) begin case(state) 4'b0000:ledout<=8'b00011000; 4'b0001:ledout<=8'b00100100; 4'b0010:ledout<=8'b01000010; 4'b0011:ledout<=8'b10000001; 4'b0100:ledout<=8'b01000010; 4'b0101:ledout<=8'b00100100; 4'b0110:ledout<=8'b00011000; 4'b0111:ledout<=8'b10000001; default:ledout<=8'b00000000; endcase state<=state+1; end else if(type==2'b11) begin case(state) 4'b0000:ledout<=8'b10000000; 4'b0001:ledout<=8'b10000001; 4'b0010:ledout<=8'b11000001; 4'b0011:ledout<=8'b11000011; 4'b0100:ledout<=8'b11100011; 4'b0101:ledout<=8'b11100111; 4'b0110:ledout<=8'b11110111; 4'b0111:ledout<=8'b11111111; 4'b1000:ledout<=8'b11101111; 4'b1001:ledout<=8'b11100111; 4'b1010:ledout<=8'b11000111; 4'b1011:ledout<=8'b11000011; 4'b1100:ledout<=8'b10000011; 4'b1101:ledout<=8'b10000001; default:ledout<=8'b00000000; endcase state<=state+1; end else ledout<=ledout; end endmodule