关于verilog几条语法
来源:互联网 发布:录像配音软件 编辑:程序博客网 时间:2024/06/06 03:26
1.关于wire和reg类型的使用:
- input的变量一定只能是wire。output的变量可以是wire也可以是reg。inoutput的变量只能是wire型,因为类型中含有input成分。
- 所有变量不加说明默认定义为wire型。
- 在assign语句中使用wire类型。在always语句块中使用reg类型。
2.位拼接符 { }
- 位拼接符使用:把某些倍号的某些位详细地列出来,中间用逗号分开,最后用大括号括起来表示一个整体信号。拼接时高位在前。
eg: input [3:0] numberH; input [3:0] numberL; output wire [7:0] number; assign number = {numberH,numberL};
3.case endcase语句与if else语句
- if语句语法基本与c语言相同,也具有优先级。
eg: if(flag == 0) begin single = 3;end else if(flag == 1) begin single = 2;end else if(flag == 2) begin single = 1;end else begin single = 0;end```
- case语句,不具有优先级
eg: case(flag) 2'b0: single = 3; 2'b1: single = 2; 2'b2: single = 1; default: single = 0; endcase
- if语句与case语句:
if占用资源相对较少,但执行时间较长。case语句与之相反。
4.always语句块与assign语句
always语句块一般用在时序逻辑电路中,在组合逻辑中也有应用。
/*敏感信号是需要检测的信号,当这些信号发生变化时,always语句块就会更新一次。对于时序逻辑而言,还需要有posedge,negedge,posedge or negedge修饰。*/语法: always@(敏感信号) begin 语句体; end
- always组合逻辑
- 在组合逻辑电路中,用阻塞赋值 =
eg: always@(a,b,c,d,x) begin case(x) 2'b0: y = a; 2'b1: y = b; 2'b2: y = c; default: y = d; endcase end
- always时序逻辑
在时序逻辑电路中,用非阻塞赋值 <=
eg: always@(posedge clk or negedge res) begin if(clk) y <= a; else if(res == 0) y <= 0; else y <= y; end
5.assign 目标变量 = 驱动表达式
eg: assign y = a & b;
6.多目运算符 ? :
eg: Y = (a&b)?c:d;
阅读全文
0 0
- 关于verilog几条语法
- 编写Verilog的几条经验
- Verilog语法
- Verilog的基本语法
- verilog语法学习心得
- Verilog HDL语法基础
- verilog语法学习心得
- verilog语法学习心得
- verilog部分语法
- verilog语法学习心得
- Verilog HDL语法提纲
- verilog语法学习心得
- Verilog HDL语法提纲
- verilog语法学习心得
- Verilog HDL语法基础
- verilog的基本语法
- verilog语法学习心得
- verilog 语法 注意事项
- 计算机图形学几何工具算法详解(第2章):(hua)笔(shui)记
- SSH入门项目-4-功能完善之CRUD
- 字符串全排列
- GCC编译过程分解
- Linux 学习路程(3)文件权限
- 关于verilog几条语法
- 【UVA 548 Tree】二叉树构造 & 遍历
- 智能算法推荐到底是不是原罪
- 关于putchar与getchar
- Eclipse添加jdk
- 多项式加法
- 孤独真的能毁掉一个人吗?
- 归并排序
- javascript基本知识整理三