0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

五個廣泛使用的特殊寄存器

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Louie De ? 2022-06-08 09:55 ? 次閱讀

在本文中,我們將介紹五個廣泛使用的特殊寄存器,即:別名、影子、間接、鎖定和觸發(fā)緩沖寄存器。

在當(dāng)今的 SoC 中,我們看到了系統(tǒng)架構(gòu)、節(jié)點大小、互連、安全、編程語言和開發(fā)工具等領(lǐng)域的許多創(chuàng)新。有時,我們低估了作為 SoC 架構(gòu)師、驗證工程師、硬件設(shè)計師或軟件/固件開發(fā)人員在日常工作中使用的簡單創(chuàng)新的重要性和影響。

特別是,讓我們檢查與硬件/軟件接口層相關(guān)的創(chuàng)新——軟件應(yīng)用程序與硬件外圍設(shè)備通信。具體來說,在寄存器空間中,視頻編解碼器、藍(lán)牙Wi-Fi 等硬件外圍設(shè)備從處理器上執(zhí)行的軟件應(yīng)用程序接收配置、控制和功能。十年前在設(shè)計寄存器時,我們只需要RO、WO、RW、RC、RS、WS等的組合。但今天的SoC已經(jīng)變得如此復(fù)雜,以至于我們不得不創(chuàng)新并想出更多創(chuàng)造性的方式來設(shè)計寄存器。在本文中,我們將介紹五個廣泛使用的特殊寄存器,即;別名、影子、間接、鎖定和觸發(fā)緩沖寄存器。

別名寄存器

這是一種可從同一地址映射中的多個地址訪問的寄存器類型,但在物理上它是一個寄存器。別名寄存器中的字段根據(jù)用于訪問它們的地址具有不同的行為。如圖 1 所示,RegA 中的字段在使用 0x1000 地址訪問時是可讀寫的,但在從 0x2000 地址訪問時是 write-1-to-clear。創(chuàng)建別名寄存器時應(yīng)應(yīng)用的一些指導(dǎo):別名寄存器的硬件訪問為 NA;字段不能是已別名字段的別名;并且別名字段的父寄存器不能是外部的。

poYBAGKgAZeAQhOUAABxdS1S8uM424.png

影子寄存器

當(dāng)您的軟件應(yīng)用程序需要覆蓋所有寄存器但數(shù)據(jù)需要稍后恢復(fù)時,解決方案是使用影子寄存器。通過寄存器總線寫入寄存器的數(shù)據(jù)應(yīng)自動復(fù)制或映射到地址映射中的另一個寄存器。如圖 2 中的示例所示,將 OriginalReg 中的數(shù)據(jù)復(fù)制到 ShadowReg。ShadowReg 可以從總線訪問,但對原始寄存器沒有影響。幾個影子寄存器可以影子一個原始寄存器。

pYYBAGKgAZ6AfYZMAACPbQ2bMHE693.png

間接寄存器

一些寄存器或內(nèi)存位置不能通過專用地址直接訪問,它們被稱為間接尋址寄存器或簡稱為間接寄存器。兩個寄存器用于訪問一個間接寄存器。

為了將值存儲到間接寄存器數(shù)組中,使用基址寄存器來保存實際地址。該指令檢查基址寄存器,將其值解釋為寄存器數(shù)組中的地址位置,并將保存在數(shù)據(jù)寄存器中的值放入該位置。為了從間接寄存器數(shù)組加載一個值,還使用了一個基址寄存器。該基址寄存器保存實際地址。該指令檢查基址寄存器,將其值解釋為地址,獲取存儲在該位置的值,然后將其加載到數(shù)據(jù)寄存器中。

如圖 3 中的示例所示,Reg1 指定了內(nèi)存數(shù)組的索引。Reg2 指定要寫入的數(shù)據(jù)或存儲從內(nèi)存中讀取的值。Reg2 需要一個用于間接寄存器大小的“深度”屬性。

poYBAGKgAaWAOthtAABwV0qLKF4984.png

鎖定寄存器

