数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (五)位拆分与运算

news2025/1/19 11:05:33

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (五)位拆分与运算


🔈声明:
😃博主主页:王_嘻嘻的CSDN博客
🧨未经作者允许,禁止转载
🔑系列专栏:牛客Verilog习题集
🚩推荐一个IC、FPGA新手入门的好网站:👉快 点 击 进 入 学 习 吧


  继续整理牛客网经典Verilog习题讲解,牛客网里除了最新的Verilog题库还有其它领域的经典笔试、面试题,大家快和我一起刷起来吧 点 击 跳 转



题目


描述

题目描述:

现在输入了一个压缩的16位数据,其实际上包含了四个数据[3:0][7:4][11:8][15:12],

现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号(在不输出时候拉低)

0: 不输出且只有此时的输入有效

1:输出[3:0]+[7:4]

2:输出[3:0]+[11:8]

3:输出[3:0]+[15:12]


在这里插入图片描述


分析:

  本题其实就是第一题的扩展版,根据sel信号对输入进行不同的操作并输出。唯一需要注意的是,题目要求sel为‘0’时不输出结果,且仅当时的输入有效。
  这就需要我们在sel为‘0’时,对d采样,并记录。而validout信号在sel非‘0’常为‘1’。

  • 所以整个代码分为三个部分:d的采样逻辑、validout随sel变化的逻辑、out根据sel完成不同操作



题解:

  本题比较简单,在代码层面没有需要特别注意的问题,不过新手朋友可能不清楚out信号5-bits的由来,或者说是计算结果的位宽该如何确定

  • 通常来说n bits+n bits = n+1 bits;
  • n bits*n bits = 2n bits;
  • 但其实有一个最简单的办法,将等号左边所有变量以最大值计算,就可以知道等号右侧最大需要多少位宽了

