Electronics - Verilog - Turning off 7-segment displays

A quick code to turn off every single segment onto a FPGA board.

For this tutorial we use the Altera DE1 board.

So if you have another one, just replace HEX0, HEX1, HEX2, HEX3 by your assignment.

Explanation

Each number is a pin onto the board.
As there are 4 * 7 segments = 28 segments to light, so 28 pins.

So, to turn off all segments of a display, it's necessary to use 7'b1111111 as value.

Because by default, a "0" value is equal to light the corresponding segment.

Let's have a look to this diagram.

         _0_
     5 |       | 1
        |_6_|
     4 |       | 2
        |___|
            3
          
If 0 = ON and 1 = OFF, then:

  • 0 = 1111110
  • 1 = 1111101
  • 2 = 1111011
  • 3 = 1110111
  • 4 = 1101111
  • 5 = 1011111
  • 6 = 0111111

Code

top1.v

// top-level entity: module top1

module top1(

    output     wire [6:0]     HEX0, HEX1, HEX2, HEX3

);

    // call nested module
    segment_remove_all(
        .h0(HEX0),
        .h1(HEX1),
        .h2(HEX2),
        .h3(HEX3)
    );

endmodule

segment_remove_all.v

// generic module: segment_remove_all

module segment_remove_all(

    output reg [6:0] h0, h1, h2, h3
    
);

    // parameter
    parameter off = 7'b1111111;

    // always
    always @(*) begin
        h0 <= off;
        h1 <= off;
        h2 <= off;
        h3 <= off;
    end

endmodule

Conclusion

Your 7-segment displays are now turned off.
And your eyes thank you for removing this red light.

Well done, you've made it. surprise

Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.