(편집 됨) 나는 Verilog 산술 프로젝트에서 일하고 있는데, 나는 이것이 문제라고 가정하고 부호 연장 부분에 걸렸다. 나는 4 비트 입력 A, B를 가지고 있고 8 비트 출력을 가져야한다. 일부 프로세스 (합계, 하위 ...) 8 비트 출력을 만들기 위해 부호 확장을 사용해야합니다. 산수의 경우,이 코드를 가지고 있습니다. 이것은 코드의 절반입니다. 그냥 긴 사촌 난 ..Verilog에서 산술 만들기 (부호 확장) 편집
module arithmetic(A, B, AN0, DP, sum, sub, mult, div, comp, shiftLeft,
shiftRight, signExtend);
input signed [3:0] A, B;
output [7:0] sum, sub, mult, div, comp, shiftLeft, shiftRight,
signExtend;
output AN0, DP;
//sum
reg [4:0] qsum;
[email protected] (A, B)
qsum = A+B;
assign sum = {{3{qsum[4]}},qsum};
//sub
reg [4:0] qsub;
[email protected] (A, B)
qsub = A-B;
assign sub = {{3{qsub[4]}},qsub};
//mult
reg [7:0] qmult;
[email protected] (A, B)
qmult = A * B;
assign mult = qmult;
를 절반 부분을 포함하지 않았고, 난 내 시뮬레이션을 선택하면, 어떤 값 있지만, Z, 및 X가 없습니다. 입력 값이 표시되지 않습니다. 왜 그런 일이 일어나는거야 ?? 감사합니다.
(편집 됨) 이것은 테스트 벤치 코드입니다. lap3_top 파일은 여기 8 개 연산 (합, 분할, 비교기 shiftleft, shiftright, 부호 확장, 빼기, 곱하기)
module lap3_top_tb();
reg signed [3:0] A, B;
reg [2:0] Operation;
wire [7:0] Result;
wire DP, AN0;
lab3_top ulap3_top(
.A(A),
.B(B),
.Operation(Operation),
.Result(Result),
.DP(DP),
.AN0(AN0)
);
initial begin
A = 6; B = 7; Operation = 0;
#20;
A = -6; B = -7; Operation = 0;
#20;
A = 6; B = 7; Operation = 1;
#20;
A = -6; B = -7; Operation = 1;
#20;
A = 6; B = 7; Operation = 2;
#20;
A = -6; B = 7; Operation = 2;
#20;
A = 7; B = 4; Operation = 3;
#20;
A = 7; B = 0; Operation = 3;
#20;
A = 6; B = 7; Operation = 4;
#20;
A = -6; B = -7; Operation = 4;
#20;
A = 1; B = 6; Operation = 5;
#20;
A = 1; B = -6; Operation = 5;
#20;
A = 1; B = 6; Operation = 6;
#20;
A = 1; B = -6; Operation = 6;
#20;
A = 6; B = 0; Operation = 7;
#20;
A = -5; B = 0; Operation = 7;
#20;
end
endmodule
있다.
module lap3_top(A, B, Operation, Result, AN0, DP);
input signed [3:0] A, B;
input [2:0] Operation;
output AN0, DP;
output [7:0] Result;
wire a, b, c, d, e, f, g, h;
arithmetic uarithmetic(
.A(A),
.B(B),
.AN0(AN0),
.DP(DP),
.sum(a),
.sub(b),
.mult(c),
.div(d),
.comp(e),
.shiftLeft(f),
.shiftRight(g),
.signExtend(h)
);
mux_8_1 umux8_1(
.A(a),
.B(b),
.C(c),
.D(d),
.E(e),
.F(f),
.G(g),
.H(h),
.Operation(Operation),
.Result(Result)
);
endmodule
당신에게 너무 많은 사람을 감사 (mux_8_1 당신이 코드를 필요로하는 경우, 알려주세요. 결과 통해 출력 밖으로을 선택할 것입니다!하지만 난 먹스가 잘 작동 생각)!
Hello Jake, 테스트 벤치 코드를 공유 할 수 있습니까? –
'testbench'에서'sum' 모듈까지의 모든 연결을 보여주는'lab3_top' 모듈을 게시 할 수 있습니까? – Roman