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

Verilog语法学习——LV5_位拆分与运算

LV5_位拆分与运算

题目来源于牛客网

[牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page=1&tab=Verilog篇&topicId=301)

题目

题目描述:

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

代码

`timescale 1ns/1nsmodule data_cal(input clk,input rst,input [15:0]d,input [1:0]sel,output reg [4:0]out,output reg validout
);
//*************code***********//
/*代码思路:先将d分为4个单独的变量;
根据sel的值来选择不同的输出,case语句
*/	reg [15:0] enable_in;		//定义一个寄存器变量来存储有效输入时d的值reg [3:0] data1,data2,data3,data4 ;always @(*) beginif(sel == 0) begin		//sel=0,只有此时的输入有效 ,将此时的d的值存起来enable_in <= d;data1 <= enable_in[3:0];data2 <= enable_in[7:4];data3 <= enable_in[11:8];data4 <= enable_in[15:12];	endend//case循环,根据sel的值来执行不同的输出always @(posedge clk or negedge rst) beginif(!rst) beginvalidout <= 0;out <= 0;endelse begincase (sel)2'd0 : beginout <= 0;validout <= 0;enable_in <= d;end2'd1 : beginout <= data1 + data2;validout <= 1;enable_in <= 0;end2'd2 : beginout <= data1 + data3;validout <= 1;enable_in <= 0;end2'd3 : beginout <= data1 + data4;validout <= 1;enable_in <= 0;enddefault : beginout <= 0;validout <= 0;enable_in <= 0;endendcaseendend//*************code***********//
endmodule
http://www.lryc.cn/news/100301.html

相关文章:

  • ❤️创意网页:创意动态画布~缤纷移动涂鸦~图片彩色打码
  • 数值分析第六章节 用Python实现解线性方程组的迭代法
  • 【低代码专题方案】使用iPaaS平台下发数据,快捷集成MDM类型系统
  • 驱动开发 day3 (模块化驱动启动led,蜂鸣器,风扇,震动马达)
  • 数据结构与算法基础-学习-27-图之最短路径之Dijkstra(迪杰斯特拉)算法
  • Windows Server 2012 能使用的playwright版本
  • css实现溢出变为省略号
  • nginx如何配置两个服务器的连接
  • Linux环境Arduino IDE中配置ATOM S3
  • 【C#】.Net Framework框架下的Authorize权限类
  • C++ list底层实现原理
  • C#实现数字验证码
  • Git的常用命令以及使用场景
  • tcp keepalive
  • PP-Matting: AI高精度图像前景Matting,让抠图轻而易举
  • VUE3-01
  • 分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离(二)
  • Python 进阶(四):日期和时间(time、datetime、calendar 模块)
  • Transformer背景介绍
  • 深入理解BeanDefinition和Spring Beans
  • 实验六 调度器-实验部分
  • 基于飞桨paddle波士顿房价预测练习模型测试代码
  • 只会“点点点”,凭什么让开发看的起你?
  • 35.图片幻灯片
  • CentOS7系统Nvidia Docker容器基于TensorFlow2.12测试GPU
  • Go 下载安装教程
  • InnoDB数据存储结构
  • 基于ts的浏览器缓存工具封装(含源码)
  • GIT涵盖工作中用的相关指令
  • 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码(一)