22- RFC PR: [ amaranth-lang/rfcs #0006 ] ( https://github.com/amaranth-lang/rfcs/pull/0006 )
33- Amaranth Issue: [ amaranth-lang/amaranth #681 ] ( https://github.com/amaranth-lang/amaranth/issues/681 )
44
5- # Summary
5+ # CRC generator
6+
7+ ## Summary
68[ summary ] : #summary
79
810Add a cyclic redundancy check (CRC) generator to the Amaranth standard library.
911
10- # Motivation
12+ ## Motivation
1113[ motivation ] : #motivation
1214
1315Computing CRCs is a common requirement in hardware designs as they are used
@@ -21,7 +23,7 @@ See the [Wikipedia page on CRCs] for more background and use cases.
2123
2224[ Wikipedia page on CRCs ] : https://en.wikipedia.org/wiki/Cyclic_redundancy_check
2325
24- # Guide-level explanation
26+ ## Guide-level explanation
2527[ guide-level-explanation ] : #guide-level-explanation
2628
2729The Amaranth standard library includes a generator for a cyclic redundancy
@@ -141,7 +143,7 @@ the data processed since `start`, the CRC register will always contain a fixed
141143value which can be computed in advance, and the ` match_detected ` output
142144indicates whether the CRC register currently contains this value.
143145
144- # Reference-level explanation
146+ ## Reference-level explanation
145147[ reference-level-explanation ] : #reference-level-explanation
146148
147149The proposed new interface is:
@@ -185,15 +187,15 @@ technical level of detail.
185187
186188[ PR 681 ] : https://github.com/amaranth-lang/amaranth/pull/681
187189
188- # Drawbacks
190+ ## Drawbacks
189191[ drawbacks ] : #drawbacks
190192
191193Users could always write their own CRC or use an external library; Amaranth
192194does not need to provide one for them. However, since it's a very common
193195requirement that we can satisfy efficiently for a lot of users, it seems
194196reasonable to include in the standard library.
195197
196- # Rationale and alternatives
198+ ## Rationale and alternatives
197199[ rationale-and-alternatives ] : #rationale-and-alternatives
198200
199201As far as I'm aware, the method here is the optimal technique for generating
@@ -208,7 +210,7 @@ Additionally, the table approach generally requires a latency of 2 cycles (one
208210extra to perform the table lookup). It's possible this would give better timing
209211in some circumstances, but at the cost of block RAM resources and latency.
210212
211- # Prior art
213+ ## Prior art
212214[ prior-art ] : #prior-art
213215
214216The specification chosen for the CRC parameters is a popular de-facto standard,
@@ -232,12 +234,12 @@ generating hardware their implementation details are not as relevant - small
232234table lookups are popular as the tradeoffs there tend to favour word-at-a-time
233235computations.
234236
235- # Unresolved questions
237+ ## Unresolved questions
236238[ unresolved-questions ] : #unresolved-questions
237239
238240- No outstanding unresolved questions.
239241
240- # Future possibilities
242+ ## Future possibilities
241243[ future-possibilities ] : #future-possibilities
242244
243245- The data interface uses ` start ` , ` data ` , and ` valid ` signals.
0 commit comments