当前位置: 首页 > news >正文

位拆分与运算

描述

题目描述:           

现在输入了一个压缩的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]

信号示意图:

波形示意图:

输入描述:

输入信号   d, clk, rst
类型 wire
在testbench中,clk为周期5ns的时钟,rst为低电平复位

输出描述:

输出信号 validout    out
类型  reg 

解题分析:

        寄存器的位是可以分开单独运算的,并不是一个输入就一定是一个数据,在很多情况下,一个输入既包括数据又包括地址等其他有效信息

        需要考虑数据锁存的问题,一定要在sel为0的时候进行锁存,只有此时的写入才是有效的(validout的下降沿写入有效),同时存在多种情况且没有优先级问题,建议使用case语句

代码如下:

`timescale 1ns/1nsmodule data_cal(
input clk,
input rst,
input [15:0]d,
input [1:0]sel,output [4:0]out,
output validout
);
reg [4:0]out;
reg validout;
reg [15:0] dreg;
//*************code***********//
always @(posedge clk or negedge rst)beginif(~rst)beginvalidout <= 0;out <= 0;dreg <= 0;endelsebegincase(sel)'d0:begindreg <= d; out <= 0;  validout <= 0; end'd1:beginout <= dreg[7:4] + dreg[3:0];  validout <= 1;      end'd2:beginout <= dreg[11:8] + dreg[3:0];  validout <= 1; end'd3:beginout <= dreg[15:12] + dreg[3:0];  validout <= 1; endendcaseendend//*************code***********//
endmodule

波形图:

http://www.lryc.cn/news/350507.html

相关文章:

  • windows11目标文件夹访问被拒绝-将安全信息应用到以下对象时发生错误
  • C#thread线程传参数更新UI的文本框
  • 基于Vue和uni-app的增强型单选ccRadioView组件开发
  • 信息系统项目管理师0602:项目立项管理 — 历年考题(详细分析与讲解)
  • vue2 中使用audio播放音频
  • 一键追爆款,GPT一键改文‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌,绘唐3,绘唐工具
  • 在C#中编写递归函数时,为了避免无限递归
  • css层叠样式表——基础css面试题
  • 数据库-索引结构(B-Tree,B+Tree,Hash,二叉树)
  • Microsoft Azure AI语音服务
  • 【Linux】常用指令、热键与权限管理
  • 深度学习知识点全面总结
  • 【编写控制手机压测的脚本】
  • 计算机网络-路由策略与路由控制一
  • 在线3D展示软件三维展示软件推荐哪家?
  • VS Code中PlatformIO IDE的安装并开发Arduino
  • Java入门——异常
  • 智慧园区:视频系统建设的核心要素与实践路径
  • 基于ChatGLM+Langchain离线搭建本地知识库(免费)
  • MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
  • SCSS详解
  • Vue 问题集
  • Elasticsearch 8.1官网文档梳理 -综述
  • 当自身需要使用的 gcc版本 和Linux 默认版本 存在大版本差异时怎样处理
  • 深度学习之卷积神经网络理论基础
  • 控制台的高度可调有哪些重要意义解析
  • 智能招聘?远在天边,近在眼前
  • 文字游侠AI丨简直是写作神器,头条爆文一键生成稳定赚米!附渠道和详细教程(只需四步)!
  • 【ES6】简单剖析一下展开运算符 “ ... “
  • java StringUtils类常用方法