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

发布时间:2024年01月16日

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

2 模块例化、运算符

2.1 模块例化

2.1.1 什么是模块例化

例化,即将项目不断拆分成次级功能模块,然后从最简单的模块开始实现,进而完成整个复杂项目
在这里插入图片描述

2.1.2 模块例化的方法

针对已经抽象好的模块,需要进行语义化命名,以便后续的调试。
在这里插入图片描述

2.1.3 参数例化

在不改变原来模块大体内容的情况下,改变一个变量的位宽
参数例化的好处:在仿真测试时便于调整基准数据,例如仿真时钟时可以将基准时间从1秒改成0.001秒。
在这里插入图片描述
通过此方式,可以将原来模块中8位的DATA_W,在例化时改为16位
在这里插入图片描述

2.2 运算符

2.2.0 总览

在这里插入图片描述

2.2.1 信号类型reg/wire

在这里插入图片描述

EXAMPLES
在这里插入图片描述

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

在这里插入图片描述
2. 本模块产生,非always,用wire row1,row2

在这里插入图片描述
3. 本模块产生,是always,用reg rdreq

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

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

在这里插入图片描述

2.2.3 算术运算符

FPGA中,除法和求余需要大量的逻辑块,耗费资源多,因此需要尽量少用
在这里插入图片描述

2.2.4 关系运算符

在这里插入图片描述

2.2.5 赋值运算符

不要搞复杂了

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

在这里插入图片描述

2.2.6 逻辑运算符

在这里插入图片描述

2.2.7 位运算符

在这里插入图片描述

2.2.8 移位运算符

在这里插入图片描述

2.2.9 拼接运算符

多个相同的位数,可以用:{个数{a[n]}}实现重复拼接
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_48035645/article/details/135485153
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。