【发布时间】:2016-01-11 17:43:20
【问题描述】:
我正在使用串行协议。消息的长度是预先知道的。在发送端和接收端,我都将消息保存到尽可能长的移位寄存器中。 我需要尽可能快地计算这些寄存器的 CRC32,就像以太网一样。由于消息是可变长度的(从 12 位到 64 位不等),我选择了应该已经与消息的接收/传输并行运行的串行实现。
我在计算之前遇到了数据组织问题。根据here 的规定,计算前需要对数据进行位反转,填充32个零并补足。
即使我忘记了与接收或传输数据并行运行的部分,我怎样才能有效地从最大长度寄存器中只获取我的相关消息,以便在计算之前填充它?我知道这样的想法
newregister[31:0] <= oldregister[X:0] // X is my variable length
不工作。也不可能让用于对旧向量进行位反转的 generate for 循环子句运行可变次数。我可以使用计数器将数据连续移动到所需的长度,但我不能浪费这么多时间。
或者,是否有一种操作可以直接给我填充和补充的结果?我什至不知道如何开始开发这样的想法。
提前感谢您的任何见解。
【问题讨论】: