IC设计的特殊信号打拍方式及RR轮询调度

EDA/IC设计

1063人已加入

描述

IC设计:特殊信号打拍方式    

1、AXI信号如何打拍

通常block的input和output信号存在时序问题时,我们通常采用寄存器打拍的方式,在两个block直接插入reg,从而解决时序问题。

但是很多信号比较特殊不能随意打拍,例如。AXI信号,握手信号等。此类信号有更高的要求。比如AXI总线中的slave_axi_awready表示写地址通道已经准备好,能够接受master写地址了。此类信号具有很高的时序要求,不能随意使用寄存器打拍,否则就会出现在slave端口已经将slave_axi_awready拉低,而在master端口存在延时认为awready为高而导致继续发waddr,从而导致waddr数据丢失。

Axi总线打拍模块通常会采用特殊设计的IP模块,将所有axi总线信号互联到axi打拍ip上,起到一个桥接的作用,能够解决时序问题。

2、mdio信号不允许打拍

还有一类信号是不允许打拍的,例如mdio信号。

Mdio协议是一种简单的低速接口协议,规定了master和slave共同驱动一根信号线,因此存在如下情况:在T0周期由master驱动,在下一个周期,即T1周期由slave驱动。因此mdio信号不允许打拍,设计上只能将相关的逻辑放置在管脚附件,从而减少走线延时。因为mdio是低速接口协议,时钟通常比较低,一般在100MHz以内,因此时序违例的情况也很少见。

调度设计:RR调度原理    

1、RR轮询调度?

RR轮询调度指的是在一次轮询响应请求中,每个请求信号都会获得响应。

如下所示:输入rr_req[3:0]为4个请求信号,输出rr_grant[3:0]为4请求信号对应的4个响应信号:1表示有请求or响应,信号为0表示无请求or响应。如表所示,第1次,所有请求均有效,首先响应低bit的请求,所以rr_grant[0]=1。第3次请求,请求rr_req[1]有效,但是在第2次中被响应(rr_grant[1]=1),因此此次不再响应,而是响应rr_req[2],所以rr_grant[2]=1.

AXI总线

2、Verilog是如何实现RR轮询调度的?

在verilog实现中,仅仅采用简单的组合逻辑和寄存器就可以实现rr轮询调度,不需要状态机等设计。

基本原理是锁存上一次输出请求响应rr_grant[3:0],并且生成相应的有效位rr_mask[3:0],从(rr_valid[3:0]&rr_mask[3:0])  和  rr_valid[3:0]&(~rr_mask[3:0]) 选取不为0的作为获得rr_grant_tmp,rr_grant_tmp再经过组合逻辑并且取最低有效位。此处mask中1表示请求有效。

AXI总线

B列为请求信号rr_req[3:0]

C列pre_rr_result 为模块内部锁存的上一拍rr_grant[3:0]。

D列rr_mask为pre_rr_result经过组合逻辑得到的掩码,rr_mask= {pre_rr_result[2:0],pre_rr_result[3]}-1’b1

E列 ~rr_mask为pre_rr_result经过组合逻辑得到的掩码,rr_mask=~( {pre_rr_result[2:0],pre_rr_result[3]}-1’b1)

F列:rr_grant_tmp为B&D or B&E,取其中不为0的

G列:rr_grant_tmp经过组合逻辑输出最低有效位:(~rr_grant_tmp+1’b1)&rr_grant_tmp

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分