Verilog语法——2.模块例化、运算符

参考资料
【明德扬_verilog零基础入门语法HDL仿真快速掌握-手把手教你写FPGA/ASIC代码设计流程中的应用】

2 模块例化、运算符

2.1 模块例化

2.1.1 什么是模块例化

例化,即将项目不断拆分成次级功能模块,然后从最简单的模块开始实现,进而完成整个复杂项目
Verilog语法——2.模块例化、运算符_第1张图片

2.1.2 模块例化的方法

针对已经抽象好的模块,需要进行语义化命名,以便后续的调试。
Verilog语法——2.模块例化、运算符_第2张图片

2.1.3 参数例化

在不改变原来模块大体内容的情况下,改变一个变量的位宽
参数例化的好处:在仿真测试时便于调整基准数据,例如仿真时钟时可以将基准时间从1秒改成0.001秒。
Verilog语法——2.模块例化、运算符_第3张图片
通过此方式,可以将原来模块中8位的DATA_W,在例化时改为16位
Verilog语法——2.模块例化、运算符_第4张图片

2.2 运算符

2.2.0 总览

Verilog语法——2.模块例化、运算符_第5张图片

2.2.1 信号类型reg/wire

Verilog语法——2.模块例化、运算符_第6张图片

EXAMPLES
Verilog语法——2.模块例化、运算符_第7张图片

  1. 本模块always产生的信号,用reg eoc_cnt

Verilog语法——2.模块例化、运算符_第8张图片
2. 本模块产生,非always,用wire row1,row2

Verilog语法——2.模块例化、运算符_第9张图片
3. 本模块产生,是always,用reg rdreq

在这里插入图片描述
4. 肯定不是always产生的,使用wire sdata

2.2.2 参数parameter(相当于c语言的宏定义)

Verilog语法——2.模块例化、运算符_第10张图片

2.2.3 算术运算符

FPGA中,除法和求余需要大量的逻辑块,耗费资源多,因此需要尽量少用
Verilog语法——2.模块例化、运算符_第11张图片

2.2.4 关系运算符

Verilog语法——2.模块例化、运算符_第12张图片

2.2.5 赋值运算符

不要搞复杂了

  • 时序逻辑用: <=
  • 组合逻辑用: =

Verilog语法——2.模块例化、运算符_第13张图片

2.2.6 逻辑运算符

Verilog语法——2.模块例化、运算符_第14张图片

2.2.7 位运算符

Verilog语法——2.模块例化、运算符_第15张图片

2.2.8 移位运算符

Verilog语法——2.模块例化、运算符_第16张图片

2.2.9 拼接运算符

多个相同的位数,可以用:{个数{a[n]}}实现重复拼接
Verilog语法——2.模块例化、运算符_第17张图片

你可能感兴趣的:(FPGA,fpga开发)