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

2023-10-30

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内有效的定义,可用于参数传递;
               如果在模块内部定义时无法进行参数传递,
               若在模块名后照下面这样写则可以进行传递
    举例:定义-> 

module video_in
           #(
          parameter MEM_DATA_BITS = 64,
          parameter INTERLACE     = 1      // 0
          )
          (
           input     clk,
           input     rst_n,
          
           output    burst_finsh
          );


 
       使用 -> 调用此模块的时候可以像端口信号传递一样进行参数传递
video_in
       #( .MEM_DATA_BITS ( 64 ),
          .INTERLACE     ( 1  )
        )
       u_video_in (
        .clk             (clk_50m),
        .rst_n          (rst_n),
        
        .burst_finsh (burst_finsh)
        );

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

    举例:
          localparam BURST_LEN               = 10'd64;     /*一次写操作数据长度 */
          
          localparam BURST_IDLE              = 3'd0;       /*状态机状态:空闲 */
          localparam BURST_ONE_LINE_START    = 3'd1;       /*状态机状态:视频数据一行写开始 */
          localparam BURSTING                = 3'd2;       /*状态机状态:正在处理一次ddr2写操作 */
          localparam BURST_END               = 3'd3;       /*状态机状态:一次ddr2写操作完成*/
          localparam BURST_ONE_LINE_END      = 3'd4;       /*状态机状态:视频数据一行写完成*/
          
          reg[2:0]  burst_state              = 3'd0;       /*状态机状态:当前状态 */
          reg[2:0]  burst_state_next         = 3'd0;       /*状态机状态:下一个状态*/
       
 来自:时间的诗

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Verilog 位更改位置

    假设我有一个寄存器reg 15 0 my reg 其中包含一个16位signed sample 如何找到第一位变化的位置 意思是 如果假设my reg 16 b0001011011010111 我怎么知道第一个变化是0 to 1 is at
  • Verilog HDL 循环语句错误:具有非常量循环条件的循环必须终止

    我对 Verilog 完全陌生 对于我在大学学习的课程 我必须很快了解它的很多内容 我正在摆弄我的 Altera DE2 板和 quartis2 并了解其细节 我正在尝试制作一个通过开关打开和关闭的计数器 到目前为止 计数器根据按键进行计数
  • 使用多路复用器进行双向移位

    编辑 仅通过屏幕截图 http prntscr com lv3uqw http prntscr com lv3yhf 和我下面的代码 您仍然可以在这里理解我的目标 以防万一您不想阅读文本 我正在尝试为通用移位寄存器编写 Verilog 代码
  • 如何使用 Verilog 宏模拟 $display?

    我想创建一个具有多个参数的宏 就像 display 一样 我的代码看起来像这样 但它不起作用 define format macro A write s sformatf A 这就是我调用 format macro 的方式 format m
  • 模加法器输出显示没有变化

    输出波形显示无变化sum dif burrow and out 即使增加延迟时间后 输出仍然没有变化 这应该像 mod 加法器一样工作 如加 10 和 2 并且 mod 3 给出输出零 CODE module Mod adder a b p
  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • Verilog HDL ?操作员

    什么是 用 Verilog 做什么 例如 以下命令是什么意思 input first din input 7 0 din output 127 0 parity reg 127 0 parity wire 7 0 feedback assi
  • 如何生成异步复位verilog总是阻塞凿子

    Chisel 始终生成敏感度列表中仅包含时钟的块 always posedge clk begin end 是否可以将模块配置为使用异步重置并生成这样的始终块 always posedge clk or posedge reset begi
  • 「HDLBits题解」Gates4

    本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益 题目链接 Gates4 HDLBits module top module input 3 0 in out
  • Verilog 错误:必须连接到结构网络表达式

    我收到错误 output or inout port Qout must be connected to a structural net expression 我评论了下面代码中发生错误的行 代码被修剪 压缩 我搜索了答案 似乎我无法将输
  • Verilog 中的“net”代表什么?

    我刚刚开始学习Verilog 据我了解 Verilog有net数据类型 什么是net代表 网络就是这样一种数据类型 您不使用它来存储值 它们代表物理连接 您可以将线路视为一种网络数据类型 你可以去网上看看更多here http www ee
  • 对象 <名称> 未声明

    这是我的代码 据我所知 LEDs被定义为 module sevenseg LEDs in output reg 6 0 LEDs input 3 0 in always in begin case in 0 LEDs 7 b1000000
  • 在 Verilog 设计中产生时钟故障

    我正在使用 Verilog 设计芯片 我有一个 3 位计数器 我希望当计数器处于第 8 次循环时 应该有一个时钟故障 之后就可以正常工作了 在 Verilog 设计中产生时钟故障的可能方法是什么 在时钟信号上注入毛刺的一种方法是使用forc
  • 为什么 Verilog 不被视为编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 教授在课堂上说学生不应该说他们学会了用Verilog 编程 他说 Verilog 之类的东西不是用来编程的 而是用来设计的 那么 Verilog
  • VIM 高亮匹配开始/结束

    我正在尝试找到一个插件 它将突出显示与 Verilog 匹配的开始 结束语句 VIM 可以使用花括号 方括号 但不能使用它的开始 结束 我希望 VIM 突出显示正确的开始到正确的结束 在我看来 最好的选择是使用 matchit 该脚本是 v
  • reg 声明中的位顺序

    如果我需要使用 4 个 8 位数字 我会声明以下 reg reg 7 0 numbers 3 0 我对第一个和第二个声明 7 0 和 3 0 之间的区别感到很困惑 他们应该按什么顺序来 第一个是保留数字的大小 而第二个是保留数字的数量 还是
  • 为什么我们在FGPA / VHDL / VIVADO中使用REG?

    我正在使用 Xilinx 的 vivado 在 verilog 中进行编程 我想知道为什么我们使用某些输出reg 例如reg 3 0 encoder output我们使用它是因为我们的 16 到 4 编码器有 4 个输出 对吧 我假设我们使
  • Verilog:如何取绝对值

    在 verilog 中 我有一个二进制值数组 如何取减去值的绝对值 Verilog代码 module aaa clk input clk reg 7 0 a 1 9 reg 7 0 s 1 9 always posedge clk begi
  • 从测试台访问子模块中的输入和输出

    我的被 测设备 DUT 有许多子模块 我想测试其中的一些 我的测试夹具将是我的项目的顶层 比 DUT 高一级 并且由于我似乎只能访问下一层模块的输入和输出 所以我只能访问顶层的输入和输出被测设备 我希望能够从测试夹具下方的两层或多层模块访问
  • 修改verilog模式缩进

    我试图让 verilog 模式使用 2 个空格缩进除 decls 和always 之外的所有内容 这是我添加到 emacs 中的内容 define are not indented setq veril

