verilog的两个误区:
使用reg类 型还是net类型:
reg类 型只在过程块中被赋值;而net类型则在过 程块外面被赋值或者驱动.
阻塞赋值和非阻塞赋值:
verilog中竞争发生的条件:两个或多个语句在执行顺序不同时导致不同的结果,则存在竞争.
nonblocking不 是一个类型;
blocking赋 值是一个单步过程,计算rhs,并更形lhs是不可中断的.
七 条准则:
1.时序逻辑和锁存器,使 用非阻塞赋值
2.always块中的组合逻辑,使用阻塞赋值
3.同一always块,时序组合混合逻辑使用非阻塞赋值
4.通常情况下,在同一always块中不要混合使用阻塞与非阻塞赋值
5.不 要在多个always块中对同一变量进行赋值
6.使用$strobe显示非阻塞赋值得信号
7.不要用#0的过程赋值
verilog中的分层事件队列:
活动事件:阻塞赋值;计算非阻塞赋值的rhs;连续赋值;$display命令;计算输入并改变原语的输出.这些事件可能按照任意次序 调度.
非活动事件:#0的阻 塞赋值
非阻塞事件:更新非阻 塞赋值的lhs
监视事件:$monitor命 令;$strobe命令
经验:
在always块中使用非阻塞赋值来 产生时序逻辑和锁存器
在always块 中使用阻塞赋值来产生组合逻辑
在always块 中使用非阻塞赋值来产生同一块中的时序和组合逻辑
在纯组合逻辑中使用非阻塞赋值可能 会导致功能错误
阻塞赋值和非阻塞赋值混 合使用的方式:
将组合逻辑赋值通过时序表达式表示
或者将组合逻辑赋值与时序逻辑分开,在独 立的语句块中描述
不推荐在同 一always块中混合使用阻塞和非阻塞赋值
几个关于非阻塞赋值的错 误理解:
错误1:无法使用$display命令显示非阻塞赋值变量
正 解:非阻塞赋值变量的更新在所有$display命 令之后
错误2:#0让一个赋 值在每个时间步的最后执行
正解:#0只 会让赋值语句进入非活动事件队列
错误3:在 同一always块中对同一变量进行多次非阻塞赋值是不允许的
正解:在ieee 1364 verilog标准中定义了上述赋值,最 后一个非阻塞赋值起作用
模拟开始时候的困难:
不同的模拟器,不同的模拟选项导致开始模拟时现象不同
建议: 在0时刻通过非阻塞赋值设置reset信号;
第一个半周期设置clock为0
编写verilog代 码的一些经验:
verilog文件名和模块名相同
不要在可综合代码中使用casex语句
当在可综合代码中使用casez语句时 要小心
当写case语句时,对存在不关心的cases时使用casez,使用?代替z来表示不关心的cases
verilog编 写状态机相关:
状态机分类:moore(输 出只与当前状态相关)和mealy(输出与 当前状态和输入相关)
二进制编码和one-hot编 码
状态机的基本块:下一状态 度组合逻辑;时钟同步的当前状态逻辑;输出 组合逻辑
两个always块 写状态机,使用三个always块,如果输出需要寄存
使用高效的one-hot状态编码,组合输出
经验:
每个状态机作为一 个独立的verilog模块
对 状态进行预定义,状态赋值使用状态名作参数,不 要使用`define,多使用parameter
两个always语句块的状态机,一 个always用来描述状态向量寄存器的时序逻辑.一 个用来描述下一状态度组合逻辑.组合输出可以通过连续赋值语句或者在下一状态度组合always块中描述.
基于首款波场开发的放置类区块链游戏“魔法游戏”介绍
物联网数据交易是怎样兴起的
工信部:加快集成电路、5G关键元器件等重点标准研制
无服务器化的潜力有多大?能否成为云计算的未来?
嵌入式处理器是怎样分类的
Verilog的两个误区
锂电池电解液
薄板焊接的焊接方法_薄板焊接的焊接注意事项
mCloud完成对AR创企NGRAIN收购,此次收购将会看到NGRAIN的AI和AR技术
HNYC变压器有载开关测试仪(同期)
世界上最快的超级计算机和中国最快的超级计算机?
激光通信系统的优势
宽带数据转换器应用的JESD204B与串行LVDS接口考量
如何设置树莓派和安装操作系统
智能表面——汽车座舱进化方向
TI 1080P开发板SDK成像系统技术参数分析
电能表的接线方法分享
荣耀即将推出荣耀10i搭载骁龙660处理器主打美肤拍照
招投标资讯丨常平镇路灯养护服务项目
同轴电缆的特性阻抗的计算公式