当前位置: 首页 > news >正文

Verilog基础:标识符的定义位置

相关阅读

Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482


        Verilog中的标识符种类有很多,本文将讨论这些标识符的定义位置并给出相关例子。

reg类型

模块命名空间

module test;*****reg [7:0] count_reg; // 模块命名空间中定义reg信号*****endmodule

        注意事项:如果reg类型不是数组形式,则可以赋初值。

块命名空间

命名块
module test;*****always@(*) begin: areg [7:0] count_reg; // 块命名空间中定义reg信号*****   end*****endmodule

        注意事项:reg类型不可以赋初值,且必须在命名块中的所有语句之前声明。

函数
module test;*****function func(input a);reg [7:0] count_reg; // 块命名空间中定义reg信号begin:*****   endendfunction*****endmodule

        注意事项:reg类型不可以赋初值,且必须在函数中的所有语句之前声明。

 

任务
module test;*****task task1;reg [7:0] count_reg; // 块命名空间中定义reg信号begin:*****   endendtask*****endmodule

        注意事项:reg类型不可以赋初值,且必须在任务中的所有语句之前声明。 

 

生成块命名空间

module test;*****generategenvar a;for(a=0; a<5; a=a+1) begin // 对于Verilog 2005标准,无需给块命名*****reg [7:0] count_reg; // 生成块命名空间中定义reg信号*****   endendgenerate*****endmodule

        注意事项:如果reg类型不是数组形式,则可以赋初值。 

integer类型

        与reg类型相同。

real类型

        与reg类型相同。

time类型

        与reg类型相同。

realtime类型

        与reg类型相同。

net大类

        net大类包括wire、wand、wor、tri、triand、trior、tri0、tri1、trireg、uwire、supply0、supply1类型。

模块命名空间

module test;*****wire [7:0] count_wire; // 模块命名空间中定义wire信号*****endmodule

        注意事项:如果net大类不是数组形式,则可以赋值(表达式可以是常量也可以是变量);如果为net大类指定了驱动强度,则必须赋值。

生成块命名空间

module test;*****generategenvar a;for(a=0; a<5; a=a+1) begin // 对于Verilog 2005标准,无需给块命名*****wire [7:0] count_wire; // 生成块命名空间中定义wire信号*****   endendgenerate*****endmodule

        注意事项:如果net大类不是数组形式,则可以赋值(表达式可以是常量也可以是变量);如果为net大类指定了驱动强度,则必须赋值。 

event类型

模块命名空间

module test;*****event tt; // 模块命名空间中定义event*****endmodule

块命名空间

命名块
module test;*****always@(*) begin: aevent tt; // 块命名空间中定义event*****   end*****endmodule

        注意事项:event类型必须在命名块中的所有语句之前声明。

函数
module test;*****function func(input a);event tt; // 块命名空间中定义eventbegin:*****   endendfunction*****endmodule

        注意事项:event类型必须在函数中的所有语句之前声明。 

 

任务
module test;*****task task1;event tt; // 块命名空间中定义eventbegin:*****   endendtask*****endmodule

        注意事项:event类型必须在任务中的所有语句之前声明。 

生成块命名空间

module test;*****generategenvar a;for(a=0; a<5; a=a+1) begin // 对于Verilog 2005标准,无需给块命名*****event tt; // 生成块命名空间中定义event*****   endendgenerate*****endmodule

localparam类型

模块命名空间

module test;*****localparam WIDTH = 5; // 模块命名空间中定义localparam*****endmodule

块命名空间

命名块
module test;*****always@(*) begin: alocalparam WIDTH = 5; // 块命名空间中定义localparam*****   end*****endmodule

        注意事项:localparam类型必须在命名块中的所有语句之前声明。 

函数
module test;*****function func(input a);localparam WIDTH = 5; // 块命名空间中定义localparambegin:*****   endendfunction*****endmodule

        注意事项:localparam类型必须在函数中的所有语句之前声明。  

任务
module test;*****task task1;localparam WIDTH = 5; // 块命名空间中定义localparambegin:*****   endendtask*****endmodule

        注意事项:localparam类型必须在函数中的所有语句之前声明。

