【USTC】verilog 习题练习 21-25

21 基于端口名称的实例化

题目描述

创建一 verilog 电路,实现对模块 mod_a 基于端口名称的实例化,如下图所示:


其中mod_a模块的代码为:

module mod_a (output   out1,output   out2,input    in1,input    in2,input    in3,input    in4
);assign out1 = in1 & in2 & in3 & in4;    //这只是一个简单的示例assign out2 = in1 | in2 | in3 | in4;    //这只是一个简单的示例
endmodule

输入格式

输入信号 a, b, c, d,位宽 1bit。

输出格式

输出信号 out1, out2,位宽 1bit。

module mod_a (output   out1	,output   out2	,input    in1	,input    in2	,input    in3	,input    in4
);assign out1 = in1 & in2 & in3 & in4;    //这只是一个简单的示例assign out2 = in1 | in2 | in3 | in4;    //这只是一个简单的示例
endmodulemodule top_module ( input	a	,input	b	,input	c	,input	d	,output	out1,output	out2
);mod_a inst_name(.out1 (out1),.out2 (out2),.in1 (a),.in2 (b),.in3 (c),.in4 (d));
endmodule

22 多个模块的例化

题目描述

对于给定模块my_dff,包含两个输入信号和一个输出信号(D触发器模块),其代码如下:
module my_dff(input clk,input d,output reg q);
       always@(posedge clk)
           q <= d;
endmodule
请创建一verilog模块,在该模块中将my_dff模块例化3次,并串行连接,使其构成一个长度为3的移位寄存器,其中3个模块公用一个clk信号,如下图所示:
为实现电路功能,用户需要在顶层模块定义一些内部信号,从而能够将3个例化的模块进行连接。

输入格式

2个 1bit 位宽信号 clk、d

输出格式

1个 1bit 位宽信号 q

module my_dff(input clk,input d,output reg q);always@(posedge clk)q <= d;
endmodulemodule top_module ( input clk, input d, output q);wire out1,out2;my_dff inst1(.clk(clk),.d(d),.q(out1));my_dff inst2(.clk(clk),.d(out1),.q(out2));my_dff inst3(.clk(clk),.d(out2),.q(q));
endmodule

23  模块与向量信号

题目描述

对于给定模块 my_dff8,其代码如下所示:

module my_dff8(
input clk,
input [7:0] d,
output reg [7:0] q
);always@(posedge clk)q <= d;      
endmodule

试创建一 Verilog 模块,对 my_dff8 模块例化 3 次,并串行连接,构成一个 8bit 位宽长度为 3 的移位寄存器,同时可以通过选择信号选择输出结果,如下图所示:

输入格式

8bit 的任意有效输入

输出格式

根据 sel 信号,选择一个模块或者原输入作为输出信号

