Language/Verilog

Vivado : Basys3 7segment

짱도르딘 2024. 7. 16. 20:11
728x90

이번에는 Basys3을 사용하여 7-segment를 제어하고자 한다.

 

7-segment의 구조는 아래와 같다.

 

7 세그먼트 구조

 

4개의 스위치를 활용하여 4bit 스위치 역할을 수행하며, 세그먼트를 제어할 예정이다.

 

따라서 코드의 초반에는 '[3:0] hex_value'와 같이 선언하였다.

 

세그먼트 제어는 직관적으로 변경을 할 것이며, 따라서 비트를 하나하나 선언하여 변경할 것이다.


세그먼트를 제어할 때에는 1이 주어지면 LED는 점등을 하며, 0이 주어질 시 꺼지는 동작을 수행한다. 

 

구현된 코드는 아래와 같다.

module decoder_7seg(
    input [3:0] hex_value,
    output reg [7:0] seg_7);
    
    always @(hex_value)begin
        case(hex_value)
        //               abcd_efgp
            0: seg_7 = 8'b0000_0011; // 0
            1: seg_7 = 8'b1001_1111; // 1
            2: seg_7 = 8'b0010_0101; // 2
            3: seg_7 = 8'b0000_1101; // 3
            4: seg_7 = 8'b1001_1001; // 4
            5: seg_7 = 8'b0100_1001; // 5
            6: seg_7 = 8'b0100_0001; // 6
            7: seg_7 = 8'b0001_1011; // 7
            8: seg_7 = 8'b0000_0001; // 8
            9: seg_7 = 8'b0000_1001; // 9
           10: seg_7 = 8'b0001_0001; // A
           11: seg_7 = 8'b0000_0001; // B
           12: seg_7 = 8'b0110_0011; // C
           13: seg_7 = 8'b1000_0101; // d
           14: seg_7 = 8'b0110_0001; // E
           15: seg_7 = 8'b0111_0001; // F
        endcase
    end 
endmodule

 

case문으로 4bit를 16진수로 변환한 입력값에 따라 출력을 할 수 있도록 설정하였다.

 


BASYS3을 동작시키기 위해서는 아래와 같은 과정을 필요로 한다.

 

Vivado 왼쪽 부분에 "Run Synthesis"를 클릭하여 OK를 누른다.

 

"Run Implementation"을 클릭한다.

 

"Generate Bitstream"을 클릭한다.

 

 

"Open Hardware Manager"를 클릭한다.

 

좌측 상단에 "Auto Connect"를 클릭한다.

 

 

"Program device" 를 클릭하면 동작을 수행한다.


 

 

728x90