extraordinary2 2022-06-21 18:47 采纳率: 0%
浏览 53
已结题

通过vhdl完成CRC校验的一些问题

问题遇到的现象和发生背景

在用VHDL实现CRC校验过程中,选用的检验多项式为CRC4:X^4 + X +1。

原始数据信号:A_1(仿真图中为TEST2_t);CRC验证码:CK2_t (仿真图中为CK2_o);与检验多项式进行“模2”除法运算信号:crc;
原始数据与最终CRC验证码合并结果:check (仿真图中为TEST2_o)。

前仿的时候,CK2_o 和 TEST2_o 能在 TEST2_t变化的时候瞬间完成计算,并且结果正确。
但是在后仿的时候,CRC验证码计算结果最终正确,但是中途在很短的时间内出现了不稳定的情况。因为第一次接触变量,看代码没有发现问题。按照敏感信号和进程定义,在敏感信号 TEST2_t 变化一次后,进程应当进行一次,所以 CK2_o 和 TEST2_o 应当仅变化一次。但是后仿结果显示,二者出现两次或者三次变化。不明白是什么原因造成的,求解惑,万分感谢。

问题相关代码,请勿粘贴截图

process(A_1) ---input data ,8bit
variable data : std_logic_vector(11 downto 0);
variable crc : std_logic_vector(4 downto 0);
variable crc_code : std_logic_vector(3 downto 0);
begin
crc_code := "0000";
data := A_1 & "0000";
crc := data(11 downto 7);
for i IN 6 downto 0 LOOP
if(crc(4) = '1') then
crc_code := crc(3 downto 0) XOR "0011";
else
crc_code := crc(3 downto 0);
end if;
crc := crc_code & data(i);
end loop;
if(crc(4) = '1') then
crc_code := crc(3 downto 0) XOR "0110";
else
crc_code := crc(3 downto 0);
end if;
CK2_t<= crc_code;
check<= A_1 & crc_code;
end process;

运行结果及报错内容

前仿:

img

img

img

后仿:

img

img

img

我的解答思路和尝试过的方法
我想要达到的结果


  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月28日
  • 赞助了问题酬金10元 6月21日
  • 创建了问题 6月21日

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名