verilog的module调用

2023-11-07

目录

1. MUX2to1

2. MUX3to1

3. MUX4to1


    作为写过很多代码的程序员应该知道什么是函数的调用,例如下面的代码中,main函数调用了add函数对两个数值进行相加的操作:

int add(int a, int b) {
  return a + b;
}
​
int main() {
  int a = 1, b = 2;
  int sum = add(a, b);
}

    其实,在编写verilog的过程中也有类似的操作,叫做module的调用,在整个verilog工程中有一个主要的module,叫做top module,top module可以调用其他的子module,关系图如下:

module的调用语法有两种方法:

By name: module类型 module名称(.PortA(WireA), .PortB(WireB), ...);
In Order: module类型 module名称(WireA, WireB, ...)

假设我们已经定义了一个MUX2to1的module:

1. MUX2to1

module mux2to1(a, b, c, sel);
input [2:0] a;
input [2:0] b;
input sel;
output [2:0] c;
​
  reg c;
  always@(a or b or sel)
  begin
    if(sel)
      c = a;
    else
      c = b;
  end 
endmodule

2. MUX3to1

module mux3to1(a,b,c,sel1,sel2, outputdata);
​
input [2:0] a;
input [2:0] b;
input [2:0] c;
input sel1;
input sel2;
output [2:0] outdata;
​
wire[2:0] data;
​
  MUX2to1 mux21_dut1( 
                      .a(a), 
                      .b(b), 
                      .c(data), 
                      .sel(sel1) 
                    ); 
        
   MUX2to1 mux21_dut2(
                      .a(data), 
                      .b(b),
                      .c(outdata),
                      .sel(sel2)
                    );            
​
endmodule

3. MUX4to1

module MUX4to1(Din, sel, Dout);
input [3:0]Din;
input [1:0]sel;
output Dout;
​
wire M0_out, M1_out;
​
MUX2to1 M0(.a(Din[3]),
           .b(Din[2]), 
           .sel(sel[0]),
           .c(M0_out)
          );
​
MUX2to1 M1(.a(Din[1]),
           .b(Din[0]), 
           .sel(sel[0]),
           .c(M1_out)
          );          
​
MUX2to1 M2(.a(M0_out),
           .b(M1_out), 
           .sel(sel[1]),
           .c(Dout)
          );          
​
endmodule

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

