프로젝트명 : FND 컨트롤러
분류 : 토이 프로젝트 (개인)
시작/제작 기간 : 23.08.20 (1일)
진행상태: 스펙 정의 - 기능 검증 - RTL 생성 - 시뮬레이션진행중
- 합성 및 배선
사용 툴:Vivado
,Xcelium
,Genus
,Innovus
사용 도구:FPGA
Anode - Cathode 동시 지원 IC의 필요성
Anode / Cathode란?
1) DATA
2) ENABLE
3) AC_SEL
4) COM, SEGMENT
`timescale 1ns/1ps
module FND_Contoller (DATA, ENABLE, AC_SEL, COM, SEGMENT);
input [3:0] DATA;
input ENABLE;
input AC_SEL;
output reg COM;
output reg [7:0] SEGMENT;
parameter ANODE_MOD = 0;
parameter CATHODE_MOD = 1;
reg mode;
always @(*) begin
case (AC_SEL)
1'b0: mode <= ANODE_MOD;
1'b1: mode <= CATHODE_MOD;
default: mode <= ANODE_MOD;
endcase
end
always @(*) begin
if(ENABLE) begin
case (mode)
ANODE_MOD: begin
COM <= 1'b1;
case (DATA)
4'd0: SEGMENT <= 8'b11000000; //0
4'd1: SEGMENT <= 8'b11111001; //1
4'd2: SEGMENT <= 8'b10100100; //2
4'd3: SEGMENT <= 8'b10110000; //3
4'd4: SEGMENT <= 8'b10011001; //4
4'd5: SEGMENT <= 8'b10010010; //5
4'd6: SEGMENT <= 8'b10000010; //6
4'd7: SEGMENT <= 8'b11111000; //7
4'd8: SEGMENT <= 8'b10000000; //8
4'd9: SEGMENT <= 8'b10010000; //9
default: SEGMENT <= 8'b10111111;
endcase
end
CATHODE_MOD: begin
COM <= 1'b0;
case (DATA)
4'd0: SEGMENT <= 8'b00111111; //0
4'd1: SEGMENT <= 8'b00000110; //1
4'd2: SEGMENT <= 8'b01011011; //2
4'd3: SEGMENT <= 8'b01001111; //3
4'd4: SEGMENT <= 8'b01100110; //4
4'd5: SEGMENT <= 8'b01101101; //5
4'd6: SEGMENT <= 8'b01111101; //6
4'd7: SEGMENT <= 8'b00000111; //7
4'd8: SEGMENT <= 8'b01111111; //8
4'd9: SEGMENT <= 8'b01101111; //9
default: SEGMENT <= 8'b10111111;
endcase
end
endcase
end
else begin
case (mode)
ANODE_MOD: begin
COM <= 1'b1;
SEGMENT <= 8'b01111111;
end
CATHODE_MOD: begin
COM <= 1'b0;
SEGMENT <= 8'b10000000;
end
endcase
end
end
endmodule
`timescale 1ns/1ps
module FND_Contoller_tb;
reg [3:0] DATA;
reg ENABLE, AC_SEL;
wire COM;
wire [7:0] SEGMENT;
FND_Contoller fnd1(DATA, ENABLE, AC_SEL, COM, SEGMENT);
initial begin
#10 DATA <= 4'b0110;
#10 ENABLE <= 1'b1;
#10 AC_SEL <= 1'b1;
#10 DATA <= 4'b0011;
#10 AC_SEL <= 1'b0;
#10 ENABLE <= 1'b0;
#10 DATA <= 4'b101;
#10 ENABLE <= 1'b1;
#10 $finish;
end
endmodule
양방향 FND 사용 가능합니다.