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来定义这些地址和数据总线的位宽等常量 ...
随机推荐
- 酷呆桌面 CooDesker 桌面整理工具 - 软件推荐
酷呆桌面 CooDesker 桌面整理工具 - 软件推荐 推荐理由 满足了我对桌面映射到某一目录的需求,这样桌面就真的干净了 免费且没有广告 可进入目录继续延展,双击空白地方返回上一层,非常方便 5M ...
- 什么是k8s中的sidecar模式
在Kubernetes中,Sidecar模式是一种将辅助容器与主应用程序容器一起部署在同一个Pod中的设计模式.这种模式的目的是将辅助功能与主应用程序解耦,并提供独立发布.能力重用以及共享资源和网络的 ...
- manjaro蓝牙链接不上或者连接上了没有声音
查看这些软件宝有没有安装上:sudo pacman -S bluez bluez-utils pulseaudio-bluetooth pavucontrol pulseaudio-alsa puls ...
- FastWiki v0.1.0发布!新增超多功能
FastWiki 发布 v0.1.0 https://github.com/239573049/fast-wiki/releases/tag/v0.1.0 更新日志 兼容OpenAI接口格式 删除Bl ...
- ld: symbol(s) not found for architecture x86_64问题解决
一 写在前面的话: 音频算法仿真过程中,本来是一个跑的好好地程序,突然间在mac下就报错了,出现的错误是: ld: symbol(s) not found for architecture x86_6 ...
- pip 安装requirements.txt 的问题
用新环境 在进行pip 安装的时候, 如果出现不进行安装 ,但是不报错就是满足条件,这个时候重新起一个shell,然后进行pip的安装.
- 逆向通达信Level-2 续三 (KTL python控制台动态调试)
python控制台逆向分析. python 跟 js 自如切换 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版) 逆向通达信Level-2 续十 (trace脱壳) 逆向通达信Lev ...
- 掌握 Kubernetes 故障排除技巧:kubectl命令的基本指南
Kubernetes 彻底改变了容器编排,简化了应用程序的管理和扩展.然而,与任何复杂系统一样,Kubernetes 集群也会遇到问题,需要及时解决才能保持最佳性能和可靠性.在本文中,我们将深入探讨必 ...
- NJUPT自控第一次积分赛的小总结(一)题目感受
快开学了事情真的好多啊 -_- 忙完积分赛就赶紧要去复习期末了...线代还是依托答辩啥都不懂 先看题目吧,RT,我们队(我)选择的是第一题(仅仅是因为很简单罢啦) 一开始看题目,心想不就调调pid吗, ...
- 记录--微信小程序,uniapp,H5端发送,显示emoji表情
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 小伙伴们,在开发中有没有遇到过发布帖子或者实时聊天需要发送到一些emoji表情的. 但是每当我们直接将emoji表情提交到后台的接口又会报 ...