可编程逻辑器件子模块调用的两种方式/端口模式/模块调用时的端口模式/reg/wire

经纬度转换为UTM坐标 UTM(通用横向墨卡托投影): 是一种以米为单位的坐标系统,用于地图和GPS导航。将地球划分为60个纵向的区域。每个区域宽6度,从赤道开始往南北两级方向划分。每个区域都有一个特定的字母。 阅读详情

端口模式规则

wire类型:

  • wire类型通常用于描述连续赋值的信号,如组合逻辑的输出。
  • 在模块调用时,如果端口连接的是组合逻辑的输出或者是一个需要持续驱动的信号(如输入端口),则通常应声明为wire类型。
  • 输入端口(input)和双向端口(inout)在模块内部必须声明为wire类型,因为它们反映了外部信号的变化,并且不能保存这些信号的值

reg类型:

  • reg类型用于描述过程赋值语句(如initial和always块)中的信号。
  • 在模块调用时,如果端口连接的是时序逻辑的输出(如触发器的输出),或者是一个需要在过程块中赋值的信号,则通常应声明为reg类型。
  • 输出端口(output)在模块内部可以是wire或reg类型,这取决于该端口是否需要保存数值。如果需要保存数值(如在时序逻辑中),则应声明为reg类型。

子模块调用的两种方式:

直接端口映射:

        在这种方式中,子模块的端口直接映射到父模块的相应信号上。端口类型(wire或reg)在父模块和子模块之间需要保持一致,或者至少需要确保信号在连接时能够正确传递。

参数化调用:

        在这种方式中,子模块被例化为一个实例,并通过参数传递来改变子模块中的某些参数值。

参数化调用不影响端口类型的规则。端口的类型仍然需要根据信号的用途和连接方式来确定。

注意

在模块调用时,需要确保端口名称、类型和位宽在父模块和子模块之间保持一致。

如果子模块的端口在父模块中被用作不同的类型(例如,将子模块的output reg类型端口连接到父模块的input wire类型信号),则可能需要通过额外的逻辑来转换信号类型。

主模块的output不能加reg,只在子模块的output 加reg。

关于子模块调用,有两种调用方式。

可以参照这个例子,搬过来了:(在下面只会呜呜呜 前辈FPGA中的output or inout port xxx must be connected to a structural net expression错误-优快云博客icon-default.png?t=O83Ahttps://blog.youkuaiyun.com/m0_57079595/article/details/123858285

第一种是位置对应,如:bcd accbcd(in8,out71,ou72,out73),如上图所示。

第二种是信号名对应方式,此时不必按顺序。如:accbcd(.in8( in8 ),.out71(out72),.out72(out71),.out73(out73))。.xxx对应的是子模块中的变量,(xxx)括号内对应的是主模块的参数。

对于简单的代码来说,子模块和主模块写在同一Verilog HDL file内即可

C#与欧姆龙PLC 通信——fins udp协议 该调试助手专门为了帮助大家学习以及测试Fins-Udp通信,下面进行详细介绍。 阅读详情

相关推荐

FreeSWITCH安装指南:三种部署方式解析与实践对比

Freeswitch部署方案比较:Yum安装简单快捷但灵活性差;源码安装可定制性强,适合深度开发和性能优化;Docker部署环境一致性好但网络配置复杂。生产环境推荐源码安装以获得最佳性能和定制能力,而Docker适合快速部署和扩展。不同方案各有利弊,需根据具体需求选择。

c_zyer的博客 2140

wire和reg的区别

例化的输出必须为wire

qq_42747105的博客 3559

Foxmail 7.2.25以下版本XSS漏洞实战复现:手把手教你如何构造恶意邮件(含防御方案)

本文深入解析Foxmail 7.2.25以下版本的XSS漏洞(CNVD-2025-06036),详细展示如何构造恶意邮件进行跨站脚本攻击,并提供从客户端升级到企业级防护的多层次防御方案,帮助用户有效防范安全风险。

view3的博客 163

VL9 使用子模块实现三输入数的大小比较

VL9 使用子模块实现三输入数的大小比较

AiteBei的博客 246

PowerBuilder 9 遗留系统逆向实战:3款反编译工具对比与关键DLL破解

本文深入探讨了PowerBuilder 9遗留系统的逆向工程实战,对比分析了PBKiller、PB DeCompiler和Shudepb三款反编译工具的核心功能与适用场景,并详细解析了关键DLL破解技术。通过IDA和OllyDbg等工具的应用,提供了从静态解构到动态追踪的完整逆向方法论,帮助开发者有效维护老旧PB系统。

cucanqi9387的博客 1379

【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)