生成块命名空间

module test;*****generategenvar a;for(a=0; a<5; a=a+1) begin // 对于Verilog 2005标准,无需给块命名*****localparam WIDTH = 5; // 生成块命名空间中定义localparam*****   endendgenerate*****endmodule

parameter类型

        与localparam类型类似,区别在于parameter类型不能在生成块命名空间中定义。

function类型

模块命名空间

module test;*****function func(input a); // 模块命名空间中定义function*****    endfunction *****endmodule

生成块命名空间

module test;*****generategenvar a;for(a=0; a<5; a=a+1) begin // 对于Verilog 2005标准,无需给块命名*****function func(input a); // 生成块命名空间中定义function*****    endfunction *****   endendgenerate*****endmodule

task类型

        与function类型相同。


文章转载自:

http://EGiMi8kR.phjny.cn
http://vYSSLstf.phjny.cn
http://wLpTkeSr.phjny.cn
http://t1LIUdCW.phjny.cn
http://JCMAjrcQ.phjny.cn
http://n6HqpO6S.phjny.cn
http://Wq9LB0eB.phjny.cn
http://upaCmDU4.phjny.cn
http://24tUkHHw.phjny.cn
http://7IwAxqrT.phjny.cn
http://TK0VMAMn.phjny.cn
http://1oSmIkEL.phjny.cn
http://yybCWrA6.phjny.cn
http://XNQV5nUs.phjny.cn
http://0Ys6JpfJ.phjny.cn
http://2MIytcQL.phjny.cn
http://h3Trblmr.phjny.cn
http://jF3ziwyY.phjny.cn
http://babPkYlQ.phjny.cn
http://JvIcVEru.phjny.cn
http://fSIg3TkL.phjny.cn
http://UTR8pIDW.phjny.cn
http://dMIciqPz.phjny.cn
http://SJj049PX.phjny.cn
http://f3neCK1n.phjny.cn
http://mRWoIQce.phjny.cn
http://kLN57k0H.phjny.cn
http://Mpj0isoP.phjny.cn
http://vjH8HnKC.phjny.cn
http://hTlNc0p1.phjny.cn
http://www.dtcms.com/a/245579.html

相关文章:

  • Vue 中 this.$emit(‘mount‘) 的妙用
  • [C++][设计模式] : 单例模式(饿汉和懒汉)
  • 2.监控领域中行业黑话知识学习指南
  • 使用Ollama+open-webui搭建本地AI模型
  • 写实交互数字人:赋能消防知识科普,点亮智能交互讲解新未来
  • word表格批量转excel,提取表格数据到excel
  • SpringBoot+Junit在IDEA中实现查询数据库的单元测试
  • ⭐ Unity 实现屏幕涟漪效果:自动生成 \ 点击交互生成涟漪
  • 基于OpenCV和深度学习实现图像风格迁移
  • 分布式光纤测温及红外测温系统的区别?
  • 68、.NET Entity Framework(EF)
  • 每日Prompt:宫崎骏风格插画
  • YOLOv2 技术详解:目标检测的又一次飞跃
  • 大模型Prompt|提示工程的10个常见设计模式
  • 【数据传输常用命令】:docker常用命令
  • 1.ES介绍
  • Three.js搭建小米SU7三维汽车实战(4)场景搭建
  • Eureka 服务注册与发现原理和使用
  • 常见的几种排序算法
  • 预训练CNN网络的迁移学习(MATLAB例)
  • webgl工程发布问题解决记录
  • 【在线五子棋对战】五、前端扫盲:html css javascript ajax jquery websocket
  • LeetCode 3423.循环数组中相邻元素的最大差值:遍历(模拟)
  • 基于GeoTools的道路相交多个点容差冗余计算实战
  • Unity性能优化-C#编码模块
  • 项目名称:基于计算机视觉的夜间目标检测系统
  • 本地内网搭建网址需要外部网络连接怎么办?无公网ip实现https/http站点外网访问
  • 公网 IP 地址SSL证书实现 HTTPS 访问完全指南
  • Ubuntu下使用PyTurboJPEG加速图像编解码
  • 新能源知识库(46)EMS与协控装置