如果狀態(tài)機(jī)保護(hù)在寄存器后面,只能由存儲在另一個寄存器中的密鑰啟動,鎖定寄存器可能是解決方案。根據(jù)某個其他寄存器的字段值,任何可寫寄存器或字段都可以被保護(hù)/鎖定不被寫入。這樣的寄存器稱為鎖定寄存器。鎖定寄存器和保護(hù)/密鑰寄存器可以在不同的寄存器組中,但不能在不同的塊中。如圖 4 中的示例所示,由屬性“l(fā)ock”指定的鎖定寄存器由一個簡單的表達(dá)式lock=RegA.f1 定義,這意味著寄存器 Lockreg 根據(jù)字段“f1”的值被鎖定而不能寫入寄存器“RegA”,關(guān)鍵寄存器。鎖定機(jī)制也可以通過更復(fù)雜的表達(dá)式來定義,例如鎖定 = regA.FldA || regB.Lock_fld == 8‘b00000001 && regA.FldA == 4’b0011。這個復(fù)雜的表達(dá)式由不同的寄存器字段組成。在這種情況下,如果鎖定表達(dá)式中的每個條件在運行時都為真,則寄存器的軟件寫訪問被鎖定。

pYYBAGKgAayAQTF9AACJyG0JJvA774.png

觸發(fā)緩沖寄存器

有時需要從硬件側(cè)將大小大于總線寬度的寄存器作為一個原子單元寫入和讀取。這樣的寄存器是從軟件側(cè)順序?qū)懭?讀取的。這可以通過在與觸發(fā)事件相關(guān)的內(nèi)存空間中創(chuàng)建一個 N 寄存器緩沖區(qū)來實現(xiàn)。當(dāng)觸發(fā)事件發(fā)生時,寫入/讀取發(fā)生在/從緩沖區(qū)到硬件端可用的實際寄存器。觸發(fā)事件可以是對最低有效位或最高有效位寄存器的讀/寫。例如,如圖 5 所示,RegA 是寬硬件寄存器,寬寄存器 Reg.A1 的 MSB 是觸發(fā)器。Reg.A2 和Reg.A3 是對應(yīng)寬硬件寄存器字段的緩沖區(qū)。

poYBAGKgAbOAdyUQAACOebzPJJI841.png

下一步是學(xué)習(xí)如何在 IP-XACT 或 SystemRDL 中定義這些特殊寄存器。還需要學(xué)習(xí)如何在 RTL 中對其進(jìn)行編碼,并創(chuàng)建 UVM 寄存器模型并完成 UVM 測試平臺以進(jìn)行驗證。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5276

    瀏覽量

    119703
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2855

    瀏覽量

    87869
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1992

    瀏覽量

    60987