注意:创建一个4选1多路复用选择器(没有提供),它根据sel[1:0]选择输出什么:在输入d处的值,在第一个D触发器之后、第二个D触发器之后或第三个D触发器之后。(本质上,sel选择多少周期来延迟输入,从0到3个时钟周期。

module my_dff8(input clk,input [7:0] d,output reg [7:0] q
);always@(posedge clk)q <= d;
endmodulemodule top_module(input clk,input [7:0] d,input [1:0] sel,output reg [7:0] q
);// Write your code herewire[7:0] out1,out2,out3;my_dff8 inst1(.clk(clk),.d(d),.q(out1));my_dff8 inst2(.clk(clk),.d(out1),.q(out2));my_dff8 inst3(.clk(clk),.d(out2),.q(out3));always @(*)case(sel)2'h0: q=d;2'h1: q=out1;2'h2: q=out2;2'h3: q=out3;endcase
endmodule

24 加法器

题目描述

对于给定的16bit加法器电路,其代码如下:
module add16 ( input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output cout );
       assign {cout,sum} = a + b + cin;
endmodule
试创建一verilog模块,在该模块中实例化两个16bit的加法器,并进行适当的连接,最终构成一个32bit的加法器,该加法器输入进位位为0,如下图所示:

输入格式

32'b0 32'b0

输出格式

32'b0

注意:

给定一个执行16位加法的模块add16。实例化两次来创建一个32位加法器。一个add16模块计算加法结果的低16位,在接收到第一个加法器的执行之后,第二个add16模块计算结果的高16位。设计的32位加法器不需要处理低位的进位(假设为0)或向高位的进位(忽略),但是内部模块需要正确连接才能正确地工作。(换句话说,add16模块执行16位a + b + cin,而设计的模块执行32位a + b)。

module add16 ( input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output cout );assign {cout,sum} = a + b + cin;
endmodulemodule top_module(input [31:0] a,input [31:0] b,output [31:0] sum
);wire in,out1,out2;assign in = 0;wire[15:0] sum1,sum2;add16 add1(.a(a[15:0]),.b(b[15:0]), .cin(in), .sum(sum1), .cout(out1));add16 add2(a[31:16], b[31:16], out1, sum2, out2);assign sum = {sum2, sum1};
endmodule

25 多层次例化加法器

题目描述

在此练习中,用户需要创建一个包含两层调用的电路,在顶层模块中,实例化两个16bit位宽的加法器add16,而add16模块又是通过例化16个1bit全加器实现的,如下图所示:

在本设计中,一共涉及到3个模块,分别是:顶层模块、add16模块、add1模块,其中add16模块源代码如下:


module add16 ( input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output cout);
wire c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15;add1 inst_0(.a(a[0]),.b(b[0]),.cin(cin),.sum(sum[0]),.cout(c1));
add1 inst_1(.a(a[1]),.b(b[1]),.cin(c1),.sum(sum[1]),.cout(c2));
add1 inst_2(.a(a[2]),.b(b[2]),.cin(c2),.sum(sum[2]),.cout(c3));
add1 inst_3(.a(a[3]),.b(b[3]),.cin(c3),.sum(sum[3]),.cout(c4));
add1 inst_4(.a(a[4]),.b(b[4]),.cin(c4),.sum(sum[4]),.cout(c5));
add1 inst_5(.a(a[5]),.b(b[5]),.cin(c5),.sum(sum[5]),.cout(c6));
add1 inst_6(.a(a[6]),.b(b[6]),.cin(c6),.sum(sum[6]),.cout(c7));
add1 inst_7(.a(a[7]),.b(b[7]),.cin(c7),.sum(sum[7]),.cout(c8));
add1 inst_8(.a(a[8]),.b(b[8]),.cin(c8),.sum(sum[8]),.cout(c9));
add1 inst_9(.a(a[9]),.b(b[9]),.cin(c9),.sum(sum[9]),.cout(c10));
add1 inst_10(.a(a[10]),.b(b[10]),.cin(c10),.sum(sum[10]),.cout(c11));
add1 inst_11(.a(a[11]),.b(b[11]),.cin(c11),.sum(sum[11]),.cout(c12));
add1 inst_12(.a(a[12]),.b(b[12]),.cin(c12),.sum(sum[12]),.cout(c13));
add1 inst_13(.a(a[13]),.b(b[13]),.cin(c13),.sum(sum[13]),.cout(c14));
add1 inst_14(.a(a[14]),.b(b[14]),.cin(c14),.sum(sum[14]),.cout(c15));
add1 inst_15(.a(a[15]),.b(b[15]),.cin(c15),.sum(sum[15]),.cout(cout));
endmodule

现在,你需要完成顶层模块和add1模块的verilog代码。

输入格式

两个32位宽的加数a,b

输出格式

32位宽的和sum

注意:

本次设计共有三个模块:
top_module — 顶层模块包括两个add16模块
add16, provided — 一个16位加法器包括16个一位加法器
add1 — 一个一位全加器模块

module top_module (input [31:0] a,input [31:0] b,output [31:0] sum);
// add codewire in1,out1,out2;wire [15:0] sum1,sum2;assign in1=0;add16 add1 (a[15:0], b[15:0], in1, sum1[15:0], out1);add16 add2 (a[31:16], b[31:16], out1, sum2[15:0], out2);assign sum = {sum2, sum1};
endmodulemodule add1 ( input a, input b, input cin,   output sum, output cout );
// Full adder module hereassign sum = a^b^cin;assign cout = a&b | a&cin | b&cin;
endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/240547.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JMeter】JMeter连OceanBase数据库

1、下载OB&#xff08;OceanBase简称&#xff0c;下同&#xff09;&#xff0c;下载地址&#xff1a;https://www.oceanbase.com/softwarecenter-enterprise 2、将下载下来的jar包放到jmeter安装目录的 lib 目录下&#xff0c;或者打开JMeter客户端&#xff0c;在测试计划中引入…

Python ❀ 使用代码实现API接口调用详解

文章目录 1. 工具准备1.1. requests代码包1.2. BurpSuite抓包工具 2. 操作过程2.1. 一个简单的请求2.1.1. Burp获取响应2.1.2. 转发获取响应 2.2. 构造GET类型URL参数2.3. 构造请求头部2.4. 构造POST类型payload数据2.4.1. urlencoded格式2.4.2. json格式 本文主要讲解常用API接…

第九站(17天):C++IO流

文件IO流 对象:文件,控制台,特定数据类型stringstream (写数据输出流out,读数据输入流in) ofstream : ofstream outfile;//输出流:从键盘输出数据,写入到文件 //文件打开默认位ios::out//字节覆盖写 //可以截断设置为:ios::out | ios::trunc//将之前文件全部…

2024年1月【ORACLE战报】| 新年第一波OCP证书来了!

相关文章&#xff1a; 2023年12月【考试战报】|ORACLE OCP 19C考试通过 2023年10月【考试战报】|ORACLE OCP 19C考试通过 2023.7月最新OCP考试通过|微思-ORACLE官方授权中心 OCP 19C题库稳定&#xff01;https://download.csdn.net/download/XMWS_IT/88309681?ops_request_…

Midjourney Prompt 常用参数列表

完整参数列表 参数名称调用方法使用案例注意事项V5V4V3niji版本在关键词后加空格&#xff0c;然后带上版本参数&#xff1a; --v 或者 —v--version 或者 —versionvibrant california poppies --v 5版本仅支持 1、2、3、4、5。长宽比在关键词后加空格&#xff0c;然后带上长…

【MySQL】权限控制

DCL-权限控制 查询权限 show grants for 用户名主机名;授予权限 grant 权限列表 on 数据库名.表名 to 用户名主机名;grant all on test.* to user%; %是通配符&#xff0c;表示任意主机。撤销权限 revoke 权限列表 on 数据库名.表名 from 用户名主机名;revoke all on test.*…

Angular系列教程之zone.js和NgZone

文章目录 什么是zone.jsZone的工作原理Zone的常见用途NgZone&#xff1a;Angular中的zone.js使用NgZone使用NgZone执行代码使用NgZone外部检测 结论 什么是zone.js 在Angular中&#xff0c;zone.js是一个非常重要的库&#xff0c;它为我们提供了一种跟踪和管理异步操作的机制。…

dubbo入门案例!!!

入门案例之前我们先介绍一下&#xff1a;zookeeper。 Zookeeper是Apacahe Hadoop的子项目&#xff0c;可以为分布式应用程序协调服务&#xff0c;适合作为Dubbo服务的注册中心&#xff0c;负责服务地址的注册与查找&#xff0c;相当于目录服务&#xff0c;服务提供者和消费者只…

阿里云云原生助力安永创新驱动力实践探索

云原生正在成为新质生产力变革的核心要素和企业创新的数字基础设施。2023 年 12 月 1 日&#xff0c;由中国信通院举办的“2023 云原生产业大会”在北京召开。在大会“阿里云云原生”专场&#xff0c;安永科技咨询合伙人王祺分享了对云原生市场的总览及趋势洞见&#xff0c;及安…

数美点选验证协议全面剖析

文章目录 目标网站分析请求动态JS无法调试代码混淆处理conf请求分析分析fverify请求整体代码分析getEncryptContent函数分析分析其他参数分析坐标算法 结束 目标网站 aHR0cHM6Ly9zZWN1cmUuZWxvbmcuY29tL3Bhc3Nwb3J0L2xvZ2luX2NuLmh0bWw/bmV4dHVybD1odHRwczovL3d3dy5lbG9uZy5jb…

XSS漏洞:xss.haozi.me靶场通关

xss系列往期文章&#xff1a; 初识XSS漏洞-CSDN博客 利用XSS漏洞打cookie-CSDN博客 XSS漏洞&#xff1a;xss-labs靶场通关-CSDN博客 XSS漏洞&#xff1a;prompt.mi靶场通关-CSDN博客 目录 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C…

MySQL窗口函数(MySQL Window Functions)

1、窗口函数基本概念 官网地址&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 窗口可以理解为 记录集合&#xff0c;窗口函数就是在满足某种条件的记录集合上执行的特殊函数。 即&#xff1a;每条记录都要在此窗口内执行函数。 静态窗口&#x…

c#异形窗体遮罩效果

c#异形窗体遮罩效果&#xff0c;移动&#xff0c;关闭&#xff0c;最大化&#xff0c;最小化&#xff0c;还原操作 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D…

C++核心编程——文件操作

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; ---------第1阶段-C基础入门 ---------第2阶段实战…

蓝桥杯备赛 day 3 —— 高精度(C/C++,零基础,配图)

目录 &#x1f308;前言&#xff1a; &#x1f4c1; 高精度的概念 &#x1f4c1; 高精度加法和其模板 &#x1f4c1; 高精度减法和其模板 &#x1f4c1; 高精度乘法和其模板 &#x1f4c1; 高精度除法和其模板 &#x1f4c1; 总结 &#x1f308;前言&#xff1a; 这篇文…

RabbitMQ常见问题之高可用

文章目录 一、集群分类二、普通集群搭建1. 准备2. 配置3. 运行 三、镜像集群1. 介绍2. 启用方式3. 测试 四、仲裁队列1. 介绍2. 创建 五、Java连接RabbitMQ集群方式 一、集群分类 RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式。RabbitMQ的…

vue3实现动态侧边菜单栏的几种方式总结

基于自建json数据的动态侧边菜单栏 后端接口json数据 src/api/menuList.js const menuList [{url: ,name: 人员管理,icon: icon-renyuan,menuId: 1,children: [{url: /user,name: 用户管理,icon: icon-jurassic_user,menuId: 1001,children: []},{url: /role,name: 角色管…

vite 打包优化

✨专栏介绍 在当今数字化时代&#xff0c;Web应用程序已经成为了人们生活和工作中不可或缺的一部分。而要构建出令人印象深刻且功能强大的Web应用程序&#xff0c;就需要掌握一系列前端技术。前端技术涵盖了HTML、CSS和JavaScript等核心技术&#xff0c;以及各种框架、库和工具…

一篇综述洞悉医学大型语言模型的原理,应用和挑战

在过去的一年中&#xff0c;随着 GPT-4、LLaMA、Mistral&#xff0c;PaLM 等先进技术的突飞猛进&#xff0c;大型语言模型&#xff08;Large Language Models&#xff09;已经引领全球人工智能进入了一个全新的基础模型时代&#xff0c;这一时代不仅开启了技术创新的新篇章&…

opencv多张图片实现全景拼接

最近camera项目需要用到全景拼接&#xff0c;故此查阅大量资料&#xff0c;终于将此功能应用在实际项目上&#xff0c;下面总结一下此过程中遇到的一些问题及解决方式&#xff0c;同时也会将源码附在结尾处&#xff0c;供大家参考&#xff0c;本文采用的opencv版本为3.4.12。 首…