|  | 
 
| 
Preface ix
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  List of Contributors xiii
 Acknowledgements xv
 1 Synchronization, Arbitration and Choice 1
 1.1 Introduction 1
 1.2 The Problem of Choice 2
 1.3 Choice in Electronics 3
 1.4 Arbitration 5
 1.5 Continuous and Discrete Quantities 6
 1.6 Timing 7
 1.7 Book Structure 9
 Part I 11
 2 Modelling Metastability 13
 2.1 The Synchronizer 14
 2.2 Latch Model 21
 2.3 Failure Rates 23
 2.3.1 Event Histograms and MTBF 28
 2.4 Latches and Flip-fl ops 32
 2.5 Clock Back Edge 35
 3 Circuits 39
 3.1 Latches and Metastability Filters 39
 3.2 Effects of Filtering 41
 vi CONTENTS
 3.3 The Jamb Latch 42
 3.3.1 Jamb Latch Flip-fl op 45
 3.4 Low Coupling Latch 47
 3.5 The Q-fl op 49
 3.6 The MUTEX 50
 3.7 Robust Synchronizer 52
 3.8 The Tri-fl op 55
 4 Noise and its Effects 59
 4.1 Noise 59
 4.2 Effect of Noise on a Synchronizer 62
 4.3 Malicious Inputs 63
 4.3.1 Synchronous Systems 63
 4.3.2 Asynchronous Systems 66
 5 Metastability Measurements 69
 5.1 Circuit Simulation 69
 5.1.1 Time Step Control 70
 5.1.2 Long-term τ 71
 5.1.3 Using Bisection 73
 5.2 Synchronizer Flip-fl op Testing 75
 5.3 Rising and Falling Edges 79
 5.4 Delay-based Measurement 81
 5.5 Deep Metastability 83
 5.6 Back Edge Measurement 95
 5.7 Measure and Select 97
 5.7.1 Failure Measurement 97
 5.7.2 Synchronizer Selection 98
 6 Conclusions Part I 101
 Part II 103
 7 Synchronizers in Systems 105
 7.1 Latency and Throughput 105
 7.2 FIFO Synchronizer 108
 7.3 Avoiding Synchronization 110
 7.4 Predictive Synchronizers 113
 7.5 Other Low-latency Synchronizers 115
 7.5.1 Locally Delayed Latching (LDL) 115
 7.5.2 Speculative Synchronization 118
 CONTENTS vii
 7.6 Asynchronous Communication Mechanisms (ACM) 125
 7.6.1 Slot Mechanisms 128
 7.6.2 Three-slot Mechanism 128
 7.6.3 Four-slot Mechanism 130
 7.6.4 Hardware Design and Metastability 132
 7.7 Some Common Synchronizer Design Issues 133
 7.7.1 Unsynchronized Paths 133
 7.7.2 Moving Metastability Out of Sight 135
 7.7.3 Multiple Synchronizer Flops 138
 8 Networks and Interconnects 143
 8.1 Communication on Chip 143
 8.1.1 Comparison of Network Architectures 147
 8.2 Interconnect Links 150
 8.3 Serial Links 155
 8.3.1 Using One Line 155
 8.3.2 Using Two Lines 157
 8.4 Differential Signalling 159
 8.5 Parallel Links 161
 8.5.1 One Hot Codes 162
 8.5.2 Transition Signalling 166
 8.5.3 n of m Codes 167
 8.5.4 Phase Encoding 168
 8.5.5 Time Encoding 175
 8.6 Parallel Serial Links 180
 9 Pausible and Stoppable Clocks in GALS 183
 9.1 GALS Clock Generators 184
 9.2 Clock Tree Delays 188
 9.3 A GALS Wrapper 190
 10 Conclusions Part II 193
 Part III 197
 11 Arbitration 199
 11.1 Introduction 199
 11.2 Arbiter Defi nition 200
 11.3 Arbiter Applications, Resource Allocation Policies
 and Common Architectures 202
 viii CONTENTS
 11.4 Signal Transition Graphs, Our Main Modelling
 Language 205
 12 Simple Two-way Arbiters 209
 12.1 Basic Concepts and Conventions 209
 12.1.1 Two-phase or Non-return-to-zero (NRZ)
 Protocols 210
 12.1.2 Four-phase or Return-to-zero (RTZ)
 Protocols 211
 12.2 Simple Arbitration Between Two Asynchronous
 Requests 212
 12.3 Sampling the Logic Level of an Asynchronous
 Request 217
 12.4 Summary of Two-way Arbiters 222
 13 Multi-way Arbiters 225
 13.1 Multi-way MUTEX Using a Mesh 226
 13.2 Cascaded Tree Arbiters 227
 13.3 Ring-based Arbiters 230
 14 Priority Arbiters 235
 14.1 Introduction 235
 14.2 Priority Discipline 236
 14.3 Daisy-chain Arbiter 238
 14.4 Ordered Arbiter 239
 14.5 Canonical Structure of Priority Arbiters 240
  14.6 Static Priority Arbiter 241
 14.7 Dynamic Priority Arbiter 246
 15 Conclusions Part III 253
 References 255
 Index
 
 
 Preface
 Most books on digital design only briefl y touch on the design of
 synchronizers and arbiters, with maybe two or three pages in a 300
 page book, or a chapter at most. This is because there was no real need
 for it in the early years of computer design. Processors were largely selfcontained
 and used a single clock, so interfacing the processor to slow
 peripherals, or other processors was not seen as a major task. The fact
 that it is not simple emerged in the 1970s and 1980s when data rates
 between processors increased, and sometimes systems with more than
 one time zone were being designed. Despite frequent synchronization
 failures because of lack of understanding of the design principles at
 that time, synchronization still did not make it into the standard literature,
 and very little has been written since about how they should be
 designed. More recently processors are being designed with many more
 high-speed ports linked to networks, and the systems themselves are
 often made up of several core processors connected to an internal bus
 or network on chip. This means that processors operating on different
 time frames must communicate at high data rates, and when two or
 more processors request access to a common resource, there has to be
 some arbitration to decide which request to deal with fi rst.
 The need for synchronizers to ensure that data coming from ...
 | 
 |