verilog中端口定义方式以及如何使用变量
一、module端口定义方式
目前有两种方式能够对module端口进行定义,
第一种是我目前使用比较多的,把I/O说明写在端口声明语句里,方式A:
1 module block(
2 input a,b,
3 output c,d
4 );
5
6 assign c=a|b;
7 assign d=a&b;
8 endmodule
第二种方式之前使用的较少,但是最近看到的一些代码都是这样写的,方式B:
1 module block(a,b,c,d);
2 input a,b;
3 output c,d;
4
5 assign c=a|b;
6 assign d=a&b;
7 endmodule
两种方式都可行,主要看个人习惯。
二、变量使用
verilog中比较重要的变量类型有三种,分别是wire型,reg型,memory型,简单说一下我认为重要的点。
1.wire型:
常用来表示用以assign关键字指定的组合逻辑信号,模块中输入、输出信号类型不进行reg定义的话默认定义为wire型。感觉一般在testbech中使用较多,比如针对输出信号:
module testbench();
reg [31:0]in;
wire [5:0]out;
...... endmodule
2.reg型:
即寄存器类型,通常用来表示“always”模块内的指定信号,常代表触发器。在“always”模块内被赋值的每一个信号都必须定义成reg型。
值得注意的是reg会与output一起使用,使输出信号传给输出端口,例如:
module counter(clk,rst_n,cnt);
input clk,rst_n;
output [3:0] cnt;
reg [3:0] temp; always@(posedge clk or negedge rst_n)begin
if(!rst_n)
temp<=0;
else
temp<=temp+1;
end assign cnt=temp; endmodule
这里是通过使用reg型变量temp来存储数据最后通过assign传输给cnt输出,temp属于内部变量。
也可以用output reg来达到同样的效果:
module counter(clk,rst_n,cnt);
input clk,rst_n;
output reg [3:0] cnt; always@(posedge clk or negedge rst_n)begin
if(!rst_n)
cnt<=0;
else
cnt<=cnt+1;
end endmodule
在这里将cnt当作reg型变量,在always块中直接赋值。
3.memory型:
可以当作verilog中的数组,格式如下:
reg[n-1:0] 存储器名[m-1:0];
或 reg[n-1:0] 存储器名[m:1];
即该存储器有m个n位的存储器。
举例说明:
reg[7:0] mema [255:0];
即定义一个名为mema的存储器,该存储器有256个8位的存储器,该存储器的地址范围是0-255。
值得注意的是reg型和memory型数据的区别,例如:
reg [n-1:0] a;
reg a [n-1:0];
前者是reg型,表示一个n位的寄存器;后者是memory型,表示一个由n个1位寄存器构成的存储器组。
注:本文为笔者的学习笔记,为个人学习复习所使用,水平有限,如有错误请谅解。
verilog中端口定义方式以及如何使用变量的更多相关文章
- Verilog中端口的连接规则
摘自于(15条消息) Verilog中端口应该设置为wire形还是reg形_CLL_caicai的博客-CSDN博客, 以及(15条消息) Verilog端口连接规则_「已注销」的博客-CSDN博客_ ...
- C语言中数组定义方式
<1>前言 大家首先来思考一个问题,若是我们想要定义两个变量,求这两个数的平均数,该怎么求呢? 例如:int a = 10,b = 20 int average = (a + b) / 2 ...
- verilog中初值定义
在利用verilog进行开发时,往往需要对某些寄存器进行赋初值,下面根据笔者在设计中遇到的情况进行分析. 例如下面是实现流水灯(4个led),代码如下: module ledrun ( input ...
- UE4 中Struct Emum 类型的定义方式 笔记
UE4 基础,但是不经常用总是忘记,做个笔记加深记忆: 图方便就随便贴一个项目中的STRUCT和 Enum 的.h 文件 Note:虽然USTRUCT可以定义函数,但是不能加UFUNCTION 标签喔 ...
- avalon1.5+中组件的定义方式
avalon在1.5之后引入新的组件定义和使用方式,其总的宗旨是为了使定义和使用组件更加简单 组件库的概念 首先,需要注意的是,引入了组件库的概念(也可以理解为namespace),之后定义的组件必须 ...
- verilog中参数传递与参数定义中#的作用(二)
一.module内部有效的定义 用parameter来定义一个标志符代表一个常量,称作符号常量,他可以提高程序的可读性和可维护性.parameter是参数型数据的关键字,在每一个赋值语句的右边都必须是 ...
- Java中数组的定义方式
数组定义方式一 动态方式(指定数组的长度) 格式: 数组存储的数据类型[]数组名字 = new 数组存储的数据类型[长度]; [] : 表示数组. 数组名字:为定义的数组起个变量名,满足标识符规范,可 ...
- Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析
Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML ...
- 六十四、SAP中的内表的9种定义方式
一.内表一共有9种定义方式,如下: 二.执行如下 *&--------------------------------------------------------------------- ...
- Verilog中使用'include实现参数化设计
前段时间在FPGA上用Verilog写了一个多端口以太网的数据分发模块,因为每个网口需要独立的MAC地址和IP地址,为了便于后期修改,在设计中使用parameter来定义这些地址和数据总线的位宽等常量 ...
随机推荐
- vue-helper 导致找到2个函数定义,跳转需要多点一下,禁用vue-helper即可
vue-helper 导致找到2个函数定义,跳转需要多点一下,禁用vue-helper即可
- 2.4g无线私有协议透传方案特色梳理
为什么? 在2.4G这个频段,的确有待你拥挤,有提供高速上网的wifi,有提供短距离数据和云音乐传输的bt,还要各种xx的东西.在wifi和bt无法覆盖的领域,又出来一个2.4G私有协议传输芯片,这 ...
- Linux 串口驱动实例简单分析(x86 8250驱动(16550A),TIOCMGET, TIOCMSET, RTS)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 喜讯!瑞云科技被授予“海上扬帆”5G融合应用专委会成员单位
2022年7月19日,5G应用"海上扬帆"行动计划云启航大会暨"海上扬帆"融合应用专委会成立大会在沪成功举办. 受上海信通院工创中心邀请和信任,深圳市瑞云科技有 ...
- 07.Java类加载问题
目录介绍 7.0.0.1 Java内存模型里包含什么?程序计数器的作用是什么?常量池的作用是什么? 7.0.0.2 什么是类加载器?类加载器工作机制是什么?类加载器种类?什么是双亲委派机制? 7.0. ...
- 三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析
三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析 OBJ格式是一种常用的三维模型文件格式,它存储了三维模型的几何信息和纹理坐标等相关属性.在大规模场景中加载和渲染三维模型时,OBJ格式的 ...
- 记录--微信小程序获取用户信息的最新方法记录
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 微信小程序获取用户信息的几种方式 以下三种方式都无法获取到用户的openID 1. 开放组件获取用户信息<open-data> ...
- 香港Azure/.NET俱乐部第一次聚会纪实 - WPF在金融业的商业价值
香港Azure/.NET俱乐部第一次聚会于2019年12月29日在香港上环地铁站星巴克举行. 香港Azure/.NET俱乐部的定位是:以商业价值为导向. 基于这个定位,可以推导出如下准则: 面向大型企 ...
- objective-c之Class底层结构探索
isa 走位图 在讲 OC->Class 底层类结构之前,先看下下面这张图: 通过isa走位图 得出的结论是: 1,类,父类,元类都包含了 isa, superclass 2,对象isa指向类对 ...
- 2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个
2024-03-27:用go语言,多维费用背包. 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 ...