Verilog基础知识0(`define、parameter、localparam三者的区别及举例)
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; /*状态机状态:下一个状态*/
Verilog基础知识0(`define、parameter、localparam三者的区别及举例)的更多相关文章
- `define、parameter、localparam三者的区别
`define: 可以跨模块的定义,写在模块名称上面,在整个设计工程都有效.一旦'define指令被编译,其在整个编译过程中都有效.例如,通过另一个文件中的`define指令,定义的常量可以被其他文件 ...
- `define、parameter、localparam三者的区别(转)
`define: 可以跨模块的定义,写在模块名称上面,在整个设计工程都有效.一旦‘define指令被编译,其在整个编译过程中都有效.例如,通过另一个文件中的`define指令,定义的常量可以被其他文件 ...
- verilog 基础知识
mealy型状态机的下一状态和输出取决于当前状态和当前输入: moore型状态机的下一状态和输出取决于当前状态和当前输入,但其输出仅取决于现在的状态: 基本门原语的输出端口必须写在端口列表的前面,基本 ...
- UVM系统验证基础知识0(Questasim搭建第一个UVM环境)
版权声明:本文为Times_poem原创文章,转载请告知原博主.特别声明:本文在原文基础上做了简单修改以适应文中举例在questasim下的运行,敬请原博主谅解. 需求说明:UVM系统验证 内容 ...
- 以太网基础知识0(UDP和TCP有什么区别)
参考:http://zhidao.baidu.com/link?url=GSIg9_zFhWi6PHezalQveRwwUsU0as7k6MFd05r-cruLT1yDABARraHkuq8ohdIR ...
- Java基础 -- String,StringBuilder,StringBuffer三者的区别
结论 1-String,StringBuilder,StringBuffer 之间的区别主要是在两个方面,即运行速度和线程安全这两方面: 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:St ...
- Java基础知识Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是相对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- 网络基础知识-bps、Bps、pps的区别
在计算机科学中,bit是表示信息的最小单位,叫做二进制位:一般用0和1表示.Byte叫做字节,由8个位(8bit)组成一个字节(1Byte),用于表示计算机中的一个字符.bit(比特)与Byte(字节 ...
- 基础知识 Asp.Net MVC EF各版本区别
原文:https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC 2 ...
随机推荐
- org.springframework.data.redis.cache.RedisCacheManager
org.springframework.data.redis.cache.RedisCacheManager
- 浅谈 java 反射机制
一:Java反射概念 Java反射是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其mod ...
- 5.servlet 上传文件
一.maven依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>com ...
- Oracle EBS 取总账期间
--取期间 select GPS.EFFECTIVE_PERIOD_NUM, GPS.PERIOD_NAME from GL_PERIOD_STATUSES GPS AND (GPS.SET_OF_B ...
- .net网站转到出错页是如何实现的
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"><error s ...
- 转:HTTP Status 404(The requested resource is not available)的几种解决方法
原文地址 原因:servlet没有配置正确 ,查看web.xml确认正确,以及自己的请求路径正确 在IE中提示“404”错误有以下三种情况 1.未部署Web应用 2.URL输入错误 排错方法: 首先, ...
- ORA-06512 问题解决
SQL> select * from dba_role_privs where grantee='SUK'; GRANTEE GRANTED_ROLE ADMIN_OPTION DEFA ...
- 用path动画绘制水波纹
用path动画绘制水波纹 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 15/7/3. / ...
- 什么时候会执行viewDidLoad方法
什么时候会执行viewDidLoad方法 这个博文是为了解释,为何有时候,你给属性赋值,在viewDidLoad方法中却取不到值的原因. 第一种情况,presentViewController会执行被 ...
- VVeboImageView
VVeboImageView https://github.com/johnil/VVeboImageView A UIImageView to play gif with low memory. 一 ...