velilog BCD adder 질문있습니다!!
-
게시물 수정 , 삭제는 로그인 필요
velilog BCD adder 질문있습니다!!
제공해주신 코드에서 몇 가지 오류를 발견했습니다. 다음은 수정이 필요한 부분입니다:
invalid 신호 정의: invalid 신호가 사용되지만, 해당 부분이 모듈에서 정의되어 있지 않습니다.
따라서 assign invalid = A > 9 || B > 9;를 추가해야 합니다.
S 출력 신호 정의: S는 세그먼트 디스플레이에 표시될 값으로, 현재 코드에서는 정의되어 있지 않습니다. 따라서 assign S = sum_b[3:0] + ((Cout==1)? 6 : 0);를 수정하여 올바른 값으로 할당해야 합니다.
seg_data 출력 신호 정의: 현재 코드에서는 dec(bcd_in)과 같이 정의되어 있는데,
이 부분을 수정하여 올바른 값을 할당해야 합니다.
함수 내부 변수명 오류: 함수 내부에 있는 변수명인 [3:0]sum_b가 중복되고 있으며,
이 부분을 [3:0] input_sum_b로 수정하거나 다른 이름으로 변경해야 합니다.
아래는 수정된 코드 예시입니다:
verilog
module p3_BCDadder
( input [3:0] A, B,
output Cout, output [0:6] seg_data );
wire [4:0] sum_b;
assign invalid = A > 9 || B > 9;
assign sum_b = A + B;
assign Cout = (sum_b > 9) ? 1 : 0;
assign S = sum_b[3:0];
assign seg_data = dec(S);
function [6:0] dec;
input [3:0] bcd_in;
begin case(bcd_in)
4'd0 : dec = 7'b111_1110; // 숫자 "0"에 대한 세그먼트 표현
// 나머지 숫자들에 대한 세그먼트 표현 추가
// ... default : dec = 7'b000_000; // 기본적으로 "000000"으로 설정 (오류 처리 등)
endcase
end
endfunction
endmodule
위의 예시 코드에서 주석 처리된 부분은 숫자 "1"부터 "9"까지에 대한 세그먼트 표현을
추가하는 것입니다.
필요한 경우 해당 부분을 완성하여 각 숫자에 맞는 세그먼트 표현을 할당하면 됩니다.
추가로, 모듈 내부에 사용된 "_"(언더스코어) 기호도 "_"(언더스코어) 대신 "-"(대시) 기호로
변경할 수도 있습니다.
한 자리 10진수(BCD) 2개를 입력하면 십진수 덧셈연산을 하는 BCD adder를... 아래는 수정된 코드 예시입니다: verilog module p3_BCDadder ( input [3:0] A, B...