中科亿海微除法器(DIVIDE)

这篇具有很好参考价值的文章主要介绍了中科亿海微除法器(DIVIDE)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

技术背景

 技术概述

        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核操作。

中科亿海微除法器(DIVIDE),fpga开发

中科亿海微除法器(DIVIDE),fpga开发

`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

 仿真结果

中科亿海微除法器(DIVIDE),fpga开发

总结

        使用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文库文章来源地址https://www.toymoban.com/news/detail-755146.html

到了这里,关于中科亿海微除法器(DIVIDE)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • FPGA中除法器IP核乘法器IP核使用

    1.除法器IP核有两种,3.0是最大支持32bit的被除数除数;4.0是最大支持64bit的被除数除数;研究电机时需要计算步数,都仅仅需要32bit因此选择3.0; 2.有两种类型 (1)remainder 余数 (2)fractional:小数 (3)dividend:被除数 (4)divisior: 除数 (5)quotient : 商 选择无符号数据,余

    2024年02月01日
    浏览(40)
  • 使用FPGA实现逐级进位加法器

    逐级进位加法器就是将上一位的输出作为下一位的进位输入,依次这样相加。下面以一个8位逐级进位加法器给大家展示。 我增加了电路结构,应该很容易理解吧。 下面我也列举了一位加法器,可以看下。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity adder1 is

    2024年04月23日
    浏览(33)
  • [FPGA]用Verilog写一个简单三位二进制加法器和减法器

    加法器和减法器是数字电路中的基本组件,它们可以对二进制数进行算术运算。加法器可以将两个或多个二进制数相加,得到一个和和一个进位。减法器可以将两个二进制数相减,得到一个差和一个借位。加法器和减法器可以用来实现更高级的运算,例如乘法、除法、移位等

    2024年02月04日
    浏览(42)
  • FPGA流水线除法器(Verilog)原理及实现

      除法器的计算过程如下图所示。 假设数值的位宽为N。 Step1:分别将被除数和除数扩展至原来2倍位宽(2N),被除数在其左边补N位0,除数在其右边补N位0; Step2:将被除数依次左移(每次左移1位),末位补数值(该数值为被除数高N位与除数高N位的商),高N位为被除数高

    2024年02月11日
    浏览(38)
  • FPGA实验一:层次法设计组合电路(加法器)

    目录 一、实验目的 二、实验要求 三、实验代码 四、实验结果及分析

    2024年02月12日
    浏览(45)
  • 【FPGA】Verilog:二进制并行加法器 | 超前进位 | 实现 4 位二进制并行加法器和减法器 | MSI/LSI 运算电路

    0x00 并行加法器和减法器 如果我们要对 4 位加法器和减法器进行关于二进制并行运算功能,可以通过将加法器和减法器以 N 个并行连接的方式,创建一个执行 N 位加法和减法运算的电路。 4 位二进制并行加法器 4 位二进制并行减法器

    2024年02月05日
    浏览(55)
  • 【基于FPGA的芯片设计】4位超前进位加法器

    目录 实验原理 源代码 仿真代码 管脚配置 实验板卡:xc7a100tlc sg324-2L,共20个开关         顶层模块 超前进位模块 全加器模块 注:vivado版本为2018版,板卡为xc7a100tlcsg324-2L

    2024年02月06日
    浏览(45)
  • FPGA学习笔记(1):使用Verilog实现常见的加法器

    本文使用VerilogHDL实现一些简单的加法器,本人水平有限,希望大佬能够多指证 Quartus Prime(18.0) Modelsim 半加器可以用于计算两个单比特二进制数的和,C表征进位输出,S表述计算的结果。 半加器的真值表 化简以后的逻辑表达式可以表达为: s = a’b+ab’ c = ab Verilog 代码块 全加

    2024年02月09日
    浏览(44)
  • 【FPGA】Verilog:BCD 加法器的实现 | BCD 运算 | Single-level 16 bit 超前进位加法器 | 2-level 16-bit 超前进位加法器

    0x00 BCD 运算 在 BCD 中,使用4位值作为操作数,但由于只表示 0 到 9 的数字,因此只使用 0000 到 1001 的二进制数,而不使用 1010 到 1111 的二进制数(don\\\'t care)。 因此,不能使用常规的 2\\\'complement 运算来计算,需要额外的处理:如果 4 位二进制数的运算结果在 1010 到 1111 的范围

    2024年02月05日
    浏览(45)
  • 【FPGA & Verilog】4bitBCD码加法器+7段数码管

    顶层文件: module add_bcd( input [9:0]I_1, input [9:0]I_0, input clk, input rst_n, output [7:0]seg, output [7:0]value, output select, output  [3:0]encode_1, output  [3:0]encode_0, output  [3:0]high_bit, output  [3:0]low_bit ); assign value ={high_bit,low_bit}; encoder encoder_inst2( .in(I_1), .out(encode_1) ); encoder encoder_inst1( .in(I_0), .out(e

    2024年01月18日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包