码迷,mamicode.com
首页 > 其他好文 > 详细

fshc之请求仲裁机制的代码分析

时间:2015-02-04 14:19:48      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:

 1 always@(posedge spi_clk or negedge spiclk_rst_n)
 2 begin
 3    if(~spiclk_rst_n)
 4       arbiter2cache_ack_r <=1b0;
 5    else if(cache_req_sclk && flash_idle && ~atom_op_en_sync2 && ~arbiter2mcu_ack_r)
 6        arbiter2cache_ack_r <=1b1;
 7     else if(mcu_req_arb && flash_idle && ~arbiter2cache_ack_r)
 8        arbiter2cache_ack_r <=arbiter2cache_ack_r;
 9     else
10        arbiter2cache_ack_r <=1b0; 
11 end
12 
13 always@(posedge spi_clk or negedge spiclk_rst_n)
14  begin
15     if(~spiclk_rst_n)
16        arbiter2mcu_ack_r <=1b0;
17     else if(cache_req_sclk && flash_idle && ~atom_op_en_sync2 && ~arbiter2mcu_ack_r)
18     arbiter2mcu_ack_r <=arbiter2mcu_ack_r;
19      else if(mcu_req_arb && flash_idle && ~arbiter2cache_ack_r)
20         arbiter2mcu_ack_r <=1b1;
21      else
22         arbiter2mcu_ack_r <=1b0;
23 end

两个always语句块实现了三条功能:

1.cache/mcu请求如果,mcu请求已经访问flash,则cache请求不能break该访问,只能等待此次访问结束才会响应cache的访问。cache先请求也同理。两个always语句参考对比看,不要只看一个。

2.cache/mcu请求若同时有效,则cache请求的优先级高于MCU的请求。主要利用ifelse语句的优先级实现的。第6行代码优先级高于第20行代码。

3.如果atom_op_en_sysn2有效,只响应MCU的请求。

4.注意本模块处于sclk时钟域。但输入处于hclk时钟域。通过这两个always看不出来,呵呵。

fshc之请求仲裁机制的代码分析

标签:

原文地址:http://www.cnblogs.com/chip/p/4272169.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!