Line 34... |
Line 34... |
//
|
//
|
// Modules contained in this file:
|
// Modules contained in this file:
|
// 1. WR_ALINGER alignes write data to cache and external devices
|
// 1. WR_ALINGER alignes write data to cache and external devices
|
// 2. RD_ALINGER alignes read data for the data path
|
// 2. RD_ALINGER alignes read data for the data path
|
//
|
//
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
//
|
//
|
// 1. WR_ALINGER alignes write data to cache and external devices
|
// 1. WR_ALINGER alignes write data to cache and external devices
|
//
|
//
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
module WR_ALIGNER ( PACKET, DP_Q, SIZE, WRDATA, ENBYTE );
|
module WR_ALIGNER ( PACKET, DP_Q, SIZE, WRDATA, ENBYTE );
|
|
|
input [3:0] PACKET; // [3:2] Paketnumber , [1:0] Startaddress
|
input [3:0] PACKET; // [3:2] Paketnumber , [1:0] Startaddress
|
input [63:0] DP_Q;
|
input [63:0] DP_Q;
|
input [1:0] SIZE;
|
input [1:0] SIZE;
|
Line 165... |
Line 165... |
6'b10_1x_11 : ENBYTE = 4'b0111;
|
6'b10_1x_11 : ENBYTE = 4'b0111;
|
endcase
|
endcase
|
|
|
endmodule
|
endmodule
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
//
|
//
|
// 2. RD_ALINGER alignes read data for the data path
|
// 2. RD_ALINGER alignes read data for the data path
|
//
|
//
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
module RD_ALIGNER ( BCLK, ACC_OK, PACKET, SIZE, REG_OUT, RDDATA, CA_HIT, DP_DI, AUX_QW );
|
module RD_ALIGNER ( BCLK, ACC_OK, PACKET, SIZE, REG_OUT, RDDATA, CA_HIT, DP_DI, AUX_QW );
|
|
|
input BCLK;
|
input BCLK;
|
input ACC_OK;
|
input ACC_OK;
|
input [3:0] PACKET; // [3:2] Paketnumber , [1:0] Startaddress
|
input [3:0] PACKET; // [3:2] Paketnumber , [1:0] Startaddress
|
Line 194... |
Line 194... |
// Not aligned QWORD : ADR[1:0] = 3 i.e.
|
// Not aligned QWORD : ADR[1:0] = 3 i.e.
|
// Bytes to datapath : . - . - 4 - 4
|
// Bytes to datapath : . - . - 4 - 4
|
// Bytes from memory : 1 - 4 - 3 - .
|
// Bytes from memory : 1 - 4 - 3 - .
|
// ACC_DONE : _______/----\__
|
// ACC_DONE : _______/----\__
|
// + 1 cycle ____/--
|
// + 1 cycle ____/--
|
// at the end 2 cycles lost. ACC_DONE informs the Op-Dec that data is available and sent one clock c
|
// at the end 2 cycles lost. ACC_DONE informs the Op-Dec that data is available and sent one clock cycle later
|
// the LSD of QWORD access. (ACC_DONE -> REG_OUT is happening in ADDR_UNIT.)
|
// the LSD of QWORD access. (ACC_DONE -> REG_OUT is happening in ADDR_UNIT.)
|
//
|
//
|
// SIZE PACKET ADR : Output data ACC_OK
|
// SIZE PACKET ADR : Output data ACC_OK
|
// 00 -- 00 x x x B0 Byte 1
|
// 00 -- 00 x x x B0 Byte 1
|
// 00 -- 01 x x x B1 1
|
// 00 -- 01 x x x B1 1
|