衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個RMW操作的例子

SwM2_ChinaAET ? 來源:未知 ? 作者:李倩 ? 2018-07-20 08:41 ? 次閱讀

操作系統中,有一種重要的進程間的同步機制稱作信號量機制。信號量即當前可用資源的計數。信號量是一個用來實現同步的整型或記錄型(Record)變量,除了初始化外,對它只能執行等待和釋放這兩種原子操作。一次對信號量的等待操作是獲得信號量的過程,讀取當前信號量的值,如果發現有可利用資源,則將信號量減1,否則進入等待狀態。一次對信號量的釋放過程即將信號量加1。一個進程對信號的讀取、計算新的信號量值、更新信號量的值,這三個步驟是不允許被其他進程打破的,如果被打破,則信號量的值將會發生錯誤,RMW操作的最大用途在于信號量操作。當然,用戶也可以將總線精簡為不支持RWM操作。

一次RMW操作對于總線來說,本質上是兩次子操作,一次讀,一次寫,只不過這兩次子操作必須由同一個主設備的完成,且讀數據和寫數據的地址相同。"改"是不發生在總線上的,它發生在主設備內部。一個RMW操作的例子如圖19所示,其過程如下:

時鐘上升沿0:

·主機將有效地址置于ADR_O()和TGA_O();

·主機將WE_O復位,以表明進入讀周期;

·主機輸出SEL_O()(bank select)表明其操作的數據地址;

·主機將CYC_O和TGC_O()置位,以表明周期的開始;

·主機將STB_O置位。

注意:主機可以在時鐘上升沿1到來之前的任意時間將CYC_O和TGC_O()置位,而TAGN_O信號是可選的。

時鐘上升沿1(SETUP):

·從機解碼輸入,并對ACK_I的置位做出響應;

·從機將有效數據置于DAT_I()和TGD_I()上;

·主機監控ACK_I信號,并準備鎖存DAT_I()和TGD_I()上的信號;

時鐘上升沿1:

·主機鎖存DAT_I()和TGD_I()上的數據;

·主機將STB_O復位,以插入一個等待周期(-WSW-)。

時鐘上升沿2(SETUP):

·從機將ACK_I復位以響應STB_O信號;

·主機將WE_O置位,以表明進入寫周期。

注意:實際上主機可以在本過程之前插入任意多個周期。

時鐘上升沿2:

·主機將寫數據置于DAT_O()和TGD_O()上;

·主機輸出SEL_O()(bank select)表明其操作的數據地址;

·主機置位STB_O信號。

時鐘上升沿3(SETUP):

·從機解碼輸入,并響應ACK_I的置位;

·從機準備鎖存DAT_O()和TGD_O()上的數據;

·主機監控ACK_I信號,并準備結束數據段(phase)傳輸。

注意:實際上從機可以在本過程之前插入任意多個周期。

時鐘上升沿3:

·從機將DAT_O()和TGD_O()上的數據鎖存;

·主機復位STB_O和CYC_O信號,以表明本周期的結束;

·從機將ACK_I信號復位,以響應STB_O信號的復位。

圖19 RWM周期

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 進程
    +關注

    關注

    0

    文章

    204

    瀏覽量

    13995
  • 信號量
    +關注

    關注

    0

    文章

    53

    瀏覽量

    8374

原文標題:【博文連載】Wishbone總線周期之RMW操作

