OpenCores
URL https://opencores.org/ocsvn/t6507lp/t6507lp/trunk

Subversion Repositories t6507lp

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /t6507lp/trunk/rtl
    from Rev 154 to Rev 156
    Reverse comparison

Rev 154 → Rev 156

/verilog/t6507lp_alu.v
327,6 → 327,8
STATUS[V] = 1;
else
STATUS[V] = 0;
$display("op1 + op2 + C = result + C (V)");
$display("%d + %d + %b = %d + %b (%b)", op1, op2, alu_status[C],result,STATUS[C],STATUS[V]);
 
if (alu_status[D] == 1) begin
if (result[3:0] > 9) begin
352,7 → 354,9
 
// EOR - Exclusive OR
EOR_IMM, EOR_ZPG, EOR_ZPX, EOR_ABS, EOR_ABX, EOR_ABY, EOR_IDX, EOR_IDY : begin
result = A ^ alu_a ;
result = A ^ alu_a;
$display("op1 ^ op2 = result");
$display("%d ^ %d = %d", op1, op2, result);
end
 
// LDA - Load Accumulator
/verilog/t6507lp_alu_tb.v
21,6 → 21,7
 
reg c_aux;
reg [7:0] temp;
reg sign;
 
t6507lp_alu DUT (
.clk (clk),
96,10 → 97,11
//$display("i = %d alu_opcode = %h alu_enable = %d", i, alu_opcode, alu_enable);
//$display("DUT.A = %h DUT.X = %h DUT.Y = %h", DUT.A, DUT.X, DUT.Y);
//$display("op1 = %d op2 = %d c = %d d = %d n = %d v = %d result = %d", alu_a, DUT.A, alu_status[C], alu_status[D], alu_status[N], alu_status[V], DUT.result);
sign = alu_result_expected[7];
{alu_status_expected[C], alu_result_expected} = alu_a + alu_result_expected + alu_status_expected[C];
alu_status_expected[Z] = (alu_result_expected == 0) ? 1 : 0;
alu_status_expected[N] = alu_result_expected[7];
alu_status_expected[V] = ((alu_a[7] == DUT.A[7]) && (alu_a[7] != alu_result_expected[7]));
alu_status_expected[V] = ((alu_a[7] == sign) && (alu_a[7] != alu_result_expected[7]));
check();
end
 
119,6 → 121,35
end
 
// LDA
alu_a = 137;
alu_opcode = LDA_IMM;
//$display("i = %d alu_opcode = %h alu_enable = %d", i, alu_opcode, alu_enable);
//$display("op1 = %d op2 = %d c = %d d = %d n = %d v = %d result = %d", alu_a, DUT.A, alu_status[C], alu_status[D], alu_status[N], alu_status[V], alu_result);
@(negedge clk);
alu_result_expected = 8'd137;
// NV1BDIZC
alu_status_expected[Z] = (alu_result_expected == 0) ? 1 : 0;
alu_status_expected[N] = alu_result_expected[7];
check();
// EOR
alu_opcode = EOR_IMM;
for (i = 0; i < 1000; i = i + 1)
begin
alu_a = i;
@(negedge clk);
//$display("i = %d alu_opcode = %h alu_enable = %d", i, alu_opcode, alu_enable);
//$display("DUT.A = %h DUT.X = %h DUT.Y = %h", DUT.A, DUT.X, DUT.Y);
//$display("op1 = %d op2 = %d c = %d d = %d n = %d v = %d result = %d", alu_a, DUT.A, alu_status[C], alu_status[D], alu_status[N], alu_status[V], alu_result);
$display("result_expected = %d",alu_result_expected);
alu_result_expected = alu_a ^ alu_result_expected;
alu_status_expected[Z] = (alu_result_expected == 0) ? 1 : 0;
alu_status_expected[N] = alu_result_expected[7];
$display("result_expected = %d", alu_result_expected);
check();
end
 
// LDA
alu_a = 0;
alu_opcode = LDA_IMM;
//$display("i = %d alu_opcode = %h alu_enable = %d", i, alu_opcode, alu_enable);
139,10 → 170,11
//$display("i = %d alu_opcode = %h alu_enable = %d", i, alu_opcode, alu_enable);
//$display("DUT.A = %h DUT.X = %h DUT.Y = %h", DUT.A, DUT.X, DUT.Y);
//$display("op1 = %d op2 = %d c = %d d = %d n = %d v = %d result = %d", alu_a, DUT.A, alu_status[C], alu_status[D], alu_status[N], alu_status[V], alu_result);
sign = alu_result_expected[7];
{alu_status_expected[C], alu_result_expected} = alu_result_expected - alu_a - ~alu_status_expected[C];
alu_status_expected[Z] = (alu_result_expected == 0) ? 1 : 0;
alu_status_expected[N] = alu_result_expected[7];
alu_status_expected[V] = ((alu_a[7] == DUT.A[7]) && (alu_a[7] != alu_result_expected[7]));
alu_status_expected[V] = ((alu_a[7] == sign) && (alu_a[7] != alu_result_expected[7]));
check();
end
 
294,7 → 326,7
begin
alu_a = i;
@(negedge clk);
alu_result_expected = i & alu_result_expected;
alu_result_expected = alu_a & alu_result_expected;
alu_status_expected[Z] = (alu_result_expected == 0) ? 1 : 0;
alu_status_expected[N] = alu_result_expected[7];
//$display("i = %d alu_opcode = %h alu_enable = %d", i, alu_opcode, alu_enable);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.