状态跳转图

通道优先级译码表
当处于不同状态时,不同通道的request有不同的优先级编码,00最高,11最低。

设计讲解
当有多个外设同时发起req请求,DMA的仲裁器将按照其规定的优先级顺序,处理DMA请求。
该文章中设计的电路是一个轮转优先级发生器,
输入为四个DMA通道的request信号,
输出为对应这4个request的仲裁优先级。
当上电复位后,系统进入状态1
然后DMA等待request
1-假如此时req0有效,则会继续维持在状态1
2-后req1有效,则状态会从状态1条至状态2
3-后req1和req0同时有效,则状态会从状态2跳至状态1.(状态2时优先级:req0>req1)
4-后req2有效,则状态会从状态1跳至状态3
5-后req2和req0同时有效,则状态会从状态3跳至状态1
6-后req2和req1同时有效,则状态会从状态1跳至状态2
7-后req2,req1,req0同时有效,则状态会从状态2跳至状态3
8-后req3有效,则状态会从状态3跳至状态0
RTL代码
module round_robin(
input wire hclk ,
input wire hresetn ,
input wire req_in_ch0 ,
input wire req_in_ch1 ,
input wire req_in_ch2 ,
input wire req_in_ch3 ,
output wire [1:0] priority_ch0,
output wire [1:0] priority_ch1,
output wire [1:0] priority_ch2,
output wire [1:0] priority_ch3
);
reg [7:0] priority ;
wire [3:0] req_in ;
wire [3:0] arb_state ;
reg [3:0] arb_state_pre;
reg [3:0] req_in_dly ;
assign req_in = {
req_in_ch3,req_in_ch2,req_in_ch1,req_in_ch0};
always @

本文介绍了一个基于状态跳转图的通道优先级译码表设计,用于DMA请求仲裁。设计中,四个DMA通道的request信号根据预定义的优先级顺序进行处理。在上电复位后,系统进入状态1,当有请求时,状态会根据请求的优先级变化。例如,req0有效时保持状态1,req1有效则跳至状态2,依此类推。RTL代码展示了轮转优先级发生器的工作原理,并提供了testbench波形以验证设计功能。
最低0.47元/天 解锁文章
2199

被折叠的 条评论
为什么被折叠?



