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

这篇具有很好参考价值的文章主要介绍了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]

信号示意图:

Verilog语法学习——LV5_位拆分与运算,Verilog语法学习,学习,fpga开发

波形示意图:

Verilog语法学习——LV5_位拆分与运算,Verilog语法学习,学习,fpga开发

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

输出描述:

输出信号 validout out
类型 reg文章来源地址https://www.toymoban.com/news/detail-616257.html

代码

`timescale 1ns/1ns

module 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 @(*) begin
		if(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];	
		end
	end
	
	//case循环,根据sel的值来执行不同的输出
	always @(posedge clk or negedge rst) begin
		if(!rst) begin
			validout <= 0;
			out <= 0;
		end
		else begin
			case (sel)
				2'd0 : begin
					out <= 0;
					validout <= 0;
					enable_in <= d;
				end
				2'd1 : begin
					out <= data1 + data2;
					validout <= 1;
					enable_in <= 0;
				end
				2'd2 : begin
					out <= data1 + data3;
					validout <= 1;
					enable_in <= 0;
				end
				2'd3 : begin
					out <= data1 + data4;
					validout <= 1;
					enable_in <= 0;
				end
				default : begin
					out <= 0;
					validout <= 0;
					enable_in <= 0;
				end
			endcase
			
		end

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

到了这里,关于Verilog语法学习——LV5_位拆分与运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Verilog语法学习——LV6_多功能数据处理器

    题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page=1tab=Verilog篇topicId=301) 描述 根据指示信号select的不同,对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数,当select信号为0,输出a;当select信号为1,输出b;当select信号

    2024年02月15日
    浏览(25)
  • Verilog语法学习——LV9_使用子模块实现三输入数的大小比较

    题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page=1tab=Verilog篇topicId=301) 描述 在数字芯片设计中,通常把完成特定功能且相对独立的代码编写成子模块,在需要的时候再在主模块中例化使用,以提高代码的可复用性和设计的层

    2024年02月15日
    浏览(24)
  • 【FPGA Verilog开发实战指南】初识Verilog HDL-基础语法

    就是用代码来描述硬件结构 语言有VHDL与Verilog HDL Verilog HDL 是从C语言来的,学的快 ###例子 也叫保留字,一般是小写 module 表示模块的开始 endmodule 模块的结束 模块名 一般与.v文件的名字一致 输入信号 input 输出信号 output 既做输入也做输出 inout 需要一些变量和参数对输

    2024年02月21日
    浏览(33)
  • 【FPGA学习记录3-1】Verilog语法之Verilog的数据类型

    写在前面 本科时学过FPGA的相关课程,因此对于Verilog相关语法的学习重在回顾。 1.Verilog的数据类型 Verilog 最常用的 2 种数据类型就是 线(wire)与寄存器(reg) ,其余类型可以理解为这两种数据类型的扩展或辅助。 1.1wire类型 wire 类型表示硬件单元之间的物理连线,由其连接

    2024年02月02日
    浏览(31)
  • FPGA学习笔记-知识点3-Verilog语法1

    按其功能可分为以下几类: 1) 算术运算符(+,-,×,/,%) 2) 赋值运算符(=,=) 3) 关系运算符(,,=,=) 4) 逻辑运算符(,||,!) 5) 条件运算符( ? :) 6) 位运算符(,|,^,,^) 7) 移位运算符(,) 8) 拼接运算符({ }) 9) 其它 按其所带操作数的个数运算符可分为三种: 1) 单目运算符(unary operator):可以带一个

    2024年02月06日
    浏览(44)
  • 【FPGA】verilog语法的学习与应用 —— 位操作 | 参数化设计

    学习新语法,争做新青年 计数器实验升级,让8个LED灯每个0.5s的速率循环闪烁,流水灯ahh好久不见~ 去年光这个就把我折磨够呛。。我肉眼可见的脱发就是从那时候开始的。。在那两个月我直接掉了10斤啊喂~ (没节食、没运动、没失恋哈哈哈 产生0.5s周期的计数器 为了避免仿

    2024年02月11日
    浏览(29)
  • FPGA_学习_04_Verilog基础语法和Modelsem仿真

    前言:对于以前学过C/C++/C#的作者来讲,Verilog的基础语法算是 特别简单 的。本文主要介绍Verilog的基础语法和Modelsem仿真。 FPGA开发是以模块为基础的,每个可 综合 的.v文件都是一个模块,模块由 module 和 endmodule 来声明。在这两个的内部,完成模块功能的实现。 在Vi

    2024年02月05日
    浏览(34)
  • Verilog语法(二)——运算符

    Verilog HDL 中支持多种运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符等等。以下是一些常用的运算符及其用法。 Verilog 中的算术运算符包括加法、减法、乘法、除法、取模等。它们的用法与常见的编程语言类似,如: 加法:+ 减法:- 乘法:* 除法:/ 取模:

    2024年02月01日
    浏览(41)
  • Verilog基本语法之运算符(三)

    运算符按功能分为9类: 算术运算符 逻辑运算符 关系运算符 等式运算符 缩减运算符 条件运算符 位运算符 移位运算符 位拼接运算符 运算符按操作数的个数分为3类: 单目运算符:带一个操作数 逻辑非!,按位取反~,缩减运算符,移位运算符 双目运算符:带两个操作数 算

    2023年04月09日
    浏览(32)
  • Verilog语法——2.模块例化、运算符

    参考资料 【明德扬_verilog零基础入门语法HDL仿真快速掌握-手把手教你写FPGA/ASIC代码设计流程中的应用】 2.1.1 什么是模块例化 例化,即将项目不断拆分成次级功能模块,然后从最简单的模块开始实现,进而完成整个复杂项目 2.1.2 模块例化的方法 针对已经抽象好的模块,需要

    2024年01月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包