中科亿海微除法器(DIVIDE)

news2024/10/6 0:31:24

技术背景

 技术概述

        FPGA实现除法运算是一个比较复杂的过程,因为硬件逻辑与软件程序的区别。如果其中一个操作数为常数,可以通过简单的移位与求和操作代替,但用硬件逻辑完成两变量间除法运算会占用较多的资源,电路结构复杂,且通常无法在一个时钟周期内完成。因此,FPGA实现除法运算并不是一个“/”号可以解决的。总体来说,在FPGA中做基本的数学运算没什么难度,即使是指数、对数、开根号之类的复杂运算也有浮点IP Core的支持。如果需要实现复杂算法,可以采用HLS方式开发,仅用于算法验证。

 技术应用场景

        FPGA除法器技术主要应用于数字信号处理、通信系统、图像处理、高速计算机、测量仪器等领域。在这些领域中,需要对数据进行除法运算,而FPGA除法器可以提供高速、低功耗、低成本的除法运算解决方案。例如,在通信系统中,需要对信号进行解调、解码等操作,这些操作中需要进行除法运算,而FPGA除法器可以提供高效的解决方案。在图像处理中,需要对图像进行缩放、旋转等操作,这些操作中也需要进行除法运算,而FPGA除法器可以提供高速的图像处理能力。此外,FPGA除法器还可以应用于各种算法中,例如卷积神经网络、快速傅里叶变换等。

 优势和不足

优势:

  1. FPGA除法器可以实现高精度的除法运算,比如非恢复余数除法器可以实现更高的除法精度。
  2. FPGA除法器可以在数字电路中快速执行除法运算,比软件实现更快速。
  3. FPGA除法器可以根据需要进行定制化设计,满足不同应用场景的需求。

不足:

  1. FPGA除法器的设计和实现比较复杂,需要专业的知识和技能。
  2. FPGA除法器的资源占用比较大,需要占用较多的FPGA资源。
  3. FPGA除法器的功耗比较高,需要考虑功耗管理和优化。

技术实现

 技术原理和实现方法

        FPGA除法器是一种基于FPGA芯片实现的除法器,其原理是通过将被除数不断减去除数,直到被除数小于除数为止,每次减法操作都会使商数加1,最终被除数减去的结果就是余数。

 技术实现案例和效果展示

        实现方法一:开发一套除法器算法呢。

module DIVISION(
	input	wire	        	CLK,		    //系统时钟64MHZ
	input	wire				CCLK,		    //除法运算时钟128MHz
	input	wire	        	RST_N,      	//全局复位
	
	input	wire				Start,			//除法开始
	input	wire	[63:0]	    iDividend,		//被除数
	input   wire	[31:0]	    iDivisor,		//除数
	
	output	reg	    [63:0]	    Quotient,		//商
	output	reg	    [31:0]	    Reminder,		//余数
	output	reg				    Done		    //计算完成
	);

//=======================================================
//	REG/WIRE 声明
//=======================================================
reg	[6:0]		i;
reg				Sign;			//被除数符号
reg	[63:0]	    Dividend;	    //符号转换被除数
reg	[96:0]	    Temp_D;
reg	[32:0]	    Temp_S;

