【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.mzph.cn/news/631561.shtml

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

相关文章

边缘计算AI智能分析网关V4客流统计算法的概述

客流量统计AI算法是一种基于人工智能技术的数据分析方法&#xff0c;通过机器学习、深度学习等算法&#xff0c;实现对客流量的实时监测和统计。该算法主要基于机器学习和计算机视觉技术&#xff0c;其基本流程包括图像采集、图像预处理、目标检测、目标跟踪和客流量统计等步骤…

【架构】docker实现3主3从架构配置【案例1/4】

一&#xff0c;集群规划及准备工作 架构实现&#xff1a;Redis3主3从 二&#xff0c;搭建命令 第一步&#xff0c;创建6台服务&#xff1a; docker run -d --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/redis-node-1:/data redis:6.0.8 --clust…

基于Springboot+vue图书管理系统(前后端分离)

该项目完全免费 项目技术栈前后端分离&#xff1a; 后端&#xff1a;Springboot Mybatis-plus 前端&#xff1a;Vue ElementUI 数据库&#xff1a; MySQL 项目功能描述 管理员&#xff1a; 登录、个人信息、修改密码、管理后台管理系统所有数据 首页统计&#xff1a;…

Python(37):使用logging的配置文件配置日志

Python(37):使用logging的配置文件配置日志 输出日志到控制台和日志文件方法&#xff1a; 创建一个日志配置文件&#xff0c;然后使用fileConfig()函数来读取该文件的内容。 方法1&#xff1a;输出日志到文件&#xff0c;文件是固定的 方法2&#xff1a;输出日志到文件&…

【机器学习】机器学习四大类第01课

一、机器学习四大类 有监督学习 (Supervised Learning) 有监督学习是通过已知的输入-输出对&#xff08;即标记过的训练数据&#xff09;来学习函数关系的过程。在训练阶段&#xff0c;模型会根据这些示例调整参数以尽可能准确地预测新的、未见过的数据点的输出。 实例&#x…

docker安装 unexpected wsl error

docker unexpected wsl error 问题描述&#xff1a; 很诡异的一个问题 大概现象和这个帖子很像 https://developer.aliyun.com/article/1395485 docker版本4.26.1 系统&#xff1a; windows 10 winR 输入winver可以看见自己的版本号 华为matebook 16s 重装的Win10 解决流程…

代码随想录算法训练营29期|day 23 任务以及具体安排

669. 修剪二叉搜索树 class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root null) {return null;}if (root.val < low) {return trimBST(root.right, low, high);}if (root.val > high) {return trimBST(root.left, low, high);}// ro…

农用拖拉机市场调研:预计2029年将达到171亿美元

由于近些年来新兴市场的迅速崛起和技术创新的不断涌现&#xff0c;全球农用拖拉机市场的竞争也日趋激烈。生产商不仅需要提供质量可靠的产品&#xff0c;还需要提供良好的售后服务以赢得客户的信赖。 农业是支撑国民经济建设与发展的基础产业&#xff0c;而农业机械化是建设现代…

2024杭州国际智慧城市,人工智能,安防展览会(杭州智博会)

在智能化浪潮的冲击下&#xff0c;我们的生活与环境正在经历一场深刻的变革。这是一场前所未有的技术革命&#xff0c;它以前所未有的速度和广度&#xff0c;改变着我们的生活方式、工作方式、思维方式和社会结构。在这场变革中&#xff0c;有的人选择激流勇进&#xff0c;拥抱…

ACL实验

一&#xff1a;实验要求 二&#xff1a;实验分析 PC1可以telnet R1但不能ping通R1 PC1可以ping通R2但不能telnet R2 PC2可以ping通R1但不能telnet R1 PCR可以telnet R2但不能ping通R2 三&#xff1a;实验过程 配置IP 配置静态路由 检查是否全网可通 配置Telnet r1创建…

Xshell无法ssh连接虚拟机问题或主机无法ping通虚拟机。

