`timescale 1ns / 1ps
|
`timescale 1ns / 1ps
|
`include "aDefinitions.v"
|
`include "aDefinitions.v"
|
|
|
|
|
//-----------------------------------------------------------
|
//-----------------------------------------------------------
|
module INCREMENT # ( parameter SIZE=`WIDTH )
|
module INCREMENT # ( parameter SIZE=`WIDTH )
|
(
|
(
|
input wire Clock,
|
input wire Clock,
|
input wire Reset,
|
input wire Reset,
|
input wire[SIZE-1:0] A,
|
input wire[SIZE-1:0] A,
|
output reg [SIZE-1:0] R
|
output reg [SIZE-1:0] R
|
);
|
);
|
always @ (posedge Clock)
|
always @ (posedge Clock)
|
begin
|
begin
|
R = A + 1;
|
R = A + 1;
|
end
|
end
|
|
|
|
|
endmodule
|
endmodule
|
//-----------------------------------------------------------
|
//-----------------------------------------------------------
|
module FixedAddSub
|
module FixedAddSub
|
(
|
(
|
input wire Clock,
|
input wire Clock,
|
input wire Reset,
|
input wire Reset,
|
input wire[`LONG_WIDTH-1:0] A,
|
input wire [`LONG_WIDTH-1:0] A,
|
input wire[`LONG_WIDTH-1:0] B,
|
input wire [`LONG_WIDTH-1:0] B,
|
output wire [`LONG_WIDTH-1:0] R,
|
output wire [`LONG_WIDTH-1:0] R,
|
input wire iOperation,
|
input wire iOperation,
|
input wire iInputReady, //Is the input data valid?
|
input wire iInputReady, //Is the input data valid?
|
output wire OutputReady //Our output data is ready!
|
output wire OutputReady //Our output data is ready!
|
);
|
);
|
|
|
reg MyOutputReady = 0;
|
reg MyOutputReady = 0;
|
|
|
wire [`LONG_WIDTH-1:0] wB;
|
wire [`LONG_WIDTH-1:0] wB;
|
|
|
assign wB = ( iOperation ) ? ~B + 1'b1 : B;
|
assign wB = ( iOperation ) ? ~B + 1'b1 : B;
|
|
|
//Output ready just take 1 cycle
|
//Output ready just take 1 cycle
|
//assign OutputReady = iInputReady;
|
//assign OutputReady = iInputReady;
|
|
|
FFD_POSEDGE_SYNCRONOUS_RESET #(1) FFOutputReadyDelay2
|
FFD_POSEDGE_SYNCRONOUS_RESET #(1) FFOutputReadyDelay2
|
(
|
(
|
.Clock( Clock ),
|
.Clock( Clock ),
|
.Reset( Reset ),
|
.Reset( Reset ),
|
.Enable(1'b1 ),
|
.Enable(1'b1 ),
|
.D( iInputReady ),
|
.D( iInputReady ),
|
.Q( OutputReady )
|
.Q( OutputReady )
|
);
|
);
|
|
|
|
|
assign R = ( A + wB );
|
assign R = ( A + wB );
|
|
|
|
|