【P1】Verilog部件级实验/有限状态机

课上

再次体验大心脏

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 方程检测

拍了题,只能课下做了

posted @ 2021-10-28 12:24  Xlucidator  阅读(142)  评论(0编辑  收藏  举报