仲裁器的FPGA实现方式
来源:互联网 发布:电脑mac地址怎么查端口 编辑:程序博客网 时间:2024/05/23 02:07
仲裁器(arbiter) 在FPGA主要用于多个source源同时发出请求时,根据相应的优先级来响应哪一个source。FPGA的仲裁器分为轮询仲裁器(Round-Robiin)和固定优先级仲裁器(Fixed-Priority),接下来本文就两种不同仲裁器的规则和实现方式进行说明。
- 轮询仲裁器规则
轮询仲裁的规则是当0、1、2、、、N-1个source信号源同时向仲裁器发出请求时,初始情况下source 0的优先级最高,当仲裁器相应了source0后,source1的优先级最高,依次类推。 - 轮询仲裁器实现
轮询仲裁器的实现分为检测仲裁器输入口source信号源的request,根据当前仲裁器的优先级响应相应的request,仲裁器输出source端的请求,更新仲裁器的优先级。
首先,检测仲裁器输入端request并进行仲裁,采用状态机来实现。
always@(*) case(cur_state) IDLE : if ((|svalid[n-1:0]) && enable) next_state = TIME; else next_state = IDLE; TIME : if (dvalid && dready) next_state = IDLE; else next_state = TIME; endcase
然后,根据当前仲裁器的优先级来响应相应的输入source request,并将source数据输出,代码以输入源为2个为例。
always@(posedge clk or posedge rst) if (rst) sready <= 2'b00; else if (cur_state == TIME) casex({enabel,svalid,prio}) 4'b1x10 : sready <= 2'b01; 4'b1100 : sready <= 2'b10; 4'b11x1 : sready <= 2'b10; 4'b1011 : sready <= 2'b01; default : sready <= 2'b00; endcase always @(posedge clk or posedge rst) if (rst) duser <= 8'h0; else if (cur_state == TIME) casex({enabel,svalid,prio}) 4'b1x10 : duser <= suser[7:0]; 4'b1100 : duser <= suser[15:8]; 4'b11x1 : duser <= suser[15:8]; 4'b1011 : duser <= suser[7:0]; default : duser <= 8'h0; endcase
最后,更新仲裁器的优先级。
always @(psoedge clk or posedge rst) if (rst) prio <= 1'b0; else if (cur_state == TIME) casex(enable,svalid,prio) 4'b1x10 : prio <= 1'b1; 4'b11x1 : prio <= 1'b0; default : prio <= prio; endcase
- 固定优先级仲裁器规则
Fixed-priority Arbiter顾名思义当0、1、2、、、N-1个source同时发起request,Source 0的优先级最高,即便source0被相应完后,仍为最高优先级,其中优先级按照序号逐渐降低。
2.固定优先级仲裁实现
固定优先级仲裁器在FPGA实现与轮询仲裁器类似,唯一不同的是轮询仲裁在每次响应完request后会对优先级进行更新,而固定优先级则不需要此步骤。
2 0
- 仲裁器的FPGA实现方式
- fpga的配置方式
- FPGA的配置方式
- 利用共享文件夹实现故障转移群集的仲裁盘
- 6.2.1集中仲裁方式
- 6.2.2 分布仲裁方式
- CORDIC的FPGA实现
- FIFO的FPGA实现
- 有限状态机的FPGA实现
- 格雷码的FPGA实现
- FIFO的FPGA实现
- I2C总线的仲裁问题
- CAN总线的仲裁机制
- I2C总线的仲裁过程
- I2C总线的仲裁机制
- I2C总线的仲裁机制
- I2C总线的仲裁机制
- I2C总线的仲裁机制
- MFC doc类,view类,frame类之间互相调用
- linux信号量与完成量
- 设计模式 单例模式之一步一步深入填坑
- swift中替换弹出键盘
- 浅谈凸优化中的共轭函数
- 仲裁器的FPGA实现方式
- android面试总结(1)
- 平方和与立方和
- 变分推理
- HTML首行缩进两字符
- 【LeetCode】206. Reverse Linked List
- 腾讯云不同QQ 账号之间数据也迁移
- 知识与信仰
- 填充算法