原文地址:https://blog.csdn.net/times_poem/article/details/51371940

1、概述

`define:作用 -> 常用于定义常量可以跨模块、跨文件;

范围 -> 整个工程;

parameter:     作用 -> 常用于模块间参数传递;

范围 -> 本module内有效的定义;

localparam       作用 -> 常用于状态机的参数定义;

范围 -> 本module内有效的定义,不可用于参数传递;

localparam cannot be used within the module port parameter list.

2、应用举例

(1) `define
    概念:可以跨模块的定义,写在模块名称上面,在整个设计工程都有效。
               一旦`define指令被编译,其在整个编译过程中都有效。例如,通
               过另一个文件中的`define指令,定义的常量可以被其他文件调用,
               直到遇到 `undef;
    举例:定义 `define UART_CNT 10'd1024
               使用 `UART_CNT
    
(2) parameter
    概念:本module内有效的定义,可用于参数传递;
               如果在模块内部定义时无法进行参数传递,
               若在模块名后照下面这样写则可以进行传递
    举例:定义->

[plain] view plaincopy
  1. module video_in
  2. #(
  3. parameter MEM_DATA_BITS = 64,
  4. parameter INTERLACE     = 1      // 0
  5. )
  6. (
  7. input     clk,
  8. input     rst_n,
  9. output    burst_finsh
  10. );

使用 -> 调用此模块的时候可以像端口信号传递一样进行参数传递

[plain] view plaincopy
  1. video_in
  2. #( .MEM_DATA_BITS ( 64 ),
  3. .INTERLACE     ( 1  )
  4. )
  5. u_video_in (
  6. .clk             (clk_50m),
  7. .rst_n          (rst_n),
  8. .burst_finsh (burst_finsh)
  9. );

(3) localparam:
    概念:本module内有效的定义,不可用于参数传递;
               localparamcannot be used within the module port parameter list.
               一般情况下,状态机的参数都是用localparam的。

举例:

[plain] view plaincopy
  1. localparam BURST_LEN               = 10'd64;     /*一次写操作数据长度 */
  2. localparam BURST_IDLE              = 3'd0;       /*状态机状态:空闲 */
  3. localparam BURST_ONE_LINE_START    = 3'd1;       /*状态机状态:视频数据一行写开始 */
  4. localparam BURSTING                = 3'd2;       /*状态机状态:正在处理一次ddr2写操作 */
  5. localparam BURST_END               = 3'd3;       /*状态机状态:一次ddr2写操作完成*/
  6. localparam BURST_ONE_LINE_END      = 3'd4;       /*状态机状态:视频数据一行写完成*/
  7. reg[2:0]  burst_state              = 3'd0;       /*状态机状态:当前状态 */
  8. reg[2:0]  burst_state_next         = 3'd0;       /*状态机状态:下一个状态*/

转载于:https://www.cnblogs.com/yhsy1002/p/9230862.html

Verilog基础知识0(`define、parameter、localparam三者的区别及举例)相关推荐

  1. Verilog基础知识总结02

    Verilog基础知识总结02 1.简述Verilog如何建模 数字电路有两种基本要素:线(器件管脚之间的物理连线:wire)和器件(模块:module). Verilog建模就是用HDL语言把数字电 ...

  2. Verilog基础知识(数值表示总结,signed,原码,反码,补码)

    以前虽然是用过verilog,但是只使用了其中最常见wire,reg类型数据,并且是无符号的,因为是及处理过程很多数据就是无符号的.但是想进一步拓展无符号数,或者其底层的补码形式存储与运算方式,就需要 ...

  3. 计算机0基础知识,计算机基础知识0课件.ppt

    计算机基础知识0课件 第 一 篇;第一章 计算机系统概述; 1.1.2 计算机的发展; 1.1.3 计算机系统的组成; (2)计算机软件;1.3 微型计算机系统; (2)存储器; (3)输入/输出设备 ...

  4. verilog基础—规范化参数定义parameter

    引言 采用parameter可以让程序变得可维护性,所以在verlog中,尽量在有数据可能发生变动的地方,设置为parameter,以免以后又从头开始更改. parameter经常用于定义数据位宽,定 ...

  5. 深度学习基础(基础知识0)

    深度学习各种网络其实基础就是各种基础知识累积,今天主要想把这三个讲清楚:梯度下降.神经网络.反向传播算法. 一.神经网络(一切的基石) 工智能的底层模型是"神经网络"(neural ...

  6. Verilog 基础知识

    Verilog 的逻辑值 逻辑 0:表示低电平,也就是对应我们电路的 GND: 逻辑 1:表示高电平,也就是对应我们电路的 VCC: 逻辑 X:表示未知,有可能是高电平,也有可能是低电平: 逻辑 Z: ...

  7. Verilog基础知识

    I/O端口类型: input             wire型 output           wire/reg型 verilog可综合语句 assign,always,其中initial 语句不 ...

  8. C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策

    一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...

  9. gddr6速率_显卡GDDR6显存基础知识:显存GDDR6和GDDR5区别对比科普篇

    NVIDIA为我们发布了全新一代RTX20系显卡,不仅为我们带来了光线追踪.DLSS等全新技术,还搭配了全新一代GDDR6显存,而在10系列只是GDDR5或GDDR5X显存.今天装机之家帮大家科普一下 ...

  10. Verilog基础知识(异步FIFO)

    本文主要内容来自Clifford E. Cummings的 Simulation and Synthesis Techniques for Asynchronous FIFO Design 这篇文章的 ...

最新文章

  1. 1356服务器性能,Intel发布4款LGA1356插口服务器处理器
  2. html文档中的元数据,javascript – 如何使用pdf.js从pdf文档中获取元数据
  3. 设备管理学习之概念篇
  4. Hybris产品主数据的价格维护
  5. [转载]ArcGIS SERVER 9.3如何清除REST缓存
  6. “JavaSwing” ——简单使用
  7. 破产的圣文森特医院,如何利用大数据寻求解救方案?
  8. Mozilla 修复跨平台加密库 NSS 中的严重漏洞
  9. 中国移动的新自由主义精神
  10. 用python画画简单代码_Python3使用PyQt5制作简单的画板/手写板实例
  11. OpenCV学习篇2:viz模块简单用法
  12. 秋招提前批已来,万字长文教你如何增加面试大厂的成功率
  13. ubuntu上安装视频插件
  14. C#初学者教程系列1:什么是.NET Framework?
  15. SQL Server个人笔记(1)
  16. Unity(二)示例项目(1):FPS游戏—认识基本工具
  17. 思岚中小型机器人底盘Apollo怎么样?
  18. Jenkins设置Window编译环境从节点
  19. Kubernetes 纳管节点卡住导致加入集群失败问题解决
  20. TVS二极管SMBJ18CA 丝印标识BET SMB封装 1500W功率

热门文章

  1. docker基础3--容器的基本操作
  2. mysql 5.1 1067,mysql服务1067错误多种解决方案汇总
  3. 浙江理工大学机械复试c语言真题,2016年浙江理工大学机械与自动控制学院计算机应用基础)之C程序设计复试笔试最后押题五套卷...
  4. python查找字符串出现次数_python实现从字符串中找出字符1的位置以及个数的方法...
  5. TensorFlow共享变量
  6. linux 软件应用
  7. mysql 动态游标 , 实际上不要使用, 因为两个人同时执行会删除了其中一个人的数据...
  8. [英中双语] Pragmatic Software Development Tips 务实的软件开发提示
  9. 4G江湖大战全面开启 移动4G用户数突破9000万
  10. Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群