仲裁器设计——Verilog源码

这篇具有很好参考价值的文章主要介绍了仲裁器设计——Verilog源码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

verilog仲裁器,FPGA-Verilog技术专栏,Verilog 编程题 刷题,verilog,ASIC,FPGA,固定优先级仲裁,轮询仲裁



引言

本文就固定优先级仲裁器和轮询调度仲裁器作简单阐述并实现。给出设计、测试源码。

仲裁请求个数以 4 为例进行说明



固定优先级仲裁

不论何时,不论何种情况,仲裁的优先级总是 1号 > 2号 > 3号 > 4号。这个在FPGA里用 Verilog是比较容易实现的。

设计源码

// ====================================================================
// | 功能:固定优先级仲裁器
// | 作者:Xu Y. B.
// | 时间:2023-02-11
// | 注意:支持4个仲裁请求 
// |       优先级:1 > 2 > 3 > 4
// ====================================================================


`timescale 1ns / 1ps

module FPA(
// ======================= 模块输入输出端口 =======================
input 										I_OPR_CLK,
input 										I_OPR_RSTN,

input 			[3:0]						I_AREQ,//仲裁请求
output reg		[1:0]						O_AGRANT

    );

always @ (posedge I_OPR_CLK)
begin
	if(~I_OPR_RSTN)
	begin
		O_AGRANT <= 2'd0;
	end
	else if(I_AREQ[0])
	begin
		O_AGRANT <= 2'd0;
	end
	else if(I_AREQ[1])
	begin
		O_AGRANT <= 2'd1;
	end
	else if(I_AREQ[2])
	begin
		O_AGRANT <= 2'd2;
	end
	else if(I_AREQ[3])
	begin
		O_AGRANT <= 2'd3;
	end
	else
	begin
		O_AGRANT <= 2'd0;
	end
end
endmodule

测试源码

// ====================================================================
// | 功能:固定优先级仲裁器 测试程序
// | 作者:Xu Y. B.
// | 时间:2023-02-11
// | 注意:支持4个仲裁请求 
// |       优先级:1 > 2 > 3 > 4
// ====================================================================


`timescale 1ns / 1ps


module TB_FPA_();
// ======================= 模块输入输出端口 =======================
reg 										I_OPR_CLK;
reg 										I_OPR_RSTN;

reg 			[3:0]						I_AREQ;//仲裁请求
wire    		[1:0]						O_AGRANT;

initial I_OPR_CLK = 0;
always #10 I_OPR_CLK = ~I_OPR_CLK;

initial
begin
	I_OPR_RSTN = 0;
	I_AREQ = 4'd0;
	#103;
	I_OPR_RSTN = 1;
	#192;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1101;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1111;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1110;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1100;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1000;
	#105;
	$finish;
end
FPA INST_FPA
	(
		.I_OPR_CLK  (I_OPR_CLK),
		.I_OPR_RSTN (I_OPR_RSTN),
		.I_AREQ     (I_AREQ),
		.O_AGRANT   (O_AGRANT)
	);

endmodule

仿真结果

verilog仲裁器,FPGA-Verilog技术专栏,Verilog 编程题 刷题,verilog,ASIC,FPGA,固定优先级仲裁,轮询仲裁

  

轮询调度仲裁

轮询调度仲裁的规则是当0、1、2、3 共4个source信号源同时向仲裁器发出请求时,初始情况下source 0的优先级最高,当仲裁器响应了source0后,source1的优先级最高,依次类推。

设计源码

// ====================================================================
// | 功能:轮询调度优先级仲裁器 Round Robin Arbiter
// | 作者:Xu Y. B.
// | 时间:2023-02-11
// | 注意:支持4个仲裁请求 
// |      
// ====================================================================

