///////////////////////////////////////////////////////////
reg [ 1:0] rd,wr;
reg [15:0] dsp_data_out;
assign DSP_D = (DSP_WE && !DSP_RD) ? dsp_data_out:16'hzzzz;
// Below is the communication with DSP.
//
always @( posedge DSP_CLKOUT)
begin
// help to find the time of falling or rising edge.
{rd[1],rd[0]} = {rd[0],DSP_RD};
{wr[1],wr[0]} = {wr[0],DSP_WE};
if(!XZCS0)begin
if( rd == 'b10 ) // read
case( DSP_A )
/* axis1 */
`AXIS1_BASE + `FFRP_ADDR: dsp_data_out <= ffrp;
`AXIS1_BASE + `FFWP_ADDR: dsp_data_out <= ffwp[1];
default: dsp_data_out <= DSP_A;
endcase
else if ( wr == 'b01 ) // write
case( DSP_A )
/* axis1 */
`AXIS1_BASE + `FFWP_ADDR: if( EALLOW == 'b1 ) ffwp[1] <= DSP_D; // EALLOW protected.
default: ;
endcase
end// if(!XZCS0)begin
end