随机推荐

  • BasicDao的使用

    本次博客带领大家学习BasicDao的使用 BasicDao的基本说明 DAO data access object数据访问对象 这样的通用类 称为BasicDao 是专门和数据库交互的 即完成对数据库 表 的crud操作 在BasicDa
  • tf2梯度计算为None的情况

    今天搭建用tf2搭建WGAN网络 自己来写梯度函数 在使用tf GradientTape 来求梯度时 发现求出结果为None 一般来说结果为None 表示输入变量之间没有构成可求导的关系 同时也需要理解tf GradientTape 求导的
  • 毕业设计-基于机器视觉的嵌入式烟雾识别系统- OpenCV

    目录 前言 课题背景和意义 实现技术思路 一 相关技术简介 二 图像视频识别算法研究 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越
  • iOS开发,定位当前所在地理位置偏移,坐标转换

    我的blog地址 http blog csdn net h qiao 欢迎访问 在开发中经常会遇到定位当前位置 而且不需要有地图之类的一系列功能 一般都会用CLLocationManger来定位 但是会发现定位出来的经纬度地理反编码之后和自
  • 新浪股票接口获取历史数据

    这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用 因为新浪没有公开关于其接口的官方文档 所以通过各种百度差了很多关于新浪股票接口的使用 不过大家基本都是转载或者直接复制 对于实时数据的获取讲的很详细 但是缺少获取历史数据的方法
  • Oracle 数据库误truncate table恢复过程

    北京某国企客户 Oracle 11g R2 数据库误truncate table CM CHECK ITEM HIS 表数据丢失 业务查询到该表时报错 此时发现数据库的备份不能用 表数据无法查询 客户Oracle 11g R2 数据库误tr
  • Map对象和普通对象的7个区别

    前言 普通对象和 ES6 的新对象 Map 都可以存储键值对 但是 它们之间有什么区别 今天来聊一聊 1 初始化与使用 普通对象可以直接使用字面量进行初始化 而 Map 需要 Map 构造函数进行初始化 如果想要有初始值 则需要传递一个数组
  • shell之I/O重定向

    管道 管道符 cat和more命令 重定向 文件标识符 I O重定向符号及其用法 exec命令 代码块重定向 命令行处理 命令行处理流程 eval命令 管道 管道是Linux编程中最常用的技术之一 Shell编程中竖杠符号 command1
  • python 时间表_Python计算出给定的时间段的具体日期列表-大全

    由于工作中经常用到关于用户自定义时间 来进行后台数据的查询 特意整理了一下工作中常用的到的关于时间列表的一个函数 可以计算出某一年中的具体哪个周的开始和结束日期 某个周的具体日期列表 2015年38周 自定义时间段的具体日期列表 20150
  • 架构内容框架建立在标准内

    内容元模型 架构内容框架建立在标准内容元模型的基础上 标准内容元模型对架构中存在的所有类型的构建块进行了定义 内容元模型的一个高层概览图如下图所示 这个元模型图示了可以如何去描述这些构建块以及它们之间如何相关联 内容元模型概览 在创建和管理
  • PCB设计-Allegro软件入门系列-扇出

    在cadence布线时 对于BGA封装的器件 管脚通常较密且管脚一般较多 且在布线时往往需要在管脚旁边先打过孔再在内层走线 往往用手动的方法一个一个过孔添加的方法是速度很慢 而且十分容易出错而且容易造成疲惫 所以软件已经现在有一个Fanou
  • ue4删除静态光照数据

    世界设置 lightmass下方光照贴图 勾选force no precomputed lighting后构建 可以清除之前的静态光照贴图
  • Qt5.9Creator中自定义信号SIGNAL和在另一个类中用该信号触发槽函数用法

    本文章主要总结在Qt5 9Creator中自定义一个信号 然后在另一个类里面用该信号触发槽函数的实例 具体的实例是在类ClassA中自定义一个信号Signal1 然后在MAinWindows类中用该信号Signal1来触发槽函数SlotFu
  • npm---.npmrc

    一 npm运行时配置文件 npmrc 作用 设置package json中的依赖包的安装来源 不设置可能会因为网络问题无法下载依赖 二 配置 npmrc 设置镜像 普通包来源 registry https registry npmmirro
  • STL学习(21):容器适配器

    容器适配器不是二级容器 它可以在一级容器的基础上再次封装 如 queue
  • 写给自己:SQLyog连接数据库出现错误1045的参考解决方法

    写给自己 SQLyog连接数据库出现错误1045的参考解决方法 在多次遇到错误1045并查找了若干篇博客后 总结出自己在解决这个问题时常见的步骤 和个人的一些习惯 总结下来方便查找 一般过程 检查my ini文件配置 在mysql安装位置找
  • tp3.2.3php环境要求,在linux环境下配置thinkphp3.2.3框架运行环境的一些疑惑杂谈

    在linux环境下配置thinkphp3 2 3框架运行环境 nginx1 4 6 php5 5 mysql5 5 36 的一些疑惑杂谈 首先是安装phpstudy phpStudy Linux版 Win版同步上线 支持Apache Ngi
  • SSM+ 基于Java的花艺商城系统设计与开发 毕业设计-附源码171536

    摘 要 本论文主要论述了如何使用JAVA语言开发一个花艺商城系统 本系统将严格按照软件开发流程进行各个阶段的工作 采用B S架构 面向对象编程思想进行项目开发 在引言中 作者将论述花艺商城系统的当前背景以及系统开发的目的 后续章节将严格按照
  • STM32单片机OLED贪吃蛇游戏记分计时

    实践制作DIY GC00165 OLED贪吃蛇游戏 一 功能说明 基于STM32单片机设计 OLED贪吃蛇游戏 二 功能说明 STM32F103C系列最小系统板 0 96寸OLED显示器 上 下 左 右4个按键 1 通过OLED配合按键实现
  • Verilog基础知识0(`define、parameter、localparam三者的区别及举例)

    1 概述 define 作用 gt 常用于定义常量可以跨模块 跨文件 范围 gt 整个工程 parameter 作用 gt 常用于模块间参数传递 范围 gt 本module内有效的定义 localparam 作用 gt 常用于状态机的参数定