收藏 人收藏

    評論

    相關(guān)推薦

    寄存器是什么意思?寄存器是如何構(gòu)成的?

    在計算機(jī)科學(xué)中,寄存器(Register)是一高速存儲單元,它位于中央處理(CPU)內(nèi)部,用于存儲計算機(jī)程序執(zhí)行過程中所需要的數(shù)據(jù)、指令地址或狀態(tài)信息。寄存器是計算機(jī)體系結(jié)構(gòu)中至關(guān)
    的頭像 發(fā)表于 08-02 18:23 ?2606次閱讀
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何構(gòu)成的?

    寄存器尋址的實現(xiàn)方式

    在計算機(jī)體系結(jié)構(gòu)中,寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內(nèi)部的寄存器。寄存器尋址可以提高程序的執(zhí)行效率,因為它避免了對內(nèi)存的訪問。 寄存器尋址的基本概念
    的頭像 發(fā)表于 07-12 10:36 ?458次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計算機(jī)中用于存儲數(shù)據(jù)的高速存儲單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?910次閱讀

    移位寄存器右移是怎么移位的

    移位寄存器是一種在數(shù)字電路和計算機(jī)科學(xué)中廣泛使用的存儲設(shè)備,它可以用來存儲和傳輸數(shù)據(jù)。在移位寄存器中,數(shù)據(jù)可以通過移位操作來實現(xiàn)數(shù)據(jù)的傳輸和處理。移位寄存器的移位操作有兩種基本形式:左
    的頭像 發(fā)表于 07-12 10:14 ?686次閱讀

    雙向移位寄存器的工作原理、特點及應(yīng)用

    雙向移位寄存器,作為一種特殊的數(shù)字電路元件,在數(shù)字信號處理和計算機(jī)體系結(jié)構(gòu)中扮演著重要的角色。其獨特之處在于能夠根據(jù)控制信號實現(xiàn)數(shù)據(jù)的雙向移位,即既可以向左移位,也可以向右移位。這種靈活性使得雙向
    的頭像 發(fā)表于 05-24 16:52 ?1809次閱讀

    硬件特殊功能寄存器編程思路和RAM使用的問題求解?

    看了一下STM32的庫,對于其中的關(guān)于硬件的特殊功能寄存器的設(shè)置都是通過:1、定義一和實際硬件地址相鏡像的全局結(jié)構(gòu)體變量。 2、設(shè)置結(jié)構(gòu)體的各個變量相對應(yīng)的參數(shù)。 3、把結(jié)構(gòu)體整體復(fù)制到硬件
    發(fā)表于 05-17 12:24

    寄存器的定義和功能 寄存器的分類和工作原理

    在計算機(jī)系統(tǒng)中,寄存器作為一種特殊的存儲設(shè)備,扮演著至關(guān)重要的角色。它是中央處理(CPU)內(nèi)部的重要組成部分,用于暫時存儲數(shù)據(jù)和指令,以便于CPU進(jìn)行高速的運算和控制。本文將對寄存器
    的頭像 發(fā)表于 05-12 17:07 ?4737次閱讀

    特殊功能寄存器的解釋整理匯總

    電子發(fā)燒友網(wǎng)站提供《特殊功能寄存器的解釋整理匯總.pdf》資料免費下載
    發(fā)表于 05-09 14:27 ?7次下載

    干貨滿滿:ARM的內(nèi)核寄存器講解

    內(nèi)核寄存器與外設(shè)寄存器: 內(nèi)核寄存器與外設(shè)寄存器是完全不同的概念。內(nèi)核寄存器是指 CPU 內(nèi)部的寄存器
    發(fā)表于 04-17 11:47 ?2544次閱讀
    干貨滿滿:ARM的內(nèi)核<b class='flag-5'>寄存器</b>講解

    CPU的6主要寄存器

    CPU寄存器是中央處理內(nèi)的組成部分,是有限存貯容量的高速存貯部件。寄存器是CPU內(nèi)部的元件,包括通用寄存器、專用寄存器和控制
    的頭像 發(fā)表于 02-03 15:15 ?3496次閱讀

    寄存器的主要組成部分及分類

    通用寄存器是計算機(jī)處理中最常見的寄存器類型之一。它們通常用于存儲臨時數(shù)據(jù)、中間結(jié)果和計算過程中的變量。通用寄存器具有廣泛的用途,可以存儲不
    的頭像 發(fā)表于 02-03 15:08 ?2890次閱讀

    arm三寄存器在gdb調(diào)試時的作用

    arm三寄存器在gdb調(diào)試時作用? ARM是一種廣泛使用的微處理架構(gòu),它廣泛應(yīng)用于移動設(shè)備、嵌入式系統(tǒng)和其他高性能計算設(shè)備。當(dāng)我們在使用
    的頭像 發(fā)表于 01-31 10:44 ?795次閱讀

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是由多個觸發(fā)級聯(lián)而成的,每個觸發(fā)只能存儲一位。數(shù)據(jù)在寄存器中移動時,每個觸發(fā)
    的頭像 發(fā)表于 01-18 10:52 ?6612次閱讀

    寄存器陣列低功耗設(shè)計方案

    寄存器寫操作的時候會改變寄存器內(nèi)容,需要時鐘鎖入新的數(shù)據(jù)。但是,對寄存器進(jìn)行讀操作的時候,寄存器內(nèi)容不改變,寄存器不需要時鐘。這個特點工具是
    的頭像 發(fā)表于 12-08 11:19 ?528次閱讀
    <b class='flag-5'>寄存器</b>陣列低功耗設(shè)計方案

    寄存器查看的功能和使用

    16進(jìn)制位關(guān)系,但是對寄存器數(shù)值的每一位并沒有很直觀的展示。因此就需要一軟件直觀的查看寄存器值與位的關(guān)系。
    的頭像 發(fā)表于 11-28 12:26 ?1670次閱讀
    <b class='flag-5'>寄存器</b>查看<b class='flag-5'>器</b>的功能和使用