常见报错如下&#xff1a; 1&#xff0c;Could not connect to ‘&#xff1f;&#xff1f;&#xff1f;’ (port 22): Connection failed. 2&#xff0c;卡在To escape to local shell, press ‘CtrlAlt]’. 3&#xff0c;Connection closing…Socket close. Connection clos…

一款轻量级、基于Java语言开发的低代码开发框架,开箱即用!

数字化时代&#xff0c;企业对于灵活、高效和安全的软件开发需求日益旺盛。为了满足这些需求&#xff0c;许多组织转向低代码技术&#xff0c;以寻求更具成本效益和创新性的解决方案。JNPF基础框架正是在这一背景下应运而生&#xff0c;凭借其私有化部署和100%源码交付的特性&a…

Unity之铰链关节和弹簧组件

《今天闪电侠他回来了&#xff0c;这一次他要拿回属于他的一切》 目录 &#x1f4d5;一、铰链关节组件HingeJoint 1. 实例 2. 铰链关节的坐标属性 ​3.铰链关节的马达属性Motor &#x1f4d5;二、弹簧组件 &#x1f4d5;三、杂谈 一、铰链关节组件HingeJoint 1. 实例 说…

【STM32调试】寄存器调试不良问题记录持续版

STM32寄存器调试不良问题记录 NVIC&#xff08;内嵌的中断向量控制器&#xff09;EXTI&#xff08;外部中断/事件&#xff09; 记录一些stm32调试过程中&#xff1a;不易被理解、存在使用误区、不清不楚、是坑、使用常识等方面的一些记录。本记录只包含stm32的内核以及外设等寄…

从uptime看linux平均负载

从前遇到系统卡顿只会top。。top看不出来怎么搞呢&#xff1f; Linux系统提供了丰富的命令行工具&#xff0c;以帮助用户和系统管理员监控和分析系统性能。在这些工具中&#xff0c;uptime、mpstat和pidstat是非常有用的命令&#xff0c;它们可以帮助你理解系统的平均负载以及资…

短信系统搭建主要因素|网页短信平台开发源码

短信系统搭建主要因素|网页短信平台开发源码 随着移动互联网的快速发展&#xff0c;短信系统已成为企业和个人进行信息传递的重要工具。建立一个高效可靠的短信系统对于企业来说非常重要。下面我们将介绍一些影响短信系统搭建的主要因素。 1. 平台选择&#xff1a;在搭建短信系…

2018年认证杯SPSSPRO杯数学建模B题(第一阶段)动态模糊图像全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 B题 动态模糊图像 原题再现&#xff1a; 人眼由于存在视觉暂留效应&#xff0c;所以看运动的物体时&#xff0c;看到的每一帧画面都包含了一段时间内 (大约 1/24 秒) 的运动过程&#xff0c;所以这帧画面事实上是模糊的。对电影的截图来说&…

PyQt5零基础入门(五)——QLabel显示图像

QLabel显示图像 前言显示静态图片显示动态图 前言 QLabel是Qt库中的一个部件&#xff0c;通常用于显示文本或富文本文档。然而&#xff0c;QLabel也可以用来显示图像。 一种常见的使用QLabel显示图像的方法是使用QPixmap类。QPixmap可以从文件中接收图片&#xff0c;然后可以…

2024年WebGIS开发三维面试题及答案解析

​前言 简介 面试之前 面试流程 自我介绍 1 面试简介 1 、首先做一个简单的自我介绍 2 、在公司/学习中做了什么样的项目&#xff1f; 在项目中参与哪些模块&#xff1f;重点介绍做了哪些功能? 3 、用户名/密码传输给后台的时候是加密传输还是明文传输 4 、token如何校…

多模态、长文本、智能体,智谱AI推出GLM-4模型全家桶,发布即上线

2024年01月16日&#xff0c;智谱AI首届技术开放日(Zhipu DevDay)在北京中关村国家自主创新示范区展示中心成功举办。现场&#xff0c;智谱AI团队全面展示了其投身于大模型事业三年多来所积累的技术成果&#xff0c;并重磅发布了新一代基座大模型GLM-4。 此次GLM-4的发布及上线&…