参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed

beidou111的博客 1532

FPGA设计中端口定义类型wire or reg自己的一些理解

在初学FPGA时,对于模块输入/输出端口类型定义,以及在top_down模块调用、testbench例化时常常会遇到端口类型定义模糊的情况,是reg型还是wire型?在verilog中的端口具有以下三种了类型:input、output、和inout。所有的端口隐含地声明为wire类型如果输出类型的端口需要保存数值,则必须将其显式的声明为reg数据类型。input和inout类型的端口声明必须位wire型。

jkgkj的博客 3629

用LT1166+MOS管打造实验室级恒流源:闭环反馈与推挽驱动的深度调优

本文详细介绍了基于LT1166电流模式控制器与MOS管推挽架构的实验室级恒流源设计方法。通过闭环反馈调优和动态响应优化,实现带宽达100kHz、纹波低于0.1%的高性能恒流输出,适用于精密仪器校准和半导体测试等场景。重点解析了系统架构设计、MOS管选型策略以及频率响应测试等关键技术要点。

weixin_29290379的博客 203

reg易错小知识点

regregregregregregregassignregreg下面这几种情况下 wire 和 reg 可以通用:assign。

weixin_52356334的博客 410

IPv6之001-IPv6是什么

技术本质:IPv6(Internet Protocol version 6)是互联网工程任务组(IETF)设计的网络层核心协议,用于替代IPv4核心使命:解决IPv4地址枯竭问题,重构互联网基础架构,支撑万物互联时代革命性特征fill:#333;color:#333;color:#333;fill:none;IPv6128位地址空间无状态自动配置原生IPsec加密协议头部精简。

老韩的Linux云计算架构师进阶之路 1391

SAP BOM反查(可追溯值至顶级)

功能介绍:BOM层数在7层以内的(含7层)的物料,执行后都可以查询到顶级的BOM,逻辑很简单,后期如BOM层数增加,可自行增加查询逻辑。 *&---------------------------------------------------------------------* *& Report ZBOM_CHECK *&---------------------...

SAP阿狸 6060

数字逻辑电路设计例化模块输入输出,何时用reg,何时用wire?

wire ,reg型数据在例化模块时候怎么用?

kofiliu2018的博客 4824

Python 爬虫实战:分析 AJAX 请求抓取搜狐新闻数据

在Web 2.0时代,大量网站采用AJAX技术实现动态内容加载。传统基于静态HTML解析的爬虫技术(如BeautifulSoup)已无法应对这类场景。本文将以搜狐新闻为实战目标,详解如何通过分析AJAX请求接口实现动态新闻数据的精准抓取。

yansideyucsdn的博客 1750

【FPGA知识点】FPGA的输入输出列表

FPGA的输入输出FPGA的输入输出关于输入输出理解 FPGA的输入输出 FPGA里面的输入输出都是以FPGA的芯片为第一人称来讲的。通俗讲就是芯片内部往外输出信号就是output,外面的信号往芯片内部输入就是input。 举个例子,你的主时钟50MHZ,是在芯片外面的晶振把信号输入进来,所以clk就是input。外围的ic器件的分析都是一样的。需要LED灯点亮,就需要从芯片内部向外部的LED灯发送控制信号,所以led就是output。 关于输入输出 Verilog HDL语言中端口有3种传输方向:inpu

zhaogoudan的博客 5353

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

虚拟时钟(Virtual clock)

虚拟时钟(Virtual clock) 通常RTL设计要求对芯片/module的输入信号进行reg_in打拍处理,对芯片/module的输出也要求做reg_out打拍处理,这是良好的代码习惯,为时序收敛留下足够裕量,也避免顶层例化综合后的子模块时出现模块间IO时序不满足的情况。综合阶段可根据设计工艺需求,设置IO的input/output为时钟周期的40%-60%。 但是,芯片timing sign-off阶段会偶尔遇到IO时序少量违例,比如,输入reg的hold违例、输出reg的setup违例,本质

u011075954的专栏 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

verilog基础语法,wire,reg,input,output,inout

输入输出是模块的端口,寄存器是数据存储介质,线用于把各个电路关联起来,形成一个数据流通通道,进行形成具有具体功能的电路模块。线是信息关联与传递的介质,也是可以称为信息流通的管道。在FPGA中的基本定义为wire,reg,input,output,inout。只有正确的认识到这些基本概念,才能进行正确的开发。

