8203CB [EXAR]
Telecom Circuit, 1-Func, PBGA196, 15 X 15 MM, 1 MM PITCH, BGA-196;型号: | 8203CB |
厂家: | EXAR CORPORATION |
描述: | Telecom Circuit, 1-Func, PBGA196, 15 X 15 MM, 1 MM PITCH, BGA-196 电信 电信集成电路 |
文件: | 总286页 (文件大小:2077K) |
中文: | 中文翻译 | 下载: | 下载PDF数据表文档文件 |
820x
Acceleration Processor
Data Sheet
Hifn Confidential
®
DS-0157-D, © April 1, 2010, Hi/fn , Inc. All rights reserved. 04/10
No part of this publication may be reproduced, transmitted, transcribed, stored in a retrieval system, or
translated into any language in any form by any means without the written permission of Hi/fn, Inc. (“Hifn”)
Licensing and Government Use
Any Hifn software (“Licensed Programs”) described in this document is furnished under a license and may be
used and copied only in accordance with the terms of such license and with the inclusion of this copyright
notice. Distribution of this document or any copies thereof and the ability to transfer title or ownership of this
document’s contents are subject to the terms of such license.
Such Licensed Programs and their documentation have been developed at private expense and no part of such
Licensed Programs is in the public domain. Use, duplication, disclosure, and acquisition by the U.S.
Government of such Licensed Programs is subject to the terms and definitions of their applicable license.
Disclaimer
Hifn reserves the right to make changes to its products, including the contents of this document, or to
discontinue any product or service without notice. Hifn advises its customers to obtain the latest version of
relevant information to verify, before placing orders, that information being relied upon is current. Every
effort has been made to keep the information in this document current and accurate as of the date of this
document’s publication or revision.
Hifn warrants performance of its products to the specifications applicable at the time of sale in accordance
with Hifn's standard warranty or the warranty provisions specified in any applicable license. Testing and other
quality control techniques are utilized to the extent Hifn deems necessary to support such warranty. Specific
testing of all parameters, with the exception of those mandated by government requirements, of each product
is not necessarily performed.
Certain applications using Hifn products may involve potential risks of death, personal injury, or severe
property or environmental damage (“Critical Applications”). Hifn products are not designed, intended,
authorized, or warranted to be suitable for use in life saving, or life support applications, devices or systems
or other critical applications. Inclusion of Hifn products in such critical applications is understood to be fully at
the risk of the customer. Questions concerning potential risk applications should be directed to Hifn through a
local sales office.
In order to minimize risks associated with the customer's applications, adequate design and operating
safeguards should be provided by the customer to minimize inherent or procedural hazards. “Typical”
parameters can and do vary in different applications. All operating parameters, including “Typicals,” should be
validated for each customer application by the customer’s technical experts.
Hifn does not warrant that its products are free from infringement of any patents, copyrights or other
proprietary rights of third parties. In no event shall Hifn be liable for any special, incidental or consequential
damages arising from infringement or alleged infringement of any patents, copyright, or other third party
intellectual property rights.
The use of this product in stateful compression protocols (for example, PPP or multi-history applications) with
certain configurations may require a license from Motorola. In such cases, a license agreement for the right to
use Motorola patents may be obtained through Hifn or directly from Motorola.
Patents
May include one or more of the following United States patents: 4,701,745; 5,003,307; 5,016,009;
5,126,739; 5,146,221; 5,414,425; 5,463,390; 5,506,580; and 5,5532,694. Other patents pending.
Trademarks
®
®
®
®
TM
Hi/fn , MeterFlow , MeterWorks , and LZS , are registered trademarks of Hi/fn, Inc. Hifn
,
TM
FlowThrough , and the Hifn logo are trademarks of Hi/fn, Inc. All other trademarks and trade names are the
property of their respective holders.
IBM, IBM Logo, and IBM PowerPC are trademarks of International Business Machines Corporation in the United
States, or other countries.
Microsoft, Windows, Windows NT and the Windows logo are trademarks of Microsoft Corporation in the United
States, and/or other countries.
Exporting
This product may only be exported from the United States in accordance with applicable Export Administration
Regulations. Diversion contrary to United States laws is prohibited.
Hifn Confidential
If you have signed a Hifn Confidential Disclosure Agreement that includes this document as part of its subject
matter, please use this document in accordance with the terms of the agreement. If not, please destroy the
document.
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page 2
Table of Contents
List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1 Product Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.1
Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
1.1.1
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.7
High Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Flexible Design for Packet Processing . . . . . . . . . . . . . . . . . . . .
Engine Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Command and Data Endian Conversion Modes . . . . . . . . . . . . . .
DMA Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Integrity Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Other features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
21
21
22
22
22
22
1.2
Ordering Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
2 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1
Data Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
2.1.1
2.1.2
2.1.3
ECC & Parity Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CRC Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Real Time Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
27
27
2.1.3.1 Compression Engine Real Time Verification . . . . . . . . . . . . . . 28
2.1.3.2 Encryption Engine Real Time Verification . . . . . . . . . . . . . . . . 29
2.1.3.3 Hash Engine Real Time Verification . . . . . . . . . . . . . . . . . . . . 30
2.1.4
2.1.5
Data Integrity Model for Encode Operations . . . . . . . . . . . . . . . .
Data Integrity Model for Decode Operations. . . . . . . . . . . . . . . .
31
33
2.2
Clock Domains. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
820x – Data Sheet, DS-0157-D
Page3
Hifn Confidential
2.3
Clock Gating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
3 Data Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.1
Command Pointer Ring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
3.1.1
3.1.2
Command Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Command Descriptor Format . . . . . . . . . . . . . . . . . . . . . . . . . .
39
41
3.1.2.1 Desc_result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1.2.2 Desc_cmd_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.2.3 Desc_cmd_cmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1.2.4 Desc_cmd_enc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.1.2.5 Desc_cmd_hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.1.2.6 Desc_cmd_pad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.1.2.7 Desc_srcX and Desc_dstX . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.1.3
Command Structure Conventions . . . . . . . . . . . . . . . . . . . . . . .
67
3.1.3.1 Initial Hash engine Value (IHV) . . . . . . . . . . . . . . . . . . . . . . 67
3.1.3.2 MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.1.3.3 Initialization Vector (IV) and Additional Authenticated Data (AAD)
71
3.1.3.4 Key Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.1.3.5 Data Stream Information Fields . . . . . . . . . . . . . . . . . . . . . . 76
3.1.3.6 Hash Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.1.3.7 IPAD & OPAD for HMAC & SSL3.0-MAC (SHA256 | MD5) . . . . . 79
3.1.3.8 AES-GCM and GMAC Operations . . . . . . . . . . . . . . . . . . . . . . 80
3.1.3.9 MAC Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.1.3.10 IPsec Packet Processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.1.4
Free Pool Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
3.2
3.3
Result Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
Command Operation Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
4 Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.1
Encode Operations Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98
4.1.1
4.1.2
4.1.3
4.1.4
Hash Engine before Compression Engine . . . . . . . . . . . . . . . . . .
Hash Engine after Compression Engine . . . . . . . . . . . . . . . . . . .
Hash Engine after Pad Engine. . . . . . . . . . . . . . . . . . . . . . . . .
Hash Engine after Encryption Engine. . . . . . . . . . . . . . . . . . . .
98
99
100
101
820x – Data Sheet, DS-0157-D
Page4
Hifn Confidential
4.2
Decode Operations Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.2.1
4.2.2
4.2.3
4.2.4
Hash Engine before Encryption Engine. . . . . . . . . . . . . . . . . . .
Hash Engine after Encryption Engine. . . . . . . . . . . . . . . . . . . .
Hash Engine after Pad Engine. . . . . . . . . . . . . . . . . . . . . . . . .
Hash Engine after Compression Engine . . . . . . . . . . . . . . . . . .
102
103
104
105
5 Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.1
DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.1.1
5.1.2
5.1.3
5.1.4
5.1.5
5.1.6
PCIe Outbound Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PCIe Inbound Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Command Pointer Ring Prefetch . . . . . . . . . . . . . . . . . . . . . . .
Read Request Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Write Request Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Completion Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
107
107
107
108
109
109
5.2
5.3
Configuration Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Channel Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.3.1
5.3.2
5.3.3
5.3.4
5.3.5
Channel Manager Inbound Data Controller. . . . . . . . . . . . . . . .
Channel Manager Source Buffer . . . . . . . . . . . . . . . . . . . . . . .
Channel Manager Outbound Data Controller. . . . . . . . . . . . . . .
Channel Manager Result Buffer. . . . . . . . . . . . . . . . . . . . . . . .
Channel Manager Data Process Controller . . . . . . . . . . . . . . . .
110
111
111
112
112
5.4
PKP Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
PKP Inbound Data Controller . . . . . . . . . . . . . . . . . . . . . . . . .
PKP Source Buffer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PKP Outbound Data Controller . . . . . . . . . . . . . . . . . . . . . . . .
PKP Result Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PKP Interface Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PKP Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
113
113
113
114
114
114
5.5
5.6
RNG Engine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Hash Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.6.1
5.6.2
5.6.3
5.6.4
Hash In_AFIFO & Out_AFIFO . . . . . . . . . . . . . . . . . . . . . . . . .
Hash_AFIFO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hash Interface Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hash Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
115
115
115
116
820x – Data Sheet, DS-0157-D
Page5
Hifn Confidential
5.6.4.1 Hash Core Operation Modes. . . . . . . . . . . . . . . . . . . . . . . . 116
5.6.4.2 Hash Core Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.7
5.8
5.9
LZS Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.7.1
5.7.2
5.7.3
LZS In_AFIFO & Out_AFIFO . . . . . . . . . . . . . . . . . . . . . . . . . .
LZS Core Interface Controller. . . . . . . . . . . . . . . . . . . . . . . . .
LZS Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
122
122
122
GZIP Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.8.1
5.8.2
5.8.3
GZIP In_AFIFO & Out_AFIFO . . . . . . . . . . . . . . . . . . . . . . . . .
GZIP Core Interface Controller . . . . . . . . . . . . . . . . . . . . . . . .
GZIP Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
123
123
124
Pad Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.10 Encryption Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.10.1 Encryption In_AFIFO & Out_AFIFO . . . . . . . . . . . . . . . . . . . . .
5.10.2 Encryption Interface Controller. . . . . . . . . . . . . . . . . . . . . . . .
5.10.3 Encryption AES and 3DES Cores . . . . . . . . . . . . . . . . . . . . . . .
125
125
125
5.11 Clock and Reset Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.12 Temperature Sensor Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
6 Register Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.1
Configuration Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.1.1
6.1.2
6.1.3
6.1.4
6.1.5
6.1.6
6.1.7
Status Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
820x Error Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
820x Interrupt Status Register. . . . . . . . . . . . . . . . . . . . . . . .
820x Interrupt Enable Register. . . . . . . . . . . . . . . . . . . . . . . .
Soft Reset Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Device Minor Revision Register. . . . . . . . . . . . . . . . . . . . . . . .
Card Version Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
130
131
133
135
137
138
139
6.2
DMA Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.2.1
6.2.2
6.2.3
6.2.4
6.2.5
6.2.6
Command Pointer Ring 0 Base Address Register. . . . . . . . . . . .
Command Pointer Ring 0 Write Pointer Register . . . . . . . . . . . .
Command Pointer Ring 0 Read Pointer Register . . . . . . . . . . . .
Command Pointer Ring 1 Base Address Register. . . . . . . . . . . .
Command Pointer Ring 1 Write Pointer Register . . . . . . . . . . . .
Command Pointer Ring 1 Read Pointer Register . . . . . . . . . . . .
140
141
141
142
143
143
820x – Data Sheet, DS-0157-D
Page6
Hifn Confidential
6.2.7
6.2.8
6.2.9
Result Ring 0 Base Address Register . . . . . . . . . . . . . . . . . . . .
Result Ring 0 Write Pointer Register . . . . . . . . . . . . . . . . . . . .
Result Ring 1 Base Address Register . . . . . . . . . . . . . . . . . . . .
144
144
145
145
146
147
147
148
151
155
6.2.10 Result Ring 1 Write Pointer Register . . . . . . . . . . . . . . . . . . . .
6.2.11 Free Pool Ring Base Address Register . . . . . . . . . . . . . . . . . . .
6.2.12 Free Pool Write Pointer Register . . . . . . . . . . . . . . . . . . . . . . .
6.2.13 Free Pool Read Pointer Register . . . . . . . . . . . . . . . . . . . . . . .
6.2.14 DMA Configuration Register . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.15 Channel Manager 0-1 Error Status Register . . . . . . . . . . . . . . .
6.2.16 Channel Manager 0-1 Error Command Index Register . . . . . . . .
6.3
6.4
Engine Configuration Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
6.3.1 Hash Engine Mute Table Entry Registers . . . . . . . . . . . . . . . . . 156
Public Key Processor Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . .158
6.4.1
6.4.2
Public Key Enable Register. . . . . . . . . . . . . . . . . . . . . . . . . . .
Public Key Command Entry Registers . . . . . . . . . . . . . . . . . . .
158
159
6.4.2.1 Public Key Command Register Format . . . . . . . . . . . . . . . . . 161
6.4.2.2 Public Key Instruction Register Format . . . . . . . . . . . . . . . . 163
6.4.2.3 Public Key Data Register Format. . . . . . . . . . . . . . . . . . . . . 165
6.4.2.4 Public Key Result Register . . . . . . . . . . . . . . . . . . . . . . . . . 168
6.4.3
Public Key Internal Registers . . . . . . . . . . . . . . . . . . . . . . . . .
170
6.5
RNG Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
RNG Enable Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RNG Test Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RNG Interrupt Enable Register . . . . . . . . . . . . . . . . . . . . . . . .
RNG Interrupt Control/Status Register . . . . . . . . . . . . . . . . . .
RNG Buffer Control/Status Register. . . . . . . . . . . . . . . . . . . . .
RNG Buffer Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . .
RNG Configuration Register . . . . . . . . . . . . . . . . . . . . . . . . . .
171
171
172
174
176
177
178
6.6
GPIO Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
6.6.1
6.6.2
6.6.3
6.6.4
6.6.5
6.6.6
GPIO Enable Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GPIO Software Data Register . . . . . . . . . . . . . . . . . . . . . . . . .
GPIO Data Direction Register . . . . . . . . . . . . . . . . . . . . . . . . .
GPIO Interrupt Enable Register . . . . . . . . . . . . . . . . . . . . . . .
GPIO Interrupt Mask Register. . . . . . . . . . . . . . . . . . . . . . . . .
GPIO Interrupt Type Register. . . . . . . . . . . . . . . . . . . . . . . . .
179
180
180
181
182
182
820x – Data Sheet, DS-0157-D
Page7
Hifn Confidential
6.6.7
6.6.8
6.6.9
GPIO Interrupt Polarity Register . . . . . . . . . . . . . . . . . . . . . . .
GPIO Interrupt Status Register. . . . . . . . . . . . . . . . . . . . . . . .
GPIO Interrupt Raw Status Register . . . . . . . . . . . . . . . . . . . .
183
183
184
184
185
185
186
6.6.10 GPIO De-Bounce Register . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6.11 GPIO Interrupt Clear Register. . . . . . . . . . . . . . . . . . . . . . . . .
6.6.12 GPIO Interrupt Ext Register . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6.13 GPIO Interrupt Sync Register. . . . . . . . . . . . . . . . . . . . . . . . .
6.7
Serial/Parallel Interface Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187
6.7.1
6.7.2
6.7.3
6.7.4
6.7.5
6.7.6
6.7.7
6.7.8
SPI Register Operation flow . . . . . . . . . . . . . . . . . . . . . . . . . .
SPI Enable Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SPI Command Address Register . . . . . . . . . . . . . . . . . . . . . . .
SPI Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SPI Status Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SPI User Defined Register . . . . . . . . . . . . . . . . . . . . . . . . . . .
Flash Command Configuration 0 Register. . . . . . . . . . . . . . . . .
Flash Command Configuration 1 Register. . . . . . . . . . . . . . . . .
187
190
191
193
194
195
196
197
6.8
Temperature Sensor Controller Registers . . . . . . . . . . . . . . . . . . . . . . . . .198
6.8.1
6.8.2
6.8.3
TSC Address Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TSC Data Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TSC Command Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
198
198
200
7 PCIe Configuration Register Definition . . . . . . . . . . . . . . . . . . . 201
7.1
Type 0 PCIe Compatible Configuration Space . . . . . . . . . . . . . . . . . . . . . .203
7.1.1
7.1.2
7.1.3
7.1.4
7.1.5
7.1.6
7.1.7
7.1.8
7.1.9
Vendor ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Device ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Command Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Status Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Revision ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Class Code Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cache Line Size Register . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Master Latency Timer Register . . . . . . . . . . . . . . . . . . . . . . . .
Header Type Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
203
204
205
207
209
209
209
210
210
210
211
212
212
7.1.10 BIST Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.11 Base Address Register 0, 1 . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.12 Base Address Register 2-5. . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.13 Cardbus CIS Pointer Register . . . . . . . . . . . . . . . . . . . . . . . . .
820x – Data Sheet, DS-0157-D
Page8
Hifn Confidential
7.1.14 Sub-System Vendor ID Register . . . . . . . . . . . . . . . . . . . . . . .
7.1.15 Sub-System ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.16 Expansion ROM Base Address Register . . . . . . . . . . . . . . . . . .
7.1.17 Capabilities Pointer Register. . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.18 Interrupt Line Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.19 Interrupt Pin Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.20 Min_Gnt Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.21 Max_Lat Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
212
213
213
214
214
214
214
214
7.2
Power Management Capabilities Registers. . . . . . . . . . . . . . . . . . . . . . . . .215
7.2.1
7.2.2
7.2.3
7.2.4
7.2.5
7.2.6
Capability ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Next Capabilities Pointer Register . . . . . . . . . . . . . . . . . . . . . .
Power Management Capabilities Register. . . . . . . . . . . . . . . . .
Power Management Control/Status Register. . . . . . . . . . . . . . .
PMCSR-BSE Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
215
215
216
217
218
218
7.3
7.4
MSI Capability Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
Capability ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Next Capabilities Pointer Register . . . . . . . . . . . . . . . . . . . . . .
Message Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Message Address Register . . . . . . . . . . . . . . . . . . . . . . . . . . .
Message Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
219
220
221
222
222
PCI Express Capability Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223
7.4.1
7.4.2
7.4.3
7.4.4
7.4.5
7.4.6
7.4.7
7.4.8
7.4.9
Capability ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Next Capabilities Pointer Register . . . . . . . . . . . . . . . . . . . . . .
PCIe Capabilities Register . . . . . . . . . . . . . . . . . . . . . . . . . . .
Device Capabilities (DEV_CAP) Register. . . . . . . . . . . . . . . . . .
Device Control (DEV_CTL) Register. . . . . . . . . . . . . . . . . . . . .
Device Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Link Capabilities Register. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Link Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Link Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
223
224
224
225
228
230
232
233
234
7.5
Advanced Error Reporting Capability Registers . . . . . . . . . . . . . . . . . . . . .235
7.5.1
7.5.2
7.5.3
Enhanced Capability Header Register . . . . . . . . . . . . . . . . . . .
Uncorrectable Error Status Register . . . . . . . . . . . . . . . . . . . .
Uncorrectable Error Mask Register . . . . . . . . . . . . . . . . . . . . .
237
238
239
820x – Data Sheet, DS-0157-D
Page9
Hifn Confidential
7.5.4
7.5.5
7.5.6
7.5.7
Uncorrectable Error Severity Register . . . . . . . . . . . . . . . . . . .
Correctable Error Status Register . . . . . . . . . . . . . . . . . . . . . .
Correctable Error Mask Register . . . . . . . . . . . . . . . . . . . . . . .
Advanced Error Capabilities and Control Register . . . . . . . . . . .
240
241
242
243
8 Signal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
8.1
8.2
8.3
8.4
8.5
8.6
PCI Express Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Miscellaneous Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
GPIO/Probe Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Flash Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
JTAG Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Power and Ground Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
9 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
9.1
9.2
9.3
Error Detection Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Error Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Error Handling Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
10 DC Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
10.1 Absolute Maximum Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
10.2 Recommended Operating Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
10.3 Power Supplies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
10.3.1 Digital Power Supplies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.3.2 Analog Power Supplies . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
252
252
10.4 Power Sequencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
10.5 Power Consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
10.6 I/O Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
11 AC Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
11.1 Reset Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
820x – Data Sheet, DS-0157-D
Page10
Hifn Confidential
11.2 PLL Clock Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
11.3 Flash Interface Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
11.4 JTAG Interface Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
11.5 PCIe Interface Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
12 Thermal Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
12.1 Heat Sink Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
12.2 Junction Temperature Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . .260
12.3 Thermal Sensor Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
13 Package Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
13.1 General Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
13.2 Mechanical Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
14 Errata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Appendix A: IPsec Encapsulating Security Payload (ESP) Format 273
Appendix B: CRC Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Appendix C: AES CBC/XTS FK Generation . . . . . . . . . . . . . . . . . . . 277
Appendix D: MAC and IPAD and OPAD . . . . . . . . . . . . . . . . . . . . . . 281
Addendum I Document Revision History . . . . . . . . . . . . . . . . . . . . 284
820x – Data Sheet, DS-0157-D
Page11
Hifn Confidential
List of Figures
Figure 1-1. Application Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
Figure 2-1. 820x Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Figure 2-2. Compression Engine LZS Real Time Verification . . . . . . . . . . . . . . . . . .28
Figure 2-3. Compression Engine GZIP Real Time Verification. . . . . . . . . . . . . . . . . .29
Figure 2-4. Encryption Engine Real Time Verification . . . . . . . . . . . . . . . . . . . . . . .30
Figure 2-5. Hash Engine Real Time Verification . . . . . . . . . . . . . . . . . . . . . . . . . . .31
Figure 2-6. Encode Operation Real Time Verification . . . . . . . . . . . . . . . . . . . . . . .32
Figure 2-7. Decode Operation Real Time Verification . . . . . . . . . . . . . . . . . . . . . . .34
Figure 2-8. 820x Modules that can be Clock Gated. . . . . . . . . . . . . . . . . . . . . . . . .36
Figure 3-1. Command Pointer Ring Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
Figure 3-2. Command Pointer Ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
Figure 3-3. Dual Command Ring Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
Figure 3-4. Normal Mode Command Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . .40
Figure 3-5. Small Packet Mode Command Structure. . . . . . . . . . . . . . . . . . . . . . . .41
Figure 3-6. Endian Format Field Swap Options. . . . . . . . . . . . . . . . . . . . . . . . . . . .48
Figure 3-7. Basic Data Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
Figure 3-8. Partial IHV Field for a Stateful HMAC Operations . . . . . . . . . . . . . . . . . .68
Figure 3-9. Partial IHV Field for a Stateful XCBC-MAC Operations . . . . . . . . . . . . . .68
Figure 3-10. Partial IHV Field for a Stateful AES-GCM-MAC/GMAC Operations . . . . . .68
Figure 3-11. Partial IHV Field for a Stateful SSL3.0-MAC Operations . . . . . . . . . . . .69
Figure 3-12. MAC Field Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Figure 3-13. AES IV Lengths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
Figure 3-14. Key Format 1 (72 bytes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
Figure 3-15. Key Format 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Figure 3-16. Key Format 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
Figure 3-17. Key Format 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
Figure 3-18. Hash Entry Format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Figure 3-19. Hash Buffer Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Figure 3-20. AES-GCM Implementation Illustration . . . . . . . . . . . . . . . . . . . . . . . .80
Figure 3-21. IPsec Example: Applying IPPCP and ESP in Tunnel Mode . . . . . . . . . . .83
Figure 3-22. Free Pool Ring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
Figure 3-23. Free Pool Usage Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
Figure 3-24. Result Ring Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Figure 3-25. Command Process Flow Example. . . . . . . . . . . . . . . . . . . . . . . . . . . .96
Figure 4-1. Encode Operation: Hash Engine before Compression Engine. . . . . . . . . .99
820x – Data Sheet, DS-0157-D
Page12
Hifn Confidential
Figure 4-2. Encode Operation: Compression Engine before Hash Engine. . . . . . . . .100
Figure 4-3. Encode Operation: Hash Engine after Pad Engine . . . . . . . . . . . . . . . .101
Figure 4-4. Encode Operation: Hash Engine after Encryption Engine . . . . . . . . . . .102
Figure 4-5. Decode Operation: Hash Engine before Encryption Engine . . . . . . . . . .103
Figure 4-6. Decode Operation: Hash Engine after Encryption Engine . . . . . . . . . . .104
Figure 4-7. Decode Operation: Hash Engine after Pad Engine . . . . . . . . . . . . . . . .105
Figure 4-8. Decode Operation: Hash Engine after Compression Engine. . . . . . . . . .106
Figure 5-1. DMA Command Pointer Prefetch Example. . . . . . . . . . . . . . . . . . . . . .108
Figure 5-2. Channel Manager Block Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Figure 5-3. PKP Manager Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
Figure 5-4. Hash Engine Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
Figure 5-5. Application Example of Slice Hash + File Hash . . . . . . . . . . . . . . . . . .117
Figure 5-6. SHA Core Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Figure 5-7. MD5 Core Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Figure 5-8. LZS Engine Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
Figure 5-9. GZIP Engine Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
Figure 5-10. Pad Engine Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124
Figure 5-11. Encryption Engine Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . .125
Figure 5-12. Die Temperature Measurement Procedure . . . . . . . . . . . . . . . . . . . .127
Figure 6-1. PCIe Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Figure 6-2. PKP Command Entry Format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
Figure 6-3. SPI Example Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Figure 6-4. SPI Operation Flash Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188
Figure 7-1. 820x PCI-Express Configuration Space. . . . . . . . . . . . . . . . . . . . . . . .202
Figure 8-1. Example PLL Circuit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Figure 11-1. Flash Write Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Figure 11-2. Flash Read Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Figure 11-3. JTAG Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Figure 13-1. Package Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Figure 13-2. Ball Map Drawing - Top View - Upper Left Quadrant. . . . . . . . . . . . . .263
Figure 13-3. Ball Map Drawing - Top View - Upper Right Quadrant. . . . . . . . . . . . .264
Figure 13-4. Ball Map Drawing - Top View - Lower Left Quadrant. . . . . . . . . . . . . .265
Figure 13-5. Ball Map Drawing - Top View - Lower Right Quadrant. . . . . . . . . . . . .266
Figure A-1. IPsec ESP Packet Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Figure C-1. GCM Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Figure C-2. CBC Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Figure D-1. IPAD and OPAD Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283
820x – Data Sheet, DS-0157-D
Page13
Hifn Confidential
List of Tables
Table 1-1. 820x Engine Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Table 1-2. Part Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
Table 2-1. Description of 820x Major Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Table 3-1. CRC Enable Behavior for all Commands except AES-XTS. . . . . . . . . . . . .46
Table 3-2. PAD_AG[3:0] Field Decoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Table 3-3. MAC Operation Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
Table 3-4. Command Structure Values for IPsec Example . . . . . . . . . . . . . . . . . . . .83
Table 3-5. GZIP Decode Error Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
Table 5-1. Temperature Sensor Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . .128
Table 7-1. Register Type Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Table 8-1. PCIe Interface Signal Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244
Table 8-2. Miscellaneous Interface Signal Definition. . . . . . . . . . . . . . . . . . . . . . .246
Table 8-3. Miscellaneous Interface Signal Definition. . . . . . . . . . . . . . . . . . . . . . .247
Table 8-4. SPI Interface Signal Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247
Table 8-5. JTAG Interface Signal Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
Table 8-6. Power and Ground Interface Description . . . . . . . . . . . . . . . . . . . . . . .248
Table 10-1. Absolute maximum ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
Table 10-2. Recommended operating conditions . . . . . . . . . . . . . . . . . . . . . . . . .251
Table 10-3. VDD_25_33 Power Supply Requirements. . . . . . . . . . . . . . . . . . . . . .252
Table 10-4. VDD_10 Power Supply Requirements . . . . . . . . . . . . . . . . . . . . . . . .252
Table 10-5. VDD_25A Power Supply Requirements . . . . . . . . . . . . . . . . . . . . . . .252
Table 10-6. VDD_10A Power Supply Requirements . . . . . . . . . . . . . . . . . . . . . . .253
Table 10-7. VDDA_PLL0, VDDA_PLL1 Power Supply Requirements . . . . . . . . . . . .253
Table 10-8. 8204 Current and Power Per Power Domain. . . . . . . . . . . . . . . . . . . .253
Table 10-9. 8203 Current and Power Per Power Domain. . . . . . . . . . . . . . . . . . . .254
Table 10-10. 8202 Current and Power Per Power Domain . . . . . . . . . . . . . . . . . . .254
Table 10-11. 8201 Current and Power Per Power Domain . . . . . . . . . . . . . . . . . . .255
Table 10-12. Normal IO Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
Table 10-13. PCIe PHY Transmitter Characteristics . . . . . . . . . . . . . . . . . . . . . . .256
Table 10-14. PCIe PHY Receiver Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . .256
Table 11-1. PLL0 and PLL1 Reference Clock Requirements . . . . . . . . . . . . . . . . . .257
Table 11-2. Flash Interface AC Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . .258
Table 11-3. JTAG Interface AC Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . .259
Table 12-1. Thermal Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Table 13-1. General Package Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261
820x – Data Sheet, DS-0157-D
Page14
Hifn Confidential
Table 13-2. Alphabetical Ball List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Table 13-3. Numeric Ball List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Table 14-1. 820x Major vs, Minor Revision Matrix . . . . . . . . . . . . . . . . . . . . . . . .271
Table A-1. IPsec ESP Packet Field Description . . . . . . . . . . . . . . . . . . . . . . . . . . .273
820x – Data Sheet, DS-0157-D
Page15
Hifn Confidential
Preface
Welcome to the Data Sheet for Hifn’s 820x, a high performance, low power, compression/
encryption/hash acceleration processor. This document describes the 820x operation, data
structures, data flow and specifications.
Audience
This document is intended for:
• Project managers
• System engineers
• Hardware and software development engineers
• Marketing and product managers
Prerequisite
Before proceeding, you should generally understand:
• PCI Express
• GZIP, eLZS and AES algorithms
• Hash, MAC algorithms
• General networking concepts
Document Organization
This document is organized as follows:
Chapter 1, “Product Description" provides an overview of the 820x processor.
Chapter 2, “Operation" describes key features of the 820x operations.
Chapter 3, “Data Structures" defines the format of the data structures used by the 820x.
Chapter 4, “Data Flow" gives examples of the typical data flows within the 820x.
Chapter 5, “Modules" describes the internal 820x modules in more detail.
Chapter 6, “Register Definition" details the syntax and usage of the internal 820x registers.
Chapter 7, “PCIe Configuration Register Definition" details the syntax and usage of the
PCIe registers.
Chapter 8, “Signal Description" defines the external interfaces for the 820x device.
820x – Data Sheet, DS-0157-D
Page16
Hifn Confidential
Chapter 9, “Error Handling" describes the 820x error handling features.
Chapter 10, “DC Specifications" defines the 820x DC specifications (all are TBD at this
time).
Chapter 11, “AC Specifications" defines the 820x AC specifications (all are TBD at this
time).
Chapter 12, “Thermal Specifications" defines the 820x thermal specifications.
Chapter 13, “Package Specifications" defines the 820x package specifications.
Appendix A through Appendix D provide detailed information on how the algorithm are
calculated. This material is included for reference only. Hifn’s SDK automatically implements
these algorithms.
Related Documents
The following documents can be used as a reference to this document.
UG-0211
AN-0197
820x Design Guidelines User Guide
820x Performance Application Note
Customer Support
For technical support about this product, please contact your local Hifn sales office,
representative, or distributor.
For general information about Hifn and Hifn products refer to: www.hifn.com
820x – Data Sheet, DS-0157-D
Page17
Hifn Confidential
Glossary
Term
AAD
AES
CBC
CM
Definition
Additional Authentication Data
Advanced Encryption Standard
Cipher Block Chaining
Channel Manager
Command Pointer Ring
Cyclic Redundancy Check
Counter Mode
CPR
CRC
CTR
DES
DH
Data Encryption Standard
Diffie-Hellman key exchange protocol
Data Integrity Field for AES-XTS
Data Process Channel
DIF
DPC
DSA
DSS
ECB
ECC
ECDH
ECDSA
ECRC
eLZS
ESP
Digital Signature Algorithm
Digital Signature Standard
Electronic Codebook
Error correction code
Elliptic-Curve Diffie-Hellman
Elliptic-Curve Digital Signature Algorithm
End-to-End cyclic Redundancy Check
Enhanced LZS
Encapsulating Security Payload
Galois Message Authentication Code
GNU ZIP
GMAC
GZIP
HMAC
IHV
Hash Message Authentication Code
Initial Hash Value
Inner Padding
IPAD
IPPCP
IPsec
IV
IP Payload Compression Protocol
IP Security Protocol
Initial Vector
Joint Test Action Group
Lempel-Ziv Stac
JTAG
LZS
Message Authentication Code
Outer Padding
MAC
OPAD
PHY
Physical-Layer interface - usually for PCI express
820x – Data Sheet, DS-0157-D
Page18
Hifn Confidential
Term
PKP
PLL
RC
Definition
Public Key Processor
Phase-Locked Loop
PCIe Root Complex
Random Number Generator
RNG
RSA
S0
Ron Rivest, Adi Shamir and Leonard Adleman
Initial Value for Hash Engine GCM-MAC and GMAC calculation
Serial Peripheral Interface
SPI
Security Socket Layer
SSL
TLS
XTS
Transport Layer Security
XES-based Tweaked CodeBook mode with Cipher Text Stealing
820x – Data Sheet, DS-0157-D
Page19
Hifn Confidential
1 Product Description
Hifn’s 820x is a high-performance, low-power, look-aside acceleration device that is ideal
for both storage and networking markets. The 820x provides hardware acceleration of
compression, encryption and hashing algorithms including GZIP, LZS, AES, 3DES, SHA,
MAC and some public key algorithms such as DH, RSA, ECC. The 820x has a PCIe 2.0 Gen1
compliant interface to communicate with the host system.
Figure 1-1 shows a typical 820x application example. The 820x can be employed on a half-
height PCIe card to accelerate encryption, hash and LZS/GZIP compression.
Figure 1-1. Application Example
1.1 Features
1.1.1
High Performance
• Dual channel compression, encryption, pad, and hash engines
• Compression/Decompression engine with LZS and GZIP algorithms
• Encryption/Decryption engine supports:
• AES-GCM, CBC, CTR and ECB with 128, 192 or 256 bit keys
• AES-XTS with 256 or 512 bit keys
820x – Data Sheet, DS-0157-D
Page20
Hifn Confidential
• 3DES
• Hash engine supports:
• SHA1, SHA256
• MD5
• HMAC, GMAC, X-CBC-MAC and SSL3.0 MAC
• Public Key Processor
• Random Number Generator
• Compression, Encryption, Padding, MAC (Hash) in single pass
• Low Power
• Static clock gating of channels
• Dynamic clock gating for unused processing engines
• Dynamic clock gating of unused algorithm core in processing engine
1.1.2
Flexible Design for Packet Processing
• Position of the Hash engine for calculating MAC is programmable
• Truncated data stream head and tail pointers in each processing engine for packet
processing
• Programmable mute table to null the 16 byte packet header
• Programmable length MAC inserted into data stream
1.1.3
Engine Features
Table 1-1. 820x Engine Features
Engine
Features
LZS
Industry-standard LZS algorithm
Enhanced LZS (eLZS) algorithm with anti-expansion compression
Complies with RFC 1951, and RFC 1952
GZIP
Dynamic Huffman Algorithm for high compression ratio
Supports multiple algorithms:
Encryption
AES-GCM, -XTS, -CBC, -CTR and -ECB and 3DES
Supports 128, 192 and 256 bit keys for AES (except XTS mode)
Supports 256 and 512 bit keys for AES-XTS
Supports stateful encryption operation
820x – Data Sheet, DS-0157-D
Page21
Hifn Confidential
Table 1-1. 820x Engine Features
Engine
Features
Hash
Algorithms supported: HMAC-SHA1, HMAC-SHA256, HMAC-MD5, GMAC, X-
CBC-MAC, SSL3.0-MAC
Slice and file hash operation
MAC inserted into the data stream
Stateful hash and MAC operation
Pad
PKP
Supports padding with multiple algorithm in encode operation
Remove padding in decode operation
RSA, DSA, DH, and ECDH and ECDSA (elliptic curve) operations
Support up to 8K-bits modular arithmetic and exponentiation
1.1.4
Command and Data Endian Conversion Modes
• No swap
• Byte swap in word
• Word swap, no byte swap in word
• Word swap, and byte swap in word
1.1.5
DMA Features
• Indirect command addressing
• Unlimited scatter-gather
• Maximum 16K commands in command pointer ring
• Two command pointer rings with round-robin arbitration (the priority of command
pointer rings is handled by host software)
• Free pool ring to avoid result data overflow
• Small packet command structure mode
1.1.6
Data Integrity Features
• Input CRC32 check, output CRC32 generator
• ECRC protection through PCIe bus (requires host RC support)
• ECC or Parity protection for data path RAMs
• Real time verification for all data transformation (Encryption and Compression
engines), and hash or MAC calculation (Hash engine)
1.1.7
Other features
• PCI Express x4, PCI Express x1 or PCI Express x2 interface
820x – Data Sheet, DS-0157-D
Page22
Hifn Confidential
• JTAG support
• ACJTAG support for PCIe interface
• GPIO interface
• SPI interface to access flash chip
• Thermal diode on chip to manage and prevent device overheating
• 196 ball HSBGA package (15 x 15 mm body, 1 mm ball pitch)
1.2 Ordering Information
There are four speed variations and three process variations of the 820x device.
Table 1-2. Part Numbers
Part Number
8201IB
Process
Speed
Industrial
1.2 Gbps Acceleration Processor
1.2 Gbps Acceleration Processor
8201IB-F
Industrial, RoHS 6
compliant
8201CB
Commercial
1.2 Gbps Acceleration Processor
1.2 Gbps Acceleration Processor
8201CB-F
Commercial, RoHS 6
compliant
8202IB
Industrial
2.4 Gbps Acceleration Processor
2.4 Gbps Acceleration Processor
8202IB-F
Industrial, RoHS 6
compliant
8202CB
Commercial
2.4 Gbps Acceleration Processor
2.4 Gbps Acceleration Processor
8202CB-F
Commercial, RoHS 6
compliant
8203IB
Industrial
4.8 Gbps Acceleration Processor
4.8 Gbps Acceleration Processor
8203IB-F
Industrial, RoHS 6
compliant
8203CB
Commercial
4.8 Gbps Acceleration Processor
4.8 Gbps Acceleration Processor
8203CB-F
Commercial, RoHS 6
compliant
8204IB
Industrial
6.0 Gbps Acceleration Processor
6.0 Gbps Acceleration Processor
8204IB-F
Industrial, RoHS 6
compliant
8204CB
Commercial
6.0 Gbps Acceleration Processor
6.0 Gbps Acceleration Processor
8204CB-F
Commercial, RoHS 6
compliant
Note: The performance data is based on preliminary AES algorithm simulations.
820x – Data Sheet, DS-0157-D
Page23
Hifn Confidential
2 Operation
Figure 2-1 shows a block diagram of the 820x. Each block is defined in Table 2-1.
820x – Data Sheet, DS-0157-D
Page24
Hifn Confidential
Figure 2-1. 820x Block Diagram
820x – Data Sheet, DS-0157-D
Page25
Hifn Confidential
Table 2-1. Description of 820x Major Blocks
Block Name
Description
CC
Completion Controller
Receives the completion data from the PCIe Inbound Manager, and then
allocates the data to the proper Channel/PKP Manager according to the
tags.
CFG_REGS
Configuration Registers
Channel Manager
0/1
Channel Manager 0 and Channel Manager 1
Controls all command processing: fetching command structures and data
from host memory into the source buffer, transmitting results from the
result buffer to host memory.
CLK_RST_Gen
CPP
Clock and Reset Generation
Generates the clock and reset signals for all modules.
Command Pointer Ring Prefetch
Prefetches the command pointer from the command ring.
Encryption Engine
Encrypt Engine
Encrypts/Decrypts the data stream using the AES or 3DES algorithm.
General Purpose IO
GPIO
GZIP Engine
GZIP Engine
Compresses/Decompresses the data stream using the GZIP algorithm.
Hash Engine
Hash Engine
LZS Engine
Calculates the hash value or MAC value of the data stream.
LZS Engine
Compresses/Decompresses the data stream using the LZS or enhanced LZS
(eLZS) algorithm.
Pad Engine
Pad Engine
Adds/Removes padding data from the data stream.
PCI express end point controller
PCI express physical layer
PCIe Inbound Manager
PCIe Core
PCIe Serdes
PIM
Receives the PCIe completion from the PCIe Core, and sends/receives
memory read/memory write to/from the PCIe Core.
PKP Engine
Public Key Processor Engine
The PKP engine consists of two pairs of public key processors.
PKP Manager
PKP Manager
Controls instruction and operand data fetching from host memory to the
PKP engine, and transmits the calculated result from the PKP engine to host
memory.
POM
PCIe Outbound Manager
Sends the PCIe write data and read requests to the PCIe Core.
Random Number Generator
RNG
RRC
Read Request Controller
Arbitrates read requests from the CPP, Channel Manager 0, Channel
Manager 1 and PKP Manager, and sends read requests to the PCIe
Outbound Manager.
820x – Data Sheet, DS-0157-D
Page26
Hifn Confidential
Table 2-1. Description of 820x Major Blocks
Block Name
SPI
Description
SPI interface that connects to the external flash chip
Temperature Sensor Controller
TSC
Provides host software access to the temperature sensor parameters.
Write Request Controller
WRC
Arbitrates the write requests from Channel Manager 0, Channel Manager 1
and PKP Manager, and sends the write requests to the PCIe Outbound
Manager.
2.1 Data Integrity
The 820x provides robust data integrity with a combination of Error Code Correction (ECC),
CRC, and Real Time Verification (RTV). These features combine to create strong data
protection for encode and decode operations.
2.1.1
ECC & Parity Protection
All data in RAM is protected with 6-bit Error Code Correction (ECC6), 8-bit Error Code
Correction (ECC8) and parity.
• ECC6 is used to protect 16 bit width RAM
• ECC8 is used to protect 64 bit width RAM
• Parity is used to protect the PCIe Core RAMs
ECC6 and ECC8 provide detection of all single, double, and triple bit errors.
2.1.2
CRC Protection
The host may configure the PCIe configuration register to either enable/disable ECRC
protection. If enabled, the PCIe Core will generate the ECRC on the fly to protect data on
the PCIe bus.
Data CRC can be generated by the host or by the 820x, depending on the configuration
settings in the command structure. Please refer to the “CRC_EN” field of the Command
Structure for more information (Section 3.1.2.2). The CRC will be verified by the 820x, and
may be sent to the host or stripped from the data stream.
2.1.3
Real Time Verification
The Compression, Encryption and Hash engines contain internal real time verification logic
that ensures all transforms are completed successfully and any detected errors are reported
prior to the command completing.
820x – Data Sheet, DS-0157-D
Page27
Hifn Confidential
2.1.3.1
Compression Engine Real Time Verification
The Compression engine contains one compression core and one decompression core for
LZS and GZIP compression operations. Data for compression operations in the encode
direction will be automatically decompressed to verify that the decompressed CRC matches
the original CRC of the raw data. The Compression engine also employs an ECC in its FIFO.
For compression operations in the encode direction, raw data with an embedded CRC is
compressed by the compression core. The compressed data is then decompressed to verify
that the decompressed CRC matches the original input CRC. If the CRCs do not match, the
Compression engine reports a CRC error to the host. To add further real time verification, a
6-bit ECC is added to the compressed data before it is written to the destination FIFO. This
ECC is verified by the LZS Engine when reading data out from the destination FIFO.
For compression operations in the decode direction, the compressed data with an
embedded CRC is decompressed in the decompression core. The decompressed CRC is
verified by the decompression core, and if an error is detected it will be reported to the
host. If CRC32 is not enabled, this CRC check is also disabled.
Figure 2-2 illustrates LZS real time verification in the Compression engine for encode and
decode operations. In the following figures, a CRC in parenthesis, as in RAW (CRC),
signifies that the CRC is embedded into the data. A CRC that is added to a value, as in RAW
+ CRC, signifies that the CRC is in a header, separate from the data.
Figure 2-2. Compression Engine LZS Real Time Verification
820x – Data Sheet, DS-0157-D
Page28
Hifn Confidential
Figure 2-3 illustrates GZIP real time verification in the Compression engine. The GZIP real
time verification is similar to the LZS real-time verification except that the Compression
engine does not generate the ECC.
Figure 2-3. Compression Engine GZIP Real Time Verification
2.1.3.2
Encryption Engine Real Time Verification
The Encryption engine contains two encryption cores and two decryption cores for AES and
3DES operations. The Encryption engine performs real time verification for both encode and
decode operations by having both cores encrypt or decrypt the input data simultaneously.
The results from both cores are compared and if an error is detected it will be reported to
the host.
820x – Data Sheet, DS-0157-D
Page29
Hifn Confidential
Figure 2-4. Encryption Engine Real Time Verification
2.1.3.3
Hash Engine Real Time Verification
The Hash engine contains two hash cores to implement real time verification of the data.
For single File hash and Slice hash operations, both Hash cores calculate the hash/MAC
simultaneously and the two results are compared. If an error is detected it will be reported
to the host. For “File hash + Slice hash” operations, one core calculates the “File hash” and
the other core calculates the “Slice Hash”. Figure 2-5 shows the real time verification for
File hash and Slice hash operations.
820x – Data Sheet, DS-0157-D
Page30
Hifn Confidential
Figure 2-5. Hash Engine Real Time Verification
2.1.4
Data Integrity Model for Encode Operations
This section describes the data integrity model for encode operations using the parity, CRC,
ECC and engine real time verification features described in the previous sections. Figure 2-
6 illustrates the model described below.
Raw data with a PCIe standard CRC (ECRC) from the host enters the 820x over the PCIe
bus through the 820x PCIe core. The PCIe core verifies the ECRC and generates parity
before writing the data into RAM and into the PCIe Inbound Manager (PIM). The PIM
verifies the parity and generates an 8-bit Error Correction Code (ECC8) and enters the data
plus the ECC8 into the source buffer. When a Channel Manager reads the data from the
source buffer, it first verifies the ECC, generates a CRC, and sends the raw data and CRC
to the Compression engine. The Compression engine compresses the data and CRC,
performs real time verification by decompressing the data and verifying the CRC, and sends
the data to the Pad engine. The Pad engine adds padding to the data stream, and sends the
padded data to the encryption engine (the Pad engine does not perform any real time
verification). The Encryption engine encrypts the padded compressed data, performs real
time verification, and sends the result to the Hash engine. The Hash engine calculates the
MAC and performs real time verification on the hash result.
An 8-bit ECC is added to the output data of the Encryption engine and written into the
result buffer. The Channel Manager reads the data from the result buffer, verifies the ECC,
and sends the data to the PCIe Outbound Manager (POM). The POM adds parity before
writing the data into the PCIe Core RAM. When data is read from the PCIe Core RAM by the
PIM, the parity is first verified and an ECRC is generated before the final transformed data
is sent to the host.
820x – Data Sheet, DS-0157-D
Page31
Hifn Confidential
The example shown in Figure 2-6 where the 820x generates the embedded CRC rather
than the host supplying it is the most popular configuration.
Figure 2-6. Encode Operation Real Time Verification
820x – Data Sheet, DS-0157-D
Page32
Hifn Confidential
2.1.5
Data Integrity Model for Decode Operations
This section describes the data integrity model for decode operations using the parity, CRC,
ECC and engine real time verification features described in the previous sections. Figure 2-
7 illustrates the model described below.
Compressed, encrypted data with an embedded hash, and MAC arrive from the host over
the PCIe bus with the standard PCIe CRC (ECRC) and enters the 820x through the 820x
PCIe core. The PCIe core verifies the ECRC and generates parity before writing the data into
RAM and into the PCIe Inbound Manager (PIM). The PIM verifies the parity and generates
an 8-bit Error Correction Code (ECC8) and enters the data plus the ECC8 into the source
buffer. When a Channel Manager reads the data from the source buffer, it first verifies the
ECC, and the sends the encrypted, compression data with padding to the Hash engine and
the Encryption engine. The Hash engine uses the embedded MAC and performs real time
verification on the hash result. The Encryption engine decrypts the encrypted data and
sends the padded compressed data result to the Pad engine. The Pad engine removes the
padding from the data stream, and sends the compressed data to the compression engine
(the Pad engine does not perform any real time verification). The compression engine
decompresses the data and CRC, performs real time verification.
The CRC output from the compression engine is compared to the raw CRC, and, if verified,
stripped from the raw data. An 8-bit ECC is added to the raw data and written into the
result buffer. The Channel Manager reads the data from the result buffer, verifies the ECC,
and sends the data to the PCIe Outbound Manager (POM). The POM adds parity before
writing the data into the PCIe Core RAM. When data is read from the PCIe Core RAM by the
PIM, the parity is first verified and an ECRC is generated before the final raw data is sent to
the host.
820x – Data Sheet, DS-0157-D
Page33
Hifn Confidential
Figure 2-7. Decode Operation Real Time Verification
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page34
2.2 Clock Domains
The 820x logic operates with six main clock domains:
• PCIe Serdes, PCIe Core, DMA, Probe, Pad engine and JTAG (125MHz from PCIe
Serdes PLL)
• Hash Engine (278MHz from CLK_RST_Gen)
• LZS Engine interface logic and Encrypt Engine (208MHz from CLK_RST_Gen)
• LZS Engine Core Logic (417MHz from CLK_RST_Gen)
• GZIP Engine (250MHz from CLK_RST_Gen)
• PK Core (375MHz from CLK_RST_Gen)
2.3 Clock Gating
Hifn’s 820x supports aggressive static and dynamic clock gating.
Static clock gating will disable the clock to the Channel Managers, Data Process Channels,
PKP Manager, PKP Engine, and RNG if the corresponding register enable bits are set to
zero. If the software disables a Channel Manager, the clock to all modules in this channel
will also be disabled.
Dynamic clock gating will disable the clock for all unused engines in Data Process Channels
for each command. For example, if one command only compresses data, the clock of the
Pad Engine, Hash Engine and Encrypt Engine will be gated automatically.
The shaded regions in Figure 2-8 show which 820x blocks employ clock gating.
820x – Data Sheet, DS-0157-D
Page35
Hifn Confidential
Figure 2-8. 820x Modules that can be Clock Gated
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page36
3 Data Structures
This section describes the 820x data structures for the command pointer ring, result ring,
free pool ring, and the command structure format.
3.1 Command Pointer Ring
The command pointer ring is a linear array of command pointers which point to the actual
commands. The 820x uses indirect command addressing to execute commands. By using
indirect command addressing, the commands themselves may be located anywhere in host
memory.
The host software must maintain the command pointer ring and ensure that the command
pointer ring base address is 8-byte aligned.
In 32-bit addressing mode, every command pointer is 4 bytes; in 64-bit addressing mode,
every command pointer is 8 bytes.
Figure 3-1. Command Pointer Ring Format
The maximum number of command pointers in the command pointer ring is configurable by
the host using the DMA control registers, specifically the DMA Configuration Register (see
Section 6.2.14, “DMA Configuration Register"). After the host software determines the
memory location of the command pointer ring and command structure, it should update the
820x related DMA control registers. The 820x will fetch the command pointer, and then
fetch the command structure. The detailed command execution flow is described in
Section 3.3, “Command Operation Sequence".
820x – Data Sheet, DS-0157-D
Page37
Hifn Confidential
Figure 3-2 illustrates a typical command pointer ring structure.
Figure 3-2. Command Pointer Ring
Typically the host would maintain only one command ring, but the Express DX 17xx also
supports a dual command ring mode. In this mode, the host maintains two command
pointer rings and two result rings in host memory. The Express DX 17xx Software
Development Kit will place all higher priority commands in one command ring and the lower
priority commands into the other command ring. However, since the Express DX 17xx
fetches commands from both command rings using a round-robin scheme with equal
priority, there is no assurance that the high priority ring will execute commands faster than
the low priority ring. If the host can assure that there are fewer high priority commands
than low priority commands, a priority scheme can be supported.
The two command pointer rings and result rings have the same structures and
configuration as shown in Figure 3-3.
820x – Data Sheet, DS-0157-D
Page38
Hifn Confidential
Figure 3-3. Dual Command Ring Mode
Command rings are implemented in PCIe host memory. The host writes a complete
command structure as an entry in the command pointer ring. The 820x reads the command
structure and interprets its various fields to perform the appropriate operations. Once the
820x has completed executing a command, it updates the appropriate entries within the
corresponding command structure. The host then reads the entries in the command
structure that have been updated by the 820x to fetch the results.
The 820x does not maintain a “full” bit for the command pointer ring; it is the responsibility
of the host not to overflow the command ring.
3.1.1
Command Structure
The host must ensure that the starting address of all command structures are 512-byte
aligned. This constraint will avoid the PCIe 4K boundary read request limitation because the
820x maximum command read request is 512 bytes.
The 820x supports two command structure modes: normal mode and small packet mode.
The command structure mode is defined in the Desc_cmd_base descriptor. In normal
mode, the data may be any size. In small packet mode, the size is reduced to improve
small packet performance. The performance improvement of small packet mode is achieved
by removing the data read request latency of 2000ns ~ 8000ns.
820x – Data Sheet, DS-0157-D
Page39
Hifn Confidential
A normal mode command structure consists of a linear array of descriptors. The size of one
command structure is only limited by the amount of host contiguous physical memory. Each
command will have a unique command structure.
In normal mode, the command structure includes one result descriptor, one base command
descriptor, one compression command descriptor, one encryption command descriptor, one
hash command descriptor, one pad command descriptor, and several pairs of source and
destination descriptors.
Figure 3-4. Normal Mode Command Structure
A small packet mode command structure includes one result descriptor, one base command
descriptor, one compression command descriptor, one encryption command descriptor, one
hash command descriptor, one pad command descriptor, two destination descriptors and
data. The data field includes information fields and the source data.
820x – Data Sheet, DS-0157-D
Page40
Hifn Confidential
Figure 3-5. Small Packet Mode Command Structure
3.1.2
Command Descriptor Format
Descriptors are the building blocks of the 820x command structure.
Note: For all descriptors, reserved bits must be written as zeroes.
3.1.2.1
Desc_result
The result descriptor holds the command result. After the 820x completes a command, it
will write to this descriptor. The Desc_result format is the same (8 bytes) for either 32-bit
or 64-bit addressing modes.
Reserved
FileSize[47:32] / Dest_byte_count[47:32]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
FileSize[31:0] / Dest_byte_count[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
820x – Data Sheet, DS-0157-D
Page41
Hifn Confidential
Field Name
Description
Bits
Default
OVFL
Overflow bit.
The 820x will set this bit if the destination data size
exceeded the total destination buffer space. This bit
will not be set if the Free Pool is being used.
63
0
0
1
No destination buffer overflow occurred
Destination buffer overflow occurred
ERR
FP
Error bit.
The 820x will set this bit if any type of error
occurred during command processing.
62
0
0
1
No error occurred
Error occurred
Free Pool bit.
If all destination buffers are consumed and the FP_V
bit in the Desc_cmd_base is set, the 820x will set
this bit to indicate it is using the Free Pool to store
the result data. Once the 820x uses the Free Pool,
the 820x will not longer set the the OVFL bit.
61
60
59
0
0
0
0
1
820x is not using the free pool
820x is using the free pool
Reserved
DONE
Reserved
Done bit.
This bit is written to and read by both the host and
820x. The host software must set this bit to one
after the command structure is written. The 820x
will write a zero to this but when it has completed a
command.
0
1
820x has completed the command
Host has set up the command for the 820x
CMP_EXP
Reserved
Compression Expansion bit.
This bit defines how the compression expansion is
calculated.
58
0
0
0
1
Len(cmp) + Head_size < Len(RAW)
Len(cmp) + Head_Size >= len(raw)
57:48
Reserved
File_Size[47:0] /
Dest_byte_count[47:0]
File Size / Destination Data Byte Count.
This field contains the File Size or Destination Data
Byte Count used to calculate the hash or MAC value
of the last block of source data.
The data in the source buffer includes information
fields and raw data. The File size indicates the size
of the raw data, excluding the information fields.
47:0
0
This field is written to and read by both the host
and the 820x.
The host must write the file size to this field for file
hash, AES-GCM, or MAC length padding operations.
The 820x will overwrite this field with the
Dest_byte_count[47:0] after the command
completes.
820x – Data Sheet, DS-0157-D
Page42
Hifn Confidential
3.1.2.2
Desc_cmd_base
This descriptor defines the command parameters that are common to all types of
commands. The Desc_cmd_base format is 8 bytes for either 32-bit or 64-bit addressing
modes.
Reserved
Packet_Size[8:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
Reserved
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
Bits
Default Description
63:41
0
Reserved
Packet_size[8:0]
Packet Size.
This field is only valid when Command Structure
Mode, CSM, is set to small packet mode.
The packet size will vary with the command
addressing mode (32 or 64-bit addressing) and the
size of the information field (see Section 3.1.3.5).
This field indicates the real source data size, not
including the information and descriptor fields. Note,
for small packet mode, the total command size must
be less than or equal to 512 bytes.
The packet size range in bytes is:
1 - maximum_packet_size
where
40:32
0
Maximum_packet_size = 512 - (info field) -
(descriptor field)
| Total cmd structure size must be <= 512 bytes |
Info field
Desc field
Source data
|
packet_size[8:0]
|
820x – Data Sheet, DS-0157-D
Page43
Hifn Confidential
Field Name
Bits
Default Description
CRC_EN[1:0]
CRC Enable.
The CRC enable bit is only valid if the disable count
flag, DC, is set to one.
The behavior of this bit depends if the command is
for AES-XTS.
For all commands except AES-XTS:
00 The input data does not contain a CRC; the
820x will not append or verify the CRC
01 For an encode command, the input data
contains 4 bytes of CRC; the 820X will verify the
CRC. For a decode command, the 820X will
verify the CRC after decoding and send the data
and the 4 bytes of CRC to the host.
10 For an encode command, the input data does
not contain a CRC; the 820x will append and
verify 4 bytes of CRC. For a decode command,
the 820x will verify the CRC after decoding, strip
the 4 bytes of CRC, and send only the raw data
to the host
31:30
0
11 Reserved.
For AES-XTS commands:
00 The input data does not contain a CRC; the
820x will not append or verify the CRC
01 For both encode or decode operations, the 820x
will verify the source data CRC and update the
CRC field of the DIF.
1x Reserved.
DIF Format:
4 bytes
Ref tag
2 bytes
CRC
2 bytes
Meta tag
For a more detailed description of the CRC_EN bit’s
behavior for all commands except AES-XTS, please
refer to Table 3-1.
EF[1:0]
IRQ_EN
Endian Format.
Sets the data endian format. Refer to Figure 3-6 for
an illustration of the swap options.
00 no swap
29:28
0
0
01 byte swap within word
10 word swap, no byte swap within word
11 word swap and byte swap within word
Interrupt Enable.
If set, the 820x will interrupt the host when this
command completes.
27
0
820x will not interrupt the host when this
command completes
1
820x will interrupt the host when this command
completes
820x – Data Sheet, DS-0157-D
Page44
Hifn Confidential
Field Name
Bits
Default Description
FP_V
Free Pool Valid.
This bit is written to by the host to indicate if the
820x may use the Free Pool
Note, if the Free Pool is not used and the
destination buffers are not large enough to
accommodate the resulting data, the 820x will set
the OVFL bit in Desc_result descriptor.
26
0
0
1
Do not allow the 820x to use the free pool
Permit 820x to use the free pool
DC
Disable Count.
If this bit is set, the 820x will process all raw data
sent to it by the host and disregard the head and
tail count values. If set, the host software does not
need to set values for the source count and head
counters; the 820x will ignore these fields.
25
0
0
All source and head counts in successive
descriptors are valid.
1
Disable all source and head counts in successive
descriptors
DIR
Disable Information Routing.
Refer to Section 3.1.3.5, “Data Stream Information
Fields" for more information.
24
0
0
820x will send the information fields to the host
destination buffer for data integrity verification
1
820x will not send the information fields to the
host destination buffer
Reserved
PAD
23:11
10
0
0
Reserved.
Pad Engine Enable/Disable.
If disabled, data will pass through the Pad engine
unaltered.
0
1
Disable the Pad engine
Enable the Pad engine
HASH
ENC
Hash Engine Enable/Disable.
If disabled, data will pass through the Hash engine
unaltered.
9
8
7
0
0
0
0
1
Disable the Hash engine
Enable the Hash engine
Encryption Engine Enable/Disable.
If disabled, data will pass through the Encryption
engine unaltered.
0
1
Disable the Encryption engine
Enable the Encryption engine
CMP
Compression Engine Enable/Disable.
If disabled, data will pass through the Compression
engine unaltered.
0
1
Disable the Compression engine
Enable the Compression engine
820x – Data Sheet, DS-0157-D
Page45
Hifn Confidential
Field Name
Bits
Default Description
CSM
Command Structure Mode.
This bit sets the command structure mode to either
normal or small packet mode. Refer to Section
3.1.1 for more information.
6
0
0
0
1
Normal mode
Small packet mode
Reserved
CMD
5:1
Reserved
Command Type.
Indicates the command type:
0
Encode
For compression, encryption and hash
operations
1
Decode
0
0
For decompression and decryption operations,
and authentication using the hash engine to
verify the MAC
Note that the 820x supports stateful encryption and
hash/MAC operations, but does not support stateful
compression operations. The host software must not
submit a compression operation when performing a
stateful MAC operation.
Table 3-1. CRC Enable Behavior for all Commands except AES-XTS
CRC_EN Operation
Value
Host input to 820x
820x Output
00
N/A
Data
Data
820x does not verify or append a
CRC
01
Encode
Decode
Data
4 bytes CRC
Compressed (Data + CRC)
820x verifies CRC and compresses
input data
Compressed (Data + CRC)
Data
4 bytes CRC
820x decompresses input data and
verifies CRC
820x – Data Sheet, DS-0157-D
Page46
Hifn Confidential
Table 3-1. CRC Enable Behavior for all Commands except AES-XTS
CRC_EN Operation
Value
Host input to 820x
820x Output
10
Encode
Data
Data
4 bytes CRC
Compressed (Data + CRC)
820x adds CRC and then
compresses the input data and CRC
Decode
Compressed (Data + CRC)
Data
4 bytes CRC
Data
820x decompresses input data,
verifies CRC, and then removes CRC
11
Encode
Decode
Reserved
Reserved
Reserved
Reserved
820x – Data Sheet, DS-0157-D
Page47
Hifn Confidential
Figure 3-6. Endian Format Field Swap Options
3.1.2.3
Desc_cmd_cmp
This descriptor defines the compression engine related parameters. Desc_cmd_cmp is 8
bytes for either 32-bit or 64-bit addressing modes.
CMP_Source_Count[23:0]
CMP_Header_Count[7:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
820x – Data Sheet, DS-0157-D
Page48
Hifn Confidential
Reserved
HEAD_SIZE[7:0]
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Default
CMP_Source_Count
[23:0]
Compression Source Count.
The number of bytes of compression data.
The data stream following the header will be
processed by the compression engine. The
compression engine will stop processing data and
return to passing through the remaining data in
data stream after the Compression Source Counter
reaches zero. The 820x Compression Source
Counter begins to decrement after the Compression
Head Counter has expired.
The behavior of this field depends on the setting of
compression count mode, CMP_CM.
63:40
0
If CMP_CM = 0,
0
All data from Head Counter expired to EOB (end
of block) need to be processed by the
current engine
1 - 2241 to 224 bytes need to be processed by the
current engine
If CMP_CM =1,
0 - 2240 to 224 bytes after the last byte processed
by the previous processing engine need
to be processed by current engine
CMP_Header_Count
[7:0]
Compression Header Count.
This 8-bit field sets the number of double words that
the compression engine will pass through before it
begins processing the incoming data stream.
39:32
0
GZIP_MODE[1:0]
GZIP Operation Mode.
00 Static Huffman mode
01 Dynamic Huffman mode
10 Store mode
31:30
29:16
0
0
11 Reserved
In Store mode, GZIP is added to the header but the
data is unchanged.
Reserved
Reserved.
820x – Data Sheet, DS-0157-D
Page49
Hifn Confidential
Field Name
Description
Bits
Default
HEAD_SIZE[7:0]
Head Size.
The number of bytes required for the compression
expansion calculation.
0 - 255: Head size in bytes
15:8
0
The Compression engine will set the cmp_expansion
bit (defined in the desc_result and result ring) to
one if
len(cmp) + Head_Size >= len(raw).
CMP_CM
Compression Count Mode.
If this bit is set to zero, the compression source
count in the 820x begins to decrement after the last
header byte has been passed through the 820x. If
this bit is set to one, the compression source
counter begins to decrement after the last byte
processed by the previous processing engine. Please
refer to Section 3.1.3.10, “IPsec Packet Processing"
for more information.
7
0
0
820x begins to decrement the compression
source count after the last header byte
1
820x begins to decrement the compression
source count after the last byte processed by
the previous processing engine
Reserved
6:2
1:0
0
0
Reserved.
CMP_AG[1:0]
Compression Algorithm.
Used to set the compression algorithm.
00 LZS algorithm
01 eLZS algorithm
10 GZIP algorithm
11 Reserved
3.1.2.4
Desc_cmd_enc
This descriptor defines the encryption engine related parameters. Desc_cmd_enc is 8 bytes
for either 32-bit or 64-bit addressing modes.
ENC_Source_Count[23:0]
ENC_Header_Count[7:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
Sector_Size[23:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
820x – Data Sheet, DS-0157-D
Page50
Hifn Confidential
Field Name
Description
Bits
Default
ENC_Source_Count
[23:0]
Encryption Source Count.
The number of bytes of encryption data.
The data stream following the header will be
processed by the encryption engine. The encryption
engine will stop processing data and return to
passing through the remaining data in data stream
after the Encryption Source Counter reaches zero.
The 820x Encryption Source Counter begins to
decrement after the Encryption Head Counter has
expired.
The behavior of this field depends on the setting of
encryption count mode, ENC_CM.
63:40
0
If ENC_CM = 0,
0
All data from Head Counter expired to EOB (end
of block) need to be processed by the
current engine
1 - 2241 to 224 bytes need to be processed by the
current engine
If ENC_CM =1,
0 - 2240 to 224 bytes after the last byte processed
by the previous processing engine need
to be processed by current engine
ENC_Header_Count
[7:0]
Encryption Header Count.
This 8-bit field sets the number of double words that
the encryption engine will pass through before it
begins processing the incoming data stream.
39:32
31:8
0
0
Sector_Size[23:0]
Sector Size.
Sector size in 4 byte words.
This field represents the sector size when
ENC_AG[3:0] is set to the AES-XTS algorithm.
Note that the sector size does not include the DIF (8
bytes) for XTS.
Because the minimum sector size is 128 bytes, a
sector size of 0x000000 to 0x00001F translates to
0x000020 words.
KS[1:0]
AES Key Size.
00 128 bit key
01 192 bit key
10 256 bit key
7:6
0
11 512 bit key (only valid for AES-XTS)
Note: AES-XTS only supports 256 and 512 bit keys.
Other AES modes support 128, 192 and 256 bits
keys.
820x – Data Sheet, DS-0157-D
Page51
Hifn Confidential
Field Name
Description
Bits
Default
ENC_CM
Encryption Count Mode.
If this bit is set to zero, the encryption source
count in the 820x begins to decrement after the last
header byte has been passed through the 820x. If
this bit is set to one, the encryption source counter
begins to decrement after the last byte processed
by the previous processing engine. Please refer to
Section 3.1.3.10, “IPsec Packet Processing" for
more information.
5
0
0
0
820x begins to decrement the encryption
source count after the last header byte
1
820x begins to decrement the encryption
source count after the last byte processed by
the previous processing engine
Reserved
4
Reserved.
ENC_AG[3:0]
Encryption Algorithm.
0000AES-GCM
Hash engine should be set to AES-GCM-MAC
algorithm
0001AES-CBC
0010AES-CTR
0011AES-ECB
0100AES-XTS
3:0
0
Compression Engine must be disabled and
Hash_OP[1:0] cannot be set any type of
MAC operation
01013DES
All other settings are reserved.
Note: GMAC operations use the AES algorithm. If
sharing logic with other AES modes, the GMAC will
be implemented in the Encryption Engine.
3.1.2.5
Desc_cmd_hash
This descriptor defines the hash engine related parameters. Desc_cmd_hash is 8 bytes for
either 32-bit or 64-bit addressing modes.
During a Slice Hash operation, the Hash engine will calculate the hash value for every slice
of data. A single Slice Hash operation must contain more than one slice. The size of one
slice data is defined by Slice_Size[15:0].
During a File Hash operation, the Hash engine calculates one hash value for the entire file.
File Hash operations may be stateless or stateful. For a stateless file hash operation, one
command operates on data from one file and the “file hash chaining value” of this
command is the “File Hash” of the file (see Section 3.1.3.6). For a stateful file hash
operation, one data file is operated on by several commands, and each command is
assigned a file hash chaining value by the 820x. The file hash chaining value of the prior
final command is used as the “File hash” of the file.
820x – Data Sheet, DS-0157-D
Page52
Hifn Confidential
Note: Host software manages the stateful file hash operation flow. The software must wait
for one data block of the file from the current command to finish before proceeding to the
next block of the file in the next command. This is because the next command's IHV (initial
hash vector) will use the previous command's file chaining hash value.
Please refer to Section 3.1.3.6, “Hash Buffer" for a detailed description of a hash operation.
HASH_Source_Count[23:0]
HASH_Header_Count[7:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
Slice_Size[15:0]/AAD_Size[11:0]+MAC_Size[3:0]
MTI[3:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Default
HASH_Source_Count
[23:0]
Hash Source Count.
The number of bytes of hash data.
The data stream following the header will be
processed by the hash engine. The hash engine will
stop processing data and return to passing through
the remaining data in data stream after the Hash
Source Counter reaches zero. The 820x Hash
Source Counter begins to decrement after the Hash
Head Counter has expired.
Note: This field is NOT valid when performing the
last block of a stateful file hash operation.
The behavior of this field depends on the setting of
hash count mode, HASH_CM.
63:40
0
If HASH_CM = 0,
0
All data from Head Counter expired to EOB (end
of block) need to be processed by the
current engine
1 - 2241 to 224 bytes need to be processed by the
current engine
If HASH_CM =1,
0 - 2240 to 224 bytes after the last byte processed
by the previous processing engine need
to be processed by current engine
HASH_Header_Count
[7:0]
Hash Header Count.
This 8-bit field sets the number of double words that
the hash engine will pass through before it begins
processing the incoming data stream.
39:32
0
Note: This field is NOT valid when performing the
last block of a stateful file hash operation.
820x – Data Sheet, DS-0157-D
Page53
Hifn Confidential
Field Name
Description
Bits
Default
Slice_Size[15:0]
- or -
The value of this field depends on the type of hash
operation.
For slice hash operations (HASH_OP = 000 or 010),
this field represents the hash slice size.
bits [31:2] =
AAD_Size[11:0]
The slice size is in bytes and must be a multiple
of 64 bytes.
bits [19:16] =
MAC_Size[3:0]
Note: The total data size of one command can
be an arbitrary number of bytes. The 820x will
split the data into slices according to the
Slice_Size. If the last slice is less than the
Slice_Size, the 820x will pad the data with
zeroes so that it is a multiple of 64 bytes.
Each slice is treated as a complete hash
operation (with length padding). The 820x will
send the host the hash value per slice of data.
For AES-GCM-MAC hash operations (HASH_OP =
111) this field represents the Additional
Authenticated Data size, AAD_Size[11:0].
The AAD size values is in bytes with a range of
0x000 - 0xFFF, which translates into 0 - 4095
bytes
Note: In GMAC mode, the host software does
not need to fill out the AAD Size because the
AAD will be written to the Hash engine as source
data, and so the Hash engine will calculate the
length by itself. Please refer to Section 3.1.3.8,
“AES-GCM and GMAC Operations" for details on
GMAC operations.
31:16
0
For all hash MAC operations (HASH_OP = 011 or
1xx), this field represents MAC_Size[3:0].
For an encode operation, MAC_Size represents
the number of words that will be inserted into
the data stream.
0MAC is not inserted into the data stream
after calculated
1 - 15Insert 2 to 16 words into the data
stream
The number of inserted MAC words for MD5
is 16 bytes, for SHA1 20 bytes, for SHA2 32
bytes. The 820x will truncate the MAC value
according to the configuration before
inserted the MAC into the data stream.
For decode operations, MAC_Size represents the
MAC size on the information bus (see
Section 3.1.3.5, “Data Stream Information
Fields"). The hash engine will compare the
calculated MAC with the MAC on the information
bus of this length. For example, if the calculated
HMAC with SHA256 is 32 bytes and the
MAC_Size is 24 bytes, the hash engine will
compare the first 24 bytes of the calculated
HMAC with the MAC on the information bus.
This feature is useful in SSL. The MAC will be
inserted at the end of the data stream that is
processed by the hash engine.
820x – Data Sheet, DS-0157-D
Page54
Hifn Confidential
Field Name
Description
Bits
Default
MTI[3:0]
Mute Table Index.
This field selects the mute table entries to be used
on the first 16 bytes of the data stream processed
by the Hash engine.
0000Disable mute function
0001Mute table entry 1
0010Mute table entry 2
0011Mute table entry 3
0100Mute table entry 4
0101Mute table entry 5
0110Mute table entry 6
0111Mute table entry 7
All other values are not defined.
15:12
0
Please refer to Section 6.3.1, “Hash Engine Mute
Table Entry Registers" for details.
PS[1:0]
Hash Engine Position
This field’s behavior depends on whether the
operation is encode or decode.
For encode operations, the hash engine is:
00 Before the compression engine
01 After the compression engine
10 After the pad engine
11:10
0
11 After the encryption engine
For decode operations, the hash engine is:
00 Before the encryption engine
01 After the encryption engine
10 After the pad engine
11 After the compression engine
Please refer to Chapter 4, “Data Flow" for more
information.
HASH_CM
Hash Count Mode.
If this bit is set to zero, the hash source count in
the 820x begins to decrement after the last header
byte has been passed through the 820x. If this bit is
set to one, the hash source counter begins to
decrement after the last byte processed by the
previous processing engine. Please refer to
Section 3.1.3.10, “IPsec Packet Processing" for
more information.
9
0
0
820x begins to decrement the hash source
count after the last header byte
1
820x begins to decrement the hash source
count after the last byte processed by the
previous processing engine
820x – Data Sheet, DS-0157-D
Page55
Hifn Confidential
Field Name
Description
Bits
Default
LB
Last Block.
The host should set this bit to indicate the last block
of data. For stateful operations, data from one
command is considered one block.
8
0
0
1
For stateful operations, if not last block
For stateless operations, or for stateful
operations if last block
Please refer to Section 3.1.3.9, “MAC Operations"
for detailed usage of this bit.
FB
First Block.
The host should set this bit to indicate the first block
of data. For stateful operations, data from one
command is considered one block.
7
0
0
1
For stateful operations, if not first block
For stateless operations, or for stateful
operations if first block
Please refer to Section 3.1.3.9, “MAC Operations"
for detailed usage of this bit.
HASH_OP[2:0]
Hash operation.
000Slice hash only, internal integrity checking
001File hash only, internal integrity checking
010Slice hash + file hash, no internal integrity
checking
011HMAC, internal integrity checking
100SSL3.0 MAC, internal integrity checking
101XCBC-MAC, internal integrity checking
110GMAC, internal integrity checking;
Encryption engine must be disabled
111AES-GCM-MAC, internal integrity checking;
Encryption engine must be set to AES-GCM
algorithm
6:4
0
For encode operations, if PS == 00, Hash_OP may
be any one of the eight choices and the Hash engine
will calculate the hash or MAC. If PS != 00, the
Hash Engine will only calculate the MAC.
For decode operations, Hash_OP may only be set to
MAC operations (1xx). The Hash engine will
calculate the MAC and compare the calculated value
to the MAC in the data stream.
Note: If the operation is SSL3.0 MAC, the source
data in host memory should include "Seq. No. ||
Type || Length || Application Data". Please refer to
Appendix D.1 for details.
Note: If the operation is XCBC-MAC, GMAC or AES-
GCM-MAC, Hash0_AG and Hash1_AG are not valid
since these MACs use the AES algorithm core.
820x – Data Sheet, DS-0157-D
Page56
Hifn Confidential
Field Name
Description
Bits
Default
HASH1_AG[1:0]
Hash Core 1 algorithm.
This field is only valid when Hash_OP[3:0] = 0010.
In this case, Hash Core 0 will calculate the file hash
while Hash Core 1 calculates the slice hash.
For all other operations, Hash Core 1 is only used
for real time verification and must be set to the
same value as Hash Core 0.
3:2
0
00 SHA-1
01 SHA-256
10 MD5
11 Reserved
HASH0_AG[1:0]
Hash Core 0 algorithm.
00 SHA-1
1:0
0
01 SHA-256
10 MD5
11 Reserved
3.1.2.6
Desc_cmd_pad
This descriptor defines the pad engine related parameters. Desc_cmd_pad is 8 bytes for
either 32-bit or 64-bit addressing modes.
PAD_Source_Count[23:0]
PAD_Header_Count[7:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
Next_Head[7:0]
Reserved
PAD_Len[7:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
820x – Data Sheet, DS-0157-D
Page57
Hifn Confidential
Field Name
Description
Bits
Default
PAD_Source_Count
[23:0]
Pad Source Count.
The number of bytes of pad data.
The data stream following the header will be
processed by the pad engine. The pad engine will
stop processing data and return to passing through
the remaining data in data stream after the pad
Source Counter reaches zero. The 820x pad Source
Counter begins to decrement after the pad Head
Counter has expired.
The behavior of this field depends on the setting of
hash count mode, PAD_CM.
If PAD_CM = 0,
63:40
0
0
All data from Head Counter expired to EOB (end
of block) needs to be processed by the
current engine
1 - 2241 to 224 bytes need to be processed by the
current engine
If PAD_CM =1,
0 - 2240 to 224 bytes after the last byte processed
by the previous processing engine needs
to be processed by current engine
PAD_Header_Count
[7:0]
Pad Header Count.
This 8-bit field sets the number of double words that
the pad engine will pass through before it begins
processing the incoming data stream.
39:32
0
Next_Head[7:0]
Next Header.
This field is only valid when the ESP bit is set to
one.
The Next_Head[7:0] value is an IPv4/IPv6 protocol
number describing the format of the Payload data
field. The host software must this field for IPsec
packet processing.
For an encode operation, the host software must
enter this field into the command structure. The Pad
Engine will append it to the data stream.
31:24
0
For a decode operation, the host software should set
this field to zero when building the command
structure. The 820x will update this field after the
command completes.
820x – Data Sheet, DS-0157-D
Page58
Hifn Confidential
Field Name
Description
Bits
Default
ESP
ESP Header Pad.
For an encode operation,
0
The value of Next_Head[7:0] will not be
inserted by the pad engine.
1
Pad engine will pad Next_Head[7:0] with “pad”
and Pad_Len[7:0] for IPsec packet processing.
The ESP Trailer will also be included in the
Dest_byte_count.
For a decode operation,
0
Pad engine will extract the Pad_Len[7:0] field
from the data stream, and write the pad
length to the host command structure after the
command completes
1
Pad engine will extract Pad_Len[7:0] and
Next_Head[7:0] fields from the data stream,
and write the pad length and next header to
the host command structure after the
command completes
Note: For both encode and decode operations,
Pad_AG[3] must be set to one if ESP = 1.
23
0
Regardless of the ESP value, the Pad Engine will
always apply padding even if the data is already a
multiple of the MOD-X.
Please refer to Appendix A for more information
about ESP IPsec processing.
ESP Header Format for ESP = 0:
1 byte
Pad
Payload data
Pad Length
ESP Header Format for ESP = 1:
|--------------ESP Trailer----------|
1 byte
1 byte
Pad
Payload data
Pad Length
Next Header
Reserved
22:19
18:11
0
0
Reserved.
Pad_Len[7:0]
Pad Length.
This field is only valid for decode operations.
For a decode operation, the pad engine removes the
padding from the data stream. This field is the
number of bytes that the pad engine stripped from
the data.
The pad engine will extract this field from the data
stream.
Note: The host software should set this field to zero
when building the command structure. The 820x will
update this field in the command structure after the
command completes.
820x – Data Sheet, DS-0157-D
Page59
Hifn Confidential
Field Name
Description
Bits
Default
PAD_CM
Pad Count Mode.
If this bit is set to zero, the pad source count in the
820x begins to decrement after the last header byte
has been passed through the 820x. If this bit is set
to one, the pad source counter begins to decrement
after the last byte processed by the previous
processing engine. Please refer to Section 3.1.3.10,
“IPsec Packet Processing" for more information.
10
0
0
820x begins to decrement the pad source count
after the last header byte
1
820x begins to decrement the pad source
count after the last byte processed by the
previous processing engine
PAD_EN
Pad Check Enable.
This bit is only valid for decode operations.
0
Pad engine will remove and not verify the
padding values defined by PAD_AG[3:0]
9
8
0
0
1
Pad engine will remove and verify the padding
values defined by PAD_AG[3:0]
Reserved
Reserved.
PAD_MOD[2:0]
Pad Modulo.
This field is used to set the alignment of the payload
after padding has been added.
000MOD-4: the payload after padding is 4 bytes
aligned
001MOD-8: the payload after padding is 8 bytes
aligned
010MOD-16: the payload after padding is 16 bytes
aligned
7:5
0
011MOD-32: the payload after padding is 32 bytes
aligned
100MOD-64: the payload after padding is 64 bytes
aligned
101MOD-128: the payload after padding is 128
bytes aligned
110MOD-256: the payload after padding is 256
bytes aligned
111Reserved
Reserved
4
0
Reserved.
820x – Data Sheet, DS-0157-D
Page60
Hifn Confidential
Field Name
Description
Bits
Default
PAD_AG[3:0]
Pad Engine algorithm.
The behavior of this field depends if the operation is
encode or decode and the setting of the ESP field
(see Section 3.1.2.6).
Refer to Table 3-2 for the decode values for this
field.
For all algorithms, the pad length is the number of
bytes in the preceding Padding field, except for
setting 1010 when the pad length is the number of
bytes in the preceding Padding field plus the “pad
length” byte.
PAD_AG[3] indicates whether the pad length field is
included in the padding. If PAD_AG[3] = 0, the pad
length field is not included, and if
3:0
0000
PAD_AG[3] = 1, the pad length field is included.
PAD_AG[3] = 0, without Length byte
Pad
Payload data
PAD_AG[3] = 1, with Length byte
Pad
Payload data
Pad Length
820x – Data Sheet, DS-0157-D
Page61
Hifn Confidential
Table 3-2. PAD_AG[3:0] Field Decoding
Encode/ ESP
Decode
PAD_AG Description
[3:0]
Encode
0
0000
0001
0010
0011
0100
1000
1001
1010
Padding value is 0 - 255.
For example, if 5 bytes are required to pad out to modulo 8, 5 bytes
will be inserted, the padding will be 00, 01, 02, 03, 04.
Padding value 1 - 255 - 0.
For example, If padding 256 bytes, the padding will be 1, 2, 3, ...
255, 0.
Padding with same value, the value is the number of bytes inserted.
For example, If 5 bytes are required to pad out to modulo 8, 5
bytes will be inserted, the padding will be 05, 05, 05, 05, 05.
Padding will be all zeroes.
For example, If 5 bytes are required to pad out to modulo 8, 5
bytes will be inserted, the padding will be 00, 00, 00, 00, 00.
Padding with number of bytes minus one inserted.
For example, If 5 bytes are required to pad out to modulo 8, 5
bytes will be inserted, the padding will be 04, 04, 04, 04, 04.
Padding value 0 - 255, with pad length field.
For example, If 5 bytes are required to pad out to modulo 8, 5
bytes will be inserted, the padding will be 00, 01, 02, 03, 04.
Padding value 1 - 255 - 0, with pad length field.
For example, If 5 bytes are required to pad out to modulo 8, 5
bytes will be inserted, the padding will be 01, 02, 03, 04, 04.
Padding with same value, the value is the number of bytes inserted,
with pad length field.
For example, If 5 bytes are required to pad out to modulo 8, 5
bytes will be inserted, the padding will be 05, 05, 05, 05, 05.
1011
1100
Padding with all zero, with pad length field.
For example, If 5 bytes are required to pad out to modulo 8, 5
bytes will be inserted, the padding will be 00, 00, 00, 00, 04.
Padding with number of bytes inserted minus 1, with pad length
field.
For example, If 5 bytes are required to pad out to modulo 8, 5
bytes will be inserted, the padding will be 04, 04, 04, 04, 04.
All
others
Reserved.
820x – Data Sheet, DS-0157-D
Page62
Hifn Confidential
Table 3-2. PAD_AG[3:0] Field Decoding
Encode/ ESP
Decode
PAD_AG Description
[3:0]
Encode
1
0xxx
1000
Not allowed
Padding value 0 - 255, with pad length field and next_header.
For example, if 5 bytes are required to pad out to modulo 8, 5 bytes
will be inserted, the padding will be 00, 01, 02, 03, <next_header>.
1001
1010
Padding value 1 - 255 - 0, with pad length field and next_header.
For example, if 5 bytes are required to pad out to modulo 8, 5 bytes
will be inserted, the padding will be 01, 02, 03, 03, <next_header>.
Note: please refer to RFC 2406 (ESP) for this configuration.
Padding with same value, the value is the number of bytes inserted,
with pad length field and next_header.
For example, if 5 bytes are required to pad out to modulo 8, 5 bytes
will be inserted, the padding will be 04, 04, 04, 04, <next_header>.
1011
1100
Padding with all zeroes, with pad length field and next_header.
For example, if 5 bytes are required to pad out to modulo 8, 5 bytes
will be inserted, the padding will be 00, 00, 00, 03, <next_header>.
Padding with number of bytes inserted minus 1, with pad length
field and next_header.
For example, if 5 bytes are required to pad out to modulo 8, 5 bytes
will be inserted, the padding will be 03, 03, 03, 03, <next_header>.
All
others
Reserved.
Decode
0
0000
0001
0011
0100
1000
1001
No verification and removal (no pad length field)
No verification and removal (no pad length field)
No verification and removal (no pad length field)
No verification and removal (no pad length field)
Verify the removed padding value 0 - 255 and the pad length field
Verify the removed padding value 1 - 255 - 0 and the pad length
field
1010
1011
1100
Verify the removed padding of number of bytes inserted, and the
pad length field
Verify the removed padding value of all zeroes and the pad length
field
Verify the removed padding of number of bytes inserted minus one,
and the pad length field
All
others
Reserved.
820x – Data Sheet, DS-0157-D
Page63
Hifn Confidential
Table 3-2. PAD_AG[3:0] Field Decoding
Encode/ ESP
Decode
PAD_AG Description
[3:0]
Decode
1
0xxx
1000
Not valid.
Verify the removed padding value 0 - 255, pad length field; remove
next_header
1001
1010
1011
1100
Verify the removed padding value 1 - 255 - 0, pad length field;
remove next_header
Verify the removed padding of number of bytes inserted, pad length
field; remove next_header
Verify the removed padding value of all zeroes, pad length field;
remove next_header
Verify the removed padding value of all padding length value less
one, pad length field; remove next_header
All
others
Reserved.
3.1.2.7
Desc_srcX and Desc_dstX
This source descriptor is only used in normal mode. The source data descriptors point to
source data buffers. The source buffer address length may be an arbitrary number of bytes.
The source buffer address is byte aligned except for when the source buffer is used to store
the information fields for the “Key”, “IHV”, “MAC”, or “IV”, in which case its address should
be 8-byte aligned. If a source buffer contains information fields, it should not contain
source data.
The destination data descriptors point to the destination buffers. The destination buffer
address and length must be on an 8 byte boundary. Usually, the destination buffers are
used to store the result data, and must be fully consumed in order. For hash related
operations, the first destination buffer is used to store hash values only.
The source and destination descriptors both contain 8 bytes in the 32-bit addressing mode
and 16 bytes in the 64-bit addressing mode.
32-bit Addressing Mode Format:
BYTE_COUNT[30:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
ADDR[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
820x – Data Sheet, DS-0157-D
Page64
Hifn Confidential
Field Name
Description
Bits
Default
Last
Last.
Used to identify the current descriptor as the last
valid descriptor in the command. The host software
must set this bit in the command structure.
Although the source and destination descriptors
must be in pairs in normal mode, the LAST flag
need NOT be set in the same pair. For example, the
source buffer LAST flag may be set at Dest_src2,
but the destination descriptor buffer LAST flag is set
at Dest_dst6.
63
0
Note: In small packet mode, there are two
destination descriptors but no source descriptors.
Byte_Count[30:0]
Byte Count.
The size of the source or destination buffer in bytes.
It indicates the size of the data block defined by this
descriptor.
62:32
0
For the source descriptor, the byte count is an
arbitrary number of bytes.
For the destination descriptor, the byte count must
be a multiple of 8 bytes.
ADDR[31:0]
Address.
The starting physical address of the source or
destination descriptor.
For source descriptors, including those that only
contain AAD, the address is byte aligned. If the
source buffers include the information fields “Key”,
“IV”, “IHV”,”MAC”, or “GZIP History”, the address
must be on an 8-byte boundary.
31:0
0
For destination descriptors, the address is always
aligned on an 8-byte boundary.
64-bit Addressing Mode Format:
BYTE_COUNT[30:0]
127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100
Reserved
99 98 97 96
95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64
ADDR[63:32]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
ADDR[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
820x – Data Sheet, DS-0157-D
Page65
Hifn Confidential
Field Name
Description
Bits
Default
Last
Last.
Used to identify the current descriptor as the last
valid descriptor in the command. The host software
must set this bit in the command structure.
Although the source and destination descriptors
must be in pairs in normal mode, the LAST flag
need NOT be set in the same pair. For example, the
source buffer LAST flag may be set at Dest_src2,
but the destination descriptor buffer LAST flag is set
at Dest_dst6.
127
0
Note: In small packet mode, there are two
destination descriptors but no source descriptors.
Byte_Count[30:0]
Byte Count.
The size of the source or destination buffer in bytes
and indicates the block size defined by the
descriptor.
126:96
95:63
0
0
For the source descriptor, the byte count is an
arbitrary number of bytes.
For the destination descriptor, the byte count must
be a multiple of 8 bytes.
Reserved
Reserved.
Address.
ADDR[63:0]
The starting physical address of the source or
destination descriptor.
For source descriptors, including those that only
contain AAD, the address is byte aligned. If the
source buffers include the information fields “Key”,
“IV”, “IHV”, ”MAC”, or “GZIP History”, the address
must be on an 8-byte boundary.
63:0
0
For destination descriptors, the address must be
aligned on an 8-byte boundary.
820x – Data Sheet, DS-0157-D
Page66
Hifn Confidential
3.1.3
Command Structure Conventions
This section designates some command structure conventions, clarifies some confusing
topics, and provides a better understanding of how a command structure is built.
All data streams described in this section are assumed to have the basic format shown
below:
Figure 3-7. Basic Data Sequence
3.1.3.1
Initial Hash engine Value (IHV)
For a hash related operations, the host software must write the Initial Hash Value (IHV) for
the hash engine in the proper place in the source buffer. IHV stands for not only the initial
hash operation value, but also the partial MAC operation value in stateful MAC operation.
Because a slice hash operation always uses the same default value, the host software need
not write the IHV for slice hash operations. The descriptions below apply for file hash and
all types of hash/MAC operations.
For a stateless hash operation or the first block of a stateful hash operation, the IHV is the
default value defined by the hash algorithm. For a stateful hash/MAC operation after the
first block, the host software should read the IHV (Partial hash/MAC result) from the hash
buffer (the first destination buffer is used as a hash buffer in a hash related command).
Default Initial Hash Vector for Hash Operations
The default value and size of the IHV depend on the hash algorithm. In the 820x, the host
software must pad the IHV to 256 bits for all algorithms before writing the IHV to the first
source buffer.
The examples below illustrate the default IHV after padding for three common hash
algorithms.
SHA1: IHV[0:255] ={ 67452301
efcdab89
98badcfe
h10325476
c3d2e1f0
96'd0};
SHA256: IHV[0:255] = { 6a09e667
bb67ae85
3c6ef372
a54ff53a
510e527f
9b05688c
820x – Data Sheet, DS-0157-D
Page67
Hifn Confidential
1f83d9ab
5be0cd19};
MD5: IHV[0:255] = { 67452301
efcdab89
98badcfe
10325476
128'd0};
Partial HMAC Value for Stateful Operations
For a stateful HMAC operation, the host software should write the partial HMAC value into
the IHV field for all blocks except the first.
Figure 3-8. Partial IHV Field for a Stateful HMAC Operations
Partial XCBC-MAC Value for Stateful Operations
For a stateful XCBC-MAC operation, the host software should write the partial XMAC-MAC
value into the IHV field for all blocks except the first.
Figure 3-9. Partial IHV Field for a Stateful XCBC-MAC Operations
Partial AES-GCM-MAC/GMAC Value for Stateful Operations
For a stateful AES-GCM-MAC or GMAC operation, the host software should write the partial
AES-GCM-MAC/GMAC value into the IHV field for all blocks except the first. Please refer to
Section 3.1.3.9, “MAC Operations" for a description of how to calculate s0.
Figure 3-10. Partial IHV Field for a Stateful AES-GCM-MAC/GMAC Operations
820x – Data Sheet, DS-0157-D
Page68
Hifn Confidential
Partial SSL3.0-MAC Value for Stateful Operations
For a stateful SSL3.0-MAC operation, the host software should write the partial SSL3.0-MAC
value into the IHV field for all blocks except the first.
Because the IHV is not protected by a CRC, the 820x will transmit the IHV to the host
destination buffer if the DIR bit in the Desc_cmd_base is set to one. The host software can
then determine whether the IHV has been corrupted.
Figure 3-11. Partial IHV Field for a Stateful SSL3.0-MAC Operations
3.1.3.2
MAC
For encode operations, the host software configures the Hash Engine's position in the data
processing channel and builds the command structure according to the application’s
requirement. The Hash Engine calculates the MAC value of the input data stream. The 820x
writes the resulting MAC value to the first entry of the hash buffer.
For decode operations, the host software writes the MAC value into the proper location of
the source buffer. The 820x Channel Manager will separate the MAC value from the source
data stream and put it on the hash information bus (Please refer to Section 3.1.3.5, “Data
Stream Information Fields" for details). The Hash Engine calculates the MAC value of the
input data stream, compares it with the value in the information bus, and then reports the
verified value or failure flag to the host. For a stateful MAC operation, the host software
should also write the partial MAC value into the IHV field. The MAC value field in the first
source buffer is fixed to 256 bits (32 bytes) as shown in Figure 3-12 below.
Because the MAC is not protected by a CRC, the 820x will transmit the MAC to the host
destination buffer. The host software can then determine whether the MAC has been
corrupted.
820x – Data Sheet, DS-0157-D
Page69
Hifn Confidential
Figure 3-12. MAC Field Format
820x – Data Sheet, DS-0157-D
Page70
Hifn Confidential
3.1.3.3
Initialization Vector (IV) and Additional Authenticated Data
(AAD)
All AES related operations except AES-ECB require a 16 byte initialization vector (IV) for
AES-CTR, AES-CBC, AES-XTS and GMAC, or a 32 byte initialization vector for AES-GCM, in
the source buffer. The 16 byte IV for AES-XTS is actually the logic address of the disk
sector. The Normal IV is the initial vector for the Encryption Engine AES algorithm and the
S0_IV is the initialization vector for the Hash Engine MAC operation AES algorithm.
As shown in Figure 3-13 below, the 16 byte IV for GMAC operations is the S0_IV (J0) for
the S0 calculation. AES-GCM requires 16 bytes of Normal_IV (J0) for the Encryption Engine
and another 16 bytes of S0_IV for the Hash engine. The Normal_IV and S0_IV are the
same value for stateless operation or for the first block of a stateful operation. The
Normal_IV and S0_IV will be different for the middle blocks and last block of a stateful
operation because the Normal_IV is not the first block initial value for the Encryption
engine, but S0_IV is the first block initial value for the Hash engine.
Figure 3-13. AES IV Lengths
Some AES-GCM related operations require Additional Authenticated Data (AAD) which is
authenticated but not encrypted.
In normal mode, the AAD can be written into a single source buffer, or several source
buffers. The length and address of a source buffer that only contains the AAD may be of
arbitrary length.
820x – Data Sheet, DS-0157-D
Page71
Hifn Confidential
In small packet mode, the host software must write the AAD into the command structure.
The AAD length must be padded so that it is aligned on an 8-byte boundary. For example,
if AAD_Size is equal to 57, the AAD field in the command structure would be 64 bytes
(padded with 7 bytes of zeroes).
Because the IV and AAD are not protected by a CRC, the 820x will transmit the IV and AAD
to the host destination buffer. The host software can then determine whether the IV or AAD
have been corrupted.
3.1.3.4
Key Format
For Encryption and Hash related operations, the host software must write the encryption
key to the 820x. The key must be located in the first source buffer and may have one of
the five formats described in this section.
For all key formats described in this section, reserved fields and the CRC verified “Key +
reserved fields” should be filled with zeroes when written by the host software.
The 820x will automatically verify the key CRC when reading the key, and report a “key
CRC error” to the host if the CRC verification failed. Although the key is CRC protected, the
820x will still write the key to the host destination buffer if the DIR bit in the
Desc_cmd_base descriptor is set to one.
Key Format 1: AES, 3DES
If the Encryption Engine and Hash Engine are both enabled and Hash_OP[3:0] is set to a
Slice Hash, File Hash or Slice + File Hash operation, the Hash Engine will calculate the hash
values without a key and the Encryption Engine will encrypt the data with a key. If the
Encryption Engine is disabled, AES commands will not require a key. This format for these
operations only includes the encryption key and requires 72 bytes.
If the Encryption engine and Hash engine are both enabled, and Hash_OP[3:0] is set to
GMAC or AES-GCM-MAC, the Encryption engine and Hash engine will use the same AES key
to separately calculate the cipher text and authentication value. This format for these
operations only includes the AES key and requires 72 bytes.
The key format shown in Figure 3-14 is used for AES and 3DES operations.
820x – Data Sheet, DS-0157-D
Page72
Hifn Confidential
Figure 3-14. Key Format 1 (72 bytes)
Key Format 2: HMAC, SSL3.0-MAC
If the Encryption and Hash engines are enabled and Hash_OP[3:0] is set to “HMAC” or
“SSL3.0-MAC (SHA256 or MD5)”, the Hash engine will calculate the MAC, and the IPAD and
OPAD fields must be generated by the host software according to the MAC key (please refer
to Section 3.1.3.7, “IPAD & OPAD for HMAC & SSL3.0-MAC (SHA256 | MD5)" for details).
If the Encryption and Hash engines are disabled, commands will not require keys. If only
the Encryption engine is disabled, the AES Key Field will be reserved. If only the Hash
engine is disabled, the IPAD and OPAD fields will be reserved.
Note: If ENC_AG[3:0] is set to XTS, Hash_OP[3:0] cannot be set to any MAC operation.
The 512 bit AES-XTS key is not permitted in this key format.
The key format shown in Figure 3-15 is used for HMAC and SSL3.0-MAC (SHA256 or MD5)
operations. This format includes the AES key, IPAD and OPAD and requires 104 bytes.
820x – Data Sheet, DS-0157-D
Page73
Hifn Confidential
Figure 3-15. Key Format 2
820x – Data Sheet, DS-0157-D
Page74
Hifn Confidential
Key Format 3: SSL3.0 MAC (SHA1)
If both the Encryption and Hash engines are enabled and Hash_OP[3:0] is set to “SSL3.0
MAC (SHA1)”, the Hash engine will calculate the SSL 3.0 MAC and requires the MAC Key.
Please refer to Section 3.1.3.9, “MAC Operations" for detail.
If both the Encryption and Hash engines are disabled, commands will not require keys. If
only the Encryption engine is disabled, the AES key field will be reserved. If only the Hash
Engine is disabled, the MAC key field will be reserved.
The key format shown in Figure 3-16 is used for SSL3.0 MAC (SHA1) operations. This
format includes the AES key and the MAC key and requires 72 bytes.
Figure 3-16. Key Format 3
Key Format 4: XCBC-MAC
If both the Encryption and Hash engines are enabled and Hash_OP[3:0] is set to “XCBC-
MAC”, the Hash engine will calculate the XCBC-MAC and requires a 128 bit XCBC-MAC Key.
If both the Encryption and Hash engines are disabled, commands will not require keys. If
only the Encryption engine is disabled, the AES key field will be reserved. If only the Hash
Engine is disabled, the XCBC-MAC key field will be reserved.
The key format shown in Figure 3-17 is used for XCBC-MAC operations. This format
includes the AES key and the XCBC-MAC key and requires 72 bytes.
820x – Data Sheet, DS-0157-D
Page75
Hifn Confidential
Figure 3-17. Key Format 4
3.1.3.5
Data Stream Information Fields
For some operations, the data stream will contain a mixture of the IHV, MAC, Key, IV and
AAD information fields. The sequence for these information fields in the source buffer is:
Key, IHV, IV, MAC, and AAD.
Source Buffer 0, Source Buffer 1, Source Buffer 2
Other Source Buffers
Source Data
Key
IHV
IV
MAC
AAD
If a command does not require all fields, those fields may be removed from the data
stream sequence. For example, a “Compression + encryption” command only requires the
Key, IV and AAD information fields.
Source Buffer 0, Source Buffer 1
IV AAD
Other Source Buffers
Source Data
Key
The 820x DMA will extract the information fields from the data stream and send them to
the appropriate engines on the information bus. Please note the actual data stream sent
into the 820x’s data processing channels does NOT include these information fields. When
calculating the “Head Count” and “Source Count” for the command structure, the host
software should exclude the information fields.
820x – Data Sheet, DS-0157-D
Page76
Hifn Confidential
All information bus fields except the AAD are aligned on an 8-byte boundary. Therefore, the
length of the source buffer with information fields are 8-byte aligned, except for a source
buffer that only contains the AAD. To simplify the software design, the input AAD is byte
aligned, but the output AAD is 8-byte aligned.
The 820x will write all information fields to the host destination buffer if the DIR bit in the
Desc_cmd_base descriptor is set to one. The host software can then determine if any of the
information fields have been corrupted. All information fields are located in the header of
the first destination buffer as shown in the example result data stream below.
Dest_byte_count includes all resultant output from the 820x.
Dest_byte_count = Destination Buffer 0, Destination Buffer 1
Key
IHV
IV
MAC
AAD
Result Data
Source buffers that contain information fields also can be handled in a scatter-gather
scheme to facilitate software packet processing. For example, the key field is a session
related parameter, while the other information fields are packet related parameters. The
host software can write the key into source buffer 0, setting the value for the whole
session. The other information fields, whose values change according to the packet, can be
saved into the remaining source buffers. In this way, the host software will not need to
copy the key repeatedly to host memory for the hundreds of packets for that session.
3.1.3.6
Hash Buffer
The Hash buffer is a dedicated buffer for storing hash values. The 820x will write to the
hash buffer before writing the command result entry into the destination buffer and the
result ring. The host software can be assured that when a command result is available, the
hash value for that command is also available.
The Hash buffer is actually the first destination buffer. If a command is hash related, the
first destination buffer will be used to store only the hash values; all destination data will be
written to host memory using the second destination buffer even if there is space remaining
in the hash buffer.
The hash buffer starting address and length must be aligned to 32-bytes, and for kernel
mode applications must be physically contiguous.
Every entry in the hash buffer is 256 bits to accommodate hash values of SHA-256, SHA-1,
MD5 and all MACs, therefore the hash buffer size must be a multiple of 256 bits. The hash
entry format is shown in Figure 3-18.
820x – Data Sheet, DS-0157-D
Page77
Hifn Confidential
Figure 3-18. Hash Entry Format
The first entry is always used to store the file hash chaining value or the MAC value; the
other entries are used to sequentially store the slice hash values.
820x – Data Sheet, DS-0157-D
Page78
Hifn Confidential
Figure 3-19. Hash Buffer Format
3.1.3.7
IPAD & OPAD for HMAC & SSL3.0-MAC (SHA256 | MD5)
SSL 3.0 MAC is a variation of the HMAC algorithm:
HMAC
MAC = H(K xor Pad2 || H(K xor Pad1 || M))
SSL 3.0 MAC
MAC = H(K || Pad2 || H(K || Pad1 || Seq. No. || Type || Length || Application Data))
The 820x uses an improved method to calculate the HMAC for better performance using the
IPAD and OPAD:
820x HMAC
MAC(K,M) = H(OPAD, H(IPAD,M))
The host software computes the IPAD and OPAD and writes the values to the 820x as the
key. The IPAD, derived from H(K xor Pad2) and the OPAD, derived from H(K xor Pad1) are
easily generated in software using a single 512 bit block hash.
This improved method may also be applied to SSL3.0 MAC so that the IPAD is derived from
H(K || Pad1) and the OPAD is derived from H(K || Pad2), the difference being the XOR and
||. If the host software works in SSL3.0 MAC mode, the input data should be “Seq. No. ||
Type || Length || Application Data”.
However, there is a special case for SSL 3.0 MAC using the SHA-1 algorithm. The designer
could easily make a mistake if the SHA-1 length of (K || Pad) is not 512 bits, and thus not
reuse the HMAC flow.
The recommended approach for computing the HMAC and SSL 3.0 MAC is:
820x – Data Sheet, DS-0157-D
Page79
Hifn Confidential
• For HMAC operations, the host software should pre-compute the IPAD and OPAD
using H(K xor Pad1) and H(K xor Pad2) and then write the data to the 820x.
• For SSL3.0-MAC (MD5 or SHA-256) operations, the host software should pre-
compute the IPAD and OPAD using H(K || Pad1) and H(K || Pad2) and then write
“Seq. No. || Type || Length || Data” to the 820x.
• For SSL3.0-MAC (SHA-1) operations, the host software should not pre-compute the
IPAD and OPAD and write K directly to the 820x using “Seq. No. || Type || Length ||
Data”.
3.1.3.8
AES-GCM and GMAC Operations
AES-GCM operation is different from other AES operations. The output of an AES-GCM
operation has two parts: a cipher text whose length is identical to the plain text, and an
authentication tag.
The cipher text is an output of the encryption engine, and the authentication tag is an
output of the hash engine. When performing AES-GCM operations, the host software must
enable both the encryption and hash engines.
Figure 3-20. AES-GCM Implementation Illustration
GMAC is a special case of AES-GCM mode in which the cipher text size equals zero. When
the 820x performs AES-GCM authenticated encryption, the Encryption engine performs the
encryption operation and then the hash engine performs the authentication operation. For
GMAC mode, the encryption and authentication occurs in the hash engine, using the AAD as
the input data.
3.1.3.9
MAC Operations
The 820x Hash engine supports stateless and stateful MAC operations. The MAC operation
is complex due to the number of parameters and operations, and the cooperation required
between the 820x and the software. Table 3-3 identifies the parameters that must be set
for different types of MAC operations.
820x – Data Sheet, DS-0157-D
Page80
Hifn Confidential
Table 3-3. MAC Operation Table (Sheet 1 of 2)
AES_ SSL3 XCB
GCM .0- C-
Key MAC MAC
Key Key
MAC Type FB
LB
IPAD OPA SO_I IHV
File Data
Size
State
D
V
HMAC
Arbitrary
Stateless
1
1
√
√
√
length
512-bit
aligned
First
Block
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
512-bit
aligned
Middle
Block
√
√
Arbitrary
length
Last
Block
√
√
√
√
√
XCBC-
MAC
Arbitrary
length
Stateless
√
128-bit
aligned
First
Block
√
128-bit
aligned
Middle
Block
√
√
√
Arbitrary
length
Last
Block
√
GCM-
MAC
Arbitrary
length
Stateless
√
√
√
√
√
128-bit
aligned
First
Block
128-bit
aligned
Middle
Block
√
√
Arbitrary
length
Last
Block
√
√
GMAC
Arbitrary
length
Stateless
128-bit
aligned
First
Block
128-bit
aligned
Middle
Block
√
√
Arbitrary
length
Last
Block
√
SSL3.0-
MAC
(SHA256
MD5)
Arbitrary
length
Stateless
√
√
√
√
512-bit
aligned
First
Block
512-bit
aligned
Middle
Block
√
√
Arbitrary
length
Last
Block
820x – Data Sheet, DS-0157-D
Page81
Hifn Confidential
Table 3-3. MAC Operation Table (Sheet 2 of 2)
AES_ SSL3 XCB
GCM .0- C-
Key MAC MAC
Key Key
MAC Type FB
LB
IPAD OPA SO_I IHV
File Data
Size
State
D
V
SSL3.0-
Arbitrary
Stateless
1
1
√
√
√
√
√
√
X
X
X
√
MAC
length
(SHA1)
512-bit
aligned
First
Block
1
0
0
0
0
1
512-bit
aligned
Middle
Block
Arbitrary
length
Last
Block
√
3.1.3.10
IPsec Packet Processing
The 820x has been optimized to maximize IPsec packet processing performance.
The 820x has four processing engines: compression, encryption, pad, and hash. The
processing order depends on whether the operation is encode or decode and the position of
the hash engine using the PS bits in the hash descriptor. Please refer to Chapter 4, “Data
Flow" for a detailed description of the operation sequence.
Each processing engine may be enabled or disabled. A disabled processing engine simply
passes data forward to the next processing unit without altering the data or modifying the
context.
Each processing engine has two counters: a Header Counter and a Source Counter. The
Header Counter is used to determine how many bytes the processing engine will pass
through before processing the data. This counter is useful to skip header fields in many
network communication protocols. The Source Counter determines how many bytes will be
processed by that processing engine. The Source Counter may be programmed to start
from the first byte to be processed, or after the last byte processed by the previous
processing engine. This flexibility takes into account the variable output sizes produced by
the compression and pad engines. Once the source count of a processing engine reaches
zero, any remaining bytes in the input data stream will be passed through the processing
engine without altering the data or modifying the context.
Figure 3-21 shows an example of how the 820x would processes an IPsec packet in
conjunction with the host software. This IPsec example illustrates how to apply IPPCP and
ESP in tunnel mode.
820x – Data Sheet, DS-0157-D
Page82
Hifn Confidential
Figure 3-21. IPsec Example: Applying IPPCP and ESP in Tunnel Mode
The 820x command structure controls each processing engine by specifying which part of
the block each engine is working on. Through careful selection of the Header Counter and
Source Count values in each processing engine, relatively complex patterns of compression,
encryption, padding and authentication can be performed. Table 3-4 below shows the
values that the host software would set for processing this example packet.
Table 3-4. Command Structure Values for IPsec Example
Command Structure Field
Length /
Value
Desc_cmd_cmp Descriptor
CMP_Header_Count
CMP_CM
B
0
CMP_Source_Count
Desc_cmd_pad Descriptor
Pad_Header_Count
Pad_CM
C-B
A
1
0
Pad_Source_Count
Desc_cmd_enc Descriptor
ENC_Header_Count
ENC_CM
A
1
0
ENC_Source_Count
Desc_cmd_hash Descriptor
Hash_Header_Count
PS
0
3
1
0
Hash_CM
Hash_Source_Count
For this example, the host software would construct the source data as:
ESP Header + IPPCP Header + Original IP Header + Original TCP Header + Original
Data Payload
820x – Data Sheet, DS-0157-D
Page83
Hifn Confidential
The 820x DMA would fetch the data and distribute it to the appropriate processing engines.
Because the header of this data block is not to be compressed, the compression engine
should skip over the ESP and IPPCP headers. Setting CMP_Header_Count to “B” represents
the number of bytes of data the compression engine would pass through. The compression
engine would begin compressing the Source Count bytes, “C-B”.
The Pad, Encryption and Hash engines work in a similar fashion, except for the fact that in
this example they have been set with CountMode of 1 and a SourceCount of 0. Each of
these processing engines passes through the number of bytes in the Header Counter, and
then process the same amount of data as processed by the previous engine.
820x – Data Sheet, DS-0157-D
Page84
Hifn Confidential
3.1.4
Free Pool Ring
The host software may use the 820x Free Pool to store result data if all the command’s
destination buffers are consumed in order to avoid an overflow error. Figure 3-22 illustrates
the Free Pool Ring.
Figure 3-22. Free Pool Ring
The 820x does not maintain a “full” bit for the Free Pool Ring; it is the responsibility of the
host not to overflow the free pool ring.
The Free Pool has same the format for both 32-bit or 64-bit addressing:
Free_Pool_Len[13;0]
CMD_Index[13:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
Free_Pool_Adr[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
820x – Data Sheet, DS-0157-D
Page85
Hifn Confidential
Field Name
Description
Bits
Default
Free_Pool_Len[13:0]
Free Pool Length.
This field indicates the size of the block defined by
the free pool descriptor. The size of the free pool
descriptor buffer is 8-bytes.
63:50
0
CMD_Index[13:0]
CPR
Command Index.
49:36
35
0
0
The index number of the command that used the
Free Pool entry.
Command Pointer Ring.
This bit identifies which command pointer ring used
the free pool entry.
0
Free pool entry is from a command in Command
Pointer Ring 0
1
Free pool entry is from a command in Command
Pointer Ring 1
Reserved
END
34
33
0
0
Reserved
End.
The command that used this entry is finished.
VALID
Entry Valid.
This bit indicates that the free pool entry is valid.
The host software will set this bit when writing a
new free pool entry. The 820x will clear this bit after
reading the free pool entry.
32
0
0
0
1
Free pool entry not valid
Free pool entry valid
Free_Pool_Adr[31:0]
Free Pool Buffer Starting Address.
The starting physical address of the descriptor free
pool. The Free Pool Entry format is the same for
both 32-bit and 64-bit addressing. Even if operating
in a 64-bit physical addressing environment, the
820x free pool physical addresses must be located
in the first 4GB (0 - 0xffffffff).
31:0
This field must be aligned on an 8 byte boundary.
Both the host and the 820x may read from and write to the Free Pool Ring; the host writes
to the ring at initialization, and the 820x reads from the ring when needed. After the 820x
has used a free pool entry, it will clear the Valid bit for that entry to inform the host that
the entry was used by a Channel Manager. After the host has finished processing a
command and finds that the command used the free pool by reading the FP bit in the result
descriptor, it should read the Free Pool Ring to determine how many entries were used by
that command. The host can then read the result data for that command from the Free Pool
buffers using the free pool address and length. Figure 3-24 illustrates a free pool ring
example.
820x – Data Sheet, DS-0157-D
Page86
Hifn Confidential
Figure 3-23. Free Pool Usage Example
820x – Data Sheet, DS-0157-D
Page87
Hifn Confidential
3.2 Result Ring
The result ring contains a completed command’s resultant data pointers and execution
status (successful completion or errors occurred). The 820x writes to the result ring and the
host reads from the result ring. The 820x will write to the result ring when a command
completes and then update its result ring write pointer appropriately.
The size of the result ring is always identical to the size of command pointer ring. The result
ring must be aligned to an 8-byte boundary and reside entirely in a physically contiguous
range of memory.
In general in the case of an error, bits [31:17] of a result ring entry summarize the source
of the error, while bits [63:32] provide a more detailed identification of the error. The error
bits remain set until cleared by the host software.
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
CMD_IDX[14:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Default
CM_DCRC
Channel Manager Data CRC error.
63
0
0
1
Channel Manager did not detect data CRC error
Channel Manager detected data CRC error
CM_KCRC
CM_ECC
Channel Manager Key CRC error.
62
0
0
1
Channel Manager did not detect key CRC error
Channel Manager detected key CRC error
Channel Manager ECC/Parity error.
0
Channel Manager did not detect ECC/Parity error
on this channel
61
0
0
1
Channel Manager detected ECC/Parity error on
this channel
Reserved
60:59
Reserved.
820x – Data Sheet, DS-0157-D
Page88
Hifn Confidential
Field Name
Description
Bits
Default
PAD_CFG_ERR
Pad Engine Software Configuration Error.
0
Pad Engine did not detect software configuration
error
58
0
1
Pad Engine detected software configuration
error
PAD_MALFORM_ERR
ENC_RV_ERR
Pad Engine Malformed Packet Error.
0
Pad Engine did not detect malformed packet
error
57
0
1
Pad Engine detected malformed packet error
Encryption Engine Real Time Verification Error.
0
Encryption Engine did not detect real time
verification error
56
55
0
0
1
Encryption Engine detected real time
verification error
ENC_PAR_ERR
Encryption Engine Parity Error.
0
1
No parity error in 3DES key
Encryption engine detected parity error in 3DES
key
ENC_DIF_CRC_ERR
Encryption Engine DIF CRC Error in AES-XTS
operation.
0
Encryption Engine did not detect DIF CRC error
in AES-XTS operation
54
53
0
0
1
Encryption Engine detected DIF CRC error in
AES-XTS operation
ENC_MALFORM_ERR
HASH_RV_ERR
Encryption Engine Malformed Packet Error.
0
Encryption Engine did not detect malformed
packet error
1
Encryption Engine detected malformed packet
error
Hash Engine Real Time Verification Error or HMAC
Error.
0
Hash engine did not detect real time verification
or HMAC error
52
0
1
Hash engine detected real time verification or
HMAC error
HASH_MAC_ERR
HASH_CFG_ERR
Hash Engine MAC Check Error.
0
1
Hash engine did not detect MAC check error
Hash engine detected MAC check error
51
50
0
0
Hash Engine Software Configuration Error.
0
Hash Engine did not detect software
configuration error
1
Hash Engine detected software configuration
error
820x – Data Sheet, DS-0157-D
Page89
Hifn Confidential
Field Name
Description
Bits
Default
HASH_MALFORM_ERR
Hash Engine Malformed Packet Error.
0
Hash Engine did not detect malformed packet
error
49
0
1
Hash Engine detected malformed packet error
Reserved
48
0
0
Reserved.
GZIP_DECODE_ERR
[5:0]
GZIP Error.
47:42
Please refer to Table 3-5 for the decoding of this
field.
GZIP_RV_ERR
GZIP Engine Real Time Verification Error.
0
GZIP engine did not detect real time verification
error
GZIP engine detected real time verification
error
41
40
0
0
1
GZIP_CFG_ERR
GZIP_MALFORM_ERR
GZIP Engine Software Configuration Error.
0
GZIP Engine did not detect software
configuration error
1
GZIP Engine detected software configuration
error
GZIP Engine Malformed Packet Error.
0
GZIP Engine did not detect malformed packet
error
39
38:37
36
0
0
0
1
GZIP Engine detected malformed packet error
Reserved
Reserved.
LZS_CRT_ERR
LZS Engine Corruption Error.
0
LZS engine did not detect EOR/multiple record
error
1
LZS engine detected EOR/multiple record error
LZS_ECC_ERR
LZS Engine ECC Error.
0
LZS engine did not detect ECC error in decode
operation
35
34
0
0
1
LZS engine detected ECC error in decode
operation
LZS_TOKEN_ERR
LZS Engine Token Error.
This bit will be set if the LZS engine identifies an
undefined token in the LZS engine data stream. A
token at the end of a compressed block normally
indicates the end of the compression data stream.
0
1
LZS engine did not detect token error
LZS engine detected token error
820x – Data Sheet, DS-0157-D
Page90
Hifn Confidential
Field Name
Description
Bits
Default
LZS_RV_ERR
LZS Engine Real Time Verification/CRC Error.
real time verification error when encode, identifies
CRC error when decode
0
LZS Engine did not detect real time verification
error for a encode operation, or a CRC error for
a decode operation
33
0
1
LZS Engine detected real time verification
error for a encode operation, or a CRC error for
a decode operation
LZS_MALFORM_ERR
CMD_ERR
LZS Engine Malformed Packet Error.
0
LZS Engine did not detect malformed packet
error
32
31
0
0
1
LZS Engine detected malformed packet error
Command Error.
This bit summarizes the command error status. It
will be set if any of the error bits, excluding the
overflow error bit, in this entry are set.
0
1
No error occurred for this command
Error occurred for this command
OFLOW
Overflow.
This bit indicates if an overflow error occurred in the
destination data buffer.
30
0
0
1
No overflow error occurred for this command
Overflow error occurred for this command
CMP_EXP
Compression Expansion bit.
This bit defines how the compression expansion is
calculated.
29
28
27
0
0
0
0
1
Len(cmp) + head_size < len(raw)
Len(cmp) + Head_Size >= len(raw)
RSVD
Reserved.
CM_ERR
Channel Manager Error.
This bit indicates if any error occurred in either
channel manager.
0
1
No error occurred in either channel manager
Error occurred in one or both channel managers
ENC_ERR
Encryption Engine Error.
This bit indicates if an error occurred in the
Encryption engine.
26
0
0
No Encryption engine error occurred for this
command
1
Encryption engine error occurred for this
command
820x – Data Sheet, DS-0157-D
Page91
Hifn Confidential
Field Name
Description
Bits
Default
HASH_ERR
Hash Engine Error.
This bit indicates if an error occurred in the hash
engine.
25
0
0
1
No hash engine error occurred for this command
Hash engine error occurred for this command
LZS_ERR
GZIP_ERR
PAD_ERR
LZS Engine Error.
This bit indicates if an error occurred in the LZS
engine.
24
23
0
0
0
1
No LZS engine error occurred for this command
LZS engine error occurred for this command
GZIP Engine Error.
This bit indicates if an error occurred in the GZIP
engine.
0
1
No GZIP engine error occurred for this command
GZIP engine error occurred for this command
Pad Engine Error.
This bit indicates if an error occurred in the Pad
engine.
22
0
0
0
0
0
1
No Pad engine error occurred for this command
Pad engine error occurred for this command
Reserved
CM_ID
21:18
17
Reserved.
Channel Manager Identifier.
This bit identifies which Channel Manager reported
the error.
0
1
Channel Manager 0 reported the error
Channel Manager 1 reported the error
Reserved
16:15
Reserved.
820x – Data Sheet, DS-0157-D
Page92
Hifn Confidential
Field Name
Description
Bits
Default
CMD_IDX
Command Index.
The command index field contains a Valid bit
and the index number of the completed
command in the result ring. The bit position of
the Valid bit depends on the command ring
size, as described below. The Valid bit toggles
each time the write pointer wraps the result
ring.
For a command ring size of 16K:
bit 14 Valid bit if command ring size is 16K
bit 13:0 Command index of completed command
For a command ring size of 8K:
14:0
0
bit 13 Valid bit if command ring size is 8K
bit 12:0 Command index of completed command
For a command ring size of 4K:
bit 12 Valid bit if command ring size is 4K
bit 11:0 Command index of completed command
A similar pattern can be applied for command ring
sizes < 4K.
Table 3-5 decodes the GZIP errors for the field GZIP_DECODE_ERR[5:0]. These errors indicate
that the data sent to the 820x has been corrupted.
Table 3-5. GZIP Decode Error Table
Error Code
Bits
Code Definition
6-bit
signed
Value
Comment
0X_XXXX
11_1111
11_1110
11_1101
11_1100
11_1011
11_1010
11_1001
11_1000
11_0111
11_0110
No error
0 -31
-1
SYS_GENERAL_ERROR
Not used.
SYS_BAD_MAGIC_NUMBER
SYS_BAD_GZIP_HEADER
SYS_BAD_FILE_NAME
SYS_BAD_FCOMMENT
SYS_BAD_EXTRA
-2
Incorrect magic number
-3
Bad compression mode or flags
Extra length greater than file length
Extra length greater than file length
Extra length greater than file length
Bad length or distance
-4
-5
-6
SYS_BAD_LENDIS
-7
SYS_STC_INVALID_SYMBOL
SYS_STC_INVALID_DISTANCE
SYS_STO_LEN_MISMATCH
-8
Static, invalid OP field
-9
Static, invalid OP field
STORED LEN (bypass mode) does not
match NLEN
-10
-11
SYS_BAD_BLOCK_TYPE
SYS_BAD_NO_DYN_SUPP
11_0101
11_0100
Block type 3 detected
Attempt dynamic frame with no support.
Only valid for cores built without dynamic
support.
-12
-13
SYS_DYN_NO_LAST_LENGTH
11_0011
No last length in dynamic mode
820x – Data Sheet, DS-0157-D
Page93
Hifn Confidential
Table 3-5. GZIP Decode Error Table
Error Code
Bits
Code Definition
6-bit
signed
Value
Comment
SYS_DYN_NLEN_OR_NDIST
11_0010
NLEN > MAXLCODES or
NDIST > MAXDCODES
Invalid code lengths
-14
SYS_DYN_INVALID_CODE_LEN
STS_DYN_TOO_MANY_LENGTH
STS_DYN_INVALID_CODE_LEN
STS_DYN_TOO_MANY_LENS
STS_DYN_OVER_SUBSCRIBED
STS_DYN_INCOMPLETE_SET
STS_DYN_ENOUGH_NOT_ENOUGH
11_0001
11_0000
10_1111
10_1110
10_1101
10_1100
10_1011
10_1010
-15
-16
-17
-18
-19
-20
-21
Invalid code lengths
Not used
Not used
Oversubscribed set of lengths
Incomplete set of lengths
Not enough space for dynamic table
No more data present in stream
STS_DYN_UNEXPECTED_END_OF_ST
REAM
-22
10_1001 to
10_0000
Not defined
Not used
-23 to -
32
The Valid bit in the CMD_IDX[14:0] field informs the host software that the corresponding
command has finished and indicates that there are valid entries in the result ring. The value
of the Valid bit toggles every time the result ring is completely used, i.e., the 820x write
pointer has wrapped the ring. For example, for the first pass through the result ring the
value of the Valid bit indicating valid entries is one. After the 820x’s write pointer wraps
around the result ring, the Valid bit will be zero, and so on for every complete pass through
the result ring. During initialization, the host software should write a zero to the Valid bit.
This simple mechanism is sufficient to allow the host to differentiate unambiguously
whether an entry in the result ring has been updated.
Figure 3-24 shows an example of how the result ring and command pointer ring are used
to process a command and its results. To simplify the illustration, this example shows a
command pointer ring only with 4 entries, but the actual minimum command pointer ring
size is 16 entries.
820x – Data Sheet, DS-0157-D
Page94
Hifn Confidential
Figure 3-24. Result Ring Example
820x – Data Sheet, DS-0157-D
Page95
Hifn Confidential
3.3 Command Operation Sequence
The 820x has a high performance DMA engine that supports two command pointer rings
using a round-robin arbitration scheme. Figure 3-25 shows how the 820x and the host
software work together to process a command. The flow is described in the figure below.
Figure 3-25. Command Process Flow Example
1. Host configures the 820x control registers (Refer to Chapter 6 for details).
2. Host sets up Command Pointer Ring 0 and Command Pointer Ring 1 and writes
the command structures into host memory.
3. Host writes the source data into the source buffers.
4. Host writes the index number of the commands into the Command Pointer Ring
using the 820x Command Pointer Ring Write Pointer (Wcp) register and updates
its own Command Pointer Ring Write Pointer (Wch). The 820x maintains a
Command Pointer Ring Read Pointer (Rcp) register which may be read by the
host at any time. It is the responsibility of the host not to overflow the Command
Pointer Ring by ensuring that the write pointer never advances to meet the read
pointer. If several commands are ready for submission at the same time, the host
may build the command structures for all these commands and then issue a
single write to the write pointer register to improve efficiency.
820x – Data Sheet, DS-0157-D
Page96
Hifn Confidential
5. If dual command pointer ring mode is enabled, the host should update the
appropriate command write pointer of Command Pointer Ring 0 or Command
Pointer Ring 1.
6. As long as the read and the write pointer registers for Command Pointer Ring 0
or Command Pointer Ring 1 are not equal, the 820x recognizes that commands
are available to fetch from host memory. A command read request will be sent by
the 820x Read Request Controller which will alternate sending the command to
either Command Pointer Ring 0 or Command Pointer Ring 1. In this example, the
command is sent to Command Pointer Ring 0.
7. The 820x reads the source descriptor to determine the location of the source data
and the operation. The Compression, Decompression, Hash, and Pad engines
process the data according to the control fields in the command structure.
8. The 820x writes the slice hash values and file chaining hash value to the first
destination buffer if the command has Hash related operation.
9. After the Compression, Decompression, Hash, and Pad engines complete
processing the data, the 820x writes the result data to the host destination
buffers whose location is defined in the destination descriptor.
10. After the 820x writes the result data to host memory, it updates the appropriate
command structure Result Ring. Because the 820x has two channels (each
channel includes one group of Compression, Decompression, Hash, and Pad
engines) which process commands in parallel, and the commands may have
different sizes, it is very probable for commands to complete out of order. The
Result Ring is used to keep track of the finished commands.
820x – Data Sheet, DS-0157-D
Page97
Hifn Confidential
4 Data Flow
The 820x has four processing engines: Compression, Encryption, Pad, and Hash. Each
processing engine may be enabled or disabled in the command descriptor base register
(Section 3.1.2.2, “Desc_cmd_base"). A disabled processing engine simply passes data
forward to the next processing engine without altering the data or modifying the context.
The Pad engine is typically used for packet processing applications to pad or remove data;
storage applications may disable the Pad engine to conserve power.
The order of processing depends on whether the operation is in the encode or decode
direction. The positions of Compression, Encryption and Pad engines are fixed, but the
position of the Hash engine is configurable using Hash Engine Position PS configuration bits
in the hash descriptor command structure (Section 3.1.2.5, “Desc_cmd_hash").
In addition, in the data stream sent to a processing engine, the amount of header and
trailer data skipped by the engine may be adjusted according to the Source_Count and
Header_Count fields in the command descriptor structures for each engine. This feature is
can used to accelerate packet processing.
4.1 Encode Operations Data Flow
4.1.1
Hash Engine before Compression Engine
Figure 4-1 shows the data flow when the position of the Hash Engine is before the
Compression engine and all four engines are enabled.
1. The DMA fetches “RAW” data from the host according to the command structures,
and sends the data to processing channel 0 or processing channel 1.
2. In parallel, processing channels 0 and 1 begin to process the “RAW” data for
separate commands.
3. The Hash engine simultaneously calculates the hash values for the “RAW” data,
and passes the “RAW” data to the Compression engine.
4. The Compression engine compresses the “RAW” data, and then sends the
compressed RAW data “CMP” to the Pad engine.
5. The Pad engine passes through the “CMP” data and adds “Pad” to the data stream
for the Encryption Engine.
6. The Encryption engine encrypts the “CMP + Pad” data, and then sends the result,
ENC (CMP + Pad), to the DMA.
7. Finally, the DMA sends the result data, ENC (CMP +Pad), from the Encryption
engine and the hash values from the Hash engine to host memory according to
the command structures.
820x – Data Sheet, DS-0157-D
Page98
Hifn Confidential
Figure 4-1. Encode Operation: Hash Engine before Compression Engine
In this figure, the Hash engine only calculates the hash values on the RAW data. The 820x
can also calculate MAC values on the RAW data by setting the configuration fields
appropriately in the command structure. The 820x can only calculate hash or MAC values
when the Hash engine's position is before the Compression engine. In any other position,
the Hash engine can only calculate MAC values.
4.1.2
Hash Engine after Compression Engine
Figure 4-2 shows the data flow when the Hash engine position is after the Compression
engine and all four engines are enabled. In this configuration, the Hash engine calculates
the MAC value on the CMP data instead of the RAW data. The data flow for the remaining
engines is the same as described in Section 4.1.1, “Hash Engine before Compression
Engine".
820x – Data Sheet, DS-0157-D
Page99
Hifn Confidential
Figure 4-2. Encode Operation: Compression Engine before Hash Engine
4.1.3
Hash Engine after Pad Engine
Figure 4-3 shows the data flow when the Hash engine position is after the Pad engine and
all four engines are enabled. In this configuration, the Hash engine calculates the MAC
value of the compressed and padded data, CMP + Pad. The data flow for the remaining
engines is the same as described in Section 4.1.1, “Hash Engine before Compression
Engine".
820x – Data Sheet, DS-0157-D
Page100
Hifn Confidential
Figure 4-3. Encode Operation: Hash Engine after Pad Engine
4.1.4
Hash Engine after Encryption Engine
Figure 4-4 shows the data flow when the position of the Hash engine is after the Encryption
engine and all four engines are enabled. In this configuration, the Hash engine calculates
the MAC value on the encrypted, compressed data with padding, ENC(CMP + Pad). The
data flow for the remaining engines is the same as described in Section 4.1.1, “Hash
Engine before Compression Engine".
820x – Data Sheet, DS-0157-D
Page101
Hifn Confidential
Figure 4-4. Encode Operation: Hash Engine after Encryption Engine
4.2 Decode Operations Data Flow
4.2.1
Hash Engine before Encryption Engine
Figure 4-5 shows the data flow when the position of the Hash Engine is before the
Encryption engine and all four engines are enabled. The data flow is the reverse of the
“Hash Engine after Encryption Engine” encode operation.
1. First, the DMA fetches the encrypted, compressed data with padding, ENC (CMP
+ Pad) & MAC, from the host according to the command structures, and sends
the data to processing channel 0 or processing channel 1.
2. In parallel, processing channels 0 and 1 begin to process the “ENC (CMP + Pad)
& MAC” data for separate commands.
3. The MAC value is sent to the Hash engine through the information bus, and the
“ENC (CMP + Pad)” data is sent to the Hash engine through the data bus. Please
refer to Section 3.1.3.5, “Data Stream Information Fields" for details.
4. The Hash engine calculates the MAC value of the “ENC (CMP + Pad)” data and
compares the result to the MAC value on information bus to determine whether
the input stream is valid, and also passes through the “ENC (CMP + Pad)” data to
the Encryption engine.
820x – Data Sheet, DS-0157-D
Page102
Hifn Confidential
5. The Encryption engine decrypts the “ENC (CMP + Pad)” data, and then sends the
“CMP + Pad” data to the Pad engine.
6. The Pad engine passes through the “CMP” data to the Compression Engine, and
removes the “Pad” data in the data stream.
7. The Compression engine decompresses the “CMP” data, and then sends the
resulting “RAW” data to the DMA.
8. Finally, the DMA sends the result data to host memory according to command
structures.
Figure 4-5. Decode Operation: Hash Engine before Encryption Engine
4.2.2
Hash Engine after Encryption Engine
Figure 4-6 shows the data flow when the position of the Hash engine is after the Encryption
engine and all four engines are enabled. In this configuration, the Hash Engine calculates
MAC value for the compressed data with padding, “CMP + Pad”, and compares the
calculated MAC value against the MAC value in the information bus. The data flow for the
remaining engines is the same as described in Section 4.2.1, “Hash Engine before
Encryption Engine". This data flow is the reverse of the encode operation “Hash Engine
after Pad engine”.
820x – Data Sheet, DS-0157-D
Page103
Hifn Confidential
Figure 4-6. Decode Operation: Hash Engine after Encryption Engine
4.2.3
Hash Engine after Pad Engine
Figure 4-7 shows the data flow when the position of the Hash engine is after the Pad
engine and all four engines are enabled. In this configuration, the Hash engine calculates
the MAC value on the compressed “CMP” data and compares the calculated MAC value
against the MAC value on the information bus. The data flow for the remaining engines is
the same as described in Section 4.2.1, “Hash Engine before Encryption Engine". This flow
is the reverse of the encode operation “Hash Engine after Compress Engine”.
820x – Data Sheet, DS-0157-D
Page104
Hifn Confidential
Figure 4-7. Decode Operation: Hash Engine after Pad Engine
4.2.4
Hash Engine after Compression Engine
Figure 4-8 shows the data flow when the position of the Hash engine is after the
Compression engine and all four engines are enabled. In this configuration, the Hash engine
calculates the MAC value of the RAW data and compares it against the MAC value on the
information bus. The data flow for the remaining engines is the same as described in
Section 4.2.1, “Hash Engine before Encryption Engine". The data flow is the reverse of the
“Hash Engine before Compression Engine” encode operation.
820x – Data Sheet, DS-0157-D
Page105
Hifn Confidential
Figure 4-8. Decode Operation: Hash Engine after Compression Engine
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page106
5 Modules
This chapter gives a more detailed description of some of the key 820x internal modules:
DMA, Configuration registers, Channel Managers, PKP Manager, PKP Core, RNG engine,
Hash engine, LZS engine, GZIP engine, Pad engine, Encryption engine, and the clock
generator.
5.1 DMA
5.1.1
PCIe Outbound Manager
The PCIe Outbound Manager (POM) provides a transmit interface between the PCIe Core
and DMA modules. The main functions of the PIM are:
• Send write requests to the PCIe Core transmit interface
• Send read requests to the PCIe Core transmit interface
• Convert output data to the correct endian format
5.1.2
PCIe Inbound Manager
The PCIe Inbound Manager (PIM) provides a receive interface between the PCIe Core and
DMA modules. The main functions of the PIM are:
• Decode the completion PCIe TLP (Transaction Layer Packet) from the PCIe Core
completion receive interface, and send the completion data to Completion Controller
• Decode memory writes and memory reads from the PCIe Core ELBI interface (a local
bus of the PCIe Core for reading or writing application-owned register space), and
send write and read requests to the Configuration Register module
• Send interrupts to the host through the PCIe Core interface
• Convert input data to the correct endian format
5.1.3
Command Pointer Ring Prefetch
The Command Pointer ring Prefetch (CPP) module is used to prefetch command pointers
from the host command pointer ring. The CPP implements a 128 byte Command Pointer
Ring (CPR) buffer which can accommodate 16 command pointers in 64-bit addressing mode
(8 bytes per pointer) and 32 command pointers in 32-bits addressing mode (4 bytes per
pointer).
When the Command Pointer Ring buffer is half empty and the CPR Read Pointer is not equal
to the CPR write pointer, the CPP module sends a read request to the Read Request
controller (RRC, discussed in Section 5.1.4 below) to prefetch the maximum command
pointer ring entries from host memory (8 entries for 64-bit addressing mode or 16 entries
for 32-bit addressing mode). This CPP request has the highest priority in the RRC.
820x – Data Sheet, DS-0157-D
Page107
Hifn Confidential
Figure 5-1 illustrates how the CPP pre-fetches 8 command pointers using 64-bit addressing.
Initially, the host software writes 9 command pointers into the command pointer ring and
updates the CPR write pointer for the 820x. At this point, the 820x CPR read pointer is zero
because it has not read any of the commands. Once the CPP discovers that the CPR buffer
is empty and CPR Read Pointer is not equal to the CPR write pointer, the 820x will fetch the
8 CPR entries and store them into the CPR buffer.
Figure 5-1. DMA Command Pointer Prefetch Example
Note: If dual command ring mode is enabled, the CPP will maintain two CPR buffers. The
arbitration of the two CPR buffer read requests uses a round-robin scheme.
5.1.4
Read Request Controller
The Read Request controller (RRC) arbitrates the read requests from multiple sources,
builds the TLP, and sends a read request to the POM. The main functions of the RRC are:
• Store the source descriptor starting address and byte count
• Arbitrate read requests from both channel managers, the PKP manager and the CPP
• Split the source descriptor into TLP read requests and send requests to the POM
• Arbitrate command process requests from the dual command ring using a round-
robin scheme.
• Send out the command read request and then update the command pointer ring
read pointer
820x – Data Sheet, DS-0157-D
Page108
Hifn Confidential
• Push the source descriptor head and tail pointers into the pointer FIFO in the
Channel Manager Inbound Data Controller (IDC) when sending source data read
requests (The head and tail pointers indicate the valid bytes in a single quad-word
as the source buffer starting address and length is arbitrary)
5.1.5
Write Request Controller
The Write Request controller (WRC) arbitrates the write requests from multiple sources,
builds the TLP, and sends write requests to the POM. The main functions of the WRC are:
• Store the destination descriptor starting address and byte count
• Arbitrate destination write requests from both channel managers and the PKP
manager
• Split the destination descriptor into TLP write requests and send those requests to
the POM
• Generate a Free Pool write request if a Free Pool entry is used by the channel
manager
• Generate the command structure result field and result ring write requests when a
command completes
• Update the result ring write pointer after a command completes
5.1.6
Completion Controller
The Completion Controller (CC) distributes completion data to the proper destination
according to the PCIe tags, which tag a completion. The main functions of the Completion
Controller are:
• Decode the command structure and send the command to a channel manager
• Write the source descriptors to the RRC source descriptor buffer and destination
descriptors to the WRC destination descriptor buffer
• Write the completion data to the corresponding channel manager's source buffer
• Maintain the read request record table
5.2 Configuration Registers
The Configuration Registers (CFG_REGS) module implements all 820x registers accessed by
the host through the PCIe bus. The main functions of the Configuration Registers are:
• Implement all registers
• Respond to PCIe memory write and read request from the PIM
• Provide global configuration signals to all other modules
820x – Data Sheet, DS-0157-D
Page109
Hifn Confidential
5.3 Channel Manager
There are two channel managers in the 820x. Each channel manager controls one Data
Processing Channel. The DMA controller issues the read and write requests needed to
execute a command and the control the data flow for the Data Processing Channels encode
and decode operations.
Figure 5-2. Channel Manager Block Diagram
5.3.1
Channel Manager Inbound Data Controller
The Inbound Data Controller (IDC) controls the command structure and fetching the source
data. The main functions of the Inbound Data Controller are:
• Issue command structure read requests and put the command into the command
buffer after the command completes
• Issue source descriptor read requests
• Issue source data read requests while maintaining the source data read request tags
and ensuring the source buffer is available before issuing the source data read
request (The IDC can generate a maximum 8 outstanding data read requests)
• Issue free pool descriptor read requests if the destination descriptors are all
consumed
820x – Data Sheet, DS-0157-D
Page110
Hifn Confidential
• Maintain two entries into the command buffers to improve performance by
prefetching the next command's command structure and source data if all the
current command’s source data is consumed
• Maintain the source descriptor head and tail pointer FIFO, which is used to indicate
the valid bytes in a single quad word because the source buffer starting address and
length is arbitrary
5.3.2
Channel Manager Source Buffer
The source buffer is implemented as a two-port 72-bit memory (64 bits of data and 8 bits
of ECC). The source buffer memory is segmented into multiple blocks; each block
comprises multiple cells. The cell size is fixed at 128-bytes, the minimum
max_read_request_size.
When a Channel Manager requests a block of source data, the length will be the cell size,
except the first and the last requests of a source descriptor because the starting address of
a source descriptor is arbitrary aligned. The number of cells in a block are a power of 2 and
depend on the parameter max_read_request_size which may be 128, 256, 512, 1K, or 2K
bytes. Each Channel Manager has a 4K byte deep source buffer, and supports
max_read_request_size equal 128, 256 or 512 bytes, therefore each block may consist of
1, 2, or 4 cells.
For data integrity, every 64 bits of data are protected by 8 bits of ECC.
Note: The default maximum read request size, max_read_request_size for the PCIe
specification is 512 bytes. If the host configures the max read request size to 1KB or 2KB,
the 820x will still send 512B read requests over the PCIe interface.
5.3.3
Channel Manager Outbound Data Controller
The Outbound Data Controller (ODC) controls the result data and command process status
writes to host. The main functions of the Outbound Data Controller are:
• Issue data write requests to the POM when data in the result buffer exceeds the
maximum read request size
• Issue destination descriptor read requests and free pool entry read requests
• Issue hash/MAC values write requests to the POM if used
• Issue free pool entry write requests if the free pool is used
• Issue command structure result field write requests and result ring write requests
when a command completes
• Organize the errors reported by the processing engines
820x – Data Sheet, DS-0157-D
Page111
Hifn Confidential
5.3.4
Channel Manager Result Buffer
The Result Buffer is used to temporarily store the destination data generated by the
processing engines. Unlike source data, destination data is stored into the result buffer in
the order that the commands complete and is fetched using the same sequence, therefore
it mimics a FIFO.
The size of the write request payload must not exceed the parameter max_payload_size.
The host software sets this parameter during initialization and is typically set to 128 bytes.
If the result buffer is 1KB deep, it can accommodate 8 TLPs.
The result buffer is implemented as a dual-port 1K-byte memory. The data bus width is 72-
bits (64 bits of data and 8 bits of ECC).
Note: The 820x supports a maximum payload size, max_payload_size, of 128, 256 or 512
bytes. If the host configures the max read request size to 1KB or 2KB, the 820x will still
send 512B read requests over the PCIe interface.
5.3.5
Channel Manager Data Process Controller
The Data Process Controller (DPC) controls the data process flow and interface with all
processing engines. The main functions of the Data Process Controller are:
• Separate the information bus from the source buffer, and feed the information bus
field to the processing engines
• Read and align the data from the source buffer, and feed the source data to
processing engines
• Verify the Key CRC if the command uses an the key
• For encode operations, append a CRC to the source data or verify the CRC of input
data
• For decode operations, verify the data CRC
• Read the result data from the processing engines; align and write the data into the
result buffer
• Control the encode and decode data flow
5.4 PKP Manager
The PKP Manager controls the flow of fetching instructions and operand data from host
memory to the PKP engine, and the flow of transmitting the calculated results from the PKP
engine to host memory.
820x – Data Sheet, DS-0157-D
Page112
Hifn Confidential
Figure 5-3. PKP Manager Block Diagram
5.4.1
PKP Inbound Data Controller
The PKP Inbound Data Controller (IDC) controls the PKP instruction and source data
fetching. The IDC can generate a maximum of 8 outstanding data read requests. The main
functions of the IDC are:
• Issue instruction and data read requests, maintain source data read request tags
and ensure source buffer is available when issuing source data read requests
• Prefetch the next command's source data to improve performance
5.4.2
PKP Source Buffer
The PKP Source buffer is used to buffer the instruction and data of a PK operation, and is
implemented as a two-port 72-bit memory. The memory is segmented into multiple blocks.
Each block is comprised of multiple cells as described in Section 5.3.2, “Channel Manager
Source Buffer". For data integrity, every 64 bits of data are protected by 8 bits of ECC.
5.4.3
PKP Outbound Data Controller
The PKP Outbound Data Controller (ODC) controls writing the result data to the host. The
main function of the ODC is:
820x – Data Sheet, DS-0157-D
Page113
Hifn Confidential
• Issue data write request to the POM when the data is available (the PKP result data
is ready when the calculation is finished; the PIC will write the data into the result
buffer continuously).
5.4.4
PKP Result Buffer
The PKP Result Buffer is used to temporarily store the calculated result generated by the
PKP Engine. Unlike the source data, the destination data is stored in-sequence into the
result buffer and is fetched using the same sequence, similar to a FIFO.
The PIC writes data to the Result Buffer after each PKP calculation completes. Whenever
result data is available in the PKP Data Register, the PIC will continuously transfer the data
to the result buffer until the Result Buffer is full.
Result buffer is implemented as a 72-bit RAM, with 64 bits of data and 8 bits of ECC.
5.4.5
PKP Interface Controller
The PKP Interface Controller (PIC) is the communication channel between the PKP Manager
and the PKP Engine. The main functions of the PIC are:
• Read instructions from the source buffer, and transfer them to the PKP Engine Linear
Instruction Registers (LIRs)
• Read data from the source buffer, and transfer them to the PKP Engine Data
Registers
• Control the command execution flow
5.4.6
PKP Core
The PKP Core is IP from Athena. Please refer to Athena’s EXP-E5200 Public Key
Cryptography Microprocessor for more information.
5.5 RNG Engine
The RNG Engine is Hifn IP. Please contact Hifn if detailed information is required.
5.6 Hash Engine
The Hash Engine calculates the hash or MAC values. The Hash Engine comprises an input
AFIFO, output AFIFO, Hash AFIFO, Hash interface controller and two Hash cores.
This engine can skip leading bytes and consume varying amounts of payload data to
support current and future network security protocols. These options are provided on a per
command basis.
820x – Data Sheet, DS-0157-D
Page114
Hifn Confidential
Figure 5-4. Hash Engine Block Diagram
Note, the Information Bus includes Hash_Head_Count, Hash_Source_Count from the
Channel Manager.
5.6.1
Hash In_AFIFO & Out_AFIFO
The Hash In_AFIFO and Out_AFIFO are used to transfer data and control signals between
the DMA clock domain (125M) and the Hash Engine clock domain (200M).
5.6.2
Hash_AFIFO
The Hash AFIFO is used to store the hash values calculated by the Hash cores, and
synchronize the data transfer between the DMA clock domain (125M) and the Hash Engine
clock domain (200M).
The Hash_AFIFO is implemented as a 34 x 32 bit flip-flop. A MD5 hash result is 128 bits (16
bytes) and occupies four entries (4 DWs) in the Hash_AFIFO; a SHA1 hash result is 160 bits
(20 bytes) and occupies three entries (5 DWs) of the Hash_AFIFO; a SHA2 hash result is
256 bits (32 bytes) and occupies four entries (8 DWs) of the Hash_AFIFO. Therefore, the
Hash_AFIFO can accommodate at least 4 hash result values.
5.6.3
Hash Interface Controller
The Hash Interface Controller (HIC) is the communication bridge between the In_AFIFO,
Hash_AFIFO and Hash cores. The main functions of the HIC are:
• Read the source data from the In_AIFIO, truncate the header and tail from the data
stream, and then send the truncated data to the Hash core according to
Hash_Head_Count and Hash_Source_Count
• Control the real time verification flow
• Control the two Hash core’s execution of the required operation
• Read the hash values from the Hash Cores and send them to the Hash_AFIFO
820x – Data Sheet, DS-0157-D
Page115
Hifn Confidential
• Combine the source data with the MAC value, and then send it to the Out_AFIFO
• Report the Hash core status to the Channel Manager after each command completes
5.6.4
Hash Core
The Hash engine contains two Hash cores. Each core supports six operation modes:
• slice hash only
• file hash only
• slice hash + file hash
• MAC
• SSL3.0 MAC
• XCBC-MAC (with SHA1, SHA256, and MD5 algorithms).
5.6.4.1
Hash Core Operation Modes
Slice Hash only
In this mode, one core calculates the hash value, while the other is used for real time
verification. Each slice is treated as a complete hash operation (with length padding).
File Hash only
In this mode, one core calculates the hash value, while the other is used for real time
verification. Hash engine will load the initial hash value into the hash cores during
initialization, and performs length padding on the last block of data (one command, one
block data).
A File Hash operation performs the hash operation on the entire data block of one
command. A File Hash command can be either stateless or stateful. If the hash of one file
can be done in one command, it is considered stateless; otherwise if the hash of one file
requires two or more commands, it is considered stateful.
Example of a stateless File Hash (one file per command):
The Hash core uses the default initial hash value, and adds length padding at the end
of the data block. The output hash is considered complete.
Example of a stateful file hash (one file uses three commands):
a. The Hash core uses the default initial hash value for the data block of the first com-
mand, and does not add padding. The output hash is considered incomplete but is
used as the IHV for the second command.
b. For the second command, the Hash core uses the IHV calculated from the first com-
mand, and does not add padding. The output hash is considered incomplete but is
used as the IHV for the third command.
820x – Data Sheet, DS-0157-D
Page116
Hifn Confidential
c. For the third command, the Hash core uses the IHV calculated from the second
command, and pads the last data block. The output is considered complete and is the
hash value of the entire file.
Slice Hash + File Hash
In this mode, one Hash core calculates the slice hash, while the other calculates the file
hash. No internal data integrity checking is performed in this mode.
Figure 5-5 shows an application example of a Slice Hash + File Hash operation.
Figure 5-5. Application Example of Slice Hash + File Hash
MAC
The MAC is actually keyed hash functions within a keyed hash function. The general
notation for a MAC message M using key K is:
MAC(K,M) = H(K xor opad, H(K xor ipad, M))
MAC(K,M) = H(OPAD, H(IPAD,M))
Where H is one of the hashing algorithms (SHA-1, SHA-256, or MD5), IPAD and OPAD are
the pre-computed partial results of the 64-element array (of values 0x36 and 0x5c
respectively) computed from the secured key (K) and IV (Initial Value). Either hashing
algorithm provides automatic pad insertion and MAC defined length insertion on an
arbitrary sized data block.
SSL3.0 MAC
820x – Data Sheet, DS-0157-D
Page117
Hifn Confidential
In this mode, one Hash core calculates the SSL3.0 MAC, while the other performs real time
verification.
The MAC in SSL3.0 is calculated as follows:
Hash(Write Secret || Pad2 || Hash(Write Secret || Pad1 || Seq. No. || Type || Length
|| Application Data))
Where:
Hash = SHA-1 or MD5
Write Secret = 20 bytes if SHA-1, 16 bytes if MD5; from Crypto Header
Pad1 = 48/40 bytes of 0x36 (MD5/SHA-1)
Pad2 = 48/40 bytes of 0x5C (MD5/SHA-1)
SeqNum = 8 byte Sequence Number from Crypto Header
Type = Type byte from SSL Header
Length = 16 bit Length of payload (no padding!)
The host software must combine “Seq. No. || Type || Length || Application Data” as source
data, and the Hash Engine will calculate the SSL3.0 MAC.
XCBC-MAC
The AES-XCBC-MAC-96 algorithm is a variant of the basic CBC-MAC with obligatory 10*
padding; however, AES-XCBC-MAC-96 is secure for messages of arbitrary length. The AES-
XCBC-MAC-96 calculations require numerous encryption operations; this encryption MUST
be accomplished using AES with a 128-bit key. Given a 128-bit secret key K, AES-XCBC-
MAC-96 is calculated as follows for a message M that consists of n blocks, M[1]... M[n], in
which the blocksize of blocks M[1]... M[n-1] is 128 bits and the blocksize of block M[n] is
between 1 and 128 bits:
(1) Derive 3 128-bit keys (K1, K2 and K3) from the 128-bit secret
key K, as follows:
K1 = 0x01010101010101010101010101010101 encrypted with Key K
K2 = 0x02020202020202020202020202020202 encrypted with Key K
K3 = 0x03030303030303030303030303030303 encrypted with Key K
(2) Define E[0] = 0x00000000000000000000000000000000
(3) For each block M[i], where i = 1... n-1:
XOR M[i] with E[i-1], then encrypt the result with Key K1, yielding E[i].
(4) For block M[n]:
(a) If the blocksize of M[n] is 128 bits:
820x – Data Sheet, DS-0157-D
Page118
Hifn Confidential
XOR M[n] with E[n-1] and Key K2, then encrypt the
result with Key K1, yielding E[n].
(b) If the blocksize of M[n] is less than 128 bits:
(i) Pad M[n] with a single “1” bit, followed by the num-
ber of “0” bits (possibly none) required to increase
M[n]'s blocksize to 128 bits.
(ii) XOR M[n] with E[n-1] and Key K3, then encrypt the
result with Key K1, yielding E[n].
(5) The authenticator value is the leftmost 96 bits of the 128-bit E[n].
NOTE1: If M is the empty string, pad and encrypt as in (4b) to create M[1] and E[1]. This
will never be the case for ESP or AH, but is included for completeness sake.
NOTE2: [CBC-MAC-2] defines K1 as follows:
K1 = Constant1A encrypted with Key K | Constant1B encrypted with Key K.
However, the second encryption operation is only needed for AES-XCBC-MAC with keys
greater than 128 bits; thus, it is not included in the definition of AES-XCBC-MAC-96.
AES-XCBC-MAC-96 verification is performed as follows:
Upon receipt of the AES-XCBC-MAC-96 authenticator, the entire 128-bit value is computed
and the first 96 bits are compared to the value stored in the authenticator field. Keying
Material AES-XCBC-MAC-96 is a secret key algorithm. For use with either ESP or AH a fixed
key length of 128-bits MUST be supported. Key lengths other than 128-bits MUST NOT be
supported (i.e. only 128-bit keys are to be used by AES-XCBC-MAC-96).
5.6.4.2
Hash Core Algorithms
SHA1/SHA256 Core
The SHA-1/SHA-256 calculation core performs the secure hash algorithm on N x 512-bit
blocks (N < 2k) and produces a single 160-bit/256-bit hash result, CVN+1, using the 512-
bit input blocks and CVN, the previous hash result.
To calculate the hash value of an input message MCALC = Min + PadSHA-1 (PadSHA-1
includes lengthSHA-1), which by definition must be an integral number of 512-bit blocks
{B0, B1, B2, …, BL}, the following sequence is performed:
1. To indicate the start of a new hash calculation, set the CV value to the SHA-1/
SHA-256 initial value from a previously calculated partial result.
2. Write the first block to the calculation core. (16 x 32-bit words)
3. Wait for the hash value calculation to complete.
820x – Data Sheet, DS-0157-D
Page119
Hifn Confidential
4. If the last block was written to the core, latch the hash value, otherwise, write
the next block to the calculation core and go to step 3.
Figure 5-6 shows a block diagram of the SHA Core.
Figure 5-6. SHA Core Block Diagram
MD5 Core
The MD5 calculation core performs the MD5 message digest algorithm on a N x 512-bit
blocks (N < 4k) and produces a single 128-bit message digest, CVN+1, using the 512-bit
input blocks and CVN, the previous message digest.
To calculate the hash value of an input message MCALC= MIN + PadMD5 (PadMD5 includes
lengthMD5), which by definition must be an integral number of 512-bit blocks {B0, B1, B2,
…, BL}, the following sequence is performed:
1. To indicate the start of a new hash calculation, set the CV value to the MD5 initial
value from a previously calculated partial result.
2. Write the first block to the calculation core. (16 x 32-bit words)
3. Wait for the hash value calculation to complete.
4. If the last block was written to the core, latch the hash value, otherwise, write
the next block to the calculation core and go to step 3.
820x – Data Sheet, DS-0157-D
Page120
Hifn Confidential
Figure 5-7 shows a block diagram of the MD5 Core.
Figure 5-7. MD5 Core Block Diagram
5.7 LZS Engine
The LZS Engine compresses/decompresses source data using Hifn’s LZS and enhanced LZS
(eLZS) algorithms. The LZS engine comprises an input AFIFO, output AFIFO, LZS interface
controller and LZS core. This engine can skip leading bytes and consume varying amounts
of payload data to support current and future network security protocols. These options are
provided on a per command basis.
820x – Data Sheet, DS-0157-D
Page121
Hifn Confidential
Figure 5-8. LZS Engine Block Diagram
Note: The Information Bus includes CMP_Head_Count and CMP_Source_Count from the
Channel Manager.
5.7.1
LZS In_AFIFO & Out_AFIFO
The LZS In_AFIFO and Out_AFIFO are used to transfer data and control signals between
the DMA clock domain (125M) and the LZS Engine interface controller clock domain (150M).
Both the In_AFIFO and Out_AFIFO are implemented as 39 x 16 bit flip-flops.
5.7.2
LZS Core Interface Controller
The LZS core Interface Controller (LIC) is the communication bridge between the In_AFIFO,
Out_AFIFO, and LZS core. The main functions of the LIC are:
• Read the source data from the In_AIFIO, pass through the header and tail of the
data stream to next engine (Out_AFIFO), and send the remaining data to the LZS
core according to the CMP_Head_Count and CMP_Source_Count.
• Write to the LZS core command register at the beginning of each command.
• Read the result data from the LZS Core, merge the tail of the source data stream
and the result data into a double word, and send it to the Out_AFIFO.
• Report the LZS core status to the Channel Manager after each command completes.
5.7.3
LZS Core
The LZS Core is Hifn IP. The LZS core is a high performance lossless data compression
processor that uses the industry-standard Lempel-Ziv-Stac (LZS®) compression algorithm,
as well as the “Enhanced LZS” (eLZS) algorithm. The output of the compression engine is
tied to the input of the decompression engine for compression operation verification.
820x – Data Sheet, DS-0157-D
Page122
Hifn Confidential
The LZS Core uses an anti-expansion algorithm that prevents the output from expanding
during compression. If the output expands during compression the original uncompressed
input along with certain header bytes is passed through as the output.
5.8 GZIP Engine
GZIP Engine compresses/decompresses source data with the GZIP algorithm, it includes the
input AFIFO, output AFIFO, GZIP interface controller and GZIP core.
Figure 5-9. GZIP Engine Block Diagram
5.8.1
GZIP In_AFIFO & Out_AFIFO
The GZIP In_AFIFO and Out_AFIFO are used to transfer data and control signals between
the DMA clock domain (125M) and the GZIP Engine interface controller clock domain
(200M).
Both the In_AFIFO and Out_AFIFO are implemented as 39 x 16 bit flip-flops.
5.8.2
GZIP Core Interface Controller
The GZIP Core Interface Controller (GIC) is the communication bridge between the
In_AFIFO, Out_AFIFO and GZIP core. The main functions of the GIC are:
• Read the source data from the In_AIFIO, pass through the header and tail of the
data stream to next engine (Out_AFIFO), and send the remaining data to the GZIP
core according to the CMP_Head_Count and CMP_Source_Count.
• Control the operation flow of GZIP core.
• Read the result data from the GZIP Core, merge the tail of the source data stream
and the result data into a double word, and send it to the Out_AFIFO.
• Report the GZIP core status to Channel Manager after each command completes.
820x – Data Sheet, DS-0157-D
Page123
Hifn Confidential
5.8.3
GZIP Core
The GZIP core complies with RFC 1951, and RFC 1952 and supports the Dynamic Huffman
algorithm for a high compression ratio.
5.9 Pad Engine
The Pad Engine is used to add padding to the data stream for encode operations and
remove padding for decode operations. This engine can skip leading bytes and consume
varying amounts of payload data to support current and future network security protocols.
These options are provided on a per command basis.
Figure 5-10. Pad Engine Block Diagram
The main functions of the Pad Engine are:
• For encode operations, receive the data stream from the Channel Manager, adding
padding to the data stream according to the required algorithm.
• For encode operations, receive the data stream from Channel Manager, truncating
the padding from the data stream.
• Extract the “Next Header” and “Pad Length” fields from data stream for decode
operations.
• Detect Pad errors according to the pad algorithm.
5.10 Encryption Engine
The Encryption Engine encrypts/decrypts source data with either the AES or 3DES
algorithm. The Encryption Engine is comprised of the input AFIFO, output AFIFO, Encryption
interface controller, AES Core and 3DES Core. This engine can skip leading bytes and
consume varying amounts of payload data to support current and future network security
protocols. These options are provided on a per command basis.
820x – Data Sheet, DS-0157-D
Page124
Hifn Confidential
Figure 5-11. Encryption Engine Block Diagram
5.10.1
Encryption In_AFIFO & Out_AFIFO
The Encryption In_AFIFO and Out_AFIFO are used to transfer data and control signals
between the DMA clock domain (125M) and the Encryption Engine interface controller clock
domain (200M).
Both the In_AFIFO and Out_AFIFO are implemented as 39 x 16 bit flip-flops.
5.10.2
Encryption Interface Controller
The Encryption Interface Controller (EIC) is the communication bridge between the
In_AFIFO, Out_AFIFO, AES core, and 3DES core. The main functions of the EIC are:
• Read the source data from the In_AIFIO, pass through the header and tail of data
stream to the next engine (Out_AFIFO), and send the remaining data to the AES
core/3DES core according to the ENC_Head_Count and ENC_Source_Count.
• Control the operation flow of the AES and 3DES cores.
• Read the result data from the AES Core/3DES cores, merge the tail of the source
data stream and the result data into a double word, and send it to the Out_AFIFO.
• Report the AES and 3DES core status to the Channel Manager after each command
completes.
5.10.3
Encryption AES and 3DES Cores
The AES and 3DES cores are Hifn IP. The Encryption/Decryption engine supports AES-GCM,
CBC, CTR and ECB with 128, 192 or 256 bit keys, AES-XTS with 256 or 512 bit keys, and
3DES.
820x – Data Sheet, DS-0157-D
Page125
Hifn Confidential
5.11 Clock and Reset Generator
The CLK_RST_Gen module resides in the core of the 820x, and is responsible for the
generation and management of all clocks and resets throughout the device. The major
components of the CLK_RST_Gen module are:
• Main PLL x 1
• PCIE PHY PLL x 1
• Clock dividers, distribution and gating logic
• Reset generation logic
The Main PLL is used to multiply the input clock to a frequency of 600MHz, which is then
divided down to 200MHz, 150MHz, and 300MHz for the processing engines. The PCIe PHY
PLL is used to generate a 125MHz clock for most of the DMA related modules.
To conserve power, the CLK_RST_Gen modules uses a clock gating cell statically or
dynamically to disable the clock to each data processing channel engine.
CLK_RST_Gen also generates the power on reset and software reset signals for all modules.
5.12 Temperature Sensor Controller
The 820x contains an internal temperature sensor that measures the die temperature using
measured voltages from internal analog circuitry. These voltages are converted to a signal
value through an ADC, allowing the values to be read by the host.
The 820x also contains a controller for the temperature sensor. The host may read/write
directly to the 820x temperature sensor controller (TSC) registers. In contrast, the
temperature sensor registers may only be accessed indirectly by the host via the
temperature sensor controller registers. Refer to Section 6.8, “Temperature Sensor
Controller Registers" for a complete description of the TSC registers.
The flow diagram in Figure 5-12 illustrates the procedure for measuring and calculating the
820x die temperature using the temperature sensor controller registers to read and write to
the temperature sensor registers. Table 5-1 defines the TSC addresses that should be used
to access the temperature sensor registers.
820x – Data Sheet, DS-0157-D
Page126
Hifn Confidential
Figure 5-12. Die Temperature Measurement Procedure
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page127
Table 5-1. Temperature Sensor Register Map
Temperature Sensor Register Name
TSC_Addr
0x17
0x9
Bit Field
[12:2]
[1:0]
iv
mode
dac_mode
sel
0x8
[14:12]
[4]
0x9
adc_out
0xA
[9:0]
Note: The interval between two consecutive reads must be greater than 100 μs.
As shown in Figure 5-12, two equations are used to determine the die temperature:
a = (m2 - m1)/m1
Temperature = 105.6 + 189.6 x (a - 1.1) - 96.6 x (a - 1.1)^2
The host software can read the “m1” and “m2” values from the TSC Data register (Section
6.8.2), calculate the average over the last 80 values, and then calculate the temperature
using the equations listed above. Note: This formula may be modified by Hifn for the
production version of the device.
For example, to read from a temperature sensor register:
1. Write the temperature sensor register address to TSC Address (0x8F0).
2. Write 0x4 to the TSC Command Register (0x8F8).
3. Poll the TSC_OP_Done bit in the TSC Command Register (0x8F8) until set.
4. Read the TSC Data Register (0x8F4) to get the temperature sensor value.
To write to a temperature sensor register
1. Write the value to be written to the temperature sensor register to the TSC Data
Register (0x8F4).
2. Write the temperature sensor register address to the TSC Address Register
(0x8F0).
3. Write 0x2 to the TSC Command Register (0x8F8).
4. Poll the TSC_OP_Done bit in the TSC Command Register (0x8F8) until set.
820x – Data Sheet, DS-0157-D
Page128
Hifn Confidential
6 Register Definition
This section describes the 820x registers for configuration, DMA control, PKP control, and
engine configuration registers.
The registers are mapped into 4K bytes of PCIe memory space that can be accessed
through the PCIe bus. The absolute register address can be calculated using:
PCIe Address = PCIe base address + offset
PCIe Memory Space (4K bytes)
0x0000
Configuration
0x01FF
0x0200
DMA Control
0x03FF
0x0400
Engine Configuration
0x057F
0x0580
PKP Control
RNG Control
GPIO
SPI
Probe Control
0x0A00
Reserved
0x0FFF
Figure 6-1. PCIe Memory Map
The host should not read/write to/from reserved registers. If the host writes to a reserved
register, the write will be ignored by the 820x. Likewise, if the host reads a reserved
register, the return value will be all zeros.
820x – Data Sheet, DS-0157-D
Page129
Hifn Confidential
6.1 Configuration Registers
6.1.1
Status Register
The Status register provides the 820x internal status to host. These signals may be
connected to LEDs as status indicators.
Type:
Offset
Read only
x‘0000’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
PCIe_Link
Description
Bits
Reset
31:4
0
Reserved.
PCIe Link Status
3
2
0
0
0
1
PCIe link is down and not operational
PCIe link is up and operational
820x_Err
PKP_Busy
820x Status
0
1
No 820x errors detected
820x error detected
Public Key Processor Status
0
1
PKP Manager and PKP Engine not busy
PKP Manager and PKP Engine busy
1
0
0
0
Note: the host software may only disable the PKP
when the PKP is not busy.
CM_Busy
Channel Manager Status
0
1
Channel Manager not busy
Channel Manager busy
Note: the host software may only disable the
Channel Manager when the Channel Manager is not
busy.
820x – Data Sheet, DS-0157-D
Page130
Hifn Confidential
6.1.2
820x Error Register
The 820x Error register provides additional information to the host if an 820x error occurs.
Type:
Offset
Read/Write one to clear
x‘0004’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
OFLOW
Description
Bits
Reset
31:11
0
Reserved.
Destination buffer overflow
10
9
0
0
0
1
No destination buffer overflow detected
Destination buffer overflow detected
CLP_TO
Completion Timeout
This bit will be set if outstanding read requests for
completion packets do not return to the 820x within
the timeout window valued defined in the PCIe
specification.
0
1
No completion timeout error detected
Completion timeout error detected
CLP_CA
Host Completion Abort
This will be set if the host could not respond to a
read request issued by the 820x.
8
0
0
1
No completion abort error detected
Completion abort error detected
PCIE_ECRC_ERR
PCIE_PARITY_ERR
CM_ERR
PCIe Core ECRC Error
7
6
0
0
0
1
No ECRC error detected by PCIe Core
ECRC error detected by PCIe Core
PCIe Core Parity Error
0
1
No PCIe Core Parity error detected
PCIe Core Parity error detected
Command Error
This bit will be set if any error is detected by the
Channel Manager (see Section 6.2.15, “Channel
Manager 0-1 Error Status Register")
5
0
0
1
No command error detected
Command error detected
820x – Data Sheet, DS-0157-D
Page131
Hifn Confidential
Field Name
Description
Bits
Reset
AES_ERR
Encryption Engine Error
4
0
0
1
No Encryption Engine error detected
Encryption Engine error detected
HASH_ERR
GZIP_ERR
LZS_ERR
PAD_ERR
Hash Engine Error
3
2
1
0
0
0
0
0
0
1
No Hash Engine error detected
Hash Engine error detected
GZIP Engine Error
0
1
No GZIP Engine error detected
GZIP Engine error detected
LZS Engine Error
0
1
No LZS Engine error detected
LZS Engine error detected
PAD Engine Error
0
1
No PAD Engine error detected
PAD Engine error detected
820x – Data Sheet, DS-0157-D
Page132
Hifn Confidential
6.1.3
820x Interrupt Status Register
The 820x Interrupt Status register provides the 820x interrupt status to the host. Once an
interrupt is set, it may be cleared by the host by either writing a one to that bit, by a
hardware reset or a Miscellaneous Soft Reset (MISC_RST fromSection 6.1.5). However, the
PKP_INT bit can only be reset by a hardware or PKP soft reset.
Type:
Offset
Read/Write one to clear
x‘0008’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
GPIO_INT
Description
Reserved.
Bits
Reset
31:10
0
GPIO Interrupt
9
8
0
0
0
1
No GPIO interrupt occurred
GPIO interrupt occurred
RNG_INT
SPI_INT
Random Number Generator Interrupt
0
1
No RNG interrupt occurred
RNG interrupt occurred
Serial to Parallel Interface Interrupt
7
0
0
0
1
No SPI interrupt occurred
SPI interrupt occurred
Reserved
FP_INT
6:5
Reserved.
Free Pool Interrupt
This interrupt will be set when a free pool descriptor
is used by the 820x.
4
3
0
0
0
1
No Free Pool interrupt occurred
Free Pool interrupt occurred
PCIE_ERR_INT
PCIe Error Interrupt
The 820x was not able to recover from a PCIe error.
0
1
No PCIe Error interrupt occurred
PCIe Error interrupt occurred
820x – Data Sheet, DS-0157-D
Page133
Hifn Confidential
Field Name
Description
Bits
2
Reset
CM_ERR_INT
Command Error Interrupt
The 820x detected a command error but that error
was corrected internally.
0
0
0
1
No Command Error interrupt occurred
Command Error interrupt occurred
Reserved
CMD_INT
1
Reserved
Command Done Interrupt
Channel manager has completed a command.
When this bit is set to one and the IRQ_EN bit in the
command structure is set to one, the 820x will send
this interrupt to the host after the command
completes.
0
0
0
1
No Command Done interrupt occurred
Command Done interrupt occurred
820x – Data Sheet, DS-0157-D
Page134
Hifn Confidential
6.1.4
820x Interrupt Enable Register
The 820x interrupt Enable register provides the capability for the host to enable/disable
820x interrupts. All interrupt enable bits in this register may be reset by a hardware reset
or a Miscellaneous Soft Reset (MISC_RST fromSection 6.1.5) except the PKP_INT_EN bit
which can only be reset by a hardware or PKP soft reset. Refer to Section 6.1.3 for a
detailed description of each interrupt.
Type:
Offset
Read/Write
x‘000C’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
Description
Bits
Reset
31:10
0
Reserved.
GPIO_INT_EN
GPIO Interrupt Enable
9
8
0
0
0
1
GPIO interrupt disabled
GPIO interrupt enabled
RNG_INT_EN
SPI_INT_EN
Random Number Generator Interrupt Enable
0
1
RNG interrupt disabled
RNG interrupt enabled
Serial to Parallel Interface Interrupt Enable
7
6:5
4
0
0
0
0
1
SPI interrupt disabled
SPI interrupt enabled
Reserved
Reserved
FP_INT_EN
Free Pool Interrupt Enable
0
1
Free Pool interrupt disabled
Free Pool interrupt enabled
PCIE_ERR_INT_EN
CM_ERR_INT_EN
Reserved
PCIe Error Interrupt Enable
3
0
0
1
PCIe Error interrupt disabled
PCIe Error interrupt enabled
Command Error Interrupt Enable
2
1
0
0
0
1
Command Error interrupt disabled
Command Error interrupt enabled
Reserved
820x – Data Sheet, DS-0157-D
Page135
Hifn Confidential
Field Name
Description
Bits
Reset
CMD_INT_EN
Command Done Interrupt Enable
Channel manager has completed a command.
0
0
0
1
Command Done interrupt disabled
Command Done interrupt enabled
820x – Data Sheet, DS-0157-D
Page136
Hifn Confidential
6.1.5
Soft Reset Register
The Soft Reset register provides the host the capability to reset the 820x during error
recovery. The Soft Reset register will be cleared by the 820x after the reset is complete.
After a soft reset, the 820x will wait 64 clock cycles to ensure that all modules are reset.
Type:
Offset
Read/Write
x‘0018’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
RNG_RST
Description
Bits
Reset
31:5
0
Reserved.
Random Number Generator Soft Reset
4
3
0
0
0
1
Do not reset the RNG
Reset the RNG
GPIO_RST
MISC_RST
General Purpose I/O Soft Reset
0
1
Do not reset the GPIO
Reset the GPIO
Miscellaneous Soft Reset
0
1
Do not reset the misc modules
2
0
Reset all other modules except the GPIO, RNG,
PKP Manager, PKP cores, PCIe core and PHY
PKP_RST
Public key Processor Soft Reset
1
0
0
0
0
1
Do not reset the PKP
Reset the PKP manager and the two PKP pairs
PCIE_RST
PCIe Soft Reset
0
1
Do not reset the PCIe
Reset the PCIe core and PHY
820x – Data Sheet, DS-0157-D
Page137
Hifn Confidential
6.1.6
Device Minor Revision Register
The Device Minor Revision register reflects the device’s minor revision number.
Type:
Offset
Read only
x‘0020
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:4
0
Reserved.
DEV_MIN_REV[3:0]
Device Minor Revision Number.
Please refer to Chapter 14, “Errata" for the
difference between the 820x revisions.
3:0
0
0000 Preliminary release
0001 First production release
820x – Data Sheet, DS-0157-D
Page138
Hifn Confidential
6.1.7
Card Version Register
The Card Version register allows the host to read the version number of the card. The card
version is read from pads that can be pulled high or low on the card.
Type:
Offset
Read only
x‘0100’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Reserved.
Bits
31:3
2:0
Reset
Reserved
0
0
CARD_VER[2:0]
Card Version
820x – Data Sheet, DS-0157-D
Page139
Hifn Confidential
6.2 DMA Control Registers
6.2.1
Command Pointer Ring 0 Base Address Register
This register is the base address of the command pointer ring (CPR) 0 in host memory. The
820x uses this base address plus an offset to fetch a command pointer, and then uses the
command pointer to fetch the corresponding command structure. The CPR base address
must be 8-byte aligned, and the command pointer in CPR must be 512-byte aligned.
Type:
Offset
Read/Write
x‘0200’
CPR0_BASEADR_H[31:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
CPR0_BASEADR_L[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
CPR0_BASEADR_H
[31:0]
Command pointer ring 0 base address high double
word
63:32
0
CPR0_BASEADR_L
[31:0]
Command pointer ring 0 base address low double
word
31:0
0
820x – Data Sheet, DS-0157-D
Page140
Hifn Confidential
6.2.2
Command Pointer Ring 0 Write Pointer Register
This register is a copy of the command pointer ring 0 write pointer in host memory. The
host must update this register whenever new commands are added into the command
pointer ring 0.
The 820x Command Ring 0 Write Pointer register stores the index number (i.e., 1, 2, 3…)
of the corresponding command ring write pointer in host memory. The host updates this
register whenever a new command is submitted to Command Ring 0. The 820x uses the
stored index number (i.e., 1, 2, 3) to refer to the Command Pointer Ring 0 Base Address
register (Section 6.2.1), and calculate the actual address of the newly submitted command
structure in Command Ring 0.
Please refer to Section 3.3, “Command Operation Sequence" for more information about
this register.
Type:
Offset
Read/Write
x‘0208’
CPR0_WP[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Command pointer ring 0 write pointer
Bits
Reset
CPR0_WP[31:0]
31:0
0
6.2.3
Command Pointer Ring 0 Read Pointer Register
This register is the 820x command pointer ring 0 read pointer. The host may read this
register to determine how many entries in the command pointer ring 0 have been read by
the 820x.
Type:
Offset
Read/Write
x‘020C’
CPR0_RP[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Command pointer ring 0 read pointer
Bits
Reset
CPR0_RP[31:0]
31:0
0
820x – Data Sheet, DS-0157-D
Page141
Hifn Confidential
6.2.4
Command Pointer Ring 1 Base Address Register
This register is the base address of the command pointer ring (CPR) 1 in host memory. The
820x uses this base address plus an offset to fetch a command pointer, and then uses the
command pointer to fetch the corresponding command structure. The CPR base address
must be 8-byte aligned, and the command pointer in CPR must be 512-byte aligned.
Type:
Offset
Read/Write
x‘0210’
CPR1_BASEADR_H[31:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
CPR1_BASEADR_L[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
CPR1_BASEADR_H
[31:0]
Command pointer ring 1 base address high double
word
63:32
0
CPR1_BASEADR_L
[31:0]
Command pointer ring 1 base address low double
word
31:0
0
820x – Data Sheet, DS-0157-D
Page142
Hifn Confidential
6.2.5
Command Pointer Ring 1 Write Pointer Register
This register is a copy of the command pointer ring 1 write pointer in host memory. The
host must update this register whenever new commands are added into the command
pointer ring 1.
The 820x Command Ring 1 Write Pointer register stores the index number (i.e., 1, 2, 3…)
of the corresponding command ring write pointer in host memory. The host updates this
register whenever a new command is submitted to Command Ring 1. The 820x uses the
stored index number (i.e., 1, 2, 3) to refer to the Command Pointer Ring 1 Base Address
register (Section 6.2.4), and calculate the actual address of the newly submitted command
structure in Command Ring 0.
Please refer to Section 3.3, “Command Operation Sequence" for more information about
this register.
Type:
Offset
Read/Write
x‘0218’
CPR1_WP[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Command pointer ring 1 write pointer
Bits
Reset
CPR1_WP[31:0]
31:0
0
6.2.6
Command Pointer Ring 1 Read Pointer Register
This register is the 820x command pointer ring 1 read pointer. The host may read this
register to determine how many entries in the command pointer ring 1 have been read by
the 820x.
Type:
Offset
Read/Write
x‘021C’
CPR1_RP[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Command pointer ring 1 read pointer
Bits
Reset
CPR1_RP[31:0]
31:0
0
820x – Data Sheet, DS-0157-D
Page143
Hifn Confidential
6.2.7
Result Ring 0 Base Address Register
This register is the result ring 0 base address in host memory. After the 820x finishes a
command, it will write the result to the result ring. The Result Ring (RR) base address must
be 8-byte aligned.
Type:
Offset
Read/Write
x‘0220’
RR0_BASEADR_H[31:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
RR0_BASEADR_L[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
RR0_BASEADR_H
[31:0]
Result ring 0 base address high double word
Result ring 0 base address low double word
63:32
0
RR0_BASEADR_L
[31:0]
31:0
0
6.2.8
Result Ring 0 Write Pointer Register
This register is the 820x result ring 0 write pointer. The host can read this register to
determine the how many entries the 820x has written to the result ring 0.
Type:
Offset
Read/Write
x‘0228’
RR0_WP[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Result ring 0 write pointer
Bits
Reset
RR0_WP[31:0]
31:0
0
820x – Data Sheet, DS-0157-D
Page144
Hifn Confidential
6.2.9
Result Ring 1 Base Address Register
This register is the result ring 1 base address in host memory. After the 820x finishes a
command, it will write the result to the result ring. The Result Ring (RR) base address is 8-
byte aligned.
Type:
Offset
Read/Write
x‘0230’
RR1_BASEADR_H[31:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
RR1_BASEADR_L[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
RR1_BASEADR_H
[31:0]
Result ring 1 base address high double word
Result ring 1 base address low double word
63:32
0
RR1_BASEADR_L
[31:0]
31:0
0
6.2.10
Result Ring 1 Write Pointer Register
This register is the 820x result ring 1 write pointer. The host can read this register to
determine the how many entries the 820x has written to the result ring 1.
Type:
Offset
Read/Write
x‘0238’
RR1_WP[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Result ring 1 write pointer
Bits
Reset
RR1_WP[31:0]
31:0
0
820x – Data Sheet, DS-0157-D
Page145
Hifn Confidential
6.2.11
Free Pool Ring Base Address Register
This register is the base address of the Free Pool Ring (FPR). The 820x uses this base
address plus an offset to fetch a free pool entry.
Type:
Offset
Read/Write
x‘0240’
FPR_BASEADR_H[31:0]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
FPR_BASEADR_L[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
FPR_BASEADR_H
[31:0]
Free pool ring base address high double word
Free pool ring base address low double word
63:32
0
FPR_BASEADR_L
[31:0]
31:0
0
820x – Data Sheet, DS-0157-D
Page146
Hifn Confidential
6.2.12
Free Pool Write Pointer Register
This register is a copy of the Free Pool Ring write pointer in host memory. The host must
update this register when a new entry is added to the free pool ring.
Type:
Offset
Read/Write
x‘0248’
FPR_WP[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
FPR_WP[31:0]
31:0
0
Free pool write pointer
6.2.13
Free Pool Read Pointer Register
This register is the 820x Free Pool Ring read pointer. The host may read this register to
determine how many free pool ring entries have been read by the 820x.
Type:
Offset
Read only
x‘024C’
FPR_RP[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
FPR_RP[31:0]
31:0
0
Free pool read pointer
820x – Data Sheet, DS-0157-D
Page147
Hifn Confidential
6.2.14
DMA Configuration Register
This register is used to set the DMA configuration parameters. The host must configure this
register during system initialization.
Type:
Offset
Read/Write
x‘0250’
Reserved
CPR_SIZE[3:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
Description
Bits
Reset
31:30
0
Reserved.
DIS_GZIP_RV
Disable GZIP engine real time verification
When the GZIP real time verification core is
disabled, the GZIP clock is also gated to save
power.
29
28
27
0
0
0
0
1
Enable GZIP engine real time verification
Disable GZIP engine real time verification
DIS_LZS_RV
DIS_ENC_RV
DIS_HASH_RV
Reserved
Disable LZS engine real time verification
When the LZS real time verification core is
disabled, the LZS clock is also gated to save
power.
0
1
Enable LZS engine real time verification
Disable LZS engine real time verification
Disable Encryption engine real time verification
When the ENC real time verification core is
disabled, the ENC clock is also gated to save
power.
0
1
Enable ENC engine real time verification
Disable ENC engine real time verification
Disable Hash engine real time verification
When the HASH real time verification core is
disabled, the HASH clock is also gated to save
power.
0
1
26
0
0
Enable HASH engine real time verification
Disable HASH engine real time verification
25:17
Reserved
820x – Data Sheet, DS-0157-D
Page148
Hifn Confidential
Field Name
Description
Bits
Reset
CM_EN[1:0]
Channel Manager Enable
If set, the Channel Manager is enabled to process
commands, otherwise, the Channel Manager will not
process commands and its clock is disabled.
00 Disable Channel Manager 0 and Channel
Manager 1
16:15
14:13
0
0
01 Enable Channel Manager 0
10 Enable Channel Manager 1
11 Enable Channel Manager 0 and Channel
Manager 1
Reserved
Reserved
CPR_SIZE[3:0]
Command Pointer Ring Size
Sets the maximum number of commands in the
command pointer ring.
Note: the command pointer ring size value is the
same for command pointer ring 0 and command
pointer ring 1.
000032
000164
0010128
0011256
0100512
01011K
12:9
0
01102K
01114K
10008K
100116K
1010 - 1111Reserved
Reserved
8:7
6:4
0
0
Reserved
FPR_SIZE[2:0]
Free Pool Ring Size
Sets the maximum number of entries in the free
pool ring.
Note: the free pool is shared by commands in the
CPR0 or CPR1.
0004
0018
01016
01132
10064
101128
110256
111512
820x – Data Sheet, DS-0157-D
Page149
Hifn Confidential
Field Name
Description
Bits
Reset
HOST_EF[1:0]
Host Endian Format
Sets the endian format of the host command pointer
ring, command structure, result ring and free pool
ring.
3:2
0
00 No swap
01 Byte swap in word
10 Word swap, no byte swap in word
11 Word swap and byte swap in word
TWO_CPR_EN
Two Command Ring Pointer Enable
1
0
0
0
0
1
Only Command Ring Pointer 0 enabled
Both Command Ring Pointer 0 and 1 enabled
ADDR64_MODE
DMA Addressing Mode
0
1
32-bit addressing mode
64-bit addressing mode
820x – Data Sheet, DS-0157-D
Page150
Hifn Confidential
6.2.15
Channel Manager 0-1 Error Status Register
If a 820x Channel Manager detects an error, the 820x will set the appropriate bit in this
register. The Host may read the Channel Manager Error Status register to determine the
source of the error. This information may also be read from the entry in the result ring.
Because the Channel Managers continue to process commands after an error, the error bits
in this register may be overwritten. It is recommended that the host validates the error bit
with the result ring error from the command.
Type:
Offset
Read/Write to clear
x‘0260’
Channel Manager 0 error status
Channel Manager 1 error status
x‘0264’
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Channel Manager Data CRC error
Bits
Reset
CM_DCRC
31
0
0
1
Channel Manager did not detect data CRC error
Channel Manager detected data CRC error
CM_KCRC
CM_ECC
Channel Manager Key CRC error
30
29
0
0
0
1
Channel Manager did not detect key CRC error
Channel Manager detected key CRC error
Channel Manager ECC/Parity error
0
Channel Manager did not detect ECC/Parity
error on this channel
1
Channel Manager detected ECC/Parity error
on this channel
Reserved
PAD_ERR
28
27
0
0
Reserved
Pad Engine Padding Error
0
1
Pad Engine did not detect padding error
Pad Engine detected padding error
820x – Data Sheet, DS-0157-D
Page151
Hifn Confidential
Field Name
Description
Bits
Reset
PAD_CFG_ERR
Pad Engine Software Configuration Error
0
Pad Engine did not detect software configuration
error
26
0
1
Pad Engine detected software configuration
error
PAD_MALFORM_ERR
AES_RV_ERR
Pad Engine Malformed Packet Error.
0
Pad Engine did not detect malformed packet
error
25
24
0
0
1
Pad Engine detected malformed packet error
Encryption Engine Real Time Verification Error.
0
Encryption engine did not detect real time
verification error
1
Encryption engine detected real time
verification error
AES_AU_ERR
Authentication Error in AES-GCM Mode.
0
Authentication error in AES-GCM mode not
detected
23
22
21
0
0
0
1
Authentication error in AES-GCM mode
detected
AES_CFG_ERR
AES_MALFORM_ERR
HASH_RV_ERR
Encryption Engine Software Configuration Error.
0
Encryption Engine did not detect software
configuration error
1
Encryption Engine detected software
configuration error
Encryption Engine Malformed Packet Error.
0
Encryption Engine did not detect malformed
packet error
1
Encryption Engine detected malformed packet
error
Hash Engine Real Time Verification Error or HMAC
Error.
0
Hash engine did not detect real time verification
or HMAC error
20
0
1
Hash engine detected real time verification or
HMAC error
HASH_MAC_ERR
HASH_CFG_ERR
Hash Engine MAC Check Error.
0
1
Hash engine did not detect MAC check error
Hash engine detected MAC check error
19
18
0
0
Hash Engine Software Configuration Error.
0
Hash Engine did not detect software
configuration error
1
Hash Engine detected software configuration
error
820x – Data Sheet, DS-0157-D
Page152
Hifn Confidential
Field Name
Description
Bits
Reset
HASH_MALFORM_ERR
Hash Engine Malformed Packet Error.
0
Hash Engine did not detect malformed packet
error
17
0
1
Hash Engine detected malformed packet error
GZIP_DECODE_ERR
[5:0]
GZIP Decode Error.
16:11
10
0
0
For a description of this field, please refer to
Table 3-5 on page 93.
GZIP_RCRC_ERR
GZIP Engine RCRC Error
0
GZIP engine did not detect RCRC error in
decode operation
1
GZIP engine detected RCRC error in decode
operation
GZIP_RV_ERR
GZIP Engine Real Time Verification Error
0
GZIP engine did not detect real time verification
error
9
0
1
GZIP engine detected real time verification
error
GZIP_CFG_ERR
GZIP_MALFORM_ERR
GZIP Engine Software Configuration Error
0
GZIP Engine did not detect software
configuration error
8
7
0
0
1
GZIP Engine detected software configuration
error
GZIP Engine Malformed Packet Error
0
GZIP Engine did not detect malformed packet
error
1
GZIP Engine detected malformed packet error
LZS_ECC_ERR
LZS_TERR
LZS Engine ECC Error
0
1
LZS engine did not detect ECC error
LZS engine detected ECC error
6
5
4
0
0
0
LZS Engine Token Error
0
1
LZS engine did not detect token error
LZS engine detected token error
LZS_DERR
LZS Engine Data Error
0
1
LZS engine did not detect data error
LZS engine detected data error
LZS_RCRC_ERR
LZS Engine RCRC Error
0
LZS engine did not detect RCRC error in
decode operation
3
1
LZS engine detected RCRC error in decode
operation
820x – Data Sheet, DS-0157-D
Page153
Hifn Confidential
Field Name
Description
Bits
Reset
LZS_RV_ERR
LZS Engine Real Time Verification Error
0
LZS engine did not detect real time verification
error
2
1
LZS engine detected real time verification error
LZS_CFG_ERR
LZS Engine Software Configuration Error
0
LZS Engine did not detect software configuration
error
1
0
0
0
1
LZS Engine detected software configuration
error
LZS_MALFORM_ERR
LZS Engine Malformed Packet Error
0
LZS Engine did not detect malformed packet
error
1
LZS Engine detected malformed packet error
820x – Data Sheet, DS-0157-D
Page154
Hifn Confidential
6.2.16
Channel Manager 0-1 Error Command Index Register
The Channel Manager 0-1 Error Command Index register records the last processing
command index when the PCIe related error occurred. This record can be used to facilitate
software error recovery.
Type:
Offset
Read only
x‘0268’
Channel Manager 0 error command index
Channel Manager 1 error command index
x‘026C’
CPR1_CMD_INX[14:0]
CPR0_CMD_INX[14:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
31
Reset
Reserved
0
0
0
Reserved
CPR1_CMD_INX[14:0]
Reserved
30:16
15
Command Pointer Ring 1 Command Index [14:0]
Reserved
CPR0_CMD_INX[14:0]
Command Pointer Ring 0 Command Index [14:0]
If command ring size is 16K, bit 14 is the valid bit;
if command ring size is 8K, bit 13 is the valid bit;
if command ring size is 4K, bit 12 is the valid bit.
14:0
0
A similar pattern may be applied for command ring
sizes < 4K.
820x – Data Sheet, DS-0157-D
Page155
Hifn Confidential
6.3 Engine Configuration Registers
6.3.1
Hash Engine Mute Table Entry Registers
The Hash Engine Mute Table Entry register provides a mask that controls the input to the
Hash engine. The mask nulls specific segments of the data stream prior to being submitted
to the Hash core. The masks are programmable by the host and are selected by the “MTI”
field in command structure.
Each mute table entry is 32 bits wide to mute up to 16 bytes of the data stream. There are
seven entries in the mute table. Each bit of the mute table entry masks one nibble (4-bit)
of data, therefore a 32-bit register word supports a 16-byte header. The table below
provides the map between the mute table entry bit and the 16-byte header nibble (4-bit).
Type:
Offset
Read/Write
x‘0400’
x‘0404’
x‘0408’
x‘040C’
x‘0410’
x‘0414’
x‘0418’
Mute table entry 1
Mute table entry 2
Mute table entry 3
Mute table entry 4
Mute table entry 5
Mute table entry 6
Mute table entry 7
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Mute Data Stream Byte 15, bits [7:4]
Bits
Reset
Byte15_HN
31
0
0
1
Do not mute data stream byte 15, bits [7:4]
Mute data stream byte 15, bits [7:4]
Byte15_LN
Mute Data Stream Byte 15, bits [3:0]
30
0
0
1
Do not mute data stream byte 15, bits [3:0]
Mute data stream byte 15, bits [3:0]
.
.
.
.
.
.
.
.
.
.
.
.
Byte0_HN
Mute Data Stream Byte 0, bits [7:4]
1
0
0
1
Do not mute data stream byte 0, bits [7:4]
Mute data stream byte 0, bits [7:4]
820x – Data Sheet, DS-0157-D
Page156
Hifn Confidential
Field Name
Description
Bits
Reset
Byte0_LN
Mute Data Stream Byte 0, bits [3:0]
0
0
0
1
Do not mute data stream byte 0, bits [3:0]
Mute data stream byte 0, bits [3:0]
820x – Data Sheet, DS-0157-D
Page157
Hifn Confidential
6.4 Public Key Processor Control Registers
The Public Key Processor (PKP) implements a group of registers, through which the host
may control the PKP engine and execute complex computations. The PKP Manager fetches
source data and instructions from host memory, and then sends the computation result to
host memory according to the PKP command registers.
To increase performance, the 820x implements two pairs of PK cores; a pair consists of one
master PK core and one slave PK core.
6.4.1
Public Key Enable Register
The Public Key Engine register is used to enable/disable either of the Public Key Engine
pairs and the Public Key Engine.
Type:
Offset
Read/Write
x‘0580’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
Description
Bits
Reset
31:3
0
Reserved.
DIS_PK_PAIR1
Disable Public Key Pair 1
If the PK core 1 is disabled, the PK core 1 clock is
also disabled to save power.
2
1
0
0
0
1
Enable Public Key Pair 1
Disable Public Key Pair 1
DIS_PK_PAIR0
Disable Public Key Pair 0
If the PK core 0 is disabled, the PK core 0 clock is
disabled to save power.
0
1
Enable Public Key Pair 0
Disable Public Key Pair 0
PK_EN
Public Key Enable
Note: the host software should first enable the PKP,
and then write commands to the PKP command
entry.
0
0
0
Disable the PKP Manager and PKP Engine and
clock
1
Enable the PKP Manager and PKP Engine
820x – Data Sheet, DS-0157-D
Page158
Hifn Confidential
6.4.2
Public Key Command Entry Registers
The Public Key Command Entry registers control the eight PKP command entries in the
820x. Each entry includes one command register, one instruction register, one data
register, and one result register as shown below.
PKP Command (4 bytes)
PKP Instruction (16 bytes)
PKP Data (16 bytes)
PKP Result (16 bytes)
Figure 6-2. PKP Command Entry Format
820x – Data Sheet, DS-0157-D
Page159
Hifn Confidential
Type:
Offset
Read/Write
x‘0600’
x‘0610’
x‘0620’
x‘0630’
x‘0640’
x‘0650’
x‘0660’
x‘0670’
x‘0680’
x‘0690’
x‘06A0’
x‘06B0’
x‘06C0’
x‘06D0’
x‘06E0’
x‘06F0’
x‘0700’
x‘0710’
x‘0720’
x‘0730’
x‘0740’
x‘0750’
x‘0760’
x‘0770’
x‘0780’
x‘0790’
x‘07A0’
x‘07B0’
x‘07C0’
x‘07D0’
x‘07E0’
x‘07F0’
Public Key entry 0 command register
Public Key entry 0 instruction register
Public Key entry 0 data register
Public Key entry 0 result register
Public Key entry 1 command register
Public Key entry 1 instruction register
Public Key entry 1 data register
Public Key entry 1 result register
Public Key entry 2 command register
Public Key entry 2 instruction register
Public Key entry 2 data register
Public Key entry 2 result register
Public Key entry 3 command register
Public Key entry 3 instruction register
Public Key entry 3 data register
Public Key entry 3 result register
Public Key entry 4 command register
Public Key entry 4 instruction register
Public Key entry 4 data register
Public Key entry 4 result register
Public Key entry 5 command register
Public Key entry 5 instruction register
Public Key entry 5 data register
Public Key entry 5 result register
Public Key entry 6 command register
Public Key entry 6 instruction register
Public Key entry 6 data register
Public Key entry 6 result register
Public Key entry 7 command register
Public Key entry 7 instruction register
Public Key entry 7 data register
Public Key entry 7 result register
820x – Data Sheet, DS-0157-D
Page160
Hifn Confidential
6.4.2.1
Public Key Command Register Format
The Command register indicates the PKP command flag and status.
EF[1:0]
LIRA_M[10:0]
LIRA_S[10:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
CMD_V
Command Valid
After this bit is set, the 820x will begin to process
the command for this entry.
Note: The host must set this bit to one after setting
the Instruction Register, Data Register and Result
Register.
31
0
The 820x will clear this bit after the process is
complete. The host must poll this register to
determine whether a command has completed.
0
1
Command in this entry is not valid
Command in this entry is valid
PAIR
PK Pair Notification
After the 820x finishes a command, it will set this
bit to inform the host which PK pair completed the
current command. The host software need not
configure this bit.
30
29
0
0
0
1
PK Pair 0 completed this command
PK Pair 1 completed this command
ECC_ERR
ECC error
0
No ECC error in source buffer or destination
buffer
1
ECC error in source buffer or destination buffer
ADDR_ERR
Reserved
Host Access PKP Address out of range
This error is due to an error in software
configuration. The 820x reports the error but takes
no action.
28
27
0
0
Reserved
820x – Data Sheet, DS-0157-D
Page161
Hifn Confidential
Field Name
Description
Bits
Reset
IS_V
Instruction Register Valid
This bit is used to simplify the command operation
process. Usually, the host loads the instruction
programs in the first command, and then sets the
LIRA in the following commands because the
instruction programs have already been loaded in
the PKP Linear Instruction Register by the first
command.
If this bit is set to one, the PKP Manager will wait
until all PK pairs are idle, and then write the
instruction to all PK pairs. This mechanism can
simplify the instruction loading to all PK pairs, and
maintain the same instruction field for all PK pairs.
In other words, the 820x can balance the PK pair
load, and the load balancing is transparent to the
host software.
26
0
0
1
Instruction Register is not valid in this entry
820x requires load instruction in host memory
into the PKP engine instruction register
DATA_V
Data Register Valid
The 820x will load data to one of the PK pairs when
this bit is set to one.
Typically, the host would set this bit to zero when
writing to the PK pair instruction register for the first
command that does not require any computation.
25
0
0
1
Data Register is not valid for this entry
Data Register is valid for this entry
Reserved
EF[1:0]
24
0
0
Reserved
Instruction and Data Endian Format
00 No swap
23:22
01 Byte swap in word
10 Word swap, no byte swap in word
11 Word swap and byte swap in word
LIRA_M[10:0]
LIRA_S[10:0]
PKP Master Linear Instruction Register (LIR) start
address
21:11
10:0
0
0
The PKP Master will execute instruction code from
this address.
PKP Slave Linear Instruction Register (LIR) start
address
The PKP Slave will execute instruction code from
this address.
820x – Data Sheet, DS-0157-D
Page162
Hifn Confidential
6.4.2.2
Public Key Instruction Register Format
The Instruction register indicates the host source instruction buffer address, the PKP
destination instruction register address, and the instruction size.
PKP_Istr_Addr_S[14:0]
Istr_Len_S[10:0]
127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100
99 98 97 96
PKP_Istr_Addr_M[14:0]
Istr_Len_M[10:0]
95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64
Host_Istr_Addr[63:32]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
Host_Istr_Addr[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
127:125
0
Reserved
PKP_Istr_Addr_S[14:0]
PKP Slave Linear Instruction Register (LIR) Start
Address
124:110
109:107
0
0
This address must be 4-byte aligned because all PKP
registers are double word aligned.
Reserved
Reserved
Istr_Len_S[10:0]
PKP Slave Instruction Size
Istr_Len_M and Istr_len_S cannot both be equal to
zero for any command when IS_V = 1 in the PK
command register.
106:96
0
The host instruction buffer size = Istr_len_M +
Istr_Len_S.
0
No instruction for PKP Slave
1 - 2047 Number of double word instructions
Reserved
95:93
92:78
77:75
0
0
0
Reserved
PKP_Istr_Addr_MS[14:0]
PKP Master Linear Instruction Register (LIR) Start
Address
This address must be 4-byte aligned because all PKP
registers are double word aligned.
Reserved
Reserved
820x – Data Sheet, DS-0157-D
Page163
Hifn Confidential
Field Name
Description
Bits
Reset
Istr_Len_M[10:0]
PKP Master Instruction Size
Istr_Len_M and Istr_len_S cannot both equal to
zero for any command when IS_V = 1.
74:64
0
The host instruction buffer size = Istr_len_M +
Istr_Len_S.
0
No instruction for PKP Slave
1 - 2047 Number of double word instructions
Host_Istr_Addr[63:0]
Host Instruction Buffer Address
63:0
0
This address must be 8-byte aligned.
820x – Data Sheet, DS-0157-D
Page164
Hifn Confidential
6.4.2.3
Public Key Data Register Format
The Public Key Data register indicates the source data size for PK Slave, the source data
size for the PK Master, and the host source data buffer address. The host source buffer size
is equal to the total source data size for PK Slave plus the total source data size for the PK
Master. TSR, BER, FPR and MMR are PK core internal registers. Detailed information will be
provided in a PK document that will be released in the future.
Data_Len_S[31:0]
127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100
Data_Len_M[31:0]
99 98 97 96
95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64
Host_Data_Addr[63:32]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
Host_Data_Addr[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
820x – Data Sheet, DS-0157-D
Page165
Hifn Confidential
Field Name
Description
Bits
Reset
Data_Len_S[31:0]
PKP Slave Source Data Length.
This field is a conglomeration of 4 subfields:
TSR_CNT[1:0], FPR_LEN[9:0], MMR_LEN[9:0] and
BER_LEN[9:0]. The total source data length is the
sum of these 4 subfields. If TSR_CNT + FPR_LEN +
MMR_LEN + BER_LEN = 0, there is no source data
for the slave PKP.
Bits [127:126] = TSR_CNT[1:0]
PKP TSR data count
00 Zero
01 Same as BER_LEN
10 Same as MMR_LEN
11 Same as FPR_LEN
Bits [125:116] = FPR_LEN[9:0]
PKP FPR data count
127:96
0
0
Zero, no data for FPR register
1 - 10231 ~ 1023 double words (32 bits)
Bits [115:106] = MMR_LEN[9:0]
PKP MMR data count
0
Zero, no data for MMR register
1 - 10231 ~ 1023 double words (32 bits)
Bits [105:96] = BER_LEN[9:0]
PKP BER data count
0
Zero, no data for BER register
1 - 10231 ~ 1023 double words (32 bits)
820x – Data Sheet, DS-0157-D
Page166
Hifn Confidential
Field Name
Description
Bits
Reset
Data_Len_M[31:0]
PKP Master Source Data Length.
This field is a conglomeration of 4 subfields:
TSR_CNT[1:0], FPR_LEN[9:0], MMR_LEN[9:0] and
BER_LEN[9:0]. The total source data length is the
sum of these 4 subfields. If TSR_CNT + FPR_LEN +
MMR_LEN + BER_LEN = 0, there is no source data
for the master PKP.
Bits [95:94] = TSR_CNT[1:0]
PKP TSR data count
00 Zero
01 Same as BER_LEN
10 Same as MMR_LEN
11 Same as FPR_LEN
Bits [93:84] = FPR_LEN[9:0]
PKP FPR data count
95:64
0
0
Zero, no data for FPR register
1 - 10231 ~ 1023 double words (32 bits)
Bits [83:74] = MMR_LEN[9:0]
PKP MMR data count
0
Zero, no data for MMR register
1 - 10231 ~ 1023 double words (32 bits)
Bits [73:64] = BER_LEN[9:0]
PKP BER data count
0
Zero, no data for BER register
1 - 10231 ~ 1023 double words (32 bits)
Host_Data_Addr[63:0]
Host Data Buffer Address
63:0
0
This address must be 8-byte aligned.
820x – Data Sheet, DS-0157-D
Page167
Hifn Confidential
6.4.2.4
Public Key Result Register
The Result register indicates the host destination result buffer address, the PKP source
result register address, and the result size. The host result data buffer size is equal to
Data_Len_M plus Data_Len_S.
PKP_Data_Addr_S[14:0]
Data_Len_S[10:0]
127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100
99 98 97 96
PKP_Data_Addr_M[14:0]
Data_Len_M[10:0]
95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64
Host_Result_Addr[63:32]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
Host_Result_Addr[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
127:125
0
Reserved.
PKP_Data_Addr_S[14:0]
PKP Slave Result Data Register Start Address.
This address must be 4-byte aligned.
124:110
109:107
0
0
Reserved
Reserved
Data_Len_S[10:0]
PKP Slave Result Data Size.
This field must be 2 double word aligned.
Data_Len_M and Data_Len_S cannot both equal to
zero for any command when IS_V = 1.
106:96
0
The host result data buffer size = Data_Len_M +
Data_Len_S.
0
No Result Data for PKP Master
1 - 2047 Number of double word data
Reserved
95:93
92:78
77:75
0
0
0
Reserved.
PKP_Data_Addr_M[14:0]
PKP Master Result Data Register Start Address.
This address must be 4-byte aligned.
Reserved
Reserved.
820x – Data Sheet, DS-0157-D
Page168
Hifn Confidential
Field Name
Description
Bits
Reset
Data_Len_M[10:0]
PKP Master Result Data Size.
This field must be 2 double word aligned.
Data_Len_M and Data_Len_S cannot both equal to
zero for any command when IS_V = 1.
74:64
0
The host result data buffer size = Data_len_M +
Data_Len_S.
0
No data for PKP Slave
1 - 2047 Number of double word data
Host_Result_Addr[63:0]
Host Result Data Buffer Address.
63:0
0
This address must be 8-byte aligned.
820x – Data Sheet, DS-0157-D
Page169
Hifn Confidential
6.4.3
Public Key Internal Registers
To access the PKP internal registers, please refer to the EXP-E5200 Public Key
Cryptography Microprocessor Datasheet from Athena.
Type:
Offset
Read/Write
x‘0TBD’
820x – Data Sheet, DS-0157-D
Page170
Hifn Confidential
6.5 RNG Control Registers
6.5.1
RNG Enable Register
The RNG Enable register is used by the host to enable the 820x Random Number
Generator.
Type:
Offset
Read/Write
x‘0800’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
RNG_EN
Description
Bits
Reset
31:1
0
Reserved
Random Number Generator Enable/Disable
0
0
0
1
RNG and RNG clock disabled
RNG enabled
6.5.2
RNG Test Register
The RNG Test register allows the host software to perform read/write tests to the RNG
address space. It serves no other function and causes no side effects. This register may be
accessed at any time.
Type:
Offset
Read/Write
x‘0804’
Test[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Test[31:0]
Test data read/written from host into RNG memory
space.
31:0
0
820x – Data Sheet, DS-0157-D
Page171
Hifn Confidential
6.5.3
RNG Interrupt Enable Register
The RNG Interrupt Enable register allows the host software to enable/disable the 820x RNG
interrupts. If a RNG Enable bit is set to one, the interrupt is enabled for that event. If the
enable bit is cleared to zero, the interrupt will be disabled and will not interrupt the host,
but the interrupt will appear in the RNG Interrupt Control / Status register as expected.
The LEG2_XOR_ERR, LEG1_XOR_ERR and TREE_XOR_ERR pertain to internal RNG logic. If
any of these errors occur, please contact Hifn customer support.
Type:
Offset
Read/Write one to clear
x‘0808’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
Description
Bits
Reset
31:6
0
Reserved.
RING_FAIL_EN
Ring Failure Interrupt Enable
Asserts an interrupt if any of the ring oscillators are
not oscillating.
5
4
3
2
0
0
0
0
0
1
Disable ring failure interrupt
Enable ring failure interrupt
LEG2_XOR_ERR_EN
LEG1_XOR_ERR_EN
TREE_XOR_ERR_EN
Leg 2 XOR Error Interrupt Enable
Asserts an interrupt if there was an error in the Leg
2 XOR RNG logic.
0
1
Disable Leg 2 XOR error interrupt
Enable Leg 2 XOR error interrupt
Leg 1 XOR Error Interrupt Enable
Asserts an interrupt if there was an error in the Leg
1 XOR RNG logic.
0
1
Disable Leg 1 XOR error interrupt
Enable Leg 1 XOR error interrupt
Tree XOR Error Interrupt Enable
Asserts an interrupt if there was an error in the Tree
XOR RNG logic.
0
1
Disable Tree XOR error interrupt
Enable Tree XOR error interrupt
820x – Data Sheet, DS-0157-D
Page172
Hifn Confidential
Field Name
Description
Bits
Reset
BUF_DONE_EN
Buffer Done Flag Interrupt Enable
Asserts an interrupt if the Buffer_Done_Flag in the
Interrupt Control / Status Register is set.
1
0
0
1
Disable Buffer Done Flag interrupt
Enable Buffer Done Flag interrupt
ILL_ACC_EN
Illegal Access Interrupt Enable
Asserts an interrupt if an illegal access to reserved
memory space by one of the N8TBus interfaces was
detected.
0
0
0
1
Disable Illegal Access interrupt
Enable Illegal Access interrupt
820x – Data Sheet, DS-0157-D
Page173
Hifn Confidential
6.5.4
RNG Interrupt Control/Status Register
The RNG Interrupt Control/Status register allows the host software to read the 820x RNG
interrupt status. The error bits in this registers will be set if that error event has occurred.
If the error's corresponding enable bit is set in the RNG Interrupt Enable Register, an
interrupt will be generated to the host.
The LEG2_XOR_ERR, LEG1_XOR_ERR and TREE_XOR_ERR pertain to internal RNG logic. If
any of these errors occur, please contact Hifn customer support.
Type:
Offset
Read/Write one to clear
x‘080C’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:6
0
Reserved.
RING_FAIL_FLAG
Ring Failure Flag.
One or more ring oscillators failed to oscillate.
5
4
3
2
0
0
0
0
0
1
Ring failure not detected
Ring failure detected
LEG2_XOR_ERR_FLAG
LEG1_XOR_ERR_FLAG
TREE_XOR_ERR_FLAG
Leg 2 XOR Error Flag.
An error was detected in the RNG Leg 2 XOR logic.
0
1
Leg 2 XOR error not detected
Leg 2 XOR error detected
Leg 1 XOR Error Flag.
An error was detected in the RNG LEG 1 XOR logic.
0
1
Leg 1 XOR error not detected
Leg 1 XOR error detected
Tree XOR Error Interrupt Flag.
An error was detected in the RNG Tree XOR logic.
0
1
Tree XOR error not detected
Tree XOR error detected
820x – Data Sheet, DS-0157-D
Page174
Hifn Confidential
Field Name
Description
Bits
Reset
BUF_DONE_FLAG
Buffer Done Flag
Buffer has been filled with random seeds, i.e., a 1-
to-0 transition of the Buffer_Go/Busy bit was
detected.
1
0
0
1
Buffer Done Flag condition not detected
Buffer Done Flag condition detected
ILL_ACC_FLAG
Illegal Access Flag
An access to reserved memory space by one of the
N8TBus interfaces was detected.
0
0
0
1
Illegal Access not detected
Illegal Access detected
820x – Data Sheet, DS-0157-D
Page175
Hifn Confidential
6.5.5
RNG Buffer Control/Status Register
The RNG Buffer Control/Status register provides buffer control and status information. This
register may be read at any time. However, writing to this register is only allowed when
Buffer_Go/Busy is zero, otherwise the access will be treated as an access to reserved
memory space.
The Sample Interval should generally be set such that at the currently specified bit rate
(see RNG configuration register Bit Rate field in Section 6.5.7) at least 32 bits have been
sampled between sample intervals. Setting the Sample Interval larger helps with increasing
entropy of the random numbers, at the cost of generating random numbers at a smaller
rate. For example,
Sample Interval >= 32 * (bit rate + 1)
should always be true for normal operation. While
Sample Interval ~= 128 * (bit rate + 1)
is recommended for a reasonable entropy versus performance compromise.
Type:
Offset
Read/Write
x‘0810’
Buffer_Words field is Read only
BUF_WORDS[4:0]
SMPL_INVL[25:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
BUF_GO_BSY
Buffer Go/Busy
Writing a one to this bit causes the RNG buffer to be
filled with 16 new random seeds, regardless of the
number of unread seeds still in the Buffer (if any).
This bit will remain set until the operation is
complete, at which time it will return to zero.
31
0
0
1
RNG Buffer ready to be filled
Initiates filling RNG Buffer with new random
seed
BUF_WORDS[4:0]
SMPL_INVL[25:0]
Buffer Words
The number of random seeds available in the buffer.
This field will be decremented on each valid access
of the Buffer Data Register (Section 6.5.6).
30:26
25:0
0
0
Sample Interval
Number of clocks to skip between capturing the 32
bit output of the Seed Generator into the RNG
buffer.
820x – Data Sheet, DS-0157-D
Page176
Hifn Confidential
6.5.6
RNG Buffer Data Register
The contents of the RNG Buffer may be read, one word at a time, through this register. This
register must never be written; any writes will be treated as an access to Reserved memory
space. This register may be read only when RNG Buffer Control Status register (Section
6.5.5) bits BUF_GO/BSY is zero and BUF_WORDS is nonzero; otherwise the read will be
treated as an access to Reserved memory space.
Type:
Offset
Read only
x‘0814’
When BUF_GO/BSY is zero AND
BUF_WORDS is nonzero
BUF_DATA[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Data from RNG seed buffer.
Bits
Reset
BUF_DATA[31:0]
31:0
0
820x – Data Sheet, DS-0157-D
Page177
Hifn Confidential
6.5.7
RNG Configuration Register
The RNG Configuration register is used to set the RNG bit rate. The bit rate is used to
determine the RNG sample rate, as described in Section 6.5.4, “RNG Interrupt Control/
Status Register".
Type:
Offset
Read/write
x‘0824’
Reserved
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
RSVD
Description
Reserved.
Bit Rate.
Bits
Reset
31:11
0
BIT_RATE[2:0]
The number of 125MHz clock cycles between bit
samples in the serial-to-parallel conversion /
whitening LFSR.
0
1
2
3
4
5
6
7
125 Mbps (continuous)
62.5 Mbps
10:8
000
41.7 Mbps
31.25 Mbps
25 Mbps
20.8 Mbps
17.9 Mbps
15.63 Mbps
RSVD
7:0
0
Reserved.
820x – Data Sheet, DS-0157-D
Page178
Hifn Confidential
6.6 GPIO Registers
The GPIO registers provide flexibility to configure the 820x GPIO pins. The operation
sequence for configuring the GPIO registers is:
1. Set the GPIO port direction to either input or output.
2. Configure the interrupt mode if needed.
3. Read data from the GPIO EXT register if the GPIO are configured as input; write
data to the GPIO SW DATA register if the GPIO are configured as output.
6.6.1
GPIO Enable Register
The GPIO Enable register is used by the host to enable the 820x General Purpose I/O
registers.
Type:
Offset
Read/Write
x‘0850’
GPIO Enable Register
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
GPIO_EN
Description
Bits
Reset
31:1
0
Reserved
General Purpose I/O Enable/Disable.
0
0
0
1
GPIO and GPIO clock disabled
GPIO enabled
820x – Data Sheet, DS-0157-D
Page179
Hifn Confidential
6.6.2
GPIO Software Data Register
If the data direction bits in the GPIO Data Direction register are set to “output” mode and
the control field is set to “Software” mode, then data written to the GPIO Software Data
register are output to the 820x general purpose I/O pins. The value read back is equal to
the last value written to this register.
Type:
Offset
Read/Write
x‘0854’
Reserved
GPIO_SW_DATA[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_SW_DATA
[15:0]
GPIO_SW GPIO Software Data.
_RESET
15:0
6.6.3
GPIO Data Direction Register
The GPIO Data Direction register is used to control the direction of the data bits in the GPIO
Software register. Each bit may be independently set as either input or output. The default
direction is input.
Type:
Offset
Read/Write
x‘0858’
Reserved
GPIO_DDR[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_DDR
[15:0]
GPIO Data Direction.
The direction for each bit can be set as:
15:0
0
0
1
Input
Output
820x – Data Sheet, DS-0157-D
Page180
Hifn Confidential
6.6.4
GPIO Interrupt Enable Register
The GPIO Interrupt Enable register allows each GPIO bit to be independently configured as
an interrupt. By default, using the GPIO ports as interrupts is disabled. If a one is written
to a bit of this register, that GPIO bit will become an interrupt. Otherwise, it operates as a
normal GPIO port. Interrupts will be disabled if the corresponding Data Direction register bit
is set to Output or if its Mode is set to Hardware.
Type:
Offset
Read/Write
x‘0860’
Reserved
GPIO_INT_EN[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_INT_EN
[15:0]
GPIO Interrupt Enable.
Each GPIO bit can be configured as:
15:0
0
0
1
Normal GPIO port (default)
Interrupt
820x – Data Sheet, DS-0157-D
Page181
Hifn Confidential
6.6.5
GPIO Interrupt Mask Register
The GPIO Interrupt Mask register is used to mask the GPIO interrupts. By default, all
interrupts bits are unmasked.
If a one is written to a bit in this register, that bit will be masked from generating an
interrupt. The host may be read this register to determine the masked/unmasked status of
each bit.
Type:
Offset
Read/Write
x‘0864’
Reserved
GPIO_INT_MASK[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_INT_MASK
[15:0]
GPIO Interrupt Mask.
Each GPIO bit can be masked as:
15:0
0
0
1
Unmasked (default)
Masked
6.6.6
GPIO Interrupt Type Register
The GPIO Interrupt Type register controls whether the interrupt is level-sensitive or
otherwise edge-sensitive. Each bit may be independently set.
Type:
Offset
Read/Write
x‘0868’
Reserved
GPIO_INT_TYPE[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_INT_TYPE
[15:0]
GPIO Interrupt Type.
Each GPIO bit can be set as:
15:0
0
0
1
Level-sensitive (default)
Edge-sensitive
820x – Data Sheet, DS-0157-D
Page182
Hifn Confidential
6.6.7
GPIO Interrupt Polarity Register
The GPIO Interrupt Polarity register controls the polarity of the edge or level sensitivity for
each GPIO bit. If a zero is written to a bit of this register, the polarity for that GPIO
interrupt bit will be configured as falling-edge or active-low; otherwise, if a one is written,
the bit will be configured as rising-edge or active-high. Each bit may be independently set.
Type:
Offset
Read/Write
x‘086C’
Reserved
GPIO_INT_POL[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_INT_POL
[15:0]
GPIO Interrupt Polarity.
Each GPIO bit can be set as:
15:0
0
0
1
Active-low (default)
Active-high
6.6.8
GPIO Interrupt Status Register
The GPIO Interrupt Status register may be read by the host to determine the GPIO
interrupt status. This register will reflect any masking that has been set using the GPIO
Interrupt Mask register.
Type:
Offset
Read/Write
x‘0870’
Reserved
GPIO_INT_STAT[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_INT_STAT
[15:0]
GPIO Interrupt Status
15:0
0
820x – Data Sheet, DS-0157-D
Page183
Hifn Confidential
6.6.9
GPIO Interrupt Raw Status Register
The GPIO Interrupt Raw Status register may be read by the host to determine the GPIO
interrupt status. This register does not reflect any masking that has been set using the
GPIO Interrupt Mask register.
Type:
Offset
Read/Write
x‘0874’
Reserved
GPIO_INT_RAW_STAT[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_INT_RAW
STAT
[15:0]
GPIO Interrupt Raw Status.
15:0
0
6.6.10
GPIO De-Bounce Register
The GPIO De-Bounce register controls whether an external signal that is the source of an
interrupt needs to be debounced to remove any spurious glitches. Writing a one to a bit in
this register enables the debouncing circuitry. Once enabled, a signal must be valid for two
periods of an external clock before it is internally processed.
Type:
Offset
Read/Write
x‘0878’
Reserved
GPIO_DEBOUNCE[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_DEBOUNCE
[15:0]
GPIO De-bounce enable/disable.
15:0
0
0
1
Disable debounce (default)
Enable debounce
820x – Data Sheet, DS-0157-D
Page184
Hifn Confidential
6.6.11
GPIO Interrupt Clear Register
The GPIO Interrupt Clear register controls the clearing of edge type interrupts. If a one is
written into a bit of this register, the interrupt corresponding to that bit will be cleared.
Type:
Offset
Read/Write
x‘087C’
Reserved
GPIO_INT_CLR[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_INT_CLR
[15:0]
GPIO Interrupt Clear.
15:0
0
0
1
Do not clear interrupt (default)
Clear interrupt
6.6.12
GPIO Interrupt Ext Register
If the data direction of the GPIO port is configured as “input,” this register can be used to
read the values on the GPIO port. When the data direction of GPIO Port is set as “output,”
reading this location reads the data register for that port.
Type:
Offset
Read/Write
x‘0880’
Reserved
GPIO_INT_EXT[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved.
GPIO_INT_EXT
[15:0]
External GPIO Interrupt.
Data dir=input
15:0
0
Read GPIO port
Data dir=output
Read data register for that GPIO port
820x – Data Sheet, DS-0157-D
Page185
Hifn Confidential
6.6.13
GPIO Interrupt Sync Register
The GPIO Interrupt Sync register controls whether level sensitive interrupts are
synchronized to pclk_intr.
Type:
Offset
Read/Write
x‘0884’
Reserved
GPIO_INT_SYNC[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Reserved.
GPIO Sync.
Bits
Reset
Reserved
31:16
0
GPIO_INT_SYNC
[15:0]
15:0
0
0: Do not synchronize to pclk_intr
1: Synchronize to pclk_intr
820x – Data Sheet, DS-0157-D
Page186
Hifn Confidential
6.7 Serial/Parallel Interface Registers
The 820x serial to parallel interface (SPI) can be used to connect the 820x to an external
flash. The host can read/write the flash data through PCIe memory write/read SPI
registers. Figure 6-3 illustrates how the 820x may be connected to a flash device.
Figure 6-3. SPI Example Usage
The following flash devices are recommended:
Silicon Storage Technology: SST25VF032B 32 Mbit SPI Serial Flash
Spansion S25FL128P
6.7.1
SPI Register Operation flow
Prior to configuring any other SPI registers, it is necessary to set the SPI Enable Register.
The registers Flash Command Configuration Register 0 and Flash Command Configuration
Register 1 are set once during initialization by the host software. Setting the SPI Command
Address Register will trigger the 820x SPI module to process the current SPI command.
The following diagram illustrates the process flow for a flash operation.
820x – Data Sheet, DS-0157-D
Page187
Hifn Confidential
Figure 6-4. SPI Operation Flash Example
The sequence to write 4 bytes of data to the flash device would be:
1. Configure SPI Enable Register for a write operation.
2. Set WREN, Byte-Program, and RD-status fields in the Flash Command
Configuration register 0. (Note: This step is only required if not using a
recommended flash, or if this field has been set previously).
3. Write the 4 bytes of data to be programmed into the Flash into the SPI Data
Register.
4. Set the CS, SPI_CMD, SPI_CLK_DIV, SPI_ADDR fields in the SPI Command
Address Register. The 820x SPI module will then perform the write command.
5. When the write command is done, the 820x SPI module will issue a SPI_IRQ
interrupt to the host, and simultaneously set the SPI_OP_DONE field and
SPI_Status field in the SPI Status Register.
820x – Data Sheet, DS-0157-D
Page188
Hifn Confidential
The sequence to read 4 bytes of data from the flash device would be:
1. Configure the SPI Enable Register for a read operation.
2. Set the RD_Data field in the Flash Command Configuration Register 1, and set
the RD-status field in Flash Command Configuration Register 0. (Note: This step
is only required if not using a recommended flash, or if these fields have been set
previously).
3. Set the CS, SPI_CMD, SPI_CLK_DIV, and SPI_ADDR fields in the SPI Command
Address Register. The 820x SPI module will then perform the read command.
4. When the read command is done, the 820x SPI module will issue a SPI_IRQ
interrupt to the host, and simultaneously set the SPI_OP_DONE field and the
SPI_Status field in the SPI Status Register. The host software can the read the
data from the SPI data register.
The sequence to erase data from the flash device would be:
1. Configure the SPI Enable Register for a write operation.
2. Set the WREN, Sector_Erase/Chip_Erase, and RD-status fields in the Flash
Command Configuration Register 0. (Note: This step is only required if not using
a recommended flash, or if these fields have been set previously).
3. Set the CS, SPI_CMD, SPI_CLK_DIV, and SPI_ADDR fields in SPI Command
Address Register. The 820x SPI module will then perform the erase flash
command.
4. When the erase flash command is done, the 820x SPI module will issue a
SPI_IRQ interrupt to the host, and simultaneously set the SPI_OP_DONE and
SPI_Status fields in the SPI Status Register.
The sequence to write a user defined command to the flash device would be:
1. Configure the SPI Enable Register for a write operation.
2. Set the SPI_User_CMD field in the SPI User Defined Command Register. (Note:
This step is only required if not using a recommended flash, or if these fields
have been set previously)
3. Set the CS, SPI_CMD, SPI_CLK_DIV, and SPI_ADDR fields in the SPI Command
Address Register. The 820x SPI module will then perform the write command.
4. When the write command is done, the 820x SPI module will issue a SPI_IRQ
interrupt to the host, and simultaneously set the SPI_OP_DONE and SPI_Status
fields in the SPI Status Register.
820x – Data Sheet, DS-0157-D
Page189
Hifn Confidential
6.7.2
SPI Enable Register
The SPI Enable register is used by the host to enable the 820x serial to parallel interface.
Type:
Offset
Read/Write
x‘08C0’
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
SPI_EN
Description
Bits
Reset
31:1
0
Reserved
Serial to Parallel Interface Enable/Disable
0
0
0
1
SPI interface disabled
SPI interface enabled
820x – Data Sheet, DS-0157-D
Page190
Hifn Confidential
6.7.3
SPI Command Address Register
The SPI Enable register is used by the host to enable the 820x serial to parallel interface.
Once the host writes to this register, the 820x will issue a SPI write/read operation to the
external chip. For a write operation, the host should first write the data to the SPI Data
Register before writing to this register. For a read operation, the read data will be stored in
SPI Data Register after the SPI_OP_Done bit in the SPI Status Register is set.
Type:
Offset
Read/Write
x‘08C4’
SPI_ADR[23:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
CS
Chip Select
31
0
0
1
Reserved
Current operation is for the flash chip
SPI_CMD[2:0]
Serial to Parallel Command.
If CS = 1 (flash operations)
000Write 4 bytes of data to flash
001Read 4 bytes of data from flash
010Read Identification (one byte manufacture ID
and one byte Device ID)
30:28
0
011Sector Erase (sector size depends on flash type)
100User defined command (the User Defined
Command Register defines the detail
command, the 820x will just write the
command to flash)
Others Reserved
SPI_CLK_DIV[2:0]
SPI Clock Divisor.
The SPI clock is equal to 125MHZ/SPI_CLK_DIV.
000No division
001Divide by 2
010Divide by 4
27:25
0
011Divide by 8
100Divide by 16
101Divide by 32
110Divide by 64
111Divide by 128
820x – Data Sheet, DS-0157-D
Page191
Hifn Confidential
Field Name
Reserved
Description
Bits
Reset
24
0
Reserved.
SPI_ADR[23:0]
Flash Physical Address.
Valid only when CS = 0.
23:0
0
This is the sector address if the operation is “erase
sector”.
820x – Data Sheet, DS-0157-D
Page192
Hifn Confidential
6.7.4
SPI Data Register
The SPI Data register can be used by the host to read and write data through the 820x
Serial to Parallel interface.
Type:
Offset
Read/Write
x‘08C8’
SPI_DATA[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Serial to Parallel Interface Data.
Bits
Reset
SPI_DATA[31:0]
For SPI write operations, the host should write the
data to this register before writing to the SPI
Command Address register (Section 6.7.3).
31:0
0
When SPI read operations, the 820x will write the
data to this register when the operation is done.
820x – Data Sheet, DS-0157-D
Page193
Hifn Confidential
6.7.5
SPI Status Register
The SPI Status register can be read by the host to determine when a SPI read or write
operation on the serial to parallel interface has completed. This register may also be used
to read the Flash device’s status.
Type:
Offset
Read only
x‘08CC’
Reserved
FLASH_WR_STATUS[7:0]
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:16
0
Reserved
FLASH_WR_STATUS[
7:0]
Flash Write Status.
This field is only valid for 4 byte flash write
operations.
15:8
7:1
0
0
The 820x will read this field to determine if the flash
write operation has completed.
Reserved
Reserved
SPI_OP_DONE
SPI Operation Done.
This bit is read only from the host. When a SPI
read/write operation is done, the 820x will assert
this signal.
0
1
When the host writes to the SPI Command Address
Register (Section 6.7.3), the 820x will automatically
clear this bit.
0
1
SPI read/write operation not done
SPI read/write operation done
820x – Data Sheet, DS-0157-D
Page194
Hifn Confidential
6.7.6
SPI User Defined Register
The SPI User Defined register can be used by the host to write custom commands to the
device(s) attached to the serial to parallel interface. Please refer to the specifications for
the attached devices for a list of predefined commands.
Type:
Offset
Read only
x‘08D0’
Reserved
SPI_USER_CMD[7:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
Reserved
31:8
0
Reserved
SPI_USER_CMD
[7:0]
SPI User Defined Command.
This field can be used by the host to write any valid
command defined by the device attached to the SPI
interface.
For example, if a Spansion S25FL128P device is
attached to the SPI interface, the user may issue a
deep power down mode command (B9h). The host
would write ‘B9h’ to this field, and then set
SPI_CMD to ‘100’ in the SPI Command Address
Register. The 820x will then write the power down
mode command to the flash device.
7:0
0
820x – Data Sheet, DS-0157-D
Page195
Hifn Confidential
6.7.7
Flash Command Configuration 0 Register
The SPI Flash Command Configuration Register 0 can be used by the host to store the flash
command value that the 820x uses to access the external flash chip.
The host must set the commands in this register before writing to the Command Address
register. After writing a command to this register, the host must verify that the command
has completed by polling the SPI_OP_DONE bit in the SPI Status register until it is set.
Once the command has been written to the flash, the host should write to the Command
Address register to complete the requested action.
The default values for this register are suitable for either Spansion S25FL128P or Silicon
Storage Technology SST25VF032B flash devices. If using any other flash devices, the user
should confirm the operation sequence is compatible with above two devices, and initialize
the Flash Command Configuration Register 0 accordingly.
Type:
Offset
Read/Write
x‘08D4’
RDID[7:0]
RD_STATUS[7:0]
BYTE_PROG[7:0]
WREN[7:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
Reset
RDID[7:0]
Read Identification.
A command OpCode of 90H will read the flash
vendor’s ID and device ID.
31:24
0x90
The default value is the manufacturer’s ID for the
SST25VF032B device.
RD_STATUS[7:0]
BYTE_PROG[7:0]
Read Status Command.
23:16
15:8
0x05
0x02
A command OpCode of 05H will read the flash
status register.
Byte/Page Program command.
A command OpCode of 02H will initiate a write data
to the flash device.
After this command is sent to the flash, the SPI
Data and Command Address register should be
written.
WREN[7:0]
Write Enable.
This field should be used to send a write enable
command to a flash device other than the
recommended flash device.
7:0
0x06
If using the recommended flash devices, the 820x
will automatically send this command to the flash
device before a write data or erase command.
820x – Data Sheet, DS-0157-D
Page196
Hifn Confidential
6.7.8
Flash Command Configuration 1 Register
The Flash Command Configuration 1 register can used to erase either the entire flash or a
particular sector of the flash. Please refer to the manufacturer’s documentation for the
unique values to execute these commands.
Type:
Offset
Read/Write
x‘08D8’
Reserved
FLASH_ERASE[7:0]
SECTOR_ERASE[7:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Reserved.
Bits
Reset
Reserved
31:16
0
FLASH_ERASE[7:0]
Flash Erase.
A command OpCode of C7H will erase the entire
flash. The WREN command must be sent to the
flash before this command.
15:8
7:0
0xC7
0x20
SECTOR_ERASE
[7:0]
Sector Erase.
A command OpCode of 20H will erase a 4K byte
sector of the flash. The WREN command must be
sent to the flash before this command.
Please refer to the vendor’s documentation for other
valid values.
820x – Data Sheet, DS-0157-D
Page197
Hifn Confidential
6.8 Temperature Sensor Controller Registers
The temperature sensor controller registers are used to access the internal temperature
sensor registers.
Refer to Section 5.12, “Temperature Sensor Controller" for a definition of the parameters
“m1”, “m2”, and “a”, and how they are used to calculate the 820x die temperature.
6.8.1
TSC Address Register
The TSC Address register is used to set the temperature sensor register address. The host
should set the TSC address before a reading or writing to the 820x temperature sensor.
Type:
Offset
Read/Write
x‘08F0’
Reserved
TSC_ADDR[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
Bits
31:16
15:0
Reset
Reserved
0
0
Reserved.
TSC_ADDR[15:0]
Temperature Sensor Address
6.8.2
TSC Data Register
The TSC Data register is used to store the data read from the temperature sensor or store
the data to be written to the temperature sensor. Note that the host should set the TSC
address using the TSC Address register before issuing a read or write register command.
Refer to Section 5.12, “Temperature Sensor Controller" for a definition of the parameters
“m1”, “m2”, and “a”, and how they are used to calculate the 820x die temperature.
Type:
Offset
Read/Write
x‘08F4’
TSC_DATA[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
820x – Data Sheet, DS-0157-D
Page198
Hifn Confidential
Field Name
Description
Bits
Reset
TSC_DATA[31:0]
Temperature Sensor Data.
Read/Write TSC data
For a TSC write operations, the host should write
the data to this register before setting the TSC
command register.
X'FFFF_
FFFF
31:0
When a TSC read operation is done (TSC_OP_DONE
= 0), the 820x will write the temperature parameter
“m1” to bits [9:0] and parameter “m2” to bits
[25:16].
820x – Data Sheet, DS-0157-D
Page199
Hifn Confidential
6.8.3
TSC Command Register
The TSC Command register can be used by the host to read or write data from/to the
internal 820x PHY register pointed to by the TSC Address register.
Type:
Offset
Read/Write
x‘08F8’
TSC_OP_DONE is read only
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Reserved
Description
Bits
Reset
31:3
0
Reserved.
TSC_CMD[1:0]
Temperature Sensor Controller Command.
The host software should write to this field to trigger
a temperature sensor register operation.
00 Reserved
01 Register Write
10 Register Read
11 Reserved
For a “Register Write” command, the 820x will write
TSC_Data[15:0] to the temperature sensor register
with address TSC_ADDR. Note, the host must first
write to the TSC_Addr and TSC_Data registers
before issuing this command.
2:1
00
For a “Register Read” command, the 820x will read
from the temperature sensor register with address
TSC_Addr, and write the value to TSC_Data[15:0].
Note, the host must write to TSC_Addr before
issuing the command, and then read TSC_Data after
the TSC_OP_Done bit is set by the 820x.
TSC_OP_DONE
Temperature Sensor Controller Operation Done.
This bit is read only from the host.
0
820x will automatically clear this bit after the
host writes to this register.
0
1
1
820x will assert this bit when a TSC read/write
operation is done
820x – Data Sheet, DS-0157-D
Page200
Hifn Confidential
7 PCIe Configuration Register Definition
This section describes the 820x PCIe configuration registers. The registers are mapped into
4K bytes of PCIe configuration space that can be accessed through the PCIe bus. The offset
values in this section are given in hex.
The host should not read/write to/from reserved registers. If the host writes to a reserved
register, the write will be ignored by the 820x. Likewise, if the host reads a reserved
register, the return value will be all zeros.
Table 7-1 lists the register types definitions used to describe the PCIe configuration
registers in this chapter. Fields marked as 'Read Only' usually indicate the 820x capability
and may not be altered by host; fields marked as 'Read/Write' may be altered by the host
(usually BIOS or OS) for special purposes.
Table 7-1. Register Type Definitions
Register Type
Description
RO
Read only.
Register bits are read-only and cannot be altered by software.
Sticky - Read only.
ROS
Registers are read-only and cannot be altered by software. Registers are
not initialized or modified by hot reset.
RW
Read/Write.
Register bits are read-write and may be either set or cleared by software to
the desired state.
RW1C
RWS
Read-only status, Write-1-to-clear status.
Register bits indicate status when read, a set bit indicating a status event
may be cleared by writing a 1. Writing a 0 to RW1C bits has no effect.
Sticky - Read-Write.
Registers are read-write and may be either set or cleared by software to the
desired state. Bits are not initialized or modified by hot reset.
HWINIT
Hardware Initialized.
Register bits are initialized by firmware or hardware mechanisms such as
pin strapping or serial EEPROM. Bits are read-only after initialization and
can only be reset with a power on reset.
Figure 7-1 illustrates the 820x PCIe Configuration registers.
820x – Data Sheet, DS-0157-D
Page201
Hifn Confidential
Figure 7-1. 820x PCI-Express Configuration Space
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page202
7.1 Type 0 PCIe Compatible Configuration Space
7.1.1
Vendor ID Register
The Vendor ID register identifies Hifn as the manufacturer of the 820x device.
Offset
x‘0000’
VENDOR_ID[15:0]
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
820x
Bits
Type
Value
Vendor_ID[15:0]
This 16-bit register identifies Hifn as the
manufacturer of the 820x. The value
hardwired in this read-only register is
assigned by a central authority (the PCI
SIG) that controls issuance of the
numbers.
15:0
RO
0x13A3
820x – Data Sheet, DS-0157-D
Page203
Hifn Confidential
7.1.2
Device ID Register
The Device ID register identifies the 820x.
Type:
Offset
Read only
x‘0002’
DEVICE_ID[15:0]
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
820x
Bits
Type
Value
Device_ID[15:0]
This 16-bit value is assigned by Hifn
and identifies the 820x. In conjunction
with the Vendor ID and Revision ID
PCIe registers, and the Minor Revision
820x register, the Device ID can be
used to locate a 820x-specific driver
for the 820x.
0x0033 = 8201 device
0x0034 = 8202 device
0x0035 = 8203 device
0x0037 = 8204 device
preset
value will
match the
chip
15:0
RO
version
820x – Data Sheet, DS-0157-D
Page204
Hifn Confidential
7.1.3
Command Register
The Command register is used to enable or disable The I/O space, Memory space, Bus
Master, Parity Error Response, System Errors, and Interrupts.
Offset
x‘0004’
Reserved
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
820x
Bits
Type
Value
Reserved
INT_DIS
15:11
RO
0
Reserved
Interrupt Disable.
Controls whether the 820x can
generate INTx interrupt messages.
0
1
820x enabled to generate INTx
interrupt messages.
820x's disabled to generate INTx
interrupt messages is disabled.
If the 820x had already transmitted an
Assert_INTx emulation interrupt
10
RW
0
messages and this bit is then set, the
820x must transmit a corresponding
Deassert_INTx message for each
previously transmitted assert message
Note that INTx emulation interrupt
messages forwarded by Root and
Switch Ports from devices downstream
of the Root or Switch Port are not
affected by this bit.
Reserved
9
8
7
RO
RW
RO
0
0
0
Reserved
SERR#_EN
System Error Enable.
This active low bit enables or disables
the reporting of errors detected by the
820x to the Root Complex.
0
820x may send detected errors to
the Root Complex
1
820x may not send detected errors
to the Root Complex
Reserved
Reserved
820x – Data Sheet, DS-0157-D
Page205
Hifn Confidential
Field Name
Description
820x
Bits
6
Type
RW
Value
PERR_RESP
Parity Error Response.
This bit is used to enable or disable the
Master Data Parity Error bit in the
Status register.
0
0
0
1
Disable MSTR_DPERR
Enable MSTR_DPERR
Reserved
5:3
RO
Reserved
BUS_MASTER_EN
Bus Master Enable.
0
1
Disables the 820x from issuing
memory or IO requests, and from
generating MSI messages.
2
RW
0
Enables the 820x to issue memory
or IO requests, including MSI
messages.
Requests other than memory or IO
requests are not controlled by this bit.
MEM_EN
Memory Address Space Decoder
Enable.
0
Memory decoder is disabled and
Memory transactions targeting the
820x are not recognized.
1
0
RW
RO
0
0
1
Memory decoder is enabled and
Memory transactions targeting the
820x are accepted.
IO_EN
IO Address Space Decoder Enable.
0
IO decoder is disabled and IO
transactions targeting the 820x are
not recognized.
1
IO decoder is enabled and IO
transactions targeting the 820x are
accepted.
820x – Data Sheet, DS-0157-D
Page206
Hifn Confidential
7.1.4
Status Register
The Status register is used to report errors and interrupts from the 820x to the host. The
read only fields of this register are automatically updated by the 820x to reflect their
internal status.
Offset
x‘0006’
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
820x
Bits
Type
Value
PERR_DET
Parity Error Detected.
Regardless of the state the Parity Error
Enable bit in the 820x's Command
register, this bit is set if the 820x
receives a Poisoned TLP.
15
RO
0
0
0
820x has not received a Poisoned
TLP.
1
820x received a Poisoned TLP.
SIG_SYS_ERR
Signaled System Error.
0
820x has not sent a fatal or non-
fatal message.
14
RO
1
The 820x sent an ERR_FATAL or
ERR_NONFATAL message, and the
SERR Enable bit in the Command
register is set to one.
RCVD_MSTR_ABORT
RCVD_TAR_ABORT
Received Master Abort.
0
820x has not sent a master abort
message.
13
12
RO
RO
0
0
1
820x received a Completion with
Unsupported Request Completion
Status.
Received Target Abort.
0
820x has not sent a received
target abort message.
1
820x received a Completion with
Completer Abort Completion Status.
820x – Data Sheet, DS-0157-D
Page207
Hifn Confidential
Field Name
Description
820x
Bits
11
Type
RO
Value
SIG_TAR_ABORT
Signaled Target Abort.
0
820x has not sent a signal target
abort message.
0
1
The 820x, acting as a Completer,
terminated a request by issuing
Completer Abort Completion Status
to the Requester.
Reserved
10:9
RO
Reserved
MSTR_DPERR
Master Data Parity Error.
The Master Data Parity Error bit is set
by a 820x if the Parity Error Enable bit
is set in the Command register and
either of the following two conditions
occurs:
-the 820x receives a poisoned
Completion.
8
RO
0
-the 820x poisons a write request.
If the Parity Error Enable bit is cleared,
the Master Data Parity Error status bit
is never set.
0
No Master Data Parity Error
occurred.
1
Master Data Parity Error occurred.
Reserved
CAP_LIST
7:5
4
RO
RO
0
1
Reserved
Capabilities List.
Indicates the presence of one or more
extended capability register sets in the
lower 48 dwords of the 820x's PCI-
compatible configuration space.
0
1
Capabilities List not present.
Capabilities List present.
INT_STAT
Interrupt Status.
Indicates that the 820x has an interrupt
request outstanding (that is, the 820x
transmitted an interrupt message that
is waiting to be serviced).
Note that INTx emulation interrupts
forwarded by Root and Switch Ports
from devices downstream of the Root
or Switch Port are not reflected in this
bit.
3
RO
0
Note: this bit is only associated with
INTx messages, and has no meaning if
the device is using Message Signaled
Interrupts.
0
820x has no interrupt request
outstanding.
1
820x has an interrupt request
outstanding.
Reserved
2:0
RO
N/A
Reserved
820x – Data Sheet, DS-0157-D
Page208
Hifn Confidential
7.1.5
Revision ID Register
The Revision ID register identifies the major revision number assigned to each 820x device.
Please refer to Section 6.1.6 for the minor revision number of the 820x device.
Offset
x‘0008’
REVISION_ID[7:0]
7
6
5
4
3
2
1
0
Field Name
Description
820x
Bits
Type
Value
REVISION_ID[7:0]
This 8-bit value is assigned by Hifn to
identify the revision number of the
820x.
7:0
RO
0x00
0 = First major revision of the 820x
7.1.6
Class Code Register
The Class Code register defines the 820x encryption/decryption controller.
Offset
x‘0009’
CLS_CODE[23:0]
23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
0x108000 Encryption/Decryption controller.
Bits
Type
Default
CLS_CODE[23:0]
23:0
RO
7.1.7
Cache Line Size Register
Offset
x‘00C’
The Cache Line Size register is implemented as a read-write field for legacy compatibility
purposes but has no impact on the 820x's functionality. The typical read value is 108000h.
820x – Data Sheet, DS-0157-D
Page209
Hifn Confidential
7.1.8
Master Latency Timer Register
Offset
x‘00D’
The Master Latency Timer register is implemented for legacy compatibility purposes but has
no impact on the 820x's functionality. This register is hard-wired to 0x00.
7.1.9
Header Type Register
Offset
x‘00E’
The Header Type register is a read-only optional register whose value is hard-wired to
0x00.
7.1.10
BIST Register
Offset
x‘00F’
The BIST register is used for control and status of the BIST function. This register is hard-
wired to 0x00.
820x – Data Sheet, DS-0157-D
Page210
Hifn Confidential
7.1.11
Base Address Register 0, 1
The Base Address 0 register provides the 820x base address on a 4KB boundary and some
memory configuration parameters. This address in memory space is where the standard
820x register set will reside and be accessed. For 32-bit systems, the base address is set
using only BAR 0. For 64-bit systems, the base address is set using both BAR 0 and BAR 1.
Offset
x‘0010’
BASE_ADR[56:25]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
BASE_ADR[24:0]
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
820x
Bits
Type
Value
BASE_ADR[56:0]
Base Address.
[63:32] Only used for 64-bit 4KB
memory base address
63:7
RW
0
[31:7] Indicates 32-bit 4KB memory
base address
Reserved
6:4
3
RO
RO
0
0
Reserved
PRE_FTCH
Prefetchable memory.
0
1
Non-Prefetchable memory
Prefetchable memory
DEC_TYP
Decoder Type.
00 32 bit decoder; locate memory
00 for a
32-bit
system;
10 for a
64-bit
anywhere in lower 4GB; use only
BAR0
2:1
RW
RO
01 Reserved
10 64-bit decoder; locate memory
anywhere in 264 memory space;
uses BAR0 and BAR1
system
11 Reserved
MEM_IND
Memory Space Indicator.
x0 Base Address Register0 is a
memory address decoder
0
0
x1 Base Address Register0 is an IO
address decoder
820x – Data Sheet, DS-0157-D
Page211
Hifn Confidential
7.1.12
Base Address Register 2-5
The Base Address Registers 2-5 are not used by the 820x, are read only, and will be read
as all zeroes.
7.1.13
Cardbus CIS Pointer Register
Offset
x‘0028’
This optional read-only register is used by devices that contain a CardBus and PCIe
interface. The 820x does not support Cardbus so this register is hard-wired to 0x00000000.
7.1.14
Sub-System Vendor ID Register
The Sub-System Vendor ID register identifies Hifn as the manufacturer of the 820x device.
This value is hard coded in the 820x device.
Offset
x‘002C’
SUBSYS_VENDOR_ID[15:0]
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
820x
Bits
Type
Value
SUBSYS_VENDOR_
ID[15:0]
This 16-bit register identifies the
manufacturer of the subsystem. The
value hardwired in this read-only
register is assigned by a central
authority (the PCI SIG) that controls
issuance of the numbers.
15:0
RO
0x13A3
820x – Data Sheet, DS-0157-D
Page212
Hifn Confidential
7.1.15
Sub-System ID Register
The Sub-System ID register identifies the 820x. This value is hard coded in the 820x
device.
Offset
x‘002E’
SUBSYS_ID[15:0]
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
820x
Bits
Type
Value
SUBSYS_ID[15:0]
This 16-bit value is assigned by the
subsystem manufacturer and identifies
the type of subsystem.
15:0
RO
0x036
7.1.16
Expansion ROM Base Address Register
The ROM Base address register (ROM BAR) provides the 820x expansion ROM Base address
and address decode enable. This register sets the address space in memory for the
attached Flash device.
Offset
x‘0030’
If the Expansion ROM is enabled, bits
[23:11] are RO to reserve 16M space.
EXP_ROM_BAR[20:0]
Reserved
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
Field Name
Description
820x
Bits
Type
Value
EXP_ROM_BAR
[20:0]
Expansion ROM Base Address.
[31:24] The base address of the
expansion ROM
31:11
RW
If the Expansion ROM is enabled, bits
[23:11] are RO to reserve 16M space.
Reserved
10:1
0
RO
0
0
Reserved.
ADR_DEC_EN
Address Decode Enable.
RW
0
1
Disable expansion ROM
Enable expansion ROM
820x – Data Sheet, DS-0157-D
Page213
Hifn Confidential
7.1.17
Capabilities Pointer Register
Offset
x‘0034’
The Capabilities Pointer register is used to point to a linked list of capabilities implemented
by the 820x. This read-only register value is hard-wired to 0x40, the Power Management
Capabilities structure.
7.1.18
Interrupt Line Register
Offset
x‘003C’
The Interrupt Line register communicates interrupt line routing information to device
drivers and operating systems. Values in this register are programmed by system software
and are system architecture specific. The typical read value is 0x0B.
7.1.19
Interrupt Pin Register
Offset
x‘003D’
The Interrupt Pin register identifies the legacy interrupt Message(s) used by the 820x. This
register is a read-only register whose value will be read as 0x01, indicating the 820x uses
INTA.
7.1.20
Min_Gnt Register
Offset
x‘003E’
This legacy register is a read-only register whose value is hard-wired to 0x00.
7.1.21
Max_Lat Register
Offset
x‘003F’
This legacy register is a read-only register whose value is hard-wired to 0x00.
820x – Data Sheet, DS-0157-D
Page214
Hifn Confidential
7.2 Power Management Capabilities Registers
The Power Management registers indicate the 820x power management capabilities.
PMC[15:0]
NXT_CAP_PTR[7:0]
CAP_ID[7:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
DATA_REG[7:0] PMSCR_BSE[7:0]
9
8
7
6
5
5
4
3
2
1
1
0
0
PMCSR[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
4
3
2
7.2.1
Capability ID Register
The Capability Identifier register, when read by system software as 01h, indicates that the
data structure currently being pointed to is the PCI Power Management data structure.
Offset
x‘0040’
Field Name
Description
820x
Bits
Type
Value
CAP_ID
Power Management Capability ID.
01h = identifies the linked list item as
being the PCI Power Management
registers
7:0
RO
0x01
7.2.2
Next Capabilities Pointer Register
The Next Capabilities register describes the location of the next item in the 820x’s
capability list. The value given is an offset into the 820x’s PCI Configuration Space.
Offset
x‘0041’
Field Name
Description
820x
Bits
Type
Value
NXT_CAP_PTR
Power Management Next Capabilities
Pointer.
7:0
RO
0x50
50h = PCIe MSI capabilities structure
820x – Data Sheet, DS-0157-D
Page215
Hifn Confidential
7.2.3
Power Management Capabilities Register
The Power Management Capabilities register is a 16-bit read-only register which provides
information on the capabilities of the function related to power management. The
information in this register is generally static and known at design time.
Offset
x‘0042’
Field Name
Description
820x
Bits
Type
Value
PME Support
PME Support.
Indicates the PM states supported by the
820x. A one in a bit indicates the 820x is
capable of sending a Power Management
Event (PME) message. A zero in a bit
indicates PME notification is not
supported in the respective PM state.
15:11
RO
0x0B
Bit
11
12
13
14
15
PM State
D0 (supported by 820x)
D1 (supported by 820x)
D2 (not supported by 820x)
D3hot (supported by 820x)
D3cold (not supported by 820x)
D2 Support
D1 Support
Aux Current
D2 Support.
10
9
RO
RO
0
1
0 = D2 PM state not supported
D1 Support.
1 = D1 PM state supported
Aux Current.
The Aux_Current field reports the
3.3Vaux current requirements for the
820x. The 820x reports 375mA max.
8:6
RO
111
Device-Specific
Initialization
Device-Specific Initialization.
A one in this bit indicates that
immediately after entry into the D0
Uninitialized state, the 820x requires
additional configuration above and
beyond setup of its PCI configuration
Header registers before the Class driver
can use the 820x. Microsoft OSs do not
use this bit. Rather, the determination
and initialization is made by the Class
driver.
5
RO
0
Reserved
4
3
RO
RO
0
0
Reserved.
PME Clock
Version Field
The 820x does not use PME Clock.
Version Field.
This field indicates the version of the PCI
Bus PM Interface spec that the 820x
complies with.
2:0
RO
0x3
820x – Data Sheet, DS-0157-D
Page216
Hifn Confidential
7.2.4
Power Management Control/Status Register
The Power Management Control/Status (PMCSR) register is used to manage the PCI
function’s power management state as well as to enable/monitor Power Management
Events (PMEs).
Offset
x‘0044’
Field Name
Description
820x
Bits
Type
Value
PME_STAT
PME Status.
This bit is set to “0” because the 820x
does not support PME# generation from
D3cold.
15
RW1C
0
0
DAT_SCALE
DAT_SEL
PME_EN
Data Scale.
This field is set to “00b” in the 820x
because the PM Data register is not
implemented.
14:13
12:9
RO
Data Select.
This field is set to “0000b” in the 820x
because the PM Data register is not
implemented.
RW
0000
PME Enable.
This bit is set to “0” because the 9720
does not support PME# generation from
D3cold.
8
RW
RO
0
0
Reserved
7:4
Reserved.
NO_SFT_RST
No Soft Reset.
The 820x sets this bit to 0 to indicate it
will perform an internal reset upon
transitioning from D3hot to D0 via
software control of the PowerState bits.
Configuration Context is lost when
performing the soft reset. Upon transition
from the D3hot to the D0 state, full
reinitialization sequence is needed to
return the device to D0 Initialized.
3
2
RO
RO
0
0
Reserved
Reserved.
820x – Data Sheet, DS-0157-D
Page217
Hifn Confidential
Field Name
Description
820x
Bits
Type
Value
PWR_STATE
Power State.
This 2-bit field is used both to determine
the current power state of the 820x and
to set the 820x into a new power state.
The definition of the field values is given
below.
00b - D0
1:0
RW
00
01b - D1
10b - D2
11b - D3hot (not supported)
If software attempts to write an
unsupported state to this field, the write
operation must complete normally on the
bus; however, the data is discarded and
no state change will occur.
7.2.5
PMCSR-BSE Register
Offset
x‘0046’
The PMCSR PCI-to-PCI Bridge Support Extensions register does not apply to the 820x.
When read, the register will return zeroes.
7.2.6
Data Register
Offset
x‘0047’
The Data register is not used by the 820x but may be written to by system software. When
read, the register will typically return all zeroes.
820x – Data Sheet, DS-0157-D
Page218
Hifn Confidential
7.3 MSI Capability Registers
The MSI Capability registers indicate the 820x Message Signaled Interrupt capabilities. The
820x uses a 64-bit Message Address.
MSG_CTL[15:0]
NXT_PTR[7:0]
CAP_ID[7:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
MSG_ADR[31:0]
9
9
8
8
7
7
6
6
5
4
3
2
1
1
0
0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
5
4
3
2
MSG_ADR[63:32]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
MSG_DATA[15:0]
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
7.3.1
Capability ID Register
The Capability Identifier register, when read by system software as 05h, indicates that the
820x is MSI capable.
Offset
x‘0050’
Field Name
Description
820x
Bits
Type
Value
CAP_ID
MSI Capability.
7:0
RO
0x05
05h = MSI capable
820x – Data Sheet, DS-0157-D
Page219
Hifn Confidential
7.3.2
Next Capabilities Pointer Register
The Next Capabilities register describes the location of the next item in the 820x’s
capability list. The value given is an offset into the 820x’s PCI Configuration Space.
Offset
x‘0051’
Field Name
Description
820x
Bits
Type
Value
NXT_PTR
MSI Next Pointer.
7:0
RO
0x70
70h = PCIe capabilities structure
820x – Data Sheet, DS-0157-D
Page220
Hifn Confidential
7.3.3
Offset
Message Control Register
x‘0053’
Field Name
Description
820x
Bits
Type
Value
Reserved
15:9
RO
0
Reserved.
PER_VEC_MSK
Per-vector masking.
The 820x does not support MSI per-
vector masking.
8
7
RO
RO
0
1
0 = Per-vector masking not supported
64_ADR_CAP
64-bit Address.
The 820x is capable of generating a 64-
bit message address.
1 = 64-bit address capable
MULT_MESS_EN
Multiple Message Enable.
System software writes to this field to
indicate the number of allocated vectors
(equal to or less than the number of
requested vectors).
6:4
3:1
RW
RO
000
000
000 = 1 vector allowed
MULT_MESS_CAP
MSI Enable
Multiple Message Capable.
System software reads this field to
determine the number of requested
vectors.
000 = 1 vector requested
MSI Enable.
System configuration software sets this
bit to enable MSI.
0 = 820x is prohibited from using MSI to
request service
0
RW
0
1 = If the MSI-X Enable bit in the MSI-X
Message Control register is 0, the
820x is permitted to use MSI to
request service.
820x – Data Sheet, DS-0157-D
Page221
Hifn Confidential
7.3.4
Message Address Register
Offset
x‘0054 - x0058’
Field Name
Description
820x
Bits
Type
Value
MSG_ADR
MSI Message Address.
If the Message Enable bit (bit 0 of the
Message Control register) is set, the
contents of this register specifies the
DWORD aligned address (AD[63:02]) for
the MSI memory write transaction.
AD[1:0] are driven to zero during the
address phase.
63:2
RW
Reserved
Reserved.
1:0
RO
00
Always returns 0 on read. Write
operations have no effect.
7.3.5
Message Data Register
Offset
x‘005C’
Field Name
Description
820x
Value
Bits
Type
MSG_DATA
MSI Message Data.
If the Message Enable bit (bit 0 of the
Message Control register) is set, the
message data is driven onto the lower
word (MSG_ADR[15:0]) of the memory
write transaction’s data phase.
15:0
RW
MSG_ADR[31:16] are driven to zero
during the memory write transaction’s
data phase. C/BE[3:0]# are asserted
during the data phase of the memory
write transaction.
820x – Data Sheet, DS-0157-D
Page222
Hifn Confidential
7.4 PCI Express Capability Registers
The PCI Express Capability registers are required for PCI Express devices. The capability
structure is a mechanism for enabling PCI software transparent features requiring support
on legacy operating systems. In addition to identifying a PCI Express device, the PCI
Express Capability structure is used to provide access to PCI Express specific Control/Status
registers and related Power Management enhancements.
PCIE_CAP[15:0]
NXT_CAP_PTR[7:0]
CAP_ID[7:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
DEV_CAP[31:0]
9
9
8
8
7
7
6
6
5
5
5
5
5
4
4
4
4
4
3
3
3
3
3
2
2
2
2
2
1
1
1
1
1
0
0
0
0
0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
DEV_STAT[15:0]
DEV_CTL[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
LINK_CAP[31:0]
9
8
7
6
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
LINK_STAT[15:0]
9
8
7
6
LINK_CTL[15:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
7.4.1
Capability ID Register
The Capability Identifier register, when read by system software as 10h, indicates that the
820x is PCIe capable.
Offset
x‘0070’
Field Name
Description
820x
Bits
Type
Value
CAP_ID[7:0]
PCIe Capable.
7:0
RO
0x10
10h = 820x is PCIe capable
820x – Data Sheet, DS-0157-D
Page223
Hifn Confidential
7.4.2
Next Capabilities Pointer Register
The Next Capabilities register describes the location of the next item in the 820x’s
capability list. The value given is an offset into the 820x’s PCI Configuration Space.
Offset
x‘0071’
Field Name
Description
820x
Bits
Type
Value
NXT_PTR[7:0]
Next Capability Pointer.
7:0
RO
0x00
00h = Advanced Error structure
7.4.3
PCIe Capabilities Register
The PCI Express Capabilities (PCIE_CAP) register identifies the PCI Express device type and
its associated capabilities.
Offset
x‘0072’
Field Name
Description
820x
Bits
Type
Value
RSVD
15:14
RO
00
Reserved.
INT_MSG_NUM[4:0]
Interrupt Message Number.
13:9
8
RO
0x0
This field is not used by the 820x.
SLOT_IMPL
Slot Implemented.
HWINIT
0
This bit is not used by the 820x.
DEV_PORT_TYP[3:0]
Device/Port Type.
Indicates the type of PCI Express
logical device.
7:4
3:0
RO
RO
0000
0000 = 820x is PCI Express Endpoint
device
CAP_VER[3:0]
Capability Version.
01
Indicates the PCI Express capability
structure version number.
820x – Data Sheet, DS-0157-D
Page224
Hifn Confidential
7.4.4
Device Capabilities (DEV_CAP) Register
The Device Capabilities register identifies the PCI Express device specific capabilities.
Offset
x‘0074’
Field Name
Description
820x
Bits
Type
Value
Reserved
31:28
RO
0
Reserved
Captured Slot Power
Limit Scale[1:0]
Captured Slot Power Limit Scale.
This field specifies the scale used for
the Slot Power Limit Value, which is set
by the Set_Slot_Power_Limit Message
for the 820x. Most systems will read
0x0, which means 1.0x.
27:26
RO
Captured Slot Power
Limit Value[7:0]
Captured Slot Power Limit Value.
This field is used in combination with
the Slot Power Limit Scale value to
specify the upper limit on the power
supplied by the slot. The power limit (in
Watts) is calculated by multiplying the
value in this field by the value in the
Slot Power Limit Scale field. This value
is set by Set_Slot_Power_Limit
25:18
17:15
14
RO
RO
RO
Message for the 820x. Most systems
will read 0x19, which represents 25W.
Reserved
0x0
Reserved
Power Indicator
Present
Power Indicator Present.
When set to one, indicates a Power
Indicator is implemented on the card or
module. Valid for the following PCI
Express device types:
0
Express Endpoint device
Legacy Express Endpoint device
Switch upstream port
Express-to-PCI/PCI-X bridge
Attention Indicator
Present
Attention Indicator Present.
When set to one, indicates an Attention
Indicator is implemented on the card or
module. Valid for the following PCI
Express device Types:
13
RO
0
Express Endpoint device
Legacy Express Endpoint device
Switch upstream port
Express-to-PCI/PCI-X bridge
820x – Data Sheet, DS-0157-D
Page225
Hifn Confidential
Field Name
Description
820x
Bits
Type
Value
Attention Button
Present
Attention Button Present.
When set to one, indicates an Attention
Button is implemented on the card or
module. Valid for the following PCI
Express device types:
12
RO
0
Express Endpoint device
Legacy Express Endpoint device
Switch upstream port
Express-to-PCI/PCI-X bridge
Endpoint L1s
Acceptable
Latency[2:0]
Endpoint L1s Acceptable Latency.
Acceptable latency that an Endpoint can
withstand due to the transition from L1
state to the L0 state. This value is an
indirect indication of the amount of the
Endpoint's internal buffering. Power
management software uses this value
to compare against the L1 Exit
11:9
RO
0x3
Latencies reported by all components in
the path between this Endpoint and its
parent Root Port to determine whether
ASPM L1 entry can be used with no loss
of performance.
The 820x requires an endpoint L1
acceptable latency of 8ꢀs maximum.
Endpoint L0s
Acceptable
Latency[2:0]
Endpoint L0s Acceptable Latency.
Acceptable total latency that an
Endpoint can withstand due to the
transition from the L0s state to the L0
state. This value is an indirect
indication of the amount of the
Endpoint's internal buffering. Power
management software uses this value
to compare against the L0s exit
latencies reported by all components in
the path between this Endpoint and its
parent Root Port to determine whether
ASPM L0s entry can be used with no
loss of performance.
8:6
RO
0x3
The 820x requires an endpoint L0
acceptable latency of 4ꢀs maximum.
Extended Tag Field
Supported
Extended Tag Field Supported.
Max supported size of the Tag field
when this function acts as a Requester.
0 = 5-bit Tag field supported (max of
32 outstanding request per Requester).
5
RO
0x0
1 = 8-bit Tag field supported (max of
256 outstanding request per
Requester).
If 8-bit Tags are supported and will be
used, this feature is enabled by setting
the Extended Tag Field Enable bit in the
Device Control register to one.
820x – Data Sheet, DS-0157-D
Page226
Hifn Confidential
Field Name
Description
820x
Bits
Type
Value
Phantom Functions
Supported[1:0]
Phantom Functions Supported.
When the device within which a
function resides does not implement all
eight functions, a non-zero value in this
field indicates that this is so. Assuming
all functions are not implemented and
that the programmer has set the
Phantom Function Enable bit in the
Device Control register, a function may
issue request packets using its own
function number as well as one or more
additional function numbers.
This field indicates the number of msbs
of the function number portion of
Requester ID that are logically
combined with the Tag identifier.
00 = The Phantom Function feature is
not available within this device.
01 = The msb of the function number
in the Requestor ID is used for
Phantom Functions. The device
designer may implement functions 0-3.
When issuing request packets,
Functions 0, 1, 2, and 3 may also use
function numbers 4, 5, 6, and 7,
respectively, in the packet's Requester
ID.
4:3
RO
0x0
10 = The two msbs of the function
number in the Requestor ID are used
for Phantom Functions. The device
designer may implement functions 0
and 1. When issuing request packets,
Function 0 may also use function
numbers 2, 4, and 6 in the packet's
Requester ID. Function 1 may also use
function numbers 3, 5, and 7 in the
packet's Requester ID.
11 =All three bits of the function
number in the Requestor ID are used
for Phantom Functions. The device
designer must only implement Function
0 (and it may use any function number
in the packet's Requester ID).
Max Payload Size
Supported[2:0]
Max Payload Size Supported.
Defines the Max data payload size that
the 820x supports for TLPs.
2:0
RO
0x2
The 820x supports 512 bytes max
payload size.
820x – Data Sheet, DS-0157-D
Page227
Hifn Confidential
7.4.5
Device Control (DEV_CTL) Register
The Device Control register controls PCI Express device specific parameters. The system
software may read and write the fields of this register to control the operation of the 820x.
Offset
x‘0078’
Field Name
Description
820x
Bits
Type
Value
RSVD
15
RO
00
Reserved.
MAX_RD_REQ_SZ
[2:0]
Maximum Read Request Size.
This field sets the maximum Read
Request size for the Device as a
Requester. The Device must not
generate read requests with size
exceeding the set value.
14:12
RW
010
Supported 820x read request sizes:
000 = 128 bytes
001 = 256 bytes
010 = 512 bytes
EN_NO_SNOOP
Enable No Snoop.
This bit is set to 1 in the 820x,
indicating the 820x is permitted to set
the No Snoop bit in the Requester
Attributes of transactions it initiates
that do not require hardware enforced
cache coherency.
11
RW
1
AUX_PWR_EN
PHANT_EN
Auxiliary (AUX) Power PM Enable.
This bit is set to 0 by the 820x,
disabling the 820x to draw AUX power
independent of PME AUX power.
10
9
RWS
RW
0
0
0
Phantom Functions Enable.
This bit is hardwired to 0 as the 820x
device does not implement this
capability.
EXT_TAG_EN
Extended Tag Field Enable.
This bit is set to 0 in the 820x to
disable the 820x from using an 8-bit
Tag field as a requester.
8
RW
820x – Data Sheet, DS-0157-D
Page228
Hifn Confidential
Field Name
Description
820x
Bits
Type
Value
MAX_PAY_SZ[2:0]
Maximum Payload Size.
This field sets maximum TLP payload
size for the device/function. As a
Receiver, the device must handle TLPs
as large as the set value; as
Transmitter, the device must not
generate TLPs exceeding the set value.
7:5
RW
000
Supported 820x payload sizes:
000 = 128 bytes max payload size
001 = 256 bytes max payload size
010 = 512 bytes max payload size
EN_RLX_ORD
Enable Relaxed Ordering.
This bit is hardwired to 0 as the 820x
device never sets the Relaxed Ordering
attribute in transactions it initiates as a
requester.
4
RW
0
NON_SPT_REQ_REP
_EN
Unsupported Request Reporting Enable.
This bit, in conjunction with other bits,
controls the signaling of Unsupported
Requests by sending Error Messages.
3
2
1
0
RW
RW
RW
RW
0
0
0
0
FTL_ERR_REP_EN
Fatal Error Reporting Enable.
This bit, in conjunction with other bits,
controls sending ERR_FATAL Messages.
NON_FTL_ERR_REP_
EN
Non-Fatal Error Reporting Enable.
This bit, in conjunction with other bits,
controls sending ERR_NONFATAL
Messages.
COR_ERR_REP_EN
Correctable Error Reporting Enable.
This bit, in conjunction with other bits,
controls sending ERR_COR Messages.
820x – Data Sheet, DS-0157-D
Page229
Hifn Confidential
7.4.6
Device Status Register
The Device Status register provides information about PCI Express device specific
parameters.
Offset
x‘007A’
Field Name
Description
820x
Bits
Type
Value
RSVD
15:6
RO
00
Reserved.
TRNS_PEND
Transactions Pending.
This bit when set indicates that the
820x has issued Non- Posted Requests
which have not been completed. The
820x reports this bit cleared only when
all outstanding Non-Posted Requests
have completed or have been
5
RO
0
terminated by the Completion Timeout
mechanism.
AUX_PWR_DET
AUX Power Detected.
This bit is set to 0 in the 820x,
indicating the 820x does not use AUX
power.
4
3
RO
0
0
UNSUP_REQ_DET
Unsupported Request Detected.
This bit indicates that the 820x received
an Unsupported Request. Errors are
logged in this register regardless of
whether error reporting is enabled or
disabled in the Device Control register.
RW1C
FTL_ERR_DET
Fatal Error Detected.
This bit indicates the status of the fatal
errors detected. Errors are logged in
this register regardless of whether error
reporting is enabled or disabled in the
Device Control register.
2
RW1C
0
Errors are logged in this register
regardless of the settings of the
correctable error mask register in the
Advanced Error Handling registers.
NON_FTL_ERR_DET
Non-Fatal Error Detected.
This bit indicates the status of the non-
fatal errors detected. Errors are logged
in this register regardless of whether
error reporting is enabled or disabled in
the Device Control register.
1
RW1C
0
Errors are logged in this register
regardless of the settings of the
correctable error mask register in the
Advanced Error Handling registers.
820x – Data Sheet, DS-0157-D
Page230
Hifn Confidential
Field Name
Description
820x
Bits
Type
Value
COR_ERR_DET
Correctable Error Detected.
This bit indicates the status of the
correctable errors detected. Errors are
logged in this register regardless of
whether error reporting is enabled or
disabled in the Device Control register.
0
RW1C
0
Errors are logged in this register
regardless of the settings of the
correctable error mask register in the
Advanced Error Handling registers.
820x – Data Sheet, DS-0157-D
Page231
Hifn Confidential
7.4.7
Link Capabilities Register
The Link Capabilities register identifies PCI Express Link specific capabilities.
Offset
x‘007C’
Field Name
Description
820x
Bits
Type
RO
Value
Port Number[7:0]
Port Number.
31:24
23:18
0
0
The 820x has a single PCIe port; the
port number is zero.
Reserved
RO
Reserved.
L1 Exit Latency[2:0]
L1 Exit Latency.
Indicates the L1 exit latency for the
Link (i.e., the length of time this Port
requires to complete a transition from
L1 to L0).
17:15
RO
0x4
The 820x L1 Exit latency required is
8ꢀs to 16ꢀs.
L0 Exit Latency[2:0]
L0 Exit Latency.
Indicates the L0s exit latency for the
Link (i.e., the length of time this Port
requires to complete a transition from
L0s to L0).
14:12
11:10
RO
RO
0x3
0x3
The 820x L0 Exit latency required is
256ns to less than 512ns.
Active State Link PM
Support[1:0]
Active State Power Management
(ASPM) Support.
Indicates the level of ASPM supported
on this Link.
The 820x supports L0 and L1.
Max Link Width[5:0]
Max Link Speed[3:0]
Max Link Width.
9:4
3:0
RO
RO
0x4
0x1
The 820x max link width is x4.
Max Link Speed.
0001 = 2.5 Gb/s
820x – Data Sheet, DS-0157-D
Page232
Hifn Confidential
7.4.8
Link Control Register
The Link Control register controls PCI Express Link specific parameters.
Offset
x‘0080’
Field Name
Description
820x
Bits
Type
Value
Reserved
15:9
RO
0
0
Reserved.
EN_CLK_PWR_MAN
Enable Clock Power Management.
This bit is hardwired to 0 as the 820x
device does not support Clock Power
Management.
8
7
RW
RW
EXT_SYNC
CLK_CFG
Extended Synch.
This bit when set forces the
transmission of additional ordered sets
when exiting the L0s state and when in
the Recovery state.
0
1
This bit is not used by the 820x.
Common Clock Configuration.
This bit when set indicates that the
820x and the component at the
opposite end of this Link are operating
with a distributed common reference
clock.
6
RW
RTN_LINK
LINK_DIS
RCB
Retrain Link.
5
4
RW
RW
0
0
This field is not applicable and is
reserved for the 820x device.
Link Disable.
This field is not applicable and is
reserved for the 820x device.
Read Completion Boundary.
3
2
RW
RO
0
0
This bit is hardwired to 0 as the 820x
device does not support RCB.
Reserved
Reserved.
ASPM_CTL[1:0]
Active State Power Management
(ASPM) Control.
This field controls the level of ASPM
supported on the given PCI Express
Link.
1:0
RW
00
820x supported values are:
00 = Disabled
820x – Data Sheet, DS-0157-D
Page233
Hifn Confidential
7.4.9
Link Status Register
The Link Status register provides information about PCI Express Link specific parameters.
Offset
x‘0082’
Field Name
Description
820x
Bits
Type
Value
Reserved
15:14
RO
0
Reserved.
DAT_LINK_ACT
Data Link Layer Link Active.
This bit indicates the status of the Data
Link Control and Management State
Machine. It returns a 1b to indicate the
DL_Active state, 0b otherwise.
13
RO
0
This bit must be implemented if the
corresponding Data Link Layer Active
Capability bit is implemented.
Otherwise, this bit must be hardwired
to 0b.
SLT_CLK_CFG
Slot Clock Configuration.
This bit indicates that the 820x uses
the same physical reference clock that
the platform provides on the connector.
12
HWINIT
1
LINK_TRN
UNDEF
Link Training.
11
10
RO
RO
0
0
This field is not applicable to the 820x
device and is hardwared to zero.
Undefined.
This legacy bit is no longer used.
NEG_LINK_WDTH
[5:0]
Negotiated Link Width.
This field indicates the negotiated width
of the given PCI Express Link.
Defined encodings are:
000001 = x1
000010 = x2
000100 = x4 (typical value)
001000 = x8
9:4
RO
001100 = x12
010000 = x16
100000 = x32
All other encodings are reserved. The
value in this field is undefined when the
Link is not up.
LINK_SP[3:0]
Link Speed.
This field indicates the negotiated Link
speed of the given PCI Express Link.
3:0
RO
0001
Defined encodings are:
0001b 2.5 Gb/s PCI Express Link
820x – Data Sheet, DS-0157-D
Page234
Hifn Confidential
7.5 Advanced Error Reporting Capability Registers
The Advanced Error Reporting Capability registers is an optional extended capability that
may be implemented by PCI Express devices supporting advanced error control and
reporting.
ENH_CAP_ HEAD[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
UNC_ERR_STAT[31:0]
9
9
9
9
9
9
9
8
8
8
8
8
8
8
7
7
7
7
7
7
7
6
6
6
6
6
6
6
5
5
5
5
5
5
5
4
4
4
4
4
4
4
3
3
3
3
3
3
3
2
2
2
2
2
2
2
1
1
1
1
1
1
1
0
0
0
0
0
0
0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
UNC_ERR_MASK[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
UNC_ERR_SEV[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
COR_ERR_STAT[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
COR_ERR_MASK[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
ERR_CAP_CTL[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
HEAD_LOG[127:96]
127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100
HEAD_LOG[95:64]
99 98 97 96
95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64
HEAD_LOG[63:32]
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
820x – Data Sheet, DS-0157-D
Page235
Hifn Confidential
HEAD_LOG[31:0]
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
820x – Data Sheet, DS-0157-D
Page236
Hifn Confidential
7.5.1
Enhanced Capability Header Register
Offset
x‘0100’
Field Name
Description
820x
Bits
Type
Value
NXT_CAP_OFF[10:0]
Next Capability Offset.
This field contains the offset to the next
PCI Express capability structure or 000h
if no other items exist in the linked list of
capabilities.
31:20
RO
000h
000h = Terminating list of capabilities
CAP_VER[3:0]
Capability Version.
19:16
15:0
RO
RO
1h
This field is the version number of the
capability structure present.
EXT_CAP_ID[15:0]
PCI Express Extended Capability ID.
The Extended Capability ID for the
Advanced Error Reporting Capability is
0001h.
0001h
820x – Data Sheet, DS-0157-D
Page237
Hifn Confidential
7.5.2
Uncorrectable Error Status Register
The Uncorrectable Error Status register indicates error detection status of individual errors
on a 820x device. An individual error status bit that is set indicates that a particular error
was detected; software may clear an error status by writing a one to the respective bit.
Offset
x‘0104’
Field Name
Description
820x
Bits
31:21
20
Type
RO
Value
Reserved
0
0
0
0
0
0
0
0
Reserved.
REQ_ERR_STAT
ECRC_ERR_STAT
TLP_STAT
RW1CS
RW1CS
RW1CS
RW1CS
RW1CS
RW1CS
RW1CS
Unsupported Request Error Status.
ECRC Error Status (Optional).
Malformed TLP Status.
19
18
RV_OVF_STAT
CMPL_STAT
17
Receiver Overflow Status (Optional).
Unexpected Completion Status.
Completer Abort Status (Optional).
Completion Timeout Status.
16
CMPL_ABORT_STAT
CMPL_TMOUT_STAT
FC_ERR_STAT
15
14
Flow Control Protocol Error Status
(Optional).
13
RW1CS
0
POIS_TLP_STAT
Reserved
12
11:6
5
RW1CS
RO
0
0
0
0
0
0
Poisoned TLP Status.
Reserved.
DWN_ERR_STAT
DLNK_PROT_STAT
Reserved
RW1CS
RW1CS
RO
Surprise Down Error Status (Optional).
Data Link Protocol Error Status.
Reserved.
4
3:1
0
UNDEF
RO
Undefined.
820x – Data Sheet, DS-0157-D
Page238
Hifn Confidential
7.5.3
Uncorrectable Error Mask Register
The Uncorrectable Error Mask register controls reporting of individual errors by the device
to the PCI Express Root Complex via a PCI Express error Message. A masked error
(respective bit set to 1b in the mask register) is not logged in the Header Log register, does
not update the First Error Pointer, and is not reported to the PCI Express Root Complex by
an individual device.
Offset
x‘0108’
Field Name
Description
820x
Bits
31:21
20
Type
RO
Value
Reserved
0
0
0
1
1
0
0
0
Reserved.
REQ_ERR_MSK
ECRC_ERR_MSK
TLP_MSK
RWS
RWS
RWS
RWS
RWS
RWS
RWS
Unsupported Request Error Mask.
ECRC Error Mask (Optional).
Malformed TLP Mask.
19
18
RV_OVF_MSK
CMPL_MSK
17
Receiver Overflow Mask (Optional).
Unexpected Completion Mask.
Completer Abort Mask (Optional).
Completion Timeout Mask.
16
CMPL_ABORTMSK
CMPL_TMOUT_MSK
FC_ERR_MSK
15
14
Flow Control Protocol Error Mask
(Optional).
13
RWS
1
POIS_TLP_MSK
Reserved
12
11:6
5
RWS
RO
0
0
1
0
0
0
Poisoned TLP Mask.
Reserved.
DWN_ERR_MSK
DLNK_PROT_MSK
Reserved
RWS
RWS
RO
Surprise Down Error Mask (Optional).
Data Link Protocol Error Mask.
Reserved.
4
3:1
0
UNDEF
RO
Undefined.
820x – Data Sheet, DS-0157-D
Page239
Hifn Confidential
7.5.4
Uncorrectable Error Severity Register
The Uncorrectable Error Severity register controls whether an individual error is reported as
a Nonfatal or Fatal error. An error is reported as fatal when the corresponding error bit in
the severity register is set. If the bit is cleared, the corresponding error is considered non-
fatal.
Offset
x‘010C’
Field Name
Description
820x
Bits
31:21
20
Type
RO
Value
Reserved
0
0
0
1
1
0
0
0
Reserved.
REQ_ERR_SEV
ECRC_ERR_SEV
TLP_SEV
RWS
RWS
RWS
RWS
RWS
RWS
RWS
Unsupported Request Error Severity.
ECRC Error Severity (Optional).
Malformed TLP Severity.
19
18
RV_OVF_SEV
CMPL_SEV
17
Receiver Overflow Severity (Optional).
Unexpected Completion Severity.
Completer Abort Severity (Optional).
Completion Timeout Severity.
16
CMPL_ABORT_SEV
CMPL_TMOUT_SEV
FC_ERR_SEV
15
14
Flow Control Protocol Error Severity
(Optional).
13
RWS
1
POIS_TLP_SEV
Reserved
12
11:6
5
RWS
RO
0
0
1
1
0
0
Poisoned TLP Severity.
Reserved.
DWN_ERR_SEV
DLNK_PROT_SEV
Reserved
RWS
RWS
RO
Surprise Down Error Severity (Optional).
Data Link Protocol Error Severity.
Reserved.
4
3:1
0
UNDEF
RO
Undefined.
820x – Data Sheet, DS-0157-D
Page240
Hifn Confidential
7.5.5
Correctable Error Status Register
The Correctable Error Status register reports error status of individual correctable error
sources on a 820x device. When an individual error status bit is set, it indicates that a
particular error occurred; software may clear an error status by writing a 1 to the
respective bit.
Offset
x‘0110’
Field Name
Description
820x
Bits
31:14
13
Type
RO
Value
Reserved
0
0
0
0
0
0
0
0
0
Reserved.
ADV_ERR_STAT
REPLY_TMOUT_STAT
Reserved
RW1CS
RW1CS
RO
Advisory Non-Fatal Error Status.
Replay Timer Timeout Status.
Reserved.
12
11:9
8
REPLAY_NUM_STAT
BAD_DLLP_STAT
BAD_TLP_STAT
Reserved
RW1CS
RW1CS
RW1CS
RO
REPLAY_NUM Rollover Status.
Bad DLLP Status.
7
6
Bad TLP Status.
5:1
0
Reserved.
RX_ERR_STAT
RW1CS
Receiver Error Status.
820x – Data Sheet, DS-0157-D
Page241
Hifn Confidential
7.5.6
Correctable Error Mask Register
The Correctable Error Mask register controls reporting of individual correctable errors by the
820x to the PCI Express Root Complex via a PCI Express error Message. A masked error
(respective bit set in mask register) is not reported to the PCI Express Root Complex by an
individual device.
Offset
x‘0114’
Field Name
Description
820x
Bits
31:14
13
Type
RO
Value
Reserved
0
1
0
0
0
0
0
0
0
Reserved.
ADV_ERR_MSK
REPLY_TMOUT_MSK
Reserved
RWS
RWS
RO
Advisory Non-Fatal Error Mask.
Replay Timer Timeout Mask.
Reserved.
12
11:9
8
REPLAY_NUM_MSK
BAD_DLLP_MSK
BAD_TLP_MSK
Reserved
RWS
RWS
RWS
RO
REPLAY_NUM Rollover Mask.
Bad DLLP Mask.
7
6
Bad TLP Mask.
5:1
0
Reserved.
RX_ERR_MSK
RWS
Receiver Error Mask.
820x – Data Sheet, DS-0157-D
Page242
Hifn Confidential
7.5.7
Offset
Advanced Error Capabilities and Control Register
x‘0118’
Field Name
Description
820x
Bits
Type
Value
Reserved
31:9
RO
0
Reserved.
ECRC_CHK_CAP
ECRC Check Enable.
8
7
RWS
RO
0
This bit when set enables ECRC checking.
ECRC_CHK_CAP
ECRC_EN
ECRC Check Capable.
1
0
1
This bit indicates that the 820x is capable
of checking ECRC.
ECRC Generation Enable.
6
5
RWS
RO
This bit when set enables ECRC
generation.
ECRC_CAP
ECRC Generation Capable.
This bit indicates that the 820x is capable
of generating ECRC
FRST_ERR_PTR[4:0]
First Error Pointer.
The First Error Pointer is a read-only
register that identifies the bit position of
the first error reported in the
4:0
ROS
0
Uncorrectable Error Status register.
820x – Data Sheet, DS-0157-D
Page243
Hifn Confidential
8 Signal Description
8.1 PCI Express Interface
The 820x provides a PCIe x4 interface for communicating with the host.
Table 8-1. PCIe Interface Signal Definition
Signal Name
I/O Type Signal Type
Description
PCIE_TXP[3:0]
Output
Output
Input
LVDS
LVDS
LVDS
LVDS
Differential positive transmit outputs for
lanes 0/1/2/3
PCIE_TXN[3:0]
PCIE_RXP[3:0]
PCIE_RXN[3:0]
Differential negative transmit outputs for
lanes 0/1/2/3
Differential positive receive inputs for lanes
0/1/2/3
Input
Differential negative receive inputs for lanes
0/1/2/3
PCIE_REFCLK_P
PCIE_REFCLK_N
PCIE_REFRES
Input
Input
Input
LVDS
LVDS
Analog
Differential positive reference clock
Differential negative reference clock
PCIE reference resistor to calibrate the RX
and TX termination.
To calibrate the Rx and Tx termination
resistors to 50Ω, connect a 191Ω 1%
precision external resistor, ResRef, to the
ResRef pin. The resistor should be 1%
tolerant and can be in any form factor. The
board trace connecting the ResRef pin to the
external resistor constitutes parasitic
resistance and should be minimized. Power
dissipation in the component is < 20 mW
peak during a calibration that lasts < 20 ꢀs.
At all other times, power dissipation is zero.
Do not connect a capacitor to the ResRef
pin.
PCIE_RXEQCTL[2:0]
PCIE_LOS_LVL[4:0]
Input
Input
LVCMOS25_33
LVCMOS25_33
Receiver equalization control
Loss of signal detection control for PCIE PHY
820x – Data Sheet, DS-0157-D
Page244
Hifn Confidential
Table 8-1. PCIe Interface Signal Definition
Signal Name
I/O Type Signal Type
Description
PCIE_TX_BOOST
[3:0]
Input
LVCMOS25_33
Transmit boost control for PCIE PHY.
The transmitter can be programmed to
provide a pre-emphasis or de-emphasis
boost. The boost is achieved by reducing the
drive level of a non-transitioning bit with
respect to a transitioning bit. These pins can
be transitioned asynchronously.
The amount of boost the transmitter
supplies is programmable up to 5.75 dB in
increments of ~0.37 dB.
Boost = -20log(1 - (PCIE_TX_BOOST[3:0] +
0.5)/32) dB
To produce 3.5 dB of boost as specified in
the PCIe base specification, set
tx_boost[3:0] to 4'b1011. This is one step
higher than the calculated value because the
calculated value is at the IP pads and does
not take into account any package loss.
A value of 4'b0000 produces 0 db of boost.
Transmit level control for PCIE PHY.
PCIE_TX_LVL[4:0]
Input
Input
LVCMOS25_33
LVCMOS25_33
Fine resolution setting of transmit signal
level, common to all lanes connected to a
single clock module. Setting the maximum
Tx amplitude to greater than 1 V peak-to-
peak differential results in overdrive
(applying 1.2 V) to the thin-gate output
transistors.
PERST_N
PCIe reset.
Assertion of this active low signal will reset
the whole chip except the PCIE core sticky
registers. This pad should be connected to
PCIe slot reset.
0: Reset full chip except PCIe Core sticky
registers
1: No PCIe reset
PCIE_PHY_CFG
Input
LVCMOS25_33
PCIe PHY default configuration
0: PCIE PHY configuration is determined by
values from PCIE_RXEQCTL[2:0],
PCIE_REFCLK_CFG, PCIE_LOS_LVL[4:0],
PCIE_TX_BOOST[3:0] and
PCIE_TX_LVL[4:0] input signals.
1: PCIE PHY configuration is determined by
a set of pre-defined values either hard-
wired inside the device or configured
from the optional external flash device.
820x – Data Sheet, DS-0157-D
Page245
Hifn Confidential
8.2 Miscellaneous Interface
Table 8-2. Miscellaneous Interface Signal Definition
Signal Name
I/O Type Signal Type
Description
POR_N
Input
LVCMOS25_33
Power on reset.
Active low power on reset. When asserted,
this bit will reset the entire device including
the PCIE core sticky registers.
0: Reset entire chip
1: No reset
PCIE_LINKUP
PLL_LOCK
Output
Output
LVCMOS25_33
LVCMOS25_33
PCIe Link Status
This pad may be connected to a LED.
0: PCIe link down
1: PCIe link up
PLL Lock Status.
Device internal PLL clock output frequency
lock status.
0: One or both of the internal clock
generation PLLs and/or the PCIe PHY PLL
failed to successfully lock.
1: Both of the internal clock generation PLLs
and the PCIe PHY PLL successfully locked.
BOARD_VERSION
[2:0]
Input
LVCMOS25_33
Board Version
Users may drive this signal to annotate the
version of the board containing the 820x
device.
PLL0_REF_CLK
PLL1_REF_CLK
VRET_PLL0
Input
Input
Input
LVCMOS25_33
LVCMOS25_33
Analog
66.6667 MHz PLL0 reference clock
66.6667 MHz PLL1 reference clock
VRET for PLL0
An external bypass capacitor should be
connected between VDDA_PLL0 and this
signal. See Figure 8-1 for an example of an
external PLL connection circuit.
VRET_PLL1
Input
Input
Analog
VRET for PLL1
An external bypass capacitor should be
connected between VDDA_PLL0 and this
signal. See Figure 8-1 for an example of an
external PLL connection circuit.
EXT_FLASH_EN
LVCMOS25_33
External Flash Enable.
0: External Flash interface disabled
1: External Flash interface enabled and Flash
device attached
Figure 8-1 provides an example circuit for the PLL.
820x – Data Sheet, DS-0157-D
Page246
Hifn Confidential
Figure 8-1. Example PLL Circuit
8.3 GPIO/Probe Interface
Table 8-3. Miscellaneous Interface Signal Definition
Signal Name
I/O Type
Signal Type
Description
GPIO[15:0]
Input/Output
LVCMOS25_33
General purpose IOs
8.4 Flash Interface
Table 8-4. SPI Interface Signal Definition
Signal Name
I/O Type
Signal Type
Description
FLASH_SO
Output
LVCMOS25_33
Serial output.
Output data from the 820x to the Flash
device.
FLASH_SI
Input
LVCMOS25_33
Serial input.
Flash input data driven from the output of
the Flash device.
FLASH_SCK
FLASH_CS
Output
Output
LVCMOS25_33
LVCMOS25_33
Clock output to the Flash device.
Chip select output signal from the 820x to
the Flash device.
820x – Data Sheet, DS-0157-D
Page247
Hifn Confidential
8.5 JTAG Interface
Table 8-5. JTAG Interface Signal Definition
Signal Name
JTAG_TCK
I/O Type
Input
Signal Type
Description
LVCMOS25_33
LVCMOS25_33
LVCMOS25_33
LVCMOS25_33
LVCMOS25_33
JTAG test clock
JTAG_TDI
Input
JTAG test data in, internally pulled up
JTAG test data out
JTAG_TDO
JTAG_TMS
JTAG_TRST_N
Output
Input
JTAG test mode select, internally pulled up
Input
JTAG reset, internally pulled up
Connect to an external pull-down resistor for
normal operation.
There is an errata for this pin that causes other
circuitry in the chip to be reset by this input.
(see Chapter 14, “Errata).
8.6 Power and Ground Interface
Table 8-6. Power and Ground Interface Description
Pin Name
VDD10
Description
Voltage Level
1.0V
Core digital power supply
VDD25_33
This power domain can be connected with 2.5V
or 3.3V. If 2.5V power domain is used, all IO
signals in that domain will not be 3.3V tolerant
2.5V or 3.3V
VDD10A
VDD25A
VDDA_PLL0
VDDA_PLL1
VSS
Analog power supply for PCIE PHY
Analog power supply for PCIE PHY
Analog power supply for on chip PLL0
Analog power supply for on chip PLL1
Digital ground
1.0V
2.5V
2.5V
2.5V
GND
820x – Data Sheet, DS-0157-D
Page248
Hifn Confidential
9 Error Handling
9.1 Error Detection Methods
There are three methods the host software can use to detect if errors have occurred in the
820x:
1. Read the “ERR” bit of the Desc_result descriptor in the command structure. This
bit will be set if any error has occurred.
2. Read the result status in the result ring.
3. Poll the 820x error status register.
If the host is only interested in whether an error has occurred, the best method would be
to read the “ERR” bit. If the host is interested in detailed error information for the current
command, the best method would be to read the result status in the result ring. If the host
is interested in the type of error that occurred without regard to the command that created
the error, the best method would be to read the 820x error status and Channel Manager
error status registers, where any errors are recorded until it is cleared by host.
9.2 Error Categories
There are two error categories for the 820x:
Category 1 errors: Channel Manager Detected Error
All errors in this category will not block the 820x’s operation even if the errors occur
while processing a command. These errors will corrupt the command result. Refer to
“Channel Manager 0-1 Error Status” register for details.
Category 2 errors: PCIe Core Reported Error
Error in this category would include completion timeout, completion abort, parity error
and ECRC error. All errors in this category will block the 820x's operation because the
820x cannot access the completion data.
9.3 Error Handling Mechanism
The 820x error handing mechanism adapts well to network and storage applications with
minimum system overhead.
Self recovery from Category 1 errors:
The 820x will recover from these errors because these errors will not block the 820x’s
operation. The 820x will continue processing commands and set the error status bits
in the command structure and result ring for the command that errored. The host soft-
ware can then reschedule the failed command according to the result information.
820x – Data Sheet, DS-0157-D
Page249
Hifn Confidential
Host reset 820x for Category 2 errors:
The 820x cannot recover from these errors because the errors will not allow the com-
mand to complete.
1. If this category of error is detected by the 820x, the 820x will terminate all
commands in both 820x's channels, and then wait for the host's soft reset.
2. The host software may use one of the three methods described above to detect
the 820x error. Once the error has been detected, the host should poll the
CM_BUSY bit of the Status register before resetting the 820x.
3. When the CM_BUSY bit is cleared to zero by the 820x, the host software writes to
the Soft Reset register to reset the entire 820x chip except the PCIe core.
4. THe host software then reschedules all terminated commands.
The 820x command pointer ring read pointer and result ring write pointer will be writ-
able during the error handling phase to facilitate the software error recovery flow.
820x – Data Sheet, DS-0157-D
Page250
Hifn Confidential
10 DC Specifications
10.1 Absolute Maximum Ratings
Table 10-1. Absolute maximum ratings
Symbol
Description
Min
Max
Units
VDD_25_33
This power domain may be connected to
either a 2.5V or 3.3V supply. If a 2.5V
power domain is used, all IO signals in
that domain are not 3.3V tolerant.
VSS-0.5
4.0
V
VDD_10
DC supply 1.0V Core Voltage
VSS-0.2
VSS-0.4
VSS-0.2
1.2
3.0
1.2
V
V
V
VDD_25A
VDD_10A
VDDA_PLL0
2.5V analog power supply for PCIE PHY
1.0V analog power supply for PCIE PHY
2.5V analog power supply for on chip
PLL0
VSS-0.4
3.0
V
VDDA_PLL1
TSTG
2.5V analog power supply for on chip
PLL1
VSS-0.4
-40
3.0
V
Storage Temperature
130
°C
Caution
!
Stresses above those listed under Absolute Maximum Ratings may
cause permanent damage to the device. This is a stress rating only
and functional operation of the device at these or any other conditions
above those indicated in the operational sections of this specification is
not implied. Exposure to absolute maximum rating conditions may
affect device reliability.
10.2 Recommended Operating Conditions
Table 10-2. Recommended operating conditions
Symbol
Tj
Description
Min
Max
Units
Junction Temperature, 0 CFS airflow
-40
125
°C
Notes:
1. For normal device operation, adhere to the limits in this table. Sustained operations of a
device at conditions exceeding these values, even if they are within the absolute maximum
rating limits, may result in permanent device damage or impaired device reliability. Device
functionality to stated DC and AC limits is not guaranteed if conditions exceed recommended
operating conditions.
2. Recommended operation conditions require accuracy of the power supplies as described in
Section 10.3.
820x – Data Sheet, DS-0157-D
Page251
Hifn Confidential
10.3 Power Supplies
The following subsections provide details concerning the digital and analog power supply
connections on the 820x device. Generally speaking, analog supplies can be derived from
the same power source as the digital supplies, but are more noise-sensitive and require
additional filtering and careful layout/routing.
10.3.1
Digital Power Supplies
Table 10-3. VDD_25_33 Power Supply Requirements
Parameter
Description
Min
Max
Units
Operating range
Voltage range for nominal
2.25
2.75
3.63
V
V
operating conditions for 2.5V
Voltage range for nominal
operating conditions for 3.3V
2.97
0.1
Rise time
Overshoot
Ripple
Time from 10% to 90% mark
Maximum overshoot allowed
Maximum voltage ripple
10
80
60
ms
mV
mV
Table 10-4. VDD_10 Power Supply Requirements
Parameter
Description
Min
Max
Units
Operating range
Voltage range for nominal
operating conditions
0.95
0.1
1.05
V
Rise time
Overshoot
Ripple
Time from 10% to 90% mark
Maximum overshoot allowed
Maximum voltage ripple
10
50
30
ms
mV
mV
10.3.2
Analog Power Supplies
Table 10-5. VDD_25A Power Supply Requirements
Parameter
Description
Min
Max
Units
Operating range
Voltage range for nominal
operating conditions
2.38
0.1
2.63
V
Rise time
Overshoot
Ripple
Time from 10% to 90% mark
Maximum overshoot allowed
Maximum voltage ripple
10
80
60
ms
mV
mV
820x – Data Sheet, DS-0157-D
Page252
Hifn Confidential
Table 10-6. VDD_10A Power Supply Requirements
Parameter
Description
Min
Max
Units
Operating range
Voltage range for nominal
operating conditions
0.95
0.1
1.05
V
Rise time
Overshoot
Ripple
Time from 10% to 90% mark
Maximum overshoot allowed
Maximum voltage ripple
10
50
30
ms
mV
mV
Table 10-7. VDDA_PLL0, VDDA_PLL1 Power Supply Requirements
Parameter
Description
Min
Max
Units
Operating range
Voltage range for nominal
operating conditions
2.38
0.1
2.63
V
Rise time
Overshoot
Ripple
Time from 10% to 90% mark
Maximum overshoot allowed
Maximum voltage ripple
10
80
60
ms
mV
mV
10.4 Power Sequencing
The 820X power supplies do not have any sequencing requirements. However, all 1.0 V
supplies should be powered on simultaneously.
10.5 Power Consumption
Note: All power data for VDD_10 in this section has been obtained with PTPX estimation
and will be updated after post silicon test.
Table 10-8. 8204 Current and Power Per Power Domain
2
Power Supply
Nominal
Voltage(V)
TYP Current
(mA)
Max Current
(mA)
TYP Power
(mW)
Max Power
(mW)
VDD_25_331
2.5
3.3
1.0
2.5
1.0
2.5
2.5
40
43
100
113
40
1,700
70
60
8
43
3,320
70
80
8
132
1,700
175
60
149
3,486
184
84
VDD_10
VDD_25A
VDD_10A
VDDA_PLL0
VDDA_PLL1
20
21
8
8
20
21
820x – Data Sheet, DS-0157-D
Page253
Hifn Confidential
Table 10-8. 8204 Current and Power Per Power Domain
2
Power Supply
Nominal
Voltage(V)
TYP Current
(mA)
Max Current
(mA)
TYP Power
(mW)
Max Power
(mW)
Total using
2.5v nominal of
VDD_25_33
1,886
3,529
2,075
3,909
Total using
3.3v nominal of
VDD_25_33
1,886
3,529
2,107
3,945
Note:
1. VDD_25_33 current listed does not include any current delivered to external loads driven by
the 820x.
2. Max power is calculated as 105% of nominal, at 125°C junction temperature.
Table 10-9. 8203 Current and Power Per Power Domain
2
Power Supply
Nominal
Voltage(V)
TYP Current
(mA)
Max Current
(mA)
TYP Power
(mW)
Max Power
(mW)
VDD_25_331
2.5
3.3
1.0
2.5
1.0
2.5
2.5
30
43
75
113
149
30
43
99
VDD_10
1,160
70
2,530
70
1,160
175
60
2,657
184
84
VDD_25A
VDD_10A
VDDA_PLL0
VDDA_PLL1
60
80
8
8
20
21
8
8
20
21
Total using
2.5v nominal of
VDD_25_33
1,336
2,739
1,510
3,079
Total using
3.3v nominal of
VDD_25_33
1,336
2,739
1,534
3,115
Note:
1. VDD_25_33 current listed does not include any current delivered to external loads driven by
the 820x.
2. Max power is calculated as 105% of nominal, at 125°C junction temperature.
Table 10-10. 8202 Current and Power Per Power Domain
2
Power Supply
Nominal
Voltage(V)
TYP Current
(mA)
Max Current
(mA)
TYP Power
(mW)
Max Power
(mW)
VDD_25_331
2.5
3.3
1.0
2.5
1.0
2.5
2.5
30
43
75
113
30
765
70
60
8
43
2,170
70
80
8
99
149
2,279
184
84
VDD_10
765
175
60
VDD_25A
VDD_10A
VDDA_PLL0
VDDA_PLL1
20
21
8
8
20
21
820x – Data Sheet, DS-0157-D
Page254
Hifn Confidential
Table 10-10. 8202 Current and Power Per Power Domain
2
Power Supply
Nominal
Voltage(V)
TYP Current
(mA)
Max Current
(mA)
TYP Power
(mW)
Max Power
(mW)
Total using
2.5v nominal of
VDD_25_33
941
2,379
1.115
2,701
Total using
3.3v nominal of
VDD_25_33
941
2,379
1.139
2,737
Note:
1. VDD_25_33 current listed does not include any current delivered to external loads driven by
the 820x.
2. Max power is calculated as 105% of nominal, at 125°C junction temperature.
Table 10-11. 8201 Current and Power Per Power Domain
2
Power Supply
Nominal
Voltage(V)
TYP Current
(mA)
Max Current
(mA)
TYP Power
(mW)
Max Power
(mW)
VDD_25_331
2.5
3.3
1.0
2.5
1.0
2.5
2.5
30
43
75
113
30
580
70
60
8
43
99
149
2,069
184
84
VDD_10
1,970
70
580
175
60
VDD_25A
VDD_10A
VDDA_PLL0
VDDA_PLL1
80
8
20
21
8
8
20
21
Total using
2.5v nominal of
VDD_25_33
756
2,179
930
2,491
Total using
3.3v nominal of
VDD_25_33
756
2,179
954
2,527
Note:
1. VDD_25_33 current listed does not include any current delivered to external loads driven by
the 820x.
2. Max power is calculated as 105% of nominal, at 125°C junction temperature.
10.6 I/O Characteristics
Table 10-12. Normal IO Characteristics
Symbol
Description
Min
TYP
Max
Units
NOR_VIHT
DC Input High
Threshold
0.7 *
VDD_25_33
V
NOR_VILT
DC Input Low
Threshold
0.3 *
VDD_25_33
V
820x – Data Sheet, DS-0157-D
Page255
Hifn Confidential
Table 10-12. Normal IO Characteristics
Symbol
Description
Min
TYP
Max
Units
VDD_25_33
I/O supply voltage at
2.5V
2.25
2.5
2.75
V
I/O supply voltage at
3.3V
2.97
1K
3.3
3.63
10K
V
Rpull
External resistor
value for pull down
or pull up pins
ꢁ
Table 10-13. PCIe PHY Transmitter Characteristics
Symbol
VCTM
ZD
Description
Min
TYP
Max
600
115
Units
mV
ꢁ
Transmit common mode voltage
Differential output impedance
400
85
Table 10-14. PCIe PHY Receiver Characteristics
Symbol
Description
Min
TYP
Max
Units
VMIN_RX_EYE_HEIGHT
Minimum Rx eye height (differential
peak-to-peak)
175
mV
ZIN
Differential input impedance
Tolerance
85
115
350
ꢁ
PPM
-350
ppm
820x – Data Sheet, DS-0157-D
Page256
Hifn Confidential
11 AC Specifications
11.1 Reset Timing
The 820x has three reset pins, two of which contain an internal Schmitt circuit.
PERST_N
POR_N
This reset pin with hysteresis should be connected to PCIe reset.
This is an asynchronous power on reset with hysteresis.
JTAG_TRST_N This is an asynchronous reset for JTAG and other logic.
There is an errata for the JTAG_TRST_N pin that requires a low to high transition on this
signal during power on reset. To reset the entire chip, POR_N, PERST_N and JTAG_TRST_N
must all be reset.
11.2 PLL Clock Input
Table 11-1. PLL0 and PLL1 Reference Clock Requirements
Symbol
FRefClk
Description
Min
10
Typ
Max
Units
MHz
%
Input clock frequency
Duty Cycle
66.66
D.C.RefClk
JCLK-REF
45
55
Input Jitter (peak-to-peak)
Input clock frequency deviation
0.4
ns
Frequency
tolerance
150
ppm
Aging
Input clock long time deviation
+/- 5
ppm/
year
Trdy
Lock time
0.25
ꢀs
Note: Spread spectrum clocks are not supported.
820x – Data Sheet, DS-0157-D
Page257
Hifn Confidential
11.3 Flash Interface Timing
Figure 11-1. Flash Write Timing
Figure 11-2. Flash Read Timing
Table 11-2. Flash Interface AC Characteristics
Symbol
tWH
Description
Min
Typ
Max
Units
ns
FLASH_SCK high time
FLASH_SCK low time
FLASH_CS setup time
FLASH_CS hold time
FLASH_SI valid time
FLASH_SI hold time
9
9
5
5
0
0
tWL
ns
tCSS
tCSH
tV
ns
ns
10
ns
tHO
ns
820x – Data Sheet, DS-0157-D
Page258
Hifn Confidential
Table 11-2. Flash Interface AC Characteristics
Symbol
tHD:DAT
tSU:DAT
Description
Min
Typ
Max
Units
ns
FLASH_SO hold time
FLASH_SO setup time
5
5
ns
Note: The parameters in this table were measured with a 30pf load.
11.4 JTAG Interface Timing
The 820x is designed to support the IEEE 1149.1 JTAG standard.
Figure 11-3. JTAG Timing
Table 11-3. JTAG Interface AC Characteristics
Symbol
Tjclk
Description
Min
Max
Units
ns
JTAG clock frequency
20
15
Tth
JTAG_TMS and JTAG_TDI hold time
JTAG_TMS and JTAG_TDI setup time
JTAG_TDO propagation delay
ns
10
10
Tjsu
ns
Tjpr
ns
11.5 PCIe Interface Timing
The 820x PCIe interface is fully compliant to the PCI Express Electromechanical
Specification Revision 2.0 standard.
820x – Data Sheet, DS-0157-D
Page259
Hifn Confidential
12 Thermal Specifications
Table 12-1. Thermal Specifications
Parameter
Max
Junction Temperature (Tj)
125 °C
6.5 °C/W
20.4 °C/W
18 °C/W
17 °C/W
4.2 °C/W
Internal thermal resistance, (
)
jc
Thermal resistance, ( ja) at 0 m/s airflow
Thermal resistance, ( ja) at 1 m/s airflow
Thermal resistance, ( ja) at 2 m/s airflow
Temperature correlation ( jt)
12.1 Heat Sink Requirements
Each application is different, and will require thermal analysis based on the application
environment.
12.2 Junction Temperature Specifications
The maximum operating junction temperature is 125°C. Above this temperature, proper
operation is not guaranteed. For maximum operating life, however, the average junction
temperature in the device should be no more than TBD°C. Worst-case device dissipation
should be used when making these calculations.
12.3 Thermal Sensor Controller
The 820x contains a thermal sensor controller that can be used to read or monitor the 820x
die temperature. Please refer to Section 5.12, “Temperature Sensor Controller” and
Section 6.8, “Temperature Sensor Controller Registers” for detailed information.
820x – Data Sheet, DS-0157-D
Page260
Hifn Confidential
13 Package Specifications
This chapter provides general and mechanical package information, as well as ball
assignment drawings.
13.1 General Information
Table 13-1. General Package Information
Package Information
Package Type
Ball Count
Description
HSBGA
196
Package Size
Pitch
15mm x 15mm
1.0 mm
13.2 Mechanical Information
The 820x is packaged as a 196 ball HSBGA (15 x 15 mm body, 1 mm ball pitch). Figure
13-1 shows the detailed package specifications for the device.
820x – Data Sheet, DS-0157-D
Page261
Hifn Confidential
Figure 13-1. Package Dimensions
820x – Data Sheet, DS-0157-D
Page262
Hifn Confidential
Figure 13-2. Ball Map Drawing - Top View - Upper Left Quadrant
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page263
Figure 13-3. Ball Map Drawing - Top View - Upper Right Quadrant
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page264
Figure 13-4. Ball Map Drawing - Top View - Lower Left Quadrant
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page265
Figure 13-5. Ball Map Drawing - Top View - Lower Right Quadrant
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page266
Table 13-2. Alphabetical Ball List
Signal
Ball
B2
Signal
Ball
P10
P13
P2
Signal
Ball
PCIE_LINKUP
PCIE_TXN[2]
PCIE_TXN[3]
PCIE_TXP[0]
PCIE_TXP[1]
PCIE_TXP[2]
PCIE_TXP[3]
PERST_N
BOARD_VERSION[
0]
C1
PCIE_LOS_LVL[0]
PCIE_LOS_LVL[1]
PCIE_LOS_LVL[2]
PCIE_LOS_LVL[3]
PCIE_LOS_LVL[4]
PCIE_PHY_CFG
PCIE_REFCLK_N
PCIE_REFCLK_P
PCIE_REFRES
PCIE_RXEQCTL[0]
PCIE_RXEQCTL[1]
PCIE_RXEQCTL[2]
PCIE_RXN[0]
L3
BOARD_VERSION[
1]
C2
B1
N1
L2
P5
BOARD_VERSION[
2]
M1
K3
P9
P12
C3
EXT_FLASH_EN
FLASH_CS
FLASH_SCK
FLASH_SI
FLASH_SO
GPIO[0]
GPIO[1]
GPIO[10]
GPIO[11]
GPIO[12]
GPIO[13]
GPIO[14]
GPIO[15]
GPIO[2]
GPIO[3]
GPIO[4]
GPIO[5]
GPIO[6]
GPIO[7]
GPIO[8]
GPIO[9]
JTAG_TCK
JTAG_TDI
JTAG_TDO
JTAG_TMS
NC
E14
B3
D3
N8
N7
L7
PLL_LOCK
D14
K12
K14
A2
C4
PLL0_REF_CLK
PLL1_REF_CLK
POR_N
B4
A4
J2
C5
K1
JTAG_TRST_N
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLUP25_33
PULLUP25_33
B14
A7
B5
J1
B10
C10
A11
B11
A12
C11
A5
M4
M6
M10
M12
M3
M5
M9
M11
H14
D1
PCIE_RXN[1]
D2
PCIE_RXN[2]
E1
PCIE_RXN[3]
E2
PCIE_RXP[0]
E3
PCIE_RXP[1]
E12
E13
F3
PCIE_RXP[2]
C6
PCIE_RXP[3]
B6
PCIE_TX_BOOST[0
]
F12
F13
F14
G1
A6
A9
PCIE_TX_BOOST[1
]
J14
J13
J12
B9
C9
PCIE_TX_BOOST[2
]
G2
A10
C13
B13
C12
A13
A3
PCIE_TX_BOOST[3
]
H1
H2
PCIE_TX_LVL[0]
PCIE_TX_LVL[1]
PCIE_TX_LVL[2]
PCIE_TX_LVL[3]
PCIE_TX_LVL[4]
PCIE_TXN[0]
G12
G13
G14
H13
H12
P3
J3
K2
K13
L12
B12
L1
NC
C14
D12
D13
NC
NC
PCIE_TXN[1]
P6
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page267
Signal
Ball
D4
D6
D9
D11
F1
Signal
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
Ball
E5
Signal
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
VSS
Ball
J10
K5
VDD10
VDD10
VDD10
VDD10
VDD10
VDD10
VDD10
VDD10
VDD10
VDD10
VDD10
VDD10
VDD10A
VDD10A
VDD25_33
VDD25_33
VDD25_33
VDD25_33
VDD25_33
VDD25_33
VDD25A
VDD25A
VDDA_PLL1
VDDA_PLL0
VRET_PLL0
VRET_PLL1
VSS
E6
E7
K6
E8
K7
E9
K8
F4
E10
F2
K9
F11
G3
J4
K10
L8
F5
F6
M2
M7
M8
M13
N2
J11
L4
F7
F8
L11
L5
F9
F10
G4
G5
G6
G7
G8
G9
G10
G11
H3
H4
H5
H6
H7
H8
H9
H10
H11
J5
L10
D5
D10
E4
N3
N4
N5
N6
E11
K4
N9
N10
N11
N12
N13
P1
K11
L6
L9
L13
N14
M14
L14
A1
P4
P7
P8
P11
P14
VSS
A8
VSS
A14
B7
VSS
VSS
B8
VSS
C7
J6
VSS
C8
J7
VSS
D7
D8
J8
VSS
J9
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page268
Table 13-3. Numeric Ball List
Signal
Ball
C5
Signal
Ball
E11
E12
E13
E14
F1
Signal
Ball
A1
GPIO[0]
GPIO[3]
VSS
VDD25_33
PULLDN25_33
PULLDN25_33
EXT_FLASH_EN
VDD10
VSS
C6
POR_N
A2
C7
NC
A3
VSS
C8
FLASH_SO
GPIO[2]
GPIO[5]
PULLDN25_33
VSS
A4
GPIO[8]
GPIO[11]
GPIO[15]
JTAG_TDO
JTAG_TCK
NC
C9
A5
C10
C11
C12
C13
C14
D1
VSS
F2
A6
PULLDN25_33
VDD10
F3
A7
F4
A8
VSS
F5
GPIO[6]
GPIO[9]
GPIO[12]
GPIO[14]
JTAG_TMS
VSS
A9
VSS
F6
A10
A11
A12
A13
A14
B1
PULLDN25_33
PULLDN25_33
PCIE_PHY_CFG
VDD10
VSS
F7
D2
VSS
F8
D3
VSS
F9
D4
VSS
F10
F11
F12
F13
F14
G1
VDD25_33
VDD10
D5
VDD10
BOARD_VERSION[
2]
D6
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
PULLDN25_33
VDD10
PCIE_LINKUP
FLASH_CS
FLASH_SI
GPIO[1]
B2
VSS
D7
B3
VSS
D8
B4
VDD10
D9
B5
VDD25_33
VDD10
D10
D11
D12
D13
D14
E1
G2
GPIO[4]
B6
G3
VSS
B7
NC
VSS
G4
VSS
B8
NC
VSS
G5
GPIO[7]
B9
PLL_LOCK
PULLDN25_33
PULLDN25_33
PULLDN25_33
VDD25_33
VSS
VSS
G6
GPIO[10]
GPIO[13]
PULLUP25_33
JTAG_TDI
JTAG_TRST_N
B10
B11
B12
B13
B14
C1
VSS
G7
E2
VSS
G8
E3
VSS
G9
E4
VSS
G10
G11
G12
G13
G14
H1
E5
VSS
BOARD_VERSION[
0]
VSS
E6
PCIE_TX_LVL[0]
PCIE_TX_LVL[1]
PCIE_TX_LVL[2]
PULLDN25_33
PULLDN25_33
VSS
E7
BOARD_VERSION[
1]
C2
VSS
E8
VSS
E9
PERST_N
C3
C4
VSS
E10
H2
FLASH_SCK
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page269
Signal
Ball
H3
Signal
Ball
K8
Signal
Ball
N1
VSS
VSS
PCIE_LOS_LVL[1]
VSS
VSS
H4
VSS
K9
N2
VSS
H5
VSS
K10
K11
K12
K13
K14
L1
VSS
N3
VSS
H6
VDD25_33
PLL0_REF_CLK
PULLDN25_33
PLL1_REF_CLK
PULLUP25_33
PCIE_LOS_LVL[2]
PCIE_LOS_LVL[0]
VDD10
VSS
N4
VSS
H7
VSS
N5
VSS
H8
VSS
N6
VSS
H9
PCIE_REFCLK_P
PCIE_REFCLK_N
VSS
N7
VSS
H10
H11
H12
H13
H14
N8
VSS
L2
N9
PCIE_TX_LVL[4]
PCIE_TX_LVL[3]
L3
VSS
N10
N11
N12
N13
N14
P1
L4
VSS
PCIE_TX_BOOST[0
]
VDD10A
L5
VSS
VDD25A
L6
VSS
PCIE_RXEQCTL[2]
J1
PCIE_REFRES
VSS
L7
VDDA_PLL0
VSS
PCIE_RXEQCTL[0]
J2
L8
PULLDN25_33
VDD10
VSS
J3
VDD25A
L9
PCIE_TXP[0]
PCIE_TXN[0]
VSS
P2
J4
VDD10A
L10
L11
L12
L13
L14
M1
M2
M3
M4
M5
M6
M7
M8
M9
M10
M11
M12
M13
M14
P3
J5
VDD10
P4
VSS
J6
PULLDN25_33
VDDA_PLL1
VRET_PLL1
PCIE_LOS_LVL[3]
VSS
PCIE_TXP[1]
PCIE_TXN[1]
VSS
P5
VSS
J7
P6
VSS
J8
P7
VSS
J9
VSS
P8
VSS
J10
J11
J12
PCIE_TXP[2]
PCIE_TXN[2]
VSS
P9
VDD10
PCIE_RXP[0]
PCIE_RXN[0]
PCIE_RXP[1]
PCIE_RXN[1]
VSS
P10
P11
P12
P13
P14
PCIE_TX_BOOST[3
]
PCIE_TXP[3]
PCIE_TXN[3]
VSS
PCIE_TX_BOOST[2
]
J13
J14
PCIE_TX_BOOST[1
]
VSS
PCIE_RXEQCTL[1]
PULLDN25_33
PCIE_LOS_LVL[4]
VDD25_33
VSS
K1
K2
K3
K4
K5
K6
K7
PCIE_RXP[2]
PCIE_RXN[2]
PCIE_RXP[3]
PCIE_RXN[3]
VSS
VSS
VRET_PLL0
VSS
820x – Data Sheet, DS-0157-D
Hifn Confidential
Page270
14 Errata
Errata are design defects or errors. Hardware Errata may cause the 820x behavior to
deviate from published specifications.
The 820x device revision history may be tracked using a combination of the PCIe Revision
ID register (Section 7.1.5) and the 820x Minor Revision register (Section 6.1.6). Table 14-
1 lists the current 820x revisions. Each errata described in this section is identified with its
applicable major and minor revision numbers.
Table 14-1. 820x Major vs, Minor Revision Matrix
PCIe Rev ID
Minor Rev
820x Revision
Pre-production
Production
0
0
0
1
Errata 1. JTAG_TRST_N
820x major revision(s): 0
820x minor revision(s): 0, 1
Description:
The signal JTAG_TRST_N requires a low to high transition during power on reset in
order for the chip to operate normally.
Solution:
The JTAG_TRST_N signal may be tied to POR_N.
Errata 2. Small packet condition locks 820x
820x major revision(s): 0
820x minor revision(s): 0, 1
Description:
The 820x will stop retrieving commands from the command ring when all the condi-
tions listed below are met:
a. SDK entered a command in small packet mode
b. PCIe link Maximum Read Request Size is 128B or 256B
c. Last entry in destination buffer ended on 128 or 256B alignment
d. Destination buffer overflow
Solution:
The 820x SDK prevents small packet command submittal if conditions (a) - (c) above
are met. Customers who develop their own drivers must include a similar workaround.
Errata 3. Combination of conditions causes command processing latency
820x major revision(s): 0
820x minor revision(s): 0, 1
820x – Data Sheet, DS-0157-D
Page271
Hifn Confidential
Description:
Command processing latency or hang may occur when all the conditions listed below
are met:
a. Packet Processor (compression, encryption, hash commands) and Public Key
processor commands are simultaneously active
b. Packet Processor asserts interrupt when a command completes
c. Write Request Controller module acknowledges a write request from the
Public Key processor, deasserting the Packet Processor interrupt
d. Software has not entered the interrupt service routine
Solution:
The 820x SDK implements a timer to monitor the completed commands in the result
ring. If the timer expires due to a hardware error, the command in the result ring is
sent to the host. Customers who develop their own drivers must include a similar
workaround.
Errata 4. Die revision 0 of the 820x fails the PCISIG compliance test that brings the link
down and then up before starting the test sequence.
820x major revision(s): 0
820x minor revision(s): 0
Description:
A PCIe link or Root Complex event occurs which prevents the endpoint core of the
820x device from getting into the “DETECT” state from the “L0”, “L0s”or “L1” LTSSM
states defined in the PCIe v2.0 base specification. Usually this type of event is a devi-
ation from normal operation, typically for compliance testing.
Solution:
A hard or soft reset is required if this condition occurs. The production revision of the
820x (major rev 0, minor rev 1) corrects this errata.
820x – Data Sheet, DS-0157-D
Page272
Hifn Confidential
A Appendix A: IPsec Encapsulating
Security Payload (ESP) Format
This section describes the format of the IPsec ESP fields as well as the encryption and
authentication coverage of these fields.
Table A-1. IPsec ESP Packet Field Description
Authentication
Coverage
Section
Field Name
Size
(bytes)
Description
Encryption
Coverage
ESP Header
SPI
Security Parameter Index
(SPI): A 32-bit value that is
combined with the
destination address and
security protocol type to
identify the security
4
4
√
association to be used for
this datagram. See the topic
on security associations for
more details.
Sequence
Number
Sequence Number: A
counter field initialized to
zero when a security
association is formed
between two devices, and
then incremented for each
datagram sent using that
SA. This is used to provide
protection against replay
attacks.
√
√
Payload
Payload Data
Payload Data: The encrypted
payload data, consisting of a
higher layer message or
encapsulated IP datagram.
variable May also include support
information such as an
initialization vector, required
by certain encryption
√
methods.
ESP Trailer
Padding
Additional padding bytes
variable
included as needed for
√
√
√
√
(0 to 255)
encryption or for alignment.
Pad Length
The number of bytes in the
preceding Padding field.
1
Next Header
Contains the protocol
number of the next header
1
√
√
in the datagram. Used to
chain together headers.
ESP Authentication Data
This field contains the
Integrity Check Value (ICV)
resulting from the
variable
application of the optional
ESP authentication
algorithm.
820x – Data Sheet, DS-0157-D
Page273
Hifn Confidential
Figure A-1. IPsec ESP Packet Format
820x – Data Sheet, DS-0157-D
Page274
Hifn Confidential
B Appendix B: CRC Algorithms
B.1 Key CRC and XTS DIF
AES-XTS mode DIF CRC and other key CRCs use the CRC16 algorithm below:
F(x) = x16 + x15 + x11 + x9 + x8 + x7 + x5 + x4 + x2 + x + 1
The initial value for the function is “0xFFFF” (refer to t10-dif-03, http://www.t10.org).
Note that the generated CRC for the key need to be swapped.
uint dif_crc16(uint bCnt,const void *data,uint crcVal) {
uint i,j;
const u08b *p = (const u08b *)data;
assert((crcVal & ~0xFFFF) == 0);
for (i=0;i<bCnt;i++) {
crcVal ^= (p[i] << 8);
for (j=0;j<8;j++)
crcVal = (crcVal << 1) ^ ((crcVal & 0x8000) ? 0x18BB7 : 0);
}
assert((crcVal & ~0xFFFF) == 0);
return crcVal;
}
B.2 Data CRC
Data CRCs use the CRC32 algorithm below:
F(x) = x32+x26+x23+x22+x16+x12+x11+x10+x8+ x7+x5+x4+x2+x+1
The initial value of the function is “0xFFFF_FFFF”.
string CalcLCRC(const string Data)
{
string result = "11111111111111111111111111111111";
int byte_num = Data.length() / 8;
string _crc, crc32;
int poly[13] = { 6,9,10,16,20,21,22,24,25,27,28,30,31 };
int src = 0 , dst = 0;
while( dst < Data.length() )
{
if( Data.at(dst + 7 - 2*(dst%8)) != result.at(src) ){
result.push_back('1');
// xor poly 0x04c11db7
for( int i=0; i<13; i++ )
result.at( src + poly[i] ) = result.at( src + poly[i] ) == '0'?'1':'0';
}else
result.push_back('0');
src++ , dst++;
820x – Data Sheet, DS-0157-D
Page275
Hifn Confidential
}
// TODO:: rewire result
crc32 = result.substr (src , 32 ) ;
for ( int i = 0; i < 4 ; i ++ )
for ( int j = 0; j < 8; j ++ )
_crc = _crc + crc32.at( 8 * i + 7 - j );
for ( int i = 0; i < 32; i ++ )
_crc.at( i ) = ( _crc.at(i) == '0' ? '1' : '0' );
return _crc;
}
820x – Data Sheet, DS-0157-D
Page276
Hifn Confidential
C Appendix C: AES CBC/XTS FK
Generation
For more information on the AES algorithm, please refer to the FIPS-197 Specification for
the Advanced Encryption Standard (AES).
C.1 Key Expansion
The key expansion algorithm shown below operates on 32 bit word segments of the keys,
where Nr is the number of rounds (iterations) of the AES algorithm, Nk is the number of 32
bit words in the key (4 for 128 bit keys), Nb is the number of words in a block (4 for this
implementation).
KeyExpansion[Rounds+1][128](Key[128|256])
{
reg[32] temp;
if (sizeof(Key)==256)
{ KeyExpansion[0], KeyExpansion[1]} = Key;
else
// 128 bit key
KeyExpansion[0] = Key;
for(k = sizeof(Key)==256 ? 2 : 1; k<=Rounds; k=k+1) {
temp = ByteSub(RotByte(KeyExpansion[k-1][31:0]));
if (sizeof(Key)==256) begin
lastkey = ExpandedKey[k-2];
if (k%2==0)
temp = temp^{Rcon(k/2 - 1),24'h000000};
end else begin // 128 bit key
lastkey = KeyExpansion[k-1];
temp = temp^{Rcon(k-1),24'h000000};
end
temp = temp ^ lastkey[127:96];
KeyExpansion[k][127:96] = temp;
temp = temp ^ lastkey[95:64];
KeyExpansion[k][95:64] = temp;
temp = temp ^ lastkey[63:32];
KeyExpansion[k][63:32] = temp;
temp = temp ^ lastkey[31:0];
KeyExpansion[k][31:0] = temp;
}
}
For 256-bit keys, each 128 bit key expansion array member is used as the key by each
round of the encryption/decryption algorithm. In this case, (Nr+1)/2 256-bit expanded keys
are required.
820x – Data Sheet, DS-0157-D
Page277
Hifn Confidential
C.2 Encryption Algorithm
An AES encryption algorithm involves an initial key expansion followed by a user specified
number of encryption rounds represented here by Nr. Nr is one of the parameters specified
in the input control word and is typically 10 for 128 bit keys, 14 for 256 bit keys, and a
maximum of 32.
AES_encrypt(State[128], CipherKey[128/256], Rounds)
{
array[128] ExpandedKey[Rounds+1];
ExpandedKey = KeyExpansion(CipherKey) ;
State = Text ^ ExpandedKey[0];
For( i=1 ; i<Rounds ; i++ ) {
State = MixColumn(ShiftRow(ByteSub(State))) ^ ExpandedKey[i];
}
Output = ShiftRow(ByteSub(State)) ^ ExpandedKey[Rounds];
}
Note that since the expanded keys are used in increasing order, the key expansion
algorithm can run concurrently with the encryption algorithm.
C.3 Decryption Algorithm
The AES decryption algorithm is similar to the encryption algorithm, in that it has the same
basic form and uses the same expanded key register array. What is different is that
transformation functions in the decryption round are inverses of those used in the
encryption case. The inverse functions are very similar in form to their forward
counterparts. The decryption algorithm also uses keys in the reverse order from the
expanded key array. This causes the decryption algorithm to run slightly slower than
because all of the expansion keys must be calculated before decryption begins.
AES_decrypt(State[128], CipherKey[128/256], Rounds)
{
array[128] ExpandedKey[Rounds+1];
ExpandedKey = KeyExpansion(CipherKey) ;
State = Text ^ ExpandedKey[Rounds];
For( i=Rounds-1 ; i>0 ; i-- ) {
State = InvMixColumn(InvShiftRow(InvByteSub(State)) ^ ExpandedKey[i]);
}
Output = InvShiftRow(InvByteSub(State)) ^ ExpandedKey[0];
}
The AES Encryption key is different from the Decrypt key because the pre-calculated
decryption key can improve AES performance. Refer to AES Spec §5.2 Key Expansion.
The C code for generating the FK in YD simulation environment can be reused.
LAN security standard IEEE 802.1ae (MACSec) and NIST SP 800-38D use AES cipher in the
GCM mode, while the disk/tape encryption standard IEEE P1619 D16 uses the XTS mode.
Legacy storage designs used the CBC mode, NIST SP 800-38A.
820x – Data Sheet, DS-0157-D
Page278
Hifn Confidential
Figure C-1. GCM Mode
820x – Data Sheet, DS-0157-D
Page279
Hifn Confidential
Figure C-2. CBC Mode
820x – Data Sheet, DS-0157-D
Page280
Hifn Confidential
D Appendix D: MAC and IPAD and
OPAD
D.1 MAC in SSL3.0
The MAC in SSL3.0 is calculated as follows:
Hash(Write Secret || Pad2 || Hash(Write Secret || Pad1 || Seq. No. || Type || Length
|| Application Data))
Where:
Hash = SHA-1 or MD5
Write Secret = 20 bytes if SHA-1, 16 bytes if MD5; from Crypto Header
Pad1 = 48/40 bytes of 0x36 (MD5/SHA-1)
Pad2 = 48/40 bytes of 0x5C (MD5/SHA-1)
SeqNum = 8 byte Sequence Number from Crypto Header
Type = Type byte from SSL Header
Length = 16 bit Length of payload (no padding)
D.2 MAC in TLS1.0
The MAC in TLS 1.0 is calculated as follows:
HMACHash(MACWrite Secret, Seq. No. || Type || Version || Length || Application
Data)
Where:
HMACHash = HMAC-SHA-1 or HMAC-MD5
Write Secret = 20 bytes if SHA-1, 16 bytes if MD5. Note that the Mustang HMAC operation
uses a precomputed IPAD/OPAD formulation of the Write Secret; that is, the
Ipad=hash([WriteSecret]XOR[0x36...]) and opad=hash([WriteSecret]XOR[0x5C...])
SeqNum = 8 byte Sequence Number from Crypto Header
Type = Type byte from SSL Header
Version = 16 bit Version from SSL Header (SSL3.0 = 3,0; TLS1.0 = 3,1)
Length = 16 bit Length of payload (no padding!)
820x – Data Sheet, DS-0157-D
Page281
Hifn Confidential
Note: the Length available in the final output packet SSL/TLS header is the length including
padding. The Length used in the MAC calculation, however, is the SSL.compressedfragment
length, and does NOT include padding.
D.3 MAC in DTLS 1.0
The MAC in DTLS 1.0 is calculated as follows:
HMACHash(MACWrite Secret, Epoch # || Seq. # || Type || Version || Length || Appli-
cation Data)
Where:
HMACHash = HMAC-SHA-1 or HMAC-MD5
Write Secret = 20 bytes if SHA-1, 16 bytes if MD5. Note that the Mustang HMAC operation
uses a precomputed IPAD/OPAD formulation of the Write Secret; that is, the
Ipad=hash([WriteSecret]XOR[0x36...]) and opad=hash([WriteSecret]XOR[0x5C...])
Epoch # = 2 byte explicit Epoch Number from DTLS Header (provided by PP)
Seq# = 6 byte explicit Sequence Number from DTLS Header (provided by PP)
Type = Type byte from DTLS Header
Version = 16 bit Version from DTLS Header (DTLS1.0 = 254,255)
Length = 16 bit Length of payload (before encryption, so no padding)
Note: the Length available in the final output packet SSL/TLS header is the length including
padding. The Length used in the MAC calculation, however, is the
DTLS.compressedfragment length, and DOES not include padding.
D.4 IPAD & OPAD Generation
The pre-computed function is the compressed digest produced by hashing the secure key
(K) padded with zeroes to form a 512-bit block exclusive-or'd with the given IPAD value
(0x36363636) or OPAD value (0x5c5c5c5c). The hashing function is loaded with the IV
(Initial Vector = 0x01234567, 89abcdef, fedcba98, 76543210 for MD5 or = 0x67452301,
efcdab89, 98badcfe, 10325476, c3d2e1f0 for SHA-1 or 0x6a09e667, bb67ae85, 3c6ef372,
a54ff53a, 510e527f, 9b05688c, 1f83d9ab, 5be0cd19 for SHA-256). The figure below shows
the flow of the pre-computed IPAD and OPAD values.
820x – Data Sheet, DS-0157-D
Page282
Hifn Confidential
Figure D-1. IPAD and OPAD Generation
820x – Data Sheet, DS-0157-D
Page283
Hifn Confidential
I Document Revision History
This section lists the additions, deletions, and modifications made to this document for each
release of this document.
I.1 Document Revision A
Update 1.
Initial release.
I.2 Document Revision B
Update 1.
Update 2.
Section 1.2 Part Numbers: added this new section.
Chapter 2 Operation: added internal temperature sensor controller to Figure
2-1 and Table 2-1.
Update 3.
Update 4.
Update 5.
Update 6.
Section 3.1.3.3 IV and AAD, Figure 3-13 AES IV Lengths: added 3DES-CBC.
Section 3.2 Result Ring: updated bits in result ring.
Section 5.12 Temperature Sensor Controller: added this new section.
Section 6.7 Serial/Parallel Interface regs: removed all references to the
external thermal device on the SPI bus. Removed thermal registers.
Update 7.
Update 8.
Section 6.8 Temperature Sensor Controller Regs: added this new section.
Section 7.1 PCIE Interface: renamed pcie_tx and pcie_rx signals. Added
pcie_refclk_p, pcie_refclk_n, pcie_resref.
Update 9.
Section 7.2 Misc Interface: removed CM_busy, PKP_busy, 820x_err,
clk_gating_disable, phy_refclk_sel, thermal_int_n, and added pll0_ref_clk,
pll1_ref_clk.
Update 10. Section 7.6 Test Interface: scan_enable is one bit wide, removed pll_out0
and pll_out1.
Update 11. Section 9.1 Clock Domains: added CPIe_PHY.
Update 12. Section 10.2 Digital Power Supplies: added this new section.
Update 13. Section 10.3 Analog Power Supplies: added this new section.
Update 14. Section 10.4 Power Sequencing: new content for this section.
Update 15. Chapter 11 Thermal Specifications: added thermal resistance and temp
correlation parameter.
Update 16. Section 12 Package Specifications: added package drawing, ball map
drawing, and alphabetical and numerical ball lists.
Update 17. Moved Sections 10.1 Clock Specification and Section 10.2 Clock Gating to
Chapter 2 Operations to be expanded upon later. Added AC and DC
Specifications. Replaced mechanical drawing with latest update. Removed
comments for TX_LVL and PLL0_REF_CLK signals. Changed VDDA_PLL_0 to
VDDA_PLL0 in Table 13-1 alphabetical Ball List. Corrected padding example
in Table 3.2. Checked for old pin names in doc.
Update 18. Section 2.2 remove PCIe_PHY and update speed numbers for clock
domains. Fixed figure in section 3.2. Section 6.1.1 add bit for Over_heated
status and add to diagram. Section 6.7 changed pin labels in figure 6-3.
Section 6.7.7 changed flash_status to byte_prog in diagram. Added
Spansion device to list of recommended devices in Section 6.7. Section 6.8
820x – Data Sheet, DS-0157-D
Page284
Hifn Confidential
changed parameter “1” to “a”. Changed power consumption numbers for
VDD_10 in tables 9.8, 9.9, 9.10, 9.11. Removed duplicate thermal
resistance table in Chap 12.
I.3 Document Revision C
Update 1.
Section 1.2 Ordering Information: added “IB” to all part numbers.
Update 2.
Update 3.
Update 4.
Section 1.1.3 Engine Features: removed CCM encryption.
Section 3.2 Result Ring: changed bit 28 from OVER_HEAT to Reserved.
Section 5.12 Temperature Sensor Controller: updated this section to include
flow diagram, examples and to remove automatic temperature detection.
Update 5.
Update 6.
Update 7.
Section 6.1.1 Status Register: removed over_heated bit and made reserved.
Section 6.1.2 820x Error Register: corrected bit postitions.
Section 6.1.3 820x Interrupt Status Register: changed THERM_INT_N to
Reserved; changed PKP_INT to Reserved.
Update 8.
Update 9.
Section 6.1.4 820x Interrupt Enable Register: changed THERM_INT_N_EN
to Reserved; changed PKP_INT_EN to Reserved.
Section 6.1.5 Command Completion Interrupt Interval Register: removed
this register.
Update 10. Section 6.1.6 Command Completion Interrupt Number Register: removed
this register.
Update 11. Section 6.4.2.1 Public Key Command Register Format: added "host must
poll this register to know whether the command is finished"; changed IRQ
to Reserved.
Update 12. Section 6.5.7 RNG Config Register: added this new register.
Update 13. Section 6.6 GPIO Registers: corrected all GPIO registers to reflect 16-bit
GPIO instead of 32-bit.
Update 14. Section 6.8 Temperature Sensor Controller registers: modified this section
to remove automatic temp detection.
Update 15. Chapter 11 Thermal Specs: removed ambient operating temperature data
from Table 11-1.
Update 16. Section 13 Errata: added errata #2, 3.
I.4 Document Revision D
Update 1.
Section 3.1.3.6 Hash Buffer: added alignment restriction.
Update 2.
Update 3.
Update 4.
Section 6.1.6 Die Revision Reg: added this new register.
Section 8.1 Miscellaneous Interface: updated Figure 8-1.
Section 10.5 Power Consumption: updated power values or all 820x
devices.
Update 5.
Errata: added errata 4.
820x – Data Sheet, DS-0157-D
Page285
Hifn Confidential
750 University Avenue
Los Gatos, CA 95032
p: 408.399.3500
f: 408.399.3501
www.hifn.com
Hifn Confidential
相关型号:
©2020 ICPDF网 联系我们和版权申明