其他分享
首页 > 其他分享> > 【上机】P1

【上机】P1

作者:互联网

再次体验大心脏

T1 奇偶校验

for循环数1的个数判断奇偶/异或缩减运算符判断奇偶,然后根据check的奇偶要求调整最高位

bug1

!注意优先级:位运算 低于 比较运算。

cnt & 1 == 0       //恒为0
(cnt & 1) == 0     //cnt偶数时为1

 

属于是灯下黑了,调试了半天人急疯了。最后用$display()一段一段分析代码行为才定位问题行,然后又想了会儿才发觉是优先级的问题

T2 心情状态机

极简状态机(只是设置好像不和常理让人读题时怕读漏),存在时序导向的状态转移(若n个时钟周期未被x输入信号打断则转至另一状态,类此,用cnt计数)

bug1

cnt计数时被输入信号打断而跳转,此时需要将cnt清零。写if时很容易只考虑cnt达标跳转时的清零。

if(sign == IDEA) begin
    state <= `BUSY;
    cnt <= 0; //此处容易漏
end else begin
    cnt <= cnt + 1;
    //...
end

bug2

always块中,应时刻牢记非阻塞赋值特性对计数器的影响。当计数器变化后立即判断数量时,应滞后一个周期。

cnt <= cnt + 1;
if(cnt == TARGET - 1)  //Expression

 

两道题交叉debug,终于花了1h40min完成了看上去只需要20min的题目,又是窝囊的一次上机

T3 方程检测

拍了题,只能课下做了

标签:奇偶,cnt,P1,上机,bug1,状态机,跳转,清零
来源: https://www.cnblogs.com/elucidator-xrb/p/15474996.html