人工智能笔记 6556

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Verilog 中定义信号为什么要区分 wire 和 reg 两种类型?

本质上为什么要有reg和wire,因为电路需要有记忆性的单元(比如FF)以及无记忆性的单元(比如导线)。 reg a ; reg b; always@ (*) begin if () a = tmp ; b = a ; end 在这段代码中a是不会综合出寄存器的,而b却会,原因在于a是中间变量,就是一条线,所以综合出来的不是寄存器,而是一条线。而在condtion不

justgetone的博客 1万+

为什么一般输入是wire类型,而输出是reg类型?

在设计中,输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是wire型。而输出信号则由你自己来决定是寄存器输出还是组合逻辑输出,wire型、reg型都可以。但一般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能力也较好。 为什么在verilog中要定义wire? 有几种情况变量需要定义成wire。第一。as...

aoan4171的博客 5368

verilog基础——模块端口 使用方法总结

版权声明:本文为博主原创文章,未经博主允许不得转载。    https://blog.youkuaiyun.com/dreamdonghui/article/details/76343371 模块 模块的定义以关键字module开始,模块名、端口列表、端口声明和可选的参数声明必须出现在其他部分的前面,endmodule语句必须为模块的最后一条语句。端口是模块与外部环境交互的通道,只有在模块有端口的情况下才需...

kebu12345678的博客 6737

关于Verilog的output,应该是reg型,还是wire型?

在Verilog编程中常常遇到输出端口的类型问题,究竟是输出wire类型和reg类型,常常困扰着大家,针对这两种类型,两种类型综合出来的电路完全不同,wire是线网型,reg是寄存器类型。 区分的方法可以这样简单粗暴的来区分: 如果output作为过程赋值语句的左值,则应该用reg类型;如果output作为连续赋值语句的左值,则应该用wire类型。 ...

weixin_44162637的博客 1万+

FPGA中wire与reg类型的区别

wire表示直通,即只要输入有变化,输出马上无条件地反映;reg表示一定要有触发,输出才会反映输入。         不指定就默认为1位wire类型。专门指定出wire类型,可能是多位或为使程序易读。wire只能被assign连续赋值,reg只能在initial和always中赋

1万+

输出端口设为reg与wire的区别

之前一直没在意这方面的细节,一天在做时序调整时发现输出端口设为wire与reg有很大的区别,现在准备记录下来,当做一点积累吧!

yang2011079080010的专栏 1674

Verilog中reg和wire数据类型的确定

Verilog语言中最常用的数据类型不外乎是wire、reg和parameter了。经常有同学不能够确定自己添加的数据该用reg型,还是wire型,本文帮大家梳理清晰。 “输入端口:从内部来讲,输入端口必须为wire型,从模块外部来看,输入端口可以连接到wire型或者是reg型的变量;” “输出端口:从内部来讲,输出端口可以是wire型,或reg型,从外部来看,输出端口必须接到wire型的变量。”

化十の产研思考 2171

verilog HDL中wire和reg类型的区别

本文参考 夜煞优快云 的优快云 博客 ,有改动 全文地址请点击:https://blog.youkuaiyun.com/u010549444/article/details/50993274?utm_source=copy 基本概念的差别 wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,默认初始值是z。 reg型表示...

qq_40793742的博客 5万+

verilog语言中wire型变量和reg 型变量的区别

参考:https://blog.youkuaiyun.com/u013025203/article/details/53410715 有关多路选择器的一篇参考:http://www.elecfans.com/d/668818.html wire与reg类型的区别: wire型数据常用来表示以assign关键字指定的组合逻辑信号。模块的输入输出端口类型都默认为wire型。默认初始值是z。 reg型表示的...

Chauncey_wu的博客 2万+

verilog中wire和reg的区别,什么时候用wire?什么时候用reg?

相信很多和我一样刚开始接触verilog语言的小白都会有这样的困惑,wire型变量和reg型变量到底有什么区别?什么情况下使用wire定义变量、什么情况下使用reg定义变量?下面就详细分析两者在使用中的区别。 1.wire和reg的本质是什么 wire的本质是一条没有逻辑的连线,也就是说输入时什么输出也就是什么。如果你把wire定义的变量用在有逻辑性的语句中就会出现综合错误: 例如: 在alway...

u011816009的博客 6万+
上一篇: AMS1117电路记录
下一篇: Quartus 软件报错:Error (10170): Verilog HDL syntax error XX near text “always“; expecting “end“
!今天学习了吗
博客等级 码龄4年 208粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值