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/verilog
    from Rev 176 to Rev 178
    Reverse comparison

Rev 176 → Rev 178

/t6507lp_alu.v
130,10 → 130,15
begin
alu_status <= STATUS;
end
PHA_IMP :
begin
PHA_IMP, STA_ZPG, STA_ZPX, STA_ABS, STA_ABX, STA_ABY, STA_IDX, STA_IDY : begin
alu_result <= result;
end
STX_ZPG, STX_ZPY, STX_ABS : begin
alu_x <= result;
end
STY_ZPG, STY_ZPX, STY_ABS : begin
alu_y <= result;
end
SEC_IMP :
begin
alu_status[C] <= 1;
412,11 → 417,9
 
// SBC - Subtract with Carry
SBC_IMM, SBC_ZPG, SBC_ZPX, SBC_ABS, SBC_ABX, SBC_ABY, SBC_IDX, SBC_IDY : begin
op2 = ~alu_a;
if (alu_status[D] == 1) begin
bcdl = op1[3:0] + op2[3:0] + alu_status[C];
bcdh = op1[7:4] + op2[7:4];
bcdl = op1[3:0] - op2[3:0] - (1 - alu_status[C]);
bcdh = op1[7:4] - op2[7:4];
if (bcdl > 9) begin
bcdh = bcdh + bcdl[5:4];
bcdl = bcdl % 10;
428,7 → 431,8
result = {bcdh[3:0],bcdl[3:0]};
end
else begin
{C_aux,result} = op1 + op2 + alu_status[C];
op2 = ~alu_a;
result = op1 + op2 + alu_status[C];
STATUS[C] = ~result[7];
end
/t6507lp_alu_tb.v
270,7 → 270,8
begin
alu_a = i;
@(negedge clk);
alu_x_expected = i;
alu_x_expected = alu_a;
$display("alu_x_expected = %h", alu_x_expected);
//alu_result_expected = i;
alu_status_expected[Z] = (alu_x_expected == 0) ? 1 : 0;
alu_status_expected[N] = alu_x_expected[7];
286,7 → 287,8
begin
alu_a = i;
@(negedge clk);
alu_y_expected = i;
alu_y_expected = alu_a;
$display("alu_y_expected = %h", alu_y_expected);
//alu_result_expected = i;
alu_status_expected[Z] = (alu_y_expected == 0) ? 1 : 0;
alu_status_expected[N] = alu_y_expected[7];
305,6 → 307,8
//$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);
//alu_result_expected = alu_a;
//alu_result_expected = DUT.A;
check;
end
 
314,8 → 318,9
begin
alu_a = i;
@(negedge clk);
$display("alu_x_expected = %h", alu_x_expected);
//alu_result_expected = i;
//alu_x_expected = i;
//alu_x_expected = alu_a;
//$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);
328,8 → 333,9
begin
alu_a = i;
@(negedge clk);
$display("alu_y_expected = %h", alu_y_expected);
//alu_result_expected = i;
//alu_y_expected = i;
//alu_y_expected = alu_a;
//$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);
557,7 → 563,26
alu_status_expected[I] = alu_a[I];
check;
end
 
// PLP
alu_opcode = PLP_IMP;
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);
alu_status_expected[C] = alu_a[C];
alu_status_expected[Z] = alu_a[Z];
alu_status_expected[N] = alu_a[N];
alu_status_expected[V] = alu_a[V];
alu_status_expected[B] = alu_a[B];
alu_status_expected[D] = alu_a[D];
alu_status_expected[I] = alu_a[I];
check;
end
 
// PHA
alu_opcode = PHA_IMP;
@(negedge clk);
564,7 → 589,8
//$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);
alu_result_expected = DUT.A;
//alu_result_expected = DUT.A;
alu_result_expected = alu_a;
check;
 
// PHP

powered by: WebSVN 2.1.0

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