导图社区 Verilog语法
这是一篇关于Verilog语法的思维导图,梳理了数字电路设计的核心语法要点,主要内容包括:数字进制,运算符,阻塞和非阻塞赋值,信号类型,模块结构,综合和仿真,是 FPGA/IC 设计初学者、数字电路工程师快速入门与备考的高效工具。
社区模板帮助中心,点此进入>>
开学典礼:时间规划
大学生职业规划思维导图
大学生职业发展规划
大学生职业规划知识总结
大学生毕业去向
大学生行为礼仪规范
全国大学一览图
大一新生入学必备物品清单
蓓蕾入学
大学生创业基础
Verilog语法
数字进制
数字表示方式最常用的格式【位宽】【基数】【数值】 eg:4'b1011
二进制是基础
一根线有高低电平两种状态,分别可以表示1和0 当想要发送数字2,3的时候,用两条线,比如两条线都是低电平,发送0 都是高电平,发送3,以此类推
在代码中可能经常会见到这种" 4b'10x0 " x表示一种不定态,即x不确定是0还是1
高阻态:表示电路板里某个位置不再进行信号传输 assign out=en?data:1'bz;
运算符
算术运算符
加+减-乘*除/取余%,二进制和十进制加减一样,需要时就借位 注意乘法除法,消耗特别大,如果一定要用除法,尽量让除数=2的n次方,就相当于右移一位
二进制只有0和1,所以人发明了一套用0,1表示负数的编码,叫做补码
关系运算符
比较器,大于,等于,大于等于...等
逻辑运算符
逻辑与(&&),逻辑或(||),逻辑非(!A)
按位运算符
按位与&,按位或|,按位异或,按位取反~
移位运算符
左移n位a<<n,右移同理,可分别用作2的n次方的乘法和除法
拼接运算符
把多段二进制数拼接到一起,A=xxxx,B=xxxx C={A,B};
条件运算符
可以理解成“一行写完的if-else语句”,同样有case语句
赋值运算符
a<=c,c赋值给a
阻塞和非阻塞赋值
阻塞赋值:就理解为每行代码依次运行,先执行当前赋值语句,再执行下一行语句 非阻塞赋值:同时赋值所有语句
信号类型
信号位宽
取决于该信号的最大值,计算公式最大值=2的n次方-1, 其中n为信号位宽
模块结构
Verilog的基本描述单位
五个主要部分
参数定义(可选)
表达形式为“ parameter a=8 ”
端口定义
以module开头,以endmodule结尾
I/O说明
内部信号声明
只有两种语句
(寄存器)reg[width-1:0],0是固定的
(导线)wire[width-1:0]
功能定义
两种语句
assign语句(持续赋值语句)
只能写组合逻辑
赋值给wire
always块(条件循环语句)
既可以写时序(可以设定时间先后触发),也可以写组合逻辑
时序逻辑的同步复位与异步复位,同步指的是在时钟有效沿(需要自己看图了解) 才判断复位,而异步指的是当信号来临,立刻复位
赋值给reg
模块例化
通俗解释:把一个写好的代码逻辑用到另一个模块里(下面是实例)
综合和仿真
综合:把代码翻译成真正的硬件电路
不可综合指的是:硬件无法实现相应的代码
仿真:一种验证方法
逻辑与按位的区别:逻辑表示整体的判断,结果为真或假 按位表示一位一位运算,结果是一串二进制的数字
语法解释:A?B:C表示如果A成立就选B,否则选C 上面实例中,如果en成立,就选data,正常驱动 否则out=高阻态
width,表示信号位宽