完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在开发一个解串行模块,我必须将信息收集到一个包含Header + Message + CRC的寄存器中。
我收到的串行数据将是8位的bean头,并且根据我的头位,有一个解码器决定每个消息的长度,如果CRC被启用,那么它也可能跟随CRC位(没有指定长度)。 我必须将这些变量(Header + Message + CRC)固定到一个寄存器中,每个寄存器的长度都不同。 所以我很困惑,我如何制作一个可以保持不同长度(Header + Message + CRC)的可变长度寄存器。 我稍后会在其中添加时间戳以使其独特。 请帮忙!!!! 我不想要任何填充位,因为长度较长的消息较少,而且更多的消息长度较短,这只会增加内存大小。 如果这是错误的论坛,我很抱歉。 谢谢! 以上来自于谷歌翻译 以下为原文 I am working on a de-serial module, and I have to collect information into a single register containing Header + Message + CRC. I am receiving serial data which will bean header of 8 bits and depending on my header bit there is a decoder which decides the length of each message and if CRC is enabled then then it might also follow by CRC bits(no lengths specified). I have to fix these variable (Header + Message + CRC) into a single register each will be of different lengths. So I am confused that how do I make a variable length register which can hold different lengths of (Header + Message + CRC). I will later on add time stamp into this to make it unique. Please Help!!!! I do not want any padding bits as the messages of longer lengths are less and more messages are of shorter length which will just increase the memory size. Also I am sorry if this is the wrong forum. Thanks! |
|
相关推荐
1个回答
|
|
不存在可变长度寄存器 - 如果您认为寄存器是硬件中触发器的集合,则无法在不重新配置FPGA的情况下更改已分配的数量。
现在还不完全清楚您的数据包是什么样的,但您可以尝试将数据放入足够大的RAM中以容纳最大的预期消息,或者将FIFO放入足够长的时间以防止溢出。 然后,您可以使用状态机在闲暇时检查数据。 这样的状态机可能(在状态1中)解析报头并找到消息长度,(在状态2中)记录在计数器寄存器中,然后(在状态3中)使用计数器读取适当数量的单词(可能 在检查消息截断时),然后(在状态4中)检查CRC。 您还可以将传入消息的三个部分存储在三种不同类型的内存中。 这实际上取决于您计划接下来的数据。 以上来自于谷歌翻译 以下为原文 There's no such thing as a variable length register - if you consider that a register is a collection of flip flops in hardware, you can't change the number you've allocated without reconfiguring the FPGA. It's not completely clear what your data packets look like, but you could try putting the data into a RAM large enough to hold your largest anticipated message, or a FIFO long enough to prevent overrun. Then you can use a state machine to examine the data at your leisure. Such a state machine might (in state 1) parse the header and find the message length, (in state 2) record that in a counter register, and then (in state 3) use the counter to read the appropriate number of words (probably while checking for message truncation), and then (in state 4) check the CRC. You could also store the three parts of the incoming message in three different types of memory. It really depends on what you plan to do with the data next. |
|
|
|
只有小组成员才能发言,加入小组>>
2416 浏览 7 评论
2821 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2292 浏览 9 评论
3372 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2459 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1157浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
584浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
450浏览 1评论
2005浏览 0评论
729浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:11 , Processed in 1.302951 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号