URL
https://opencores.org/ocsvn/t6507lp/t6507lp/trunk
[/] [t6507lp/] [trunk/] [rtl/] [verilog/] [t6507lp_alu.v] - Diff between revs 163 and 164
Go to most recent revision |
Show entire file |
Details |
Blame |
View Log
Rev 163 |
Rev 164 |
Line 66... |
Line 66... |
reg [7:0] result;
|
reg [7:0] result;
|
reg [7:0] op1;
|
reg [7:0] op1;
|
reg [7:0] op2;
|
reg [7:0] op2;
|
reg [7:0] bcdl;
|
reg [7:0] bcdl;
|
reg [7:0] bcdh;
|
reg [7:0] bcdh;
|
|
reg [7:0] bcdh2;
|
|
reg [7:0] AL;
|
|
reg [7:0] AH;
|
|
|
`include "t6507lp_package.v"
|
`include "t6507lp_package.v"
|
|
|
always @ (posedge clk or negedge reset_n)
|
always @ (posedge clk or negedge reset_n)
|
begin
|
begin
|
Line 319... |
Line 321... |
|
|
// ADC - Add with carry
|
// ADC - Add with carry
|
// TODO: verify synthesis for % operand
|
// TODO: verify synthesis for % operand
|
ADC_IMM, ADC_ZPG, ADC_ZPX, ADC_ABS, ADC_ABX, ADC_ABY, ADC_IDX, ADC_IDY : begin
|
ADC_IMM, ADC_ZPG, ADC_ZPX, ADC_ABS, ADC_ABX, ADC_ABY, ADC_IDX, ADC_IDY : begin
|
if (alu_status[D] == 1) begin
|
if (alu_status[D] == 1) begin
|
bcdl = A[3:0] + alu_a[3:0] + alu_status[C];
|
AL = A[3:0] + alu_a[3:0] + alu_status[C];
|
bcdh = A[7:4] + alu_a[7:4];
|
AH = A[7:4] + alu_a[7:4];
|
if (bcdl > 9) begin
|
if (AL > 9) begin
|
bcdh = bcdh + bcdl[5:4];
|
bcdh = AH + (AL / 10);
|
bcdl = bcdl % 10;
|
bcdl = AL % 10;
|
end
|
end
|
if (bcdh > 9) begin
|
if (AH > 9) begin
|
STATUS[C] = 1;
|
STATUS[C] = 1;
|
bcdh = bcdh % 10;
|
bcdh2 = bcdh % 10;
|
end
|
end
|
result = {bcdh[3:0],bcdl[3:0]};
|
result = {bcdh2[3:0],bcdl[3:0]};
|
end
|
end
|
else
|
else
|
{STATUS[C],result} = op1 + op2 + alu_status[C];
|
{STATUS[C],result} = op1 + op2 + alu_status[C];
|
|
|
if ((op1[7] == op2[7]) && (op1[7] != result[7]))
|
if ((op1[7] == op2[7]) && (op1[7] != result[7]))
|
© copyright 1999-2025
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.