`timescale 1ns / 1ps

module RRA(
// ======================= 模块输入输出端口 =======================
input 										I_OPR_CLK,
input 										I_OPR_RSTN,

input 			[3:0]						I_AREQ,//仲裁请求
output reg		[1:0]						O_AGRANT
    );

always @ (posedge I_OPR_CLK)
begin
	if(~I_OPR_RSTN)
	begin
		O_AGRANT <= 2'd3;
	end
	else
	begin
		case(O_AGRANT)
			2'd0:
				begin
					if(I_AREQ[1])
					begin
						O_AGRANT <= 2'd1;
					end
					else if(I_AREQ[2])
					begin
						O_AGRANT <= 2'd2;
					end
					else if(I_AREQ[3])
					begin
						O_AGRANT <= 2'd3;
					end
					else if(I_AREQ[0])
					begin
						O_AGRANT <= 2'd0;
					end
					else
					begin
						O_AGRANT <= O_AGRANT;
					end
				end
			2'd1:
				begin
					if(I_AREQ[2])
					begin
						O_AGRANT <= 2'd2;
					end
					else if(I_AREQ[3])
					begin
						O_AGRANT <= 2'd3;
					end
					else if(I_AREQ[0])
					begin
						O_AGRANT <= 2'd0;
					end
					else if(I_AREQ[1])
					begin
						O_AGRANT <= 2'd1;
					end
					else
					begin
						O_AGRANT <= O_AGRANT;
					end
				end
			2'd2:
				begin
					if(I_AREQ[3])
					begin
						O_AGRANT <= 2'd3;
					end
					else if(I_AREQ[0])
					begin
						O_AGRANT <= 2'd0;
					end
					else if(I_AREQ[1])
					begin
						O_AGRANT <= 2'd1;
					end
					else if(I_AREQ[2])
					begin
						O_AGRANT <= 2'd2;
					end
					else
					begin
						O_AGRANT <= O_AGRANT;
					end
				end
			2'd3:
				begin
					if(I_AREQ[0])
					begin
						O_AGRANT <= 2'd0;
					end
					else if(I_AREQ[1])
					begin
						O_AGRANT <= 2'd1;
					end
					else if(I_AREQ[2])
					begin
						O_AGRANT <= 2'd2;
					end
					else if(I_AREQ[3])
					begin
						O_AGRANT <= 2'd3;
					end
					else
					begin
						O_AGRANT <= O_AGRANT;
					end
				end
			default:
				begin
					O_AGRANT <= 2'd0;
				end
		endcase
	end
end
endmodule

测试源码

// ====================================================================
// | 功能:轮询调度优先级仲裁器 Round Robin Arbiter 测试程序
// | 作者:Xu Y. B.
// | 时间:2023-02-11
// | 注意:支持4个仲裁请求 
// |       
// ====================================================================


`timescale 1ns / 1ps

module TB_RRA_();
// ======================= 模块输入输出端口 =======================
reg 										I_OPR_CLK;
reg 										I_OPR_RSTN;

reg 			[3:0]						I_AREQ;//仲裁请求
wire    		[1:0]						O_AGRANT;

initial I_OPR_CLK = 0;
always #10 I_OPR_CLK = ~I_OPR_CLK;

initial
begin
	I_OPR_RSTN = 0;
	I_AREQ = 4'd0;
	#103;
	I_OPR_RSTN = 1;
	#192;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1101;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1111;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1110;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1100;
	@(posedge I_OPR_CLK)
	I_AREQ <= 4'b1000;
	#105;
	$finish;
end

RRA INST_RRA
	(
		.I_OPR_CLK  (I_OPR_CLK),
		.I_OPR_RSTN (I_OPR_RSTN),
		.I_AREQ     (I_AREQ),
		.O_AGRANT   (O_AGRANT)
	);


endmodule

仿真结果

verilog仲裁器,FPGA-Verilog技术专栏,Verilog 编程题 刷题,verilog,ASIC,FPGA,固定优先级仲裁,轮询仲裁

 文章来源地址https://www.toymoban.com/news/detail-634313.html

