//七段四位译码器 module jyh_4490_4_encoder(sel,codeout,clk, d1, d2, d3, d4); input clk; input [6:0] d1, d2, d3, d4; output reg [3:0] sel; //位选 output reg [6:0] codeout; //型码 //当前位置数字 reg [6:0] code_loc; //实验性消影 reg isEnable; reg [3:0] loc=4'b1000; //循环移位 always @(posedge clk) begin if(isEnable) isEnable<=0; else begin isEnable<=1; if(loc==4'b0001) loc=4'b10; else if(loc==4'b0010) loc=4'b100; else if(loc==4'b0100) loc=4'b1000; else if(loc==4'b1000) loc=4'b1; end end always @(*) begin if(isEnable) begin case (loc) 4'b0001: begin code_loc = d1; sel = 4'b0001; end 4'b0010: begin code_loc = d2; sel = 4'b0010; end 4'b0100: begin code_loc = d3; sel = 4'b0100; end 4'b1000: begin code_loc = d4; sel = 4'b1000; end endcase end end always @(*) begin if(isEnable) begin case (code_loc) 4'd0: codeout<=7'b1111110; 4'd1: codeout<=7'b0110000; 4'd2: codeout<=7'b1101101; 4'd3: codeout<=7'b1111001; 4'd4: codeout<=7'b0110011; 4'd5: codeout<=7'b1011011; 4'd6: codeout<=7'b1011111; 4'd7: codeout<=7'b1110000; 4'd8: codeout<=7'b1111111; 4'd9: codeout<=7'b1111011; default: codeout<=7'bx; endcase end else codeout=7'b0; end endmodule