verilog的module调用 的相关文章

  • 计算数组中的个数

    我试图在 Verilog 中计算 4 位二进制数中 1 的数量 但我的输出是意外的 我尝试了几种方法 这是我认为应该有效的方法 但事实并非如此 module ones one in input 3 0 in output 1 0 one a
  • Verilog 奇怪的仿真结果综合后

    我面临一个奇怪的问题 该代码适用于简单的 ALU 仅将感兴趣的代码粘贴到此处 always posedge clk or posedge rst begin if rst 1 begin mul valid shr 3 b000 end e
  • 如何在 verilog 中不使用 while() 循环(用于综合)?

    我已经养成了开发大量测试平台并使用 for 和 while 循环进行测试的习惯 没关系 问题是我已经将这种习惯用于对应该可综合的电路进行编码 XST等拒绝合成代码 无需对合成参数进行额外修改 例如 while num lt test num
  • 使用数据流模型的T触发器

    我正在尝试模拟 t flipflop 的工作 timescale 1ns 1ps module t flipflop input t input clk input clear output q output qbar wire sbar
  • Verilog 中总是后面跟着 #(...) pound 是什么意思?

    在一个简单的时钟生成器示例中 我看到以下代码 always cycle 2 clk clk 我以前总是见过 但没见过井号 我试图在文档中找到它 但我所能找到的只是一些对 实值端口 的引用 没有进一步的阐述 这是一个延迟操作 它本质上只是读取
  • 如何生成异步复位verilog总是阻塞凿子

    Chisel 始终生成敏感度列表中仅包含时钟的块 always posedge clk begin end 是否可以将模块配置为使用异步重置并生成这样的始终块 always posedge clk or posedge reset begi
  • 如何获取值数组作为 plusargs?

    如何获取值数组作为参数 我需要从命令行获取一组未定义大小的命令 如何将这些参数放入数组或队列中 Eg CMDS READ WRITE READ N WRITE 它应该被带到一个数组中 value plusargs不支持数组 但支持字符串 看
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • 从测试台访问 uvm_config_db 的最佳方式?

    我想在我的顶级测试平台中创建一个时钟 其周期可以通过测试进行控制 我所做的是将周期设置到 uvm config db 中并将其返回到测试台中 我必须输入 1 以确保构建阶段已完成 否则 get 返回错误值 module testbench
  • 如何使用 Verilog 和 FPGA 计算一系列组合电路的传播延迟?

    我是 FPGA 和 HDL 的新手 但我正在尝试学习 但无法弄清楚这一点 如何通过多个级别的组合逻辑来计算或估计传播延迟 我可以仅凭经验确定这一点 还是可以在设计时弄清楚 在这种情况下 我使用 FPGA 来实现奇偶校验设置和检查电路 该电路
  • 在 Mac OS X 10.6.8 上用什么来编译和模拟 Verilog 程序?

    作为教学大纲的一部分 我需要模拟 Verilog 程序 但是 我的大学使用 Xilinx ISE 但它不适用于 Mac 因此 请帮助我提供最好的软件以及有关如何安装和使用它们的一些详细步骤 你可以尝试伊卡洛斯 Verilog http iv
  • 向左旋转 verilog 大小写

    我的任务是用verilog编写一个16位ALU 当我做需要旋转操作数和进行2的补码加法和减法的部分时 我发现了困难 我知道如何用纸和铅笔解决这个问题 但我无法弄清楚如何在 Verilog 中做到这一点 例如 A表示为a15 a14 a13
  • 如何在Verilog中将二维数组中的所有位设置为0?

    我构建了一个 8 2bits 数组来表示 Verilog 中的一块内存 reg 1 0 m 0 7 该存储器有一个复位信号 如果复位为1 则该存储器中的所有位都应重置为0 但是我不知道如何以简洁的方式设置m的所有位 因为如果有数百个内存中有
  • 在 Verilog 程序中使用连续分配?

    在 Verilog 程序中使用连续赋值是否可能和 或有用 例如 是否有任何理由将assign里面一个always堵塞 例如这段代码 always begin assign data in Data end 此外 是否可以用这种方法生成顺序逻
  • 我怎样才能让我的verilog移位器更通用?

    这里我有一个移位器 但现在它最多只能工作 3 位 我一直在寻找 但不知道如何让它工作最多 8 位 module shifter a b out input 7 0 a b output 7 0 out wire 7 0 out1 out2
  • 如何在 icarus verilog 中包含文件?

    我知道基本的 include filename v 命令 但是 我试图包含另一个文件夹中的模块 现在 该模块还包括同一文件夹中存在的其他模块 但是 当我尝试在最顶层运行该模块时 出现错误 C Users Dell Desktop MIPS
  • 模块不是任务或 void 函数

    我正在尝试在 Verilog 中创建一个用于进位选择加法器的模块 除了以下部分导致编译错误之外 一切正常 module csa a b s cout input 15 0 a b output 15 0 s output cout wire
  • 警告:(vsim-7)无法在读取模式下打开自述文件“mem_content_01.dat”

    我正在尝试在 ModelSim 中运行测试模拟 但收到标题中的错误 我已经仔细检查过 该文件与我的项目位于同一位置 并且名称匹配得很好 有谁知道问题可能是什么 如果您需要查看代码的某些部分或类似内容 请告诉我 啊明白了 好吧 ModelSi
  • 如何编写正则表达式来匹配 Verilog 文件中的模块实例化?

    我正在开发一个项目 通过使用 perl 脚本语言来促进 verilog 编程 现在我想编写一个脚本来扫描顶级verilog文件 然后生成模块的层次结构列表 这表明我需要提取模块实例化 从verilog文件中的语句来看 问题是这样的 如何编写
  • 端口尺寸与连接尺寸不匹配

    我有这个代码 Alu v module ALU src1 i src2 i src3 i src4 i ctrl i result o zero o I O ports input 32 1 0 src1 i input 32 1 0 sr

