/* show4let: by karttu, Jan 1 2005. Show four letters specified as (inverted) 7-segment bit masks given in MASKS[0:3] in the four 7-segment LED display of Spartan-3 board. For some reason input [6:0] LET [3:0] does not work! */ module show4let(input CLK, input [6:0] LET0, input [6:0] LET1, input [6:0] LET2, input [6:0] LET3, output [7:0] SEG_OUT, output [3:0] DIGIT_OUT); parameter msb = 16; reg [msb:0] delay_counter = 0; wire [1:0] d = delay_counter[msb:msb-1]; assign SEG_OUT[7] = 1'b1; // Don't light the dp. assign SEG_OUT[6:0] = (0 == d ? LET0 : 1 == d ? LET1 : 2 == d ? LET2 : LET3); assign DIGIT_OUT = (0 == d) ? 4'b1110 : (1 == d) ? 4'b1101 : (2 == d) ? 4'b1011 : 4'b0111; // = (4'b1110 << d); // Works in principle, not in practice. always @(posedge CLK) begin delay_counter <= delay_counter+1; // Wraps around, eventually. end endmodule