//=======================================================
//	移位减除法
//=======================================================
always@(posedge CCLK or negedge RST_N) begin
	if(!RST_N) begin
		i 			= 7'h0;
		Dividend	= 64'h0;
		Sign		= 1'b0;
		Temp_D	= 97'h0;
		Temp_S	= 33'h0;
		Done		= 1'b0;
	end 
    else case( i )
		0:  if(Start) begin							    //被除数符号判断及绝对值获取
				if(iDividend[63]) begin
					Sign			= 1'b1;
					Dividend 	= ~iDividend + 1'b1;
				end else begin
					Sign			= 1'b0;
					Dividend 	= iDividend;
				end
				i 			= i + 1'b1;
				Done 		= 1'b0;
			end
	
		1:  begin									    //计算数据锁存
				Temp_D 	= {33'h0,Dividend};
				Temp_S	= {1'b0,iDivisor};
				i 			= i + 1'b1;
		    end

		66: begin Done = 1'b1; i = i + 1'b1; end		//计算完成
		67: begin i = 0; end

		default : begin								    //移位减过程
			Temp_D  = {Temp_D[95:0],1'b0};
			if(Temp_D[96:64] >= Temp_S)
				Temp_D = ({(Temp_D[96:64] - Temp_S),Temp_D[63:0]}) + 1'b1;
			else 
				Temp_D = Temp_D;
			i = i + 1'b1;
	    end
	endcase
end

//运算结果锁存
always@(posedge CLK or negedge RST_N) begin
	if(!RST_N) begin
		Quotient <= 64'd0;
		Reminder <= 32'd0;
	end 
    else if(Done) begin
		if(Sign) begin
			Quotient <= ~Temp_D[63:0] + 1'b1;
			Reminder <= ~Temp_D[95:64] + 1'b1;
		end 
        else begin
			Quotient <= Temp_D[63:0];
			Reminder <= Temp_D[95:64];
		end
	end
end

endmodule

        实现方式二:使用IP核操作。

`timescale 1 ps/ 1 ps
//
// Company:
// Engineer:
//
// Create Date: 11-26-2023 17:11:11
// Design Name:
// Module Name: top
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Additional Comments:
//
//


module top(
	input	wire	clk
    );
	
	wire		[7:0]   denom;
	wire		[63:0]  numer;
	wire	[63:0]  quotient;
	wire	[7:0]   remain;
	
	assign numer	=	64'd1024;
	assign denom	=	8'd2;
	
	
	lpm_divide_1 u_1(
	.clock			(clk			),
	.denom			(denom			),
	.numer			(numer			),
	.quotient		(quotient		),
	.remain			(remain			)
	);
	
endmodule

 仿真结果

总结

        使用IP核可以减少设计人员的工作量,因为IP核已经经过验证和测试,可以直接使用,而不需要重新设计和验证。提高性能:使用IP核可以提高设计的性能,因为IP核是专门为特定的任务设计的,可以充分利用FPGA的硬件资源,从而提高性能。降低功耗:使用IP核可以降低功耗,因为IP核是经过优化的,可以使用更少的资源来完成任务,从而降低功耗。提高可靠性:使用IP核可以提高设计的可靠性,因为IP核已经经过验证和测试,可以保证其正确性和稳定性。

引用

“用于加密应用的基于 FPGA 的高速分频器”,IEEE Transactions on Very Large Scale Integration (VLSI) Systems,2015 年。

“基于FPGA的高速分频器的设计与实现”,《国际可重构计算杂志》,2016年。

“用于数字信号处理应用的基于 FPGA 的高性能分频器”,IEEE Transactions on Circuits and Systems II:Express Briefs,2017 年。

“使用Verilog HDL设计和实现基于FPGA的高速分频器”,国际电子与通信工程与技术杂志,2018年。

“一种用于高速应用的新型基于FPGA的分频器”,《信号处理系统学报》,2019年。

FPGA64位除法器(Verilog)_verilog取余资源-CSDN文库

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

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

相关文章

文件加密软件哪个好?文件加密软件大盘点

在使用电脑时&#xff0c;我们需要将机密文件、个人隐私等数据存放在电脑中。为了保护文件的安全&#xff0c;我们需要使用文件加密软件来进行保护。那么&#xff0c;文件加密软件哪个好呢&#xff1f;下面我们就来盘点一下。 超级加密3000 超级加密3000是一款专业的数据加密软…

office tool plus工具破解word、visio等软件步骤

第一步&#xff1a;下载工具 破解需要用到office tool plus软件 office tool plus软件下载地址&#xff1a;Office Tool Plus 官方网站 - 一键部署 Office 选择其中一个下载到本地&#xff08;本人选择的是第一个的云图小镇下载方式&#xff09; 第二步&#xff1a;启动工具 …

APP项目的推广方法

APP项目的成功与否与其推广策略密切相关&#xff0c;综合使用这些推广方法&#xff0c;可以帮助APP项目更广泛地被认知&#xff0c;吸引更多的用户&#xff0c;并提高应用在市场中的竞争力。以下是一些常用的APP推广方法&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公…

echarts 通用线性图

echarts 通用线性图 getLineData() {const myChart echarts.init(this.$refs.chartDom);const option {tooltip: {trigger: axis,},legend: {show: false,textStyle: {fontSize: 14, //字体大小color: #ffffff, //字体颜色},data: [AAA, BBB],},grid: {show: true,left: 10%,…

借助arthas 性能调优全过程

使用 arthas 的trace 命令分析方法耗时瓶颈&#xff1a; 可以看出 bindReloadZoneTimeLimite 耗时最久&#xff0c; 通过分析Bind 底层&#xff0c;将业务粒度进行拆分&#xff0c;加入并发执行 再次使用arthas 追踪单个方法耗时时间&#xff1a; 核心耗时方法&#xff0c…

pc数据通过插槽来设置启用未启用

使用三元表达式 <el-table-column prop"state" label"启用" width"180"><template v-slot"{ row }"><span>{{row.state 1 ? "已启用" : row.state 0 ? "未启用" : "无"}}</sp…

一加7Pro为PixelExperience系统编译kernelsu

前言 之前写了一篇文章为一加七Pro(LineageOs17.1 4.14内核版本)编译KernelSu&#xff0c;最近想换个系统玩玩&#xff0c;因为我发现我自己编译的系统总是被某些APP风控了&#xff0c;比如淘宝有些活动就参与不了。 正好可以试试PixelExperience&#xff0c;顺便为PixelExpe…

Shopee买家号想要多开怎么解决?

拥有多个Shopee买家号有很多优势。多账号可以帮助卖家获得更多流量、还能帮助提供关键词排名、提高销量等。 但是要管理多个Shopee买家号并非易事。面对不同账号的登录、注销和切换&#xff0c;可能会花费大量的时间和精力。而且&#xff0c;Shopee平台对于使用同一IP地址同时登…

淘宝平台商品详情平台订单接入说明

一 文档说明 本文档面向对象为电商平台商品详情数据和订单进行管理的第三方开发者或自研商家 二 支持范围 目前API已经支持订单的接单、取消、退单处理等操作。如果您的订单管理需求现有API不能满足&#xff0c;可以联系我们提出API需求。 参数说明 通用参数说明 参数不要乱…

[学习笔记]IK分词器的学习

IK分词器有几种模式 # 测试分词器 POST /_analyze {"text":"黑马程序员学习java太棒了","analyzer": "standard" }# 测试分词器 POST /_analyze {"text":"黑马程序员学习java太棒了","analyzer": &quo…

2023机器人灵巧手的分类与商业化应用及未来市场规模分析报告

今天分享的是机器人系列深度研究报告&#xff1a;《2023机器人灵巧手的分类与商业化应用及未来市场规模分析报告》。 &#xff08;报告出品方&#xff1a;深度行业分析研究&#xff09; 报告共计&#xff1a;26页 1 灵巧手是人形机器人重要的运控交互部件&#xff0c;近年来海…

Node——事件的监听与触发

Node.js是由事件驱动的&#xff0c;每个任务都可以当作一个事件来处理&#xff0c;本贴将对Node.js中的events模块及其中处理事件的类EventEmitter的使用进行详细讲解。 1、EventEmitter对象 在JavaScript中&#xff0c;通过事件可以处理许多用户的交互&#xff0c;比如鼠标…

定制网站软件app对企业的优势有哪些?|小程序搭建

定制网站软件app对企业的优势有哪些&#xff1f;|小程序搭建 定制网站软件和App对企业来说有许多优势。本文将探讨其中的一些重要优势。 首先&#xff0c;定制网站软件和App能够为企业提供个性化的解决方案。通过定制开发&#xff0c;企业可以根据自身的需求和目标来设计和构建…

【23真题】罕见211!数一配英二!

今天分享的是23年合肥工业大学833的信号与系统数字信号处理试题及解析。合工大833考数一英二&#xff0c;这样的搭配还是很少见的。 本套试卷难度分析&#xff1a;22年合肥工业大学833考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取!平均分为80和…

操作指南 | 如何使用API3请求链下数据

API3是一种去中心化解决方案&#xff0c;用于向智能合约平台提供传统且可扩展的API服务&#xff0c;使开发者能够访问如喂价和QRNG等链下资源。 API3由DAO管理&#xff0c;致力于在智能合约功能中轻松访问各种有用数据。 构建者在Moonbeam上可以访问不同的API3服务&#xff1…

HTML5原生视频播放器组件video的videocontrolslist属性详解

HTML5提供了内置的视频播放控件,其中videocontrolslist是其中一个很有用的属性。videocontrolslist属性可以用于告诉浏览器在视频播放过程中应该显示哪些默认的用户界面控件。下面我们将从几个方面来介绍videocontrolslist的详细使用。 一、启用videocontrolslist videocont…

《算法通关村——解析堆在合并K个排序链表的应用》

《算法通关村——解析堆在合并K个排序链表的应用》 23. 合并 K 个升序链表 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 1&#xff1a; 输入&#xff1a;lists [[1,4,5],[1,3,4],[2…

新型信息基础设施下的IP追溯技术:构建数字化安全新境界

随着新型信息基础设施的快速发展&#xff0c;IP&#xff08;Internet Protocol&#xff09;追溯技术在数字化安全领域变得愈发重要。IP追溯不仅能够帮助识别网络攻击源&#xff0c;提升网络安全水平&#xff0c;还有助于数字证据追踪、合规性审计等方面。本文将探讨新型信息基础…

【转】ORB-SLAM2调用OAK-D双目摄像头进行点云建图

编辑&#xff1a;OAK中国 首发&#xff1a;A. hyhCSDN 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容来自用户的分享&#xff0c;如有疑问请与原作者交流&#xff01; ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手君。 近期在CSDN刷…

2019年2月25日 Go生态洞察:Go 1.12 版本发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…