随机推荐

  • quasar在axios.js中使用响应拦截器不能正常跳转解决

    问题描述 提示 这里描述具体问题 在quasar框架中的 src boot axios js中使用router push 无效 router index js import route from quasar wrappers import
  • 最近用matplotlib绘制了一张天气折线图,分享给大家

    usr bin env python coding utf 8 作者 志在星空 时间 2022 04 04 19 38 文件名 绘制折线图 py 软件 PyCharm import matplotlib pylab as pyl impor
  • 机器学习中的范数规则化之(一)L0、L1与L2范数

    机器学习中的范数规则化之 一 L0 L1与L2范数 zouxy09 qq com http blog csdn net zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题 过拟合与规则化 我们先简单的来理解下常用的L0 L1 L2和
  • 某验滑块js逆向 - 底图还原

    注 本篇博客仅供学习使用 请勿用做其他商业用途 如有侵权 请联系本菜鸟 前段时间本小菜鸟研究了某验的点选类型验证码 今天开始研究他们的另一类验证码 滑块 先直接上流程 和点选的步骤基本相同 1 请求gt register slide off
  • 【Linux】shell的简单模拟实现

    目录 一 大概思路 二 命令行显示及获取用户输入命令 三 分析命令 四 创建子进程执行命令 五 导入环境变量 六 源码 总结 前言 我们已经接触了很长时间的Linux 我们对shell特别的好奇 正好前面我们学习了shell的运行原理 以及
  • Ambari——大数据平台的搭建利器(一)

    Ambari是hadoop分布式集群配置管理工具 是由hortonworks主导的开源项目 它已经成为apache基金会的孵化器项目 已经成为hadoop运维系统中的得力助手 引起了业界和学术界的关注 Ambari采用的不是一个新的思想和架
  • matlab系统稳定性仿真实验,基于Matlab的电力系统暂态稳定仿真实验与分析

    基于Matlab的电力系统暂态稳定仿真实验与分析 第29卷第4期2010年4月 实验室研究与探索 RESEARCHANDEXPLORATIONINLABORATORY Vol 29No 4Apr 2010 Matlab 1引言 长期以来 电
  • vue2与vue3的区别

    1 vue2和vue3双向数据绑定原理发生了改变 vue2 的双向数据绑定是利用ES5 的一个 API Object definePropert 对数据进行劫持 结合 发布订阅模式的方式来实现的 vue3 中使用了 es6 的 ProxyA
  • glTexSubImage2D的使用详解

    Name glTexSubImage2D glTextureSubImage2D specify a two dimensional texture subimage C Specification void glTexSubImage2D
  • LeetCode第3题解析

    给定一个字符串 请你找出其中不含有重复字符的 最长子串 的长度 示例 1 输入 abcabcbb 输出 3 解释 因为无重复字符的最长子串是 abc 所以其长度为 3 示例 2 输入 bbbbb 输出 1 解释 因为无重复字符的最长子串是
  • 【洛谷 P1170】兔八哥与猎人 题解(数学+辗转相除法)

    兔八哥与猎人 题目描述 兔八哥躲藏在树林旁边的果园里 果园有 M N M times N M N 棵树 组成一个 M M M 行
  • 本地从0搭建Stable Diffusion WebUI及错误记录

    从0开始搭建本地Stable Diffusion WebUI环境 一 环境配置 1 使用的电脑配置 系统 Windows10 处理器 英特尔 i7 内存 24GB 显卡 NVIDIA GTX 1060 6GB 2 镜像源 阿里云 清华大学
  • MySql 简介

    目录 数据存取演变历史 数据库软件应用史 数据库的本质 数据库的分类 1 关系型数据库 关系型数据库有哪些 2 非关系型数据库 非关系型数据库有哪些 MySQL简介 基本使用 系统服务制作 密码相关操作 SQL与NoSQL 数据库的概念 数
  • Spring Junit 单元测试@Test 报错 ServletContext找不到 No qualifying bean of type javax.servlet.ServletContext

    Spring Junit 单元测试 Test 报错 ServletContext找不到 No qualifying bean of type javax servlet ServletContext found for dependency
  • 微信小程序画布详解

    有的时候需要插入动画 这时就需要用到画布 接下来浅谈一下画布的功能和用法吧 wxml代码
  • Log Structured Merge Trees(LSM) 原理(LSM 算法的原理是什么?)

    十年前 谷歌发表了 BigTable 的论文 论文中很多很酷的方面之一就是它所使用的文件组织方式 这个方法更一般的名字叫 Log Structured Merge Tree LSM是当前被用在许多产品的文件结构策略 HBase Cassan
  • nginx basic auth配置踩坑记

    nginx的basic auth配置由ngx http auth basic module模块提供 对HTTP Basic Authentication协议进行了支持 用户可通过该配置设置用户名和密码对web站点进行简单的访问控制 basi
  • 「深度学习表情动作单元识别」 最新2022研究综述

    来源 专知 基于深度学习的表情动作单元识别是计算机视觉与情感计算领域的热点课题 每个动作单元描述了一种人脸局部表情动作 其组合可定量地表示任意表情 当前动作单元识别主要面临标签稀缺 特征难捕捉和标签不均衡3个挑战因素 基于此 本文将已有的研
  • js获取被选择文件的路径方法汇总

    html代码如下
  • verilog的module调用

    目录 1 MUX2to1 2 MUX3to1 3 MUX4to1 作为写过很多代码的程序员应该知道什么是函数的调用 例如下面的代码中 main函数调用了add函数对两个数值进行相加的操作 int add int a int b return