三 仲裁器的设计

本文探讨了FPGA开发中仲裁器的设计,包括固定优先级仲裁器的两种实现方式以及轮询(Round Robin)仲裁器的两种思路。在固定优先级仲裁器中,通过预请求信号记录低优先级的请求状态,使用补码和按位操作确定授权。而在轮询仲裁器中,通过调整优先级或请求处理方式实现资源的公平分配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

固定优先级 -- Fixed Priority

思路:假设最低位优先级最高,从低位到高位依次去判断,借助一个pre_req来记录低位是否已经有了request,如果第i位有了request,那么第i+1位一直到最高位的pre_req都是1。

实现方式一

//Fixed Priority Arbiter

module fixed_prior_arb #(
	parameter REQ_WIDTH=3)(
	input[REQ_WIDTH-1:0]	req,
	output[REQ_WIDTH-1:0]	grant
	);
	wire[REQ_WIDTH-1:0]	pre_req;

	assign pre_req[0]=1'b0;
	assign pre_req[REQ_WIDTH-1:1]=req[REQ_WIDTH-2:0] | pre_req[REQ_WIDTH-2:0];
	assign grant=req&~pre_req;
	
endmodule

上述思想本质上时找到req从低到高的第一个1。那么利用补码的思想,将req-1,得到的结果进行取反,将取反后的结果与req原来的值按位与。结果就会得到grant。

实现方式二

//Fixed Priority Arbiter

module fixed_prior_arb #(
	parameter REQ_WIDTH=3)(
	input[REQ_WIDTH-1:0]	req,
	output[REQ_WIDTH-1:0]	grant
	);

	assign grant=req&~(req-1);
	
endmodule

Round Robin

思路一:

优先级变化,输入request正常。

利用上述fixe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值