zoukankan      html  css  js  c++  java
  • fshc之请求*机制的代码分析

     1 always@(posedge spi_clk or negedge spiclk_rst_n)
     2 begin
     3    if(~spiclk_rst_n)
     4       arbiter2cache_ack_r <=1'b0;
     5    else if(cache_req_sclk && flash_idle && ~atom_op_en_sync2 && ~arbiter2mcu_ack_r)
     6        arbiter2cache_ack_r <=1'b1;
     7     else if(mcu_req_arb && flash_idle && ~arbiter2cache_ack_r)
     8        arbiter2cache_ack_r <=arbiter2cache_ack_r;
     9     else
    10        arbiter2cache_ack_r <=1'b0; 
    11 end
    12 
    13 always@(posedge spi_clk or negedge spiclk_rst_n)
    14  begin
    15     if(~spiclk_rst_n)
    16        arbiter2mcu_ack_r <=1'b0;
    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 <=1'b1;
    21      else
    22         arbiter2mcu_ack_r <=1'b0;
    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看不出来,呵呵。

  • 相关阅读:
    win10打开相机提示我们找不到你的相机
    Potplay视频播放画面扭曲
    SIFT特征匹配算法介绍
    SelectiveSearchCodeIJCV遇到First two input arguments should have the same 2D dimension
    mybatis逆向工程mvn插件
    ssm配置
    springmvc配置
    MyBatis如何禁用掉一级缓存
    Mybatis中#{}和${}的区别
    Java demo之IO
  • 原文地址:https://www.cnblogs.com/chip/p/4272169.html
Copyright © 2011-2022 走看看