到了这里,关于仲裁器设计——Verilog源码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • FPGA纯verilog实现8路视频拼接显示,提供工程源码和技术支持

    没玩过图像拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。 图像拼接在实际项目中应用广泛,特别是在医疗和军工行业,目前市面上的图像拼接方案主要有Xilinx官方推出的Video Mixer方案和自己手撕代码的自定义方案;Xilinx官方推出的Vide

    2024年02月08日
    浏览(45)
  • Verilog权重轮询仲裁器设计——Weighted Round Robin Arbiter

    前两篇讲了固定优先级仲裁器的设计、轮询仲裁器的设计 Verilog固定优先级仲裁器——Fixed Priority Arbiter_weixin_42330305的博客-CSDN博客 Verilog轮询仲裁器设计——Round Robin Arbiter_weixin_42330305的博客-CSDN博客 权重轮询仲裁器就是在轮询仲裁器的基础上,当grant次数等于weight时,再切换

    2024年02月14日
    浏览(43)
  • FPGA纯verilog实现CameraLink视频接收和发送,附带工程源码和技术支持

    FPGA实现CameraLink视频编解码目前有两种方案: 一是使用专用编解码芯片,比如典型的DS90CR287;另一种方案是使用FPGA实现编解码,利用FPGA的serdes资源实现解串,优点是合理利用了FPGA资源,serdes资源不用白不用,缺点是操作难度大一些,对FPGA水平要求较高。 本文详细描述了F

    2024年02月07日
    浏览(49)
  • FPGA纯verilog代码实现H264视频压缩 提供工程源码和技术支持

    H264视频压缩与解码在FPGA图传领域应用广泛,Xilinx高端器件已经内嵌了H264加速器,在Linux系统下调用API即可使用,但对于需要定制私有算法或者协议的H264视频压缩与解码应用或者学习研究者而言,纯verilog代码实现H264视频压缩依然具有实用价值,本设计采用纯verilog代码实现

    2024年02月06日
    浏览(57)
  • FPGA实现 NIC 10G 网卡,纯verilog代码编写,提供工程源码和技术支持

    FPGA实现 NIC 10G 网卡,纯verilog代码编写,提供3套工程源码和技术支持 网络接口控制器(NIC)是计算机与网络进行交互的网关。NIC构成了软件协议栈和网络之间的桥梁,该桥梁的功能定义了网络接口。网络接口的功能以及这些功能的实现都在迅速发展。这些变化是由提高线速和

    2024年02月03日
    浏览(66)
  • 紫光同创FPGA纯verilog代码实现视频拼接,提供PDS工程源码和技术支持

    紫光同创FPGA纯verilog代码实现视频拼接,提供PDS工程源码和技术支持 “苟利国家生死以,岂因祸福避趋之!”大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于高精尖半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,懂先生站在高略高

    2024年02月07日
    浏览(53)
  • FPGA实现LVDS视频输出,纯verilog代码驱动,提供2套工程源码和技术支持

    FPGA实现LVDS视频输出,纯verilog代码驱动,提供2套工程源码和技术支持 LVDS协议作为中等速率的差分信号,在笔记本电脑和手机等消费电子领域应用广泛,FPGA实现LVDS视频协议也有广泛应用,一般在军工和医疗领域,LVDS视频相比RGB并行视频传输而言,图像质量和IO数量都有优势

    2024年02月04日
    浏览(62)
  • FPGA高端项目:纯verilog的 UDP 协议栈,提供11套工程源码和技术支持

    FPGA高端项目:纯verilog的 UDP 协议栈,提供11套工程源码和技术支持 目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但中间的FIFO或者RAM等调用了IP,或者不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,

    2024年02月03日
    浏览(56)
  • FPGA的通用FIFO设计verilog,1024*8bit仿真,源码和视频

    名称:FIFO存储器设计1024*8bit 软件:Quartus 语言:Verilog 本代码为FIFO通用代码,其他深度和位宽可简单修改以下参数得到 代码功能: 设计一个基于FPGA的FIFO存储器,使之能提供以下功能  1.存储空间至少1024 储器  2.存储位宽8bit  3.拓展功能:存储器空、满报警 演示视频:http://

    2024年02月06日
    浏览(39)
  • FPGA高端项目:紫光同创系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持

    FPGA高端项目:紫光同创系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持 “苟利国家生死以,岂因祸福避趋之!”大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于高精尖半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初

    2024年01月18日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包