Verilog 避坑

cpu序列检查chanllenge

  • 保存time、pc、addr、grf的寄存器务必开大,以避免数据溢出,自以为16位已经可以了,但还是没有逃过wa,最后直接开成32位ac了
  • Verilog语法中,位运算符 的优先级是低于 关系运算符 的。故后面两种形式的代码 不等价 (binPc & 32'b0011) != 0binPc & 32'b0011 != 0,前者才能表达正确的意思。包括三目运算符?,前面的判断也要带上括号。
  • 代码段执行先后的问题:在这里插入图片描述<=是非阻塞赋值。具体来讲,在时钟上升沿到来时,非阻塞赋值是先计算<=右侧的值,等到程序全部跑完一遍之后,再将所有计算好的右侧的值统一赋给左侧。因此这两种顺序无差别,if语句中的判断条件才是关键。更详细的内容请看蓝书197页“Verilog的层次化事件队列”。

独热码解决状态机问题

在用独热码解决状态机问题时,复位或初始化的时候不要简单的将状态赋为0,由于独热码编码状态,存在的状态中均是有一位是1的,所以一般不存在全零的情况,复位时注意(最好用状态标签复位,而不是直接赋数)在这里插入图片描述
当然在其他情况表示状态下,复位也不要想当然全赋0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值