文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux中grep命令的12實際例子

    Linux中grep命令的12實際例子
    發表于 02-08 09:38 ?750次閱讀

    labview的例子使用

    labview的串口通訊小例子
    發表于 02-20 22:56

    ucos的個例子

    ucos的個例子,希望對大家有用。
    發表于 04-14 21:41

    操作者框架(AF)的簡單例子

    看了幾個大神關于AF的例子和NI的Demo,做了簡單的Test功能:兩操作者間進行數據傳輸,實現數值+1,-1架構:Launch為運行
    發表于 04-13 09:52

    請教大家問題有沒有CH579跑操作系統的例子

    初次涉及,請教大家問題有沒有CH579跑操作系統的例子
    發表于 06-09 07:41

    proteus仿真MCS-51的一百個例子

    proteus仿真MCS-51的一百個例子
    發表于 07-28 10:27 ?191次下載
    proteus仿真MCS-51的一百<b class='flag-5'>個例子</b>

    C位操作例子大全

    C位操作例子大全 1.對硬件寄存器位操作,如清零,置位,取反,位域 2.用異或實現交換兩變量值 3.編譯器測試 4.位域在嵌入式中的應用
    發表于 03-08 16:15 ?18次下載

    視頻顯示卡直接寫屏的例子

    視頻顯示卡直接寫屏的例子     在文本DMA將從段B000H開始的4KB內存當顯存,許多既具有文本模式又
    發表于 06-12 23:05 ?843次閱讀
    視頻顯示卡<b class='flag-5'>一</b><b class='flag-5'>個</b>直接寫屏的<b class='flag-5'>例子</b>

    labview與access操作簡單例子

    做的labview與access操作簡單例子,互相學習吧
    發表于 03-15 16:00 ?91次下載

    STM32第一個例子

    STM32第一個例子是學習RAM單片機非常好的開始
    發表于 07-14 18:14 ?0次下載

    最簡單的事件驅動的IO libevent編程例子

    本文演示最簡單的基于libevent編程的例子。libevent是事件驅動的IO,適用于“好萊塢原則”。
    的頭像 發表于 03-23 09:54 ?6442次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個</b>最簡單的事件驅動的IO libevent編程<b class='flag-5'>例子</b>

    簡單例子講清楚指針的應用

    很多人遇到指針就糊涂,搞不清到底指向什么,其實是你沒搞清楚 * 修飾誰,還有些關鍵字修飾誰。 ? 看下面的例子,定義無符號字符變量x,然后同時定義
    的頭像 發表于 02-10 17:54 ?2261次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個</b>簡單<b class='flag-5'>例子</b>講清楚指針的應用

    shell編程100實用例子分享

    shell編程100實用例子分享
    發表于 01-25 15:39 ?4次下載

    模擬解像力圖表的例子

    實現本節介紹了模擬解像力圖表的例子。作為個例子,我們將使用
    的頭像 發表于 09-21 10:47 ?1143次閱讀

    for循環的基本例子

    例子:計算從1到10的整數的總和。在這個例子中,我們需要使用for循環來重復執行累加操作,將每個整數加到總和中。 代碼如下所示: in
    的頭像 發表于 11-22 10:00 ?2297次閱讀
    大发888王博被带走| 博网百家乐官网现金网| 真人百家乐什么平台| 网上百家乐官网的技巧| 威尼斯人娱乐城送宝马| 百家乐官网群的微博| 威尼斯人娱乐网站| 免费百家乐官网过滤| 北京太阳城小区| 百家乐赌博机销售| 百家乐官网蔬菜配送公司| 淘金百家乐官网现金网| 大发888在线娱乐二十一点| 百家乐高手论坛| 速博百家乐官网的玩法技巧和规则| 3U百家乐官网游戏| tt娱乐城官网| 威尼斯人娱乐城优惠条件| 百家乐投注怎么样| 太阳百家乐官网游戏| 佛山市| 大发888游戏软件下载| 百家乐双龙出| 如何玩百家乐扑克| 方形百家乐官网筹码| 菲利宾百家乐官网现场| 加州百家乐官网娱乐城| 溧阳市| 庄闲和| bet365 官网| 澳门百家乐的赢钱不倒翁| 百家乐官网游戏筹码| 玩百家乐官网的高手| 百家乐官网赌经| 百家乐官网轮盘怎么玩| 井陉县| 沅江市| 百家乐官网赌的技巧| 百家乐官网磁力录| 百家乐官网投注方式| 金博士娱乐城优惠|