`timescale 1ns/1ns

module data_cal(
input clk,
input rst,
input [15:0]d,
input [1:0]sel,

output [4:0]out,
output validout
);
//*************code***********//
reg     [15:0]  d_tmp;  //输入采样
reg     [4:0]   out;

always @(posedge clk or negedge rst)begin
    if(!rst)
        d_tmp[15:0] <= 16'b0;
    else if(sel[1:0]==2'b0)
        d_tmp[15:0] <= d[15:0];
end

assign validout = (sel[1:0]!=2'b0);

always @(*)begin
    case(sel[1:0])
        2'b00: out[4:0] = 5'b0;
        2'b01: out[4:0] = d_tmp[3:0] + d_tmp[7:4];
        2'b10: out[4:0] = d_tmp[3:0] + d_tmp[11:8];
        2'b11: out[4:0] = d_tmp[3:0] + d_tmp[15:12];
    endcase
end

//*************code***********//
endmodule


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

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

相关文章

Burp Suite Professional 2023.1 (macOS, Linux, Windows) - Web 应用安全、测试和扫描

Burp Suite Professional, Test, find, and exploit vulnerabilities. 请访问原文链接&#xff1a;https://sysin.org/blog/burp-suite-pro-2023&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org Burp Suite Professional&a…

《后端技术面试 38 讲》学习笔记 Day 07

《后端技术面试 38 讲》学习笔记 Day 07 21丨分布式架构&#xff1a;如何应对高并发的用户请求 原文摘抄 当同时访问系统的用户不断增加的时候&#xff0c;需要消耗的系统计算资源也不断增加&#xff0c;需要更多的 CPU 和内存去处理用户的计算请求&#xff0c;需要更多的网络…

二叉树、平衡二叉树、红黑树、B树、B+树、B*树的区别

二叉树 如下图&#xff0c;是一个二叉树的结构图片&#xff1a; 可以看到无论是对象“9”、还是“5”、“13”、“2”、“7”、“11”、“15”它们的下面分别都叉了两个其他的对象。而且这两个对象都是左边的数值要小一些&#xff0c;右边的数值要大一些。 所以这就是二叉树的…

Qt+C++堆叠多窗口界面切换

程序示例精选 QtC堆叠多窗口界面切换 如需安装运行环境或远程调试&#xff0c;见文章底部个人微信名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC堆叠多窗口界面切换>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读…

停车系统源码-基于springboot+uniapp开源项目

Iparking停车收费管理系统-可商用介绍Iparking是一款基于springBoot的停车收费管理系统&#xff0c;支持封闭车场和路边车场&#xff0c;支持微信支付宝多种支付渠道&#xff0c;支持多种硬件&#xff0c;涵盖了停车场管理系统的所有基础功能。技术栈Springboot,Mybatis Plus,B…

聚观早报 | 推特将释放15亿用户名售卖;微信回应切断抖音外链

今日要闻&#xff1a;比亚迪摘得国内汽车年度销量冠军&#xff1b;推特将释放15亿用户名进行售卖&#xff1b;微信回应切断抖音外链&#xff1b;原阿里云盘负责人、Teambition 创始人齐俊元加入飞书&#xff1b;辉瑞CEO称新冠药不能太便宜推特将释放15亿用户名进行售卖 1 月 12…

直播回顾 | 如何运用数智化助力光伏上游产业节能降碳(下)——企业降碳篇

1月12日&#xff0c;始祖科技【始祖双碳研习社】行业解决方案第二期顺利结束&#xff0c;在第一期的基础上为大家带来了“双碳”政策对光伏上游企业提出的新要求&#xff0c;数智技术在光伏领域发挥双碳赋能作用&#xff0c;数智技术实现光伏领域“双碳”赋能的路径等多个维度的…

PMP证书获取指南来了

为什么考PMP证书是值得的&#xff1f;甚至对于管理人员来说是必须的&#xff1f; 1、个人能力的提高 考取PMP证书是一个系统的学习过程&#xff0c;让你的管理思维更加清晰&#xff0c;可能很多人都是从野路子&#xff0c;自己从实践中摸索管理经验&#xff0c;但是学完PMP证…

功率放大器在体外构建工程化心肌组织研究中的应用

实验名称&#xff1a;多功能明胶复合水凝胶的制备及体外构建工程化心肌组织的研究 研究方向&#xff1a;生物医学 测试目的&#xff1a; 制备一种基于GelMA的三维各向异性的电磁功能复合水凝胶支架&#xff08;GelMA-PDA-rGO-Fe3O4&#xff09;&#xff0c;由Fe3O4纳米颗粒修饰…

Python内存管理与垃圾回收

Python内存管理与垃圾回收引用计数器标记清除分代回收缓存机制※※引用计数器为主&#xff0c;标记清除和分代回收为辅缓存机制 引用计数器 1.1 c语言中的环状双向链表refchain.&#xff1a; 在Python的C源码中有一个refchain的环状双向链表&#xff0c;Python程序当中一旦创…

一个.Net简单、易用的配置文件操作库

在我们日常项目开发中&#xff0c;操作INI/CFG配置文件&#xff0c;往往会通过调用WinAPI来实现&#xff0c;WinAPI接口参数只支持字符串&#xff0c;而我们项目中&#xff0c;往往数据类型是多种多样的&#xff0c;在保存和获取配置值&#xff0c;我们就要进行类型的转换。 今…

【 uniapp - 黑马优购 | 购物车页面(3)】结算页面组件封装与渲染 (超详细代码讲解)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;讨厌编程&#x1f38b; &#x1f43b;‍❄️***个人主页&#x1f947;&#xff1a;***小新爱学习. &#x1f43c;***个人WeChat&#xff1a;见文末*** &#x1f54a;️***系列专栏&#xff1…

C语言 动态内存管理函数的 深度解析 #是不是对数组不能变大变小而烦恼呢?学会动态内存管理函数,消去数组耿直的烦恼#

文章目录前言为什么存在动态内存分配&#xff1f;malloc 和 free1.malloc2.free3.使用callocrealloc常见的动态内存错误1.对NULL指针的解引用操作2.对动态开辟空间的越界访问3.对非动态开辟内存使用free释放4.使用free释放一块动态开辟内存的一部分5.对同一块动态内存多次释放6…

启动优化·基础论·浅析 Android 启动优化

“ 【小木箱成长营】启动优化系列文章(排期中)&#xff1a; 启动优化 工具论 启动优化常见的六种工具 启动优化 方法论 这样做启动优化时长降低 70% 启动优化 实战论 手把手教你破解启动优化十大难题 ”一、引言 Hello&#xff0c;我是小木箱&#xff0c;欢迎来到小木箱成…

Transformer——day63 读论文:SST:用于多标签图像识别的空间和语义变压器

SST&#xff1a;用于多标签图像识别的空间和语义变压器SST&#xff1a;用于多标签图像识别的空间和语义变压器I. INTRODUCTIONII. RELATED WORKA. Multi-Label Image RecognitionB. Transformer in Computer VisionIII. APPROACHA. MotivationB. Recap of TransformerC. Modeli…

【Java寒假打卡】Java基础-多线程

【Java寒假打卡】Java基础-多线程概述读线程实现方式-继承Thread多线程实现方式-Callable三种实现方式的对比Thread方法守护线程线程的优先级概述 并发和并行 进程和线程 读线程实现方式-继承Thread 继承Thread类进行实现 package com.hfut.edu.test11;public class MyThr…

2022年最新年终奖个人所得税计算计算方法及扣税标准

1、2021年12月30号&#xff0c;国务院决定年终奖等三项个税优惠续期&#xff1a;http://www.gov.cn/zhengce/2021-12/30/content_5665553.htm2、税务总局公告2019年第35号《关于非居民个人和无住所居民个人有关个人所得税政策的公告》&#xff1a;http://www.gov.cn/zhengce/zh…

一、Django项目创建

一. Python项目虚拟环境创建 在项目开发过程中会下载很多第三方库&#xff0c;有时不同项目对同一个库的依赖版本不同&#xff0c;如果所有项目都使用同一个python环境就会起冲突不便于管理。因此&#xff0c;实际开发中会为每一个项目都单独创建一个python的虚拟环境。这里的…

多线程~POSIX信号量实现生产者消费者模型,PV操作

目录 1.信号量的概念 2.sem_t信号量的操作函数 &#xff08;1&#xff09;.原理 &#xff08;2&#xff09;.sem_t函数的使用 &#xff08;3&#xff09;.基于信号量和环形队列的生产者消费者模型 1&#xff09;.大致实现思路 Task.hpp circular_queue.hpp circular_c…

基于java SSH框架的简单医疗管理系统源码+数据库,医疗管理系统基于springmvc+spring+hibernate

医疗管理系统 基于java SSH框架的简单医疗管理系统 环境说明 1、语言及开发环境&#xff1a; 语言实现说明JAVA后端用springmvcspringhibernate&#xff0c;前端使用htmlajax开发环境使用eclipse&#xff0c;maven管理。 数据库使用mysql&#xff1b; 完整代码下载地址&…