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

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

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

深入淺出帶你了解磁共振成像(MRI)基本原理

昊量光電 ? 來源:昊量光電 ? 作者:昊量光電 ? 2024-04-03 17:04 ? 次閱讀


深入淺出帶你了解磁共振成像(MRI)基本原理

一、當(dāng)我們?nèi)メt(yī)院做核磁共振檢查時(shí)是如何給大腦照相的呢?照相的原理又是什么?

人的大腦可以說是世jie上zui為精妙復(fù)雜的系統(tǒng),從生理上來說,腦的功能是控制身體的其他器官,可以說所有的行為都因它而起,所有的感悟也都由它而生。對(duì)于這么復(fù)雜而又精細(xì)的系統(tǒng),從古至今人類從未放棄探索。

研究腦zui古老的方法是神經(jīng)解剖學(xué)。神經(jīng)生理學(xué)家研究腦的化學(xué)、藥理學(xué)和電性質(zhì),認(rèn)知神經(jīng)科學(xué)研究大腦的運(yùn)作如何執(zhí)行心理或認(rèn)知功能。我們姑且將其統(tǒng)稱為腦科學(xué),即研究腦的結(jié)構(gòu)和功能的科學(xué)。

腦科學(xué)研究方法除了常規(guī)的認(rèn)知行為研究之外,還有利用腦功能成像設(shè)備的研究方法,zui常見的有磁共振成像技術(shù)(MRI)、腦電圖(EEG)、腦磁圖(MEG)等。今天我們就來聊聊磁共振成像技術(shù)(MRI)的基本原理。

wKgaomYNG6OAT74mAAZ7vItOR1A309.png

圖1.圖片來源于網(wǎng)絡(luò)

磁共振成像技術(shù)原本稱為核磁共振成像。很多人聽到“核磁”,第1反應(yīng)是這個(gè)對(duì)人體有害嗎,因?yàn)槊Q中不是有“核”嗎。其實(shí),此處的”核“指”原子核“確實(shí)不假,但磁共振成像只與原子核的磁場相關(guān),與原子核聚變、裂變等的能量放射并無關(guān)系。因此,磁共振成像其實(shí)是利用人體組織中某種原子核的核磁共振現(xiàn)象,將所得射頻信號(hào)經(jīng)過計(jì)算機(jī)處理,重構(gòu)出人體某一層面的圖像的診斷技術(shù)。

二、“核”和“磁”

我們先來說說這個(gè)“核”。人體是由原子構(gòu)成的,原子由電子和原子核組成,原子核包括質(zhì)子和中子。原子核像地球一樣可以圍繞著中軸進(jìn)行自我旋轉(zhuǎn),并且人體中水分含量zui多,因此大腦中的H質(zhì)子會(huì)自旋。通常情況下,每個(gè)質(zhì)子自旋均會(huì)產(chǎn)生一個(gè)小的磁場,但呈隨機(jī)無序排列,各方向的磁性相互抵消,因此人體整體不表現(xiàn)磁性。

但當(dāng)一個(gè)人進(jìn)入核磁共振掃描機(jī)器里,這些質(zhì)子就處在了掃描機(jī)所產(chǎn)生的強(qiáng)磁場中。這些H原子仍按自己的頻率震動(dòng),但方向?yàn)榕c外界磁場保持一致,整體上會(huì)表現(xiàn)出磁性。這就好比學(xué)校做廣播體操,同學(xué)們一開始是隨機(jī)排列的,但是一旦聽到廣播體操聲響起,同學(xué)們都會(huì)自覺的排列整齊,朝同一個(gè)方向齊刷刷站好。此時(shí),質(zhì)子兼顧自旋和指向磁場方向或反方向的兩種運(yùn)動(dòng),綜合起來看就類似于小時(shí)候玩的陀螺,稱之為進(jìn)動(dòng)。

因此,磁共振成像系統(tǒng)中很重要的一個(gè)組成部分就是磁體系統(tǒng),它的主要作用是提供一個(gè)穩(wěn)定的、均勻的空間磁場環(huán)境。根據(jù)磁場強(qiáng)度的大小,可以把磁共振設(shè)備分為低場、中場、高場及超高場。磁場的單位是特斯拉Tesla),是以一位傳奇的物理學(xué)家尼古拉·特斯拉的名字命名的。

磁場強(qiáng)度小于0.5T的磁共振設(shè)備被叫做低場磁共振

磁場強(qiáng)度大于0.5T小于1.0T的磁共振設(shè)備叫做中場磁共振

磁場強(qiáng)度大于1.0T小于2.0T的磁共振就是高場磁共振

磁場強(qiáng)度大于2.0T的磁共振是超高場磁共振,包括臨床和科研常用的3.0T和7.0T

wKgZomYNG6SAewYjAAFkbX-Ku20370.png

wKgaomYNG6SAKRU2AACgQfZAYug271.png

三、“共振”

前面我們提到,在外加磁場后,體內(nèi)的質(zhì)子進(jìn)動(dòng)而產(chǎn)生磁矢量。平衡狀態(tài)下,大部分的質(zhì)子方向和外加磁場方向一致(即縱向磁化),而由于相位不同,宏觀上只有縱向磁化產(chǎn)生,而無橫向磁化產(chǎn)生。但由于和外加磁場方向一致不能被直接測量,我們?nèi)绻胍@得這個(gè)信號(hào),就需要擾亂它。

這就提到磁共振系統(tǒng)第二個(gè)重要組成部分——射頻系統(tǒng),它的主要作用是發(fā)射能夠激發(fā)成像區(qū)域的射頻脈沖。當(dāng)我們加入的射頻脈沖的頻率和質(zhì)子進(jìn)動(dòng)頻率一致時(shí),就會(huì)發(fā)生能量的傳遞,低能的質(zhì)子獲得能量進(jìn)入高能的狀態(tài),這便是核磁共振。

加入了射頻脈沖之后,產(chǎn)生的第1個(gè)影響是能量的傳遞,獲得能量的質(zhì)子會(huì)從低能級(jí)(磁場方向指向上)躍遷至高能狀態(tài)(磁場方向指向下),縱向磁場強(qiáng)度隨之不斷減小。第二個(gè)影響是由于頻率一致,所有吸收能量的質(zhì)子會(huì)相互吸引靠攏,產(chǎn)生相同的相位,橫向磁場強(qiáng)度隨之不斷增大。

wKgaomYNG6WARjBxAAHdr_OdRlA846.png

四.“成像”

那么,射頻脈沖關(guān)閉后發(fā)生了什么呢?當(dāng)射頻脈沖消失后,這些共振的H原子會(huì)慢慢恢復(fù)到原來的方向和幅度,這個(gè)過程稱之為“弛豫”。

弛豫分為橫向弛豫和縱向弛豫。橫向弛豫也稱T2弛豫,即橫向磁化逐漸減少的過程,橫向磁化從zui大值減少了63%所花費(fèi)的時(shí)間為T2;縱向弛豫也稱為T1弛豫,即縱向磁化逐漸恢復(fù)的過程,縱向磁化恢復(fù)到平衡狀態(tài)強(qiáng)度的63%所需的時(shí)間為T1。弛豫時(shí)間與質(zhì)子密度有關(guān),不同組織的T1和T2值有很大的差異。

簡單來說,在恢復(fù)的過程中,被激發(fā)的質(zhì)子釋放的能量,即磁共振信號(hào)被計(jì)算機(jī)所接收。對(duì)于T1像,計(jì)算機(jī)接收的是從0到63%的信號(hào),時(shí)間越長,信號(hào)越弱。而T2像是從100%到37%的信號(hào),所以時(shí)間越長,信號(hào)越強(qiáng)。

zui終按照強(qiáng)度轉(zhuǎn)換為黑白灰階,從而畫出人體圖像。信號(hào)越強(qiáng),圖像越亮;信號(hào)越弱,圖像越暗。比如,大家可以記住水為長T1長T2,脂肪為短T1短T2,如下圖所示。T1像中的腦脊液為黑色,而T2像中腦脊液為白色。通常,T1觀察解剖結(jié)構(gòu)較好,T2觀察組織病變較好。

wKgZomYNG6WAEeXTAANfWS6JSPw423.png


五.Metrolab 核磁共振(MRI)磁場相機(jī)MFC2046

當(dāng)我們了解清楚核磁共振的原理之后,才會(huì)發(fā)現(xiàn)要搭建一套醫(yī)院的核磁共振檢測設(shè)備是需要很高精度的檢測儀器輔助檢測的,昊量光電全新推出的Metrolab 核磁共振(MRI)磁場相機(jī)MFC2046就是專門為了醫(yī)療、科研等高精度設(shè)備檢測提供了一種zui優(yōu)的解決方案!

wKgaomYNG6aABSwDAAJfKw0ABa4085.png

鏈接:https://www.auniontech.com/details-2085.html

Metrolab 的 NMR(質(zhì)子核磁共振) 磁場相機(jī)于 25 年前推出,加快了磁共振成像(MRI)磁體的磁場測繪。它們將采集時(shí)間從幾小時(shí)縮短到幾分鐘,將定位誤差減小到幾分之一毫米,并使人為誤差和漂移誤差變得微不足道。

Metrolab 核磁共振成像(MRI)磁場相機(jī)MFC2046基于脈沖 NMR 技術(shù),是精密測試儀核磁共振三軸高斯計(jì)PT2026 的延伸。

新一代磁場相機(jī)MFC2046相比上一款MFC3045可提供更多方案:

測量范圍更廣,頻率可達(dá)1.1 GHz 或 30 T

多種探頭陣列幾何形狀可供選擇,用于繪制DSV 為 100 mm至 600mm的 MRI 磁體或孔徑小至 20 mm的 NMR光譜磁體的圖譜

一個(gè)測頭陣列上蕞多可安裝255 個(gè)測頭

更高的靈活性:一臺(tái)儀器可進(jìn)行多點(diǎn)測繪和單點(diǎn)測量

高效的工作流程:核磁共振成像探頭陣列可包括一個(gè)寬范圍探頭,用于進(jìn)行磁場掃描

標(biāo)準(zhǔn)USB以太網(wǎng)接口

用戶友好型軟件:任務(wù)驅(qū)動(dòng),實(shí)時(shí)數(shù)據(jù)采集

wKgZomYNG6eAM5eIAAYNuX1Wtrc309.png


參考文獻(xiàn):

《磁共振成像臨床應(yīng)用入門》靳二虎蔣濤 張輝

Grover, V. P., Tognarelli, J. M., Crossey, M. M., Cox, I. J., Taylor-Robinson, S. D., & McPhail, M. J. (2015). Magnetic Resonance Imaging: Principles and Techniques: Lessons for Clinicians. Journal of clinical and experimental hepatology, 5(3), 246–255.

如果您對(duì)磁場成像測量有興趣,請(qǐng)?jiān)L問上海昊量光電的官方網(wǎng)頁:

https://www.auniontech.com/three-level-361.html

歡迎繼續(xù)關(guān)注上海昊量光電的各大媒體平臺(tái),我們將不定期推出各種產(chǎn)品介紹與技術(shù)新聞。

更多詳情請(qǐng)聯(lián)系昊量光電/歡迎直接聯(lián)系昊量光電

關(guān)于昊量光電:

上海昊量光電設(shè)備有限公司是光電產(chǎn)品專業(yè)代理商,產(chǎn)品包括各類激光器、光電調(diào)制器、光學(xué)測量設(shè)備、光學(xué)元件等,涉及應(yīng)用涵蓋了材料加工、光通訊、生物醫(yī)療、科學(xué)研究、國防、量子光學(xué)、生物顯微、物聯(lián)傳感、激光制造等;可為客戶提供完整的設(shè)備安裝,培訓(xùn),硬件開發(fā),軟件開發(fā),系統(tǒng)集成等服務(wù)。


審核編輯 黃宇

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

    關(guān)注

    0

    文章

    65

    瀏覽量

    17025
  • 磁共振成像
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    8670
收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    了解信號(hào)完整性的基本原理

    ,設(shè)計(jì)人員必須注意電路板布局并使用適當(dāng)?shù)膶?dǎo)線和連接器,從而最大限度地減少反射、噪聲和串?dāng)_。此外,還必須了解傳輸線、阻抗、回波損耗和共振基本原理。 本文將介紹討論信號(hào)完整性時(shí)使用的一些術(shù)語,以及設(shè)計(jì)人員需要考慮的問題,然后介紹
    的頭像 發(fā)表于 05-25 11:54 ?150次閱讀
    <b class='flag-5'>了解</b>信號(hào)完整性的<b class='flag-5'>基本原理</b>

    深入淺出解析低功耗藍(lán)牙協(xié)議棧

    深入Bluetooth LE協(xié)議棧各個(gè)組成部分之前,我們先看一下Bluetooth LE協(xié)議棧整體架構(gòu)。 如上圖所述,要實(shí)現(xiàn)一個(gè)Bluetooth LE應(yīng)用,首先需要一個(gè)支持Bluetooth
    的頭像 發(fā)表于 04-09 14:49 ?374次閱讀
    <b class='flag-5'>深入淺出</b>解析低功耗藍(lán)牙協(xié)議棧

    無刷電機(jī)電調(diào)的基本原理

    有關(guān)本文所談?wù)摰臒o刷電機(jī)內(nèi)容, 只涉及低速飛行類航模電調(diào)的小功率無傳感器應(yīng)用,講解的理論比較淺顯易懂 ,旨在讓初學(xué)者能夠?qū)o刷電機(jī)有一個(gè)比較快的認(rèn) 識(shí),掌握基本原理和控制方法,可以在短時(shí)間內(nèi)達(dá)到
    發(fā)表于 03-17 19:57

    深居AutoCAD二次開發(fā)

    深居AutoCAD二次開發(fā),net版
    發(fā)表于 01-06 14:12 ?6次下載

    深入淺出RISC-V調(diào)試

    一、JTAG簡介 目前RISC-V官方支持的調(diào)試方式是JTAG(Joint Test Action Group),而ARM支持的調(diào)試方式有JTAG和SWD(Serial Wire Debug)這兩種。 JTAG是一種國際標(biāo)準(zhǔn)的調(diào)試方式(IEEE1149.1),而SWD是ARM開發(fā)的。標(biāo)準(zhǔn)JTAG采用四線方式,分別是TCK、TMS、TDI和TDO,有一個(gè)可選的TRST引腳。 ● TCK:測試時(shí)鐘輸入。 ● TMS:測試模式選擇。 ● TDI:測試數(shù)據(jù)輸入。 ● TDO:測試數(shù)據(jù)輸出。 在調(diào)試時(shí)需要用到一個(gè)工具,比如JLink或者CMSIS-DAP,對(duì)于這個(gè)工具,在這里稱為JTAG主機(jī)(JTAG host),而嵌入在芯片內(nèi)部的JTAG稱為JTAG從機(jī)(JTAG slave),需要注意的是上面這些信號(hào)的輸入輸出方向是對(duì)于JTAG從機(jī)來說的。下文中如無特別說明,JTAG都是指JTAG從機(jī)。 一個(gè)JTAG主機(jī)可以同時(shí)對(duì)多個(gè)JTAG從機(jī)進(jìn)行調(diào)試,這通過JTAG掃描鏈(JTAG Scan Chain)完成,如圖1所示。 圖1 一個(gè)JTAG主機(jī)連接多個(gè)JTAG從機(jī) JTAG內(nèi)部有一個(gè)TAP(Test Access Port)控制器(或者說狀態(tài)機(jī)),通過TCK和TMS信號(hào)來改變狀態(tài)機(jī)的狀態(tài)。這個(gè)狀態(tài)機(jī)的核心是兩路SCAN,分別是IR SCAN和DR SCAN,TAP狀態(tài)機(jī)如圖2所示。 圖2 TAP狀態(tài)機(jī) 箭頭上的0或1表示的是TMS信號(hào)的電平。JTAG在每一個(gè)TCK信號(hào)的上升沿采樣TMS信號(hào)和TDI信號(hào),決定狀態(tài)機(jī)的狀態(tài)是否發(fā)生變化,在每一個(gè)TCK信號(hào)的下降沿輸出TDO信號(hào)??梢钥吹剑瑹o論TAP目前處于哪一個(gè)狀態(tài),只要TMS保持高電平并持續(xù)5個(gè)TCK時(shí)鐘,則TAP一定會(huì)回到Test-Logic-Reset狀態(tài)。 JTAG內(nèi)部有一個(gè)IR(instruction register)寄存器和多個(gè)DR(data register)寄存器,IR寄存器決定要訪問的是哪一個(gè)DR寄存器。DR寄存器有IDCODE、BYPASS等。在Test-Logic-Reset狀態(tài)下IR寄存器默認(rèn)選擇的是IDCODE這個(gè)DR寄存器。 JTAG主機(jī)通過IR SCAN設(shè)置IR寄存器的值,然后通過DR SCAN來讀、寫相應(yīng)的DR寄存器。 二、RISC-V調(diào)試Spec 調(diào)試模塊在CPU芯片設(shè)計(jì)里是最為不起眼的,但又是最為復(fù)雜的模塊之一,大部分開源的處理器IP都沒有調(diào)試模塊。 下面的內(nèi)容基于RISC-V debug spec 0.13版本。 目前RISC-V的官方調(diào)試上位機(jī)是openocd,調(diào)試工具可以是JLink或者CMSIS-DAP,RISC-V調(diào)試系統(tǒng)框架如圖3所示。 圖3 RISC-V調(diào)試系統(tǒng)框架 可以看到主要分為3個(gè)部分,分別是Debug Host,可以理解為PC;Debug Hardware,可以理解為JLink或者CMSIS-DAP這樣的調(diào)試工具;第三部分就是嵌入在芯片內(nèi)部的調(diào)試模塊。在調(diào)試模塊內(nèi)部,與調(diào)試工具直接交互的是DTM模塊,DTM模塊通過DMI接口與DM模塊交互。 1>DTM模塊 在DTM模塊里實(shí)現(xiàn)了一個(gè)TAP控制器(狀態(tài)機(jī)),其中IR寄存器的長度最少為5位,當(dāng)TAP控制器復(fù)位時(shí),IR的值默認(rèn)為5\'b00001,即選擇的是IDCODE寄存器。DTM模塊的寄存器(DR寄存器)定義如圖4所示。 圖4 DTM寄存器 其中紅色框起來的寄存器是必須要實(shí)現(xiàn)的。下面簡單介紹一下這幾個(gè)寄存器。 ① IDCODE寄存器(0x01) 當(dāng)TAP狀態(tài)機(jī)復(fù)位時(shí),IR寄存器的值默認(rèn)為0x01,即選擇的是IDCODE寄存器。IDCODE寄存器的每一位含義如圖5所示。IDCODE是只讀寄存器。 圖5 IDCODE寄存器 ● Version:只讀,版本號(hào),可為任意值。 ● PartNumber:只讀,可為任意值。 ● Manufld:只讀,廠商號(hào),遵循JEP106標(biāo)準(zhǔn)分配,實(shí)際中可為任意值,只要不與已分配的廠商號(hào)沖突即可。 ② DTM控制和狀態(tài)寄存器(dtmcs,0x10) dtmcs寄存器的每一位含義如圖6所示。 圖6 dtmcs寄存器 ● dmihardreset:DTM模塊硬復(fù)位,寫1有效。 ● dmireset:清除出錯(cuò),寫1有效。 ● idle:只讀,JTAG 主機(jī)在Run-Test-Idle狀態(tài)停留的時(shí)鐘周期數(shù),0表示不需要進(jìn)入Run-Test-Idle狀態(tài),1表示進(jìn)入Run-Test-Idle狀態(tài)后可以馬上進(jìn)入下一個(gè)狀態(tài),以此類推。 ● dmistat:只讀,上一次操作的狀態(tài)。0表示無出錯(cuò),1或者2表示操作出錯(cuò),3表示操作還未完成。 ● abits:只讀,dmi寄存器中address域的大小(位數(shù))。 ● version:只讀,實(shí)現(xiàn)所對(duì)應(yīng)的spec版本,0表示0.11版本,1表示0.13版本。 ③ DM模塊接口訪問寄存器(dmi,0x11) dmi寄存器的每一位含義如圖7所示。 圖7 dmi寄存器 ● address:可讀可寫,DM寄存器的長度(位數(shù))。 ● data:可讀可寫,往DM寄存器讀、寫的數(shù)據(jù),固定為32位。 ● op:可讀可寫,讀或者寫這個(gè)域時(shí)有不同的含義。當(dāng)寫這個(gè)域時(shí),寫0表示忽略address和data的值,相當(dāng)于nop操作;寫1表示從address指定的寄存器讀數(shù)據(jù);寫2表示把data的數(shù)據(jù)寫到address指定的寄存器。寫3為保留值。當(dāng)讀這個(gè)域時(shí),0表示上一個(gè)操作正確完成;1為保留值;2表示上一個(gè)操作失敗,這個(gè)狀態(tài)是會(huì)被記住的,因此需要往dtmcs寄存器的dmireset域?qū)?才能清除這個(gè)狀態(tài)。3表示上一個(gè)操作還未完成。 在Update-DR狀態(tài)時(shí),DTM開始執(zhí)行op指定的操作。在Capture-DR狀態(tài)時(shí),DTM更新data域。 ④ BYPASS寄存器(0x1f) 只讀,長度為1,值固定為0。 2>DM模塊 從圖3可知,DM模塊訪問RISC-V Core有兩種方式,一種是通過abstract command,另一種是通過system bus。abstract command方式是必須要實(shí)現(xiàn)的,system bus的方式是可選的。 DM模塊的寄存器都為32位,定義如圖8所示。 圖8 DM寄存器 下面介紹一下紅色框起來這幾個(gè)重要的寄存器。 ① data寄存器(data0-data11,0x04-0x0f) 這12個(gè)寄存器是用于abstract command的數(shù)據(jù)寄存器,長度為32位,可讀可寫。 ② DM控制寄存器(dmcontrol,0x10) dmcontrol寄存器的每一位含義如圖9所示。 圖9 dmcontrol寄存器 ● haltreq:只寫,寫1表示halt(暫停)當(dāng)前hart(hart表示CPU核,存在多核的情況)。 ● resumereq:只能寫1,寫1表示resume(恢復(fù))當(dāng)前hart,即go。 ● hartreset:可讀可寫,寫1表示復(fù)位DM模塊,寫0表示撤銷復(fù)位,這是一個(gè)可選的位。 ● ackhavereset:只能寫1,寫1表示清除當(dāng)前hart的havereset狀態(tài)。 ● hasel:可讀可寫,0表示當(dāng)前只有一個(gè)已經(jīng)被選擇了的hart,1表示當(dāng)前可能有多個(gè)已經(jīng)被選擇了的hart。 ● hartsello:可讀可寫,當(dāng)前選擇的hart的低10位。1位表示一個(gè)hart。 ● hartselhi:可讀可寫,當(dāng)前選擇的hart的高10位。1位表示一個(gè)hart。如果只有一個(gè)hart,那么hasel的值為0,hartsello的值為1,hartselhi的值為0。 ● setresethaltreq:只能寫1,寫1表示當(dāng)前選擇的hart復(fù)位后處于harted狀態(tài)。 ● clrresethaltreq:只能寫1,寫1表示清除setresethaltreq的值。 ● ndmreset:可讀可寫,寫1表示復(fù)位整個(gè)系統(tǒng),寫0表示撤銷復(fù)位。 ● dmactive:可讀可寫,寫0表示復(fù)位DM模塊,寫1表示讓DM模塊正常工作。正常調(diào)試時(shí),此位必須為1。 ③ DM狀態(tài)寄存器(dmstatus,0x11) dmstatus寄存器是一個(gè)只讀寄存器,每一位含義如圖10所示。 圖10 dmstatus寄存器 ● impebreak:1表示執(zhí)行完progbuf的指令后自動(dòng)插入一條ebreak指令,這樣就可以節(jié)省一個(gè)progbuf。當(dāng)progbufsize的值為1時(shí),此值必須為1。 ● allhavereset:1表示當(dāng)前選擇的hart已經(jīng)復(fù)位。 ● anyhavereset:1表示當(dāng)前選擇的hart至少有一個(gè)已經(jīng)復(fù)位。 ● allresumeack:1表示當(dāng)前選擇的所有hart已經(jīng)應(yīng)答上一次的resume請(qǐng)求。 ● anyresumeack:1表示當(dāng)前選擇的hart至少有一個(gè)已經(jīng)應(yīng)答上一次的resume請(qǐng)求。 ● allnonexistent:1表示當(dāng)前選擇的hart不存在于當(dāng)前平臺(tái)。 ● anynonexistent:1表示至少有一個(gè)選擇了的hart不存在于當(dāng)前平臺(tái)。 ● allunavail:1表示當(dāng)前選擇的hart都不可用。 ● anyunavail:1表示至少有一個(gè)選擇了的hart不可用。 ● allrunning:1表示當(dāng)前選擇的hart都處于running狀態(tài)。 ● anyrunning:1表示至少有一個(gè)選擇了的hart處于running狀態(tài)。 ● allhalted:1表示當(dāng)前選擇的hart都處于halted狀態(tài)。 ● anyhalted:1表示至少有一個(gè)選擇了的hart處于halted狀態(tài)。 ● authenticated:0表示使用DM模塊之前需要進(jìn)行認(rèn)證,1表示已經(jīng)通過認(rèn)證。 ● authbusy:0表示可以進(jìn)行正常的認(rèn)證,1表示認(rèn)證處于忙狀態(tài)。 ● hasresethaltreq:1表示DM模塊支持復(fù)位后處于halted狀態(tài),0表示不支持。 ● confstrptrvalid:1表示confstrptr0~3寄存器保存了配置字符串的地址。 ● version:0表示DM模塊不存在,1表示DM模塊的版本為0.11,2表示DM模塊的版本為0.13。 ④ abstract控制和狀態(tài)寄存器(abstractcs,0x16) abstractcs寄存器定義如圖11所示。 圖11 abstractcs寄存器 ● progbufsize:只讀,program buffer的個(gè)數(shù),取值范圍為0~16,每一個(gè)的大小為32位。 ● busy:只讀,1表示abstract命令正在執(zhí)行,當(dāng)寫command寄存器后該位應(yīng)該馬上被置位直到命令執(zhí)行完成。 ● cmderr:可讀、只能寫1,cmderr的值僅當(dāng)busy位為0時(shí)有效。0表示無錯(cuò)誤,1表示正在操作command、abstractcs、data或者progbuf寄存器,2表示不支持當(dāng)前命令,3表示執(zhí)行命令時(shí)出現(xiàn)異常,4表示由于當(dāng)前hart不可用,或者不是處于halted/running狀態(tài)而不能被執(zhí)行,5表示由于總線出錯(cuò)(對(duì)齊、訪問大小、超時(shí))導(dǎo)致的錯(cuò)誤,7表示其他錯(cuò)誤。寫1清零cmderr。 ● datacount:只讀,所實(shí)現(xiàn)的data寄存器的個(gè)數(shù)。 ⑤ abstract命令寄存器(command,0x17) 當(dāng)寫這個(gè)寄存器時(shí),相應(yīng)的操作就會(huì)被執(zhí)行。command寄存器只能寫,定義如圖12所示。 圖12 command寄存器 ● cmdtype:只寫,命令類型,0為表示訪問寄存器,1表示快速訪問,2表示訪問內(nèi)存。 ● control:只寫,不同的命令類型有不同的含義,說明如下。 當(dāng)cmdtype為0時(shí),control定義如圖13所示。 圖13 訪問寄存器 ● cmdtype:值為0。 ● aarsize:2表示訪問寄存器的最低32位,3表示訪問寄存器的最低64位,4表示訪問寄存器的最低128位。如果大于實(shí)際寄存器的大小則此次訪問是失敗的。 ● aarpostincrement:1表示成功訪問寄存器后自動(dòng)增加regno的值。 ● postexec:1表示執(zhí)行progbuf里的內(nèi)容(指令)。 ● transfer:0表示不執(zhí)行write指定的操作,1表示執(zhí)行write指定的操作。 ● write:0表示從指定的寄存器拷貝數(shù)據(jù)到arg0指定的data寄存器。1表示從arg0指定的data寄存器拷貝數(shù)據(jù)到指定的寄存器。 ● regno:要訪問的寄存器。 綜上,可知: Ⅰ. 當(dāng)write=0,transfer=1時(shí),從regno指定的寄存器拷貝數(shù)據(jù)到arg0對(duì)應(yīng)的data寄存器。 Ⅱ. 當(dāng)write=1,transfer=1時(shí),從arg0對(duì)應(yīng)的data寄存器拷貝數(shù)據(jù)到regno指定的寄存器。 Ⅲ. 當(dāng)aarpostincrement=1時(shí),將regno的值加1。 Ⅳ. 當(dāng)postexec=1時(shí),執(zhí)行progbuf寄存器里的指令。 arg對(duì)應(yīng)的data寄存器如圖14所示。 圖14 arg對(duì)應(yīng)的data寄存器 即當(dāng)訪問的寄存器位數(shù)為32位時(shí),arg0對(duì)應(yīng)data0寄存器,arg1對(duì)應(yīng)data1寄存器,arg2對(duì)應(yīng)data2寄存器。 當(dāng)cmdtype為1時(shí),control定義如圖15所示。 圖15 快速訪問 ● cmdtyte:值為1。 此命令會(huì)執(zhí)行以下操作: 1)halt住當(dāng)前hart。 2)執(zhí)行progbuf寄存器里的指令。 3)resume當(dāng)前hart。 當(dāng)cmdtype為2時(shí),control定義如圖16所示。 圖16 訪問內(nèi)存 ● cmdtype:值為2。 ● aamvirtual:0表示訪問的是物理地址,1表示訪問的是虛擬地址。 ● aamsize:0表示訪問內(nèi)存的低8位,1表示訪問內(nèi)存的低16位,2表示訪問內(nèi)存的低32位,3表示訪問內(nèi)存的低64位,4表示訪問內(nèi)存的低128位。 ● aampostincrement:1表示訪問成功后,將arg1對(duì)應(yīng)的data寄存器的值加上aamsize對(duì)應(yīng)的字節(jié)數(shù)。 ● write:0表示從arg1指定的地址拷貝數(shù)據(jù)到arg0指定的data寄存器,1表示從arg0指定的data寄存器拷貝數(shù)據(jù)到arg1指定的地址。 ● target-specific:保留。 綜上,可知: Ⅰ. 當(dāng)write=0時(shí),從arg1指定的地址拷貝數(shù)據(jù)到arg0指定的data寄存器。 Ⅱ. 當(dāng)write=1時(shí),從arg0指定的data寄存器拷貝數(shù)據(jù)到arg1指定的地址。 Ⅲ. 當(dāng)aampostincrement=1時(shí),增加arg1對(duì)應(yīng)的data寄存器的值。 ⑥ 系統(tǒng)總線訪問控制和狀態(tài)寄存器(sbcs,0x38) sbcs寄存器定義如圖17所示。 圖17 sbcs寄存器 ● sbversion:只讀,0表示system bus是2018.1.1之前的版本,1表示當(dāng)前debug spec的版本,即0.13版本。 ● sbbusyerror:只讀,寫1清零,當(dāng)debugger要進(jìn)行system bus訪問操作時(shí),如果上一次的system bus訪問還在進(jìn)行中,此時(shí)會(huì)置位該位。 ● sbbusy:只讀,1表示system bus正在忙。在進(jìn)行system bus訪問前必須確保該位為0。 ● sbreadonaddr:可讀可寫,1表示每次往sbaddress0寄存器寫數(shù)據(jù)時(shí),將會(huì)自動(dòng)觸發(fā)system bus從新的地址讀取數(shù)據(jù)。 ● sbaccess:可讀可寫,訪問的數(shù)據(jù)寬度,0表示8位,1表示16位,2表示32位,3表示64位,4表示128位。 ● sbautoincrement:可讀可寫,1表示每次system bus訪問后自動(dòng)將sbaddress的值加上sbaccess的大小(字節(jié))。 ● sbreadondata:可讀可寫,1表示每次從sbdata0寄存器讀數(shù)據(jù)后將自動(dòng)觸發(fā)system bus從新的地址讀取數(shù)據(jù)。 ● sberror:可讀,寫1清零,0表示無錯(cuò)誤,1表示超時(shí),2表示訪問地址錯(cuò)誤,3表示地址對(duì)齊錯(cuò)誤,4表示訪問大小錯(cuò)誤,7表示其他錯(cuò)誤。 ● sbasize:只讀,system bus地址寬度(位數(shù)),0表示不支持system bus訪問。 ● sbaccess128:只讀,1表示system bus支持128位訪問。 ● sbaccess64:只讀,1表示system bus支持64位訪問。 ● sbaccess32:只讀,1表示system bus支持32位訪問。 ● sbaccess16:只讀,1表示system bus支持16位訪問。 ● sbaccess8:只讀,1表示system bus支持8位訪問。 ⑦ 系統(tǒng)總線地址0寄存器(sbaddress0,0x39) 可讀可寫,如果sbcs寄存器中的sbasize的值為0,那么此寄存器可以不用實(shí)現(xiàn)。 當(dāng)寫該寄存器時(shí),會(huì)執(zhí)行以下流程: Ⅰ. 設(shè)置sbcs.sbbusy的值為1。 Ⅱ. 從新的sbaddress地址讀取數(shù)據(jù)。 Ⅲ. 如果讀取成功并且sbcs.sbautoincrement的值為1,則增加sbaddress的值。 Ⅳ. 設(shè)置sbcs.sbbusy的值為0。 ⑧ 系統(tǒng)總線數(shù)據(jù)0寄存器(sbdata0,0x3c) 可讀可寫,如果sbcs寄存器中的所有sbaccessxx的值都為0,那么此寄存器可以不用實(shí)現(xiàn)。 當(dāng)寫該寄存器時(shí),會(huì)執(zhí)行以下流程: Ⅰ. 設(shè)置sbcs.sbbusy的值為1。 Ⅱ. 將sbdata的值寫到sbaddress指定的地址。 Ⅲ. 如果寫成功并且sbcs.sbautoincrement的值為1,則增加sbaddress的值。 Ⅳ. 設(shè)置sbcs.sbbusy的值為0。 當(dāng)讀該寄存器時(shí),會(huì)執(zhí)行以下流程: Ⅰ. 準(zhǔn)備返回讀取的數(shù)據(jù)。 Ⅱ. 設(shè)置sbcs.sbbusy的值為1。 Ⅲ. 如果sbcs.sbautoincrement的值為1,則增加sbaddress的值。 Ⅳ. 如果sbcs.sbreadondata的值為1,則開始下一次讀操作。 Ⅴ. 設(shè)置sbcs.sbbusy的值為0。 三、RISC-V調(diào)試上位機(jī)分析 RISC-V官方支持的調(diào)試器上位機(jī)是openocd。openocd是地表最強(qiáng)大(沒有之一)的開源調(diào)試上位機(jī),支持各種target(ARM(M、A系列)、FPGA、RISC-V等),支持各種調(diào)試器(Jlink、CMSIS-DAP、FTDI等),支持JTAG和SWD接口。 這里不打算詳細(xì)分析整個(gè)openocd的實(shí)現(xiàn),只是重點(diǎn)關(guān)注針對(duì)RISC-V平臺(tái)的初始化、讀寫寄存器和讀寫內(nèi)存這幾個(gè)流程。 1>openocd啟動(dòng)過程 openocd啟動(dòng)時(shí)需要通過-f參數(shù)制定一個(gè)cfg文件,比如: openocd.exe -f riscv.cfg riscv.cfg文件的內(nèi)容如下: adapter_khz1000 reset_config srst_only adapter_nsrst_assert_width 100 interface cmsis-dap transport select jtag set _CHIPNAME riscv jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x1e200a6d set _TARGETNAME $_CHIPNAME.cpu target create $_TARGETNAME riscv -chain-position $_TARGETNAME ■ 第一行設(shè)置TCK的時(shí)鐘為1000KHz。 ■ 第二行表示不支持通過TRST引腳復(fù)位,只支持TMS為高電平并持續(xù)5個(gè)TCK時(shí)鐘這種方式的復(fù)位。 ■ 第三行是復(fù)位持續(xù)的延時(shí)。 ■ 第四行指定調(diào)試器為CMSIS-DAP。 ■ 第五行指定調(diào)試接口為JTAG。 ■ 第六行指定調(diào)試的target類型為riscv。 ■ 第七行指定生成一個(gè)IR寄存器長度為5位、IDCODE為0x1e200a6d的JTAG TAP。 ■ 第八、九行指定生成一個(gè)riscv target。 openocd啟動(dòng)時(shí)的主要流程如圖18所示。 圖18 openocd啟動(dòng)流程 下面重點(diǎn)關(guān)注一下examine target這個(gè)流程。 這里的target是指riscv,對(duì)于riscv,首先會(huì)讀取dtmcontrol這個(gè)寄存器,因?yàn)閛penocd支持0.11和0.13版本的DTM,通過這個(gè)寄存器可以知道當(dāng)前調(diào)試的DTM是哪一個(gè)版本。這里選擇0.13版本來分析。通過讀取dtmcontrol,還可以知道idle、abits這些參數(shù)。接下來會(huì)將dmcontrol這個(gè)寄存器的dmactive域?qū)?后再寫1來復(fù)位DM模塊。接下來再讀取dmstatus,判斷version域是否為2。接下來還會(huì)讀取sbcs和abstractcs寄存器,最后就是初始化每一個(gè)hart的寄存器。 2>read register過程 讀寄存器時(shí),先構(gòu)建command寄存器的內(nèi)容,首先將cmdtype的值設(shè)為0,aarsize的值設(shè)為2(寄存器的寬度為32位),transfer的值設(shè)為1,regno的值設(shè)為要讀的寄存器的number,其他值設(shè)為0,然后寫到command寄存器里。然后一直讀取abstractcs寄存器,直到abstractcs寄存器的busy位為0或者超時(shí)。然后再判斷abstractcs寄存器的cmderr的值是否為0,如果不為0則表示此次讀取寄存器失敗,如果為0則繼續(xù)讀取data0寄存器,這樣就可以得到想要讀的寄存器的值。 3>write register過程 寫寄存器時(shí),先將需要寫的值寫到data0寄存器,然后構(gòu)建command寄存器的內(nèi)容,首先將cmdtype的值設(shè)為0,aarsize的值設(shè)為2(寄存器的寬度為32位),transfer的值設(shè)為1,write的值設(shè)為1,regno的值設(shè)為要寫的寄存器的number,其他值設(shè)為0,然后寫到command寄存器里。然后一直讀取abstractcs寄存器,直到abstractcs寄存器的busy位為0或者超時(shí)。然后再判斷abstractcs寄存器的cmderr的值是否為0,如果不為0則表示此次寫寄存器失敗,如果為0則表示寫寄存器成功。 4>read memory過程 如果progbufsize的值大于等于2,則會(huì)優(yōu)先使用通過執(zhí)行指令的方式來讀取內(nèi)存。這里不分析這種方式,而是分析使用system bus的方式。通過前面的分析可知,system bus有兩個(gè)版本V0和V1,這里以V1版本來說明。 先將sbcs寄存器的sbreadonaddr的值設(shè)為1,sbaccess的值設(shè)為2(32位),然后將要讀內(nèi)存的地址寫入sbaddress0寄存器。接著讀sbdata0寄存器,最后讀sbcs寄存器,如果其中的sbbusy、sberror和sbbusyerror都為0,則從sbdata0讀取到的內(nèi)容就是要讀的內(nèi)存的值。 5>write memory過程 和read memory類似,同樣以V1版本來說明。 先將要寫的內(nèi)存地址寫到sbaddress0寄存器,然后將要寫的數(shù)據(jù)寫到data0寄存器,最后讀sbcs寄存器,如果其中的sbbusy、sberror和sbbusyerror都為0,則此次寫內(nèi)存成功。 四、RISC-V JTAG的實(shí)現(xiàn) 通過在STM32F103C8T6上實(shí)現(xiàn)(模擬)RISC-V調(diào)試標(biāo)準(zhǔn),進(jìn)一步加深對(duì)RISC-V JTAG調(diào)試的理解。 使用STM32的四個(gè)GPIO作為JTAG信號(hào)的四根線,其中TCK所在的引腳設(shè)為外部中斷,即上升沿和下降沿觸發(fā)方式,實(shí)現(xiàn)了可以通過openocd以RISC-V的調(diào)試標(biāo)準(zhǔn)來訪問STM32的寄存器和內(nèi)存。程序流程如圖19所示。 圖19 JTAG實(shí)現(xiàn)的程序流程 五、參考資料 1、在STM32上模擬RISC-V JTAG的實(shí)現(xiàn):stm32_riscv_jtag_slave 2、一個(gè)從零開始寫的易懂的RISC-V處理器核:tinyriscv
    發(fā)表于 11-28 22:00

    RNN的基本原理與實(shí)現(xiàn)

    RNN,即循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network),是一種特殊類型的人工神經(jīng)網(wǎng)絡(luò),專門設(shè)計(jì)用于處理序列數(shù)據(jù),如文本、語音、視頻等。以下是對(duì)RNN基本原理與實(shí)現(xiàn)的介紹: 一
    的頭像 發(fā)表于 11-15 09:49 ?1260次閱讀

    FPGA在醫(yī)療成像設(shè)備中的應(yīng)用

    隨著醫(yī)療科技的飛速發(fā)展,醫(yī)療成像設(shè)備在醫(yī)學(xué)診斷和治療中扮演著至關(guān)重要的角色。從傳統(tǒng)的X射線到先進(jìn)的計(jì)算機(jī)斷層掃描(CT)、磁共振成像(MRI)乃至四維
    的頭像 發(fā)表于 11-07 09:00 ?888次閱讀

    國儀量子推出全球首臺(tái)AI電子順磁共振波譜儀

    10月20日,媒體報(bào)道稱,在浙江大學(xué)舉辦的2024年全國電子順磁共振波譜學(xué)學(xué)術(shù)研討會(huì)上,國儀量子技術(shù)(合肥)股份有限公司(簡稱國儀量子)隆重推出了全球首臺(tái)AI電子順磁共振波譜儀(AI-EPR)。
    的頭像 發(fā)表于 10-22 11:20 ?780次閱讀

    磁共振機(jī)房精密空調(diào),如何避免故障?

    磁共振機(jī)房精密空調(diào)系統(tǒng)常見故障與處理。
    的頭像 發(fā)表于 10-12 18:13 ?733次閱讀
    核<b class='flag-5'>磁共振</b>機(jī)房精密空調(diào),如何避免故障?

    THS4631DGNR是否可以用在磁共振成像設(shè)備中?

    THS4631DGNR是否可以用在磁共振成像設(shè)備中
    發(fā)表于 09-24 07:48

    CBM96AD53-125 一款四通道、16位、125MSPS串行LVDS 1.8V模數(shù)轉(zhuǎn)換器

    磁共振成像(MRI)是一種使用強(qiáng)大的磁場和無線電波來生成身體內(nèi)部結(jié)構(gòu)詳細(xì)圖像的醫(yī)學(xué)成像技術(shù)。與使用有害輻射的CT掃描(計(jì)算機(jī)斷層掃描)不同,MRI不涉及輻射風(fēng)險(xiǎn)。芯佰微推出了ADC
    的頭像 發(fā)表于 09-11 17:42 ?629次閱讀
    CBM96AD53-125 一款四通道、16位、125MSPS串行LVDS 1.8V模數(shù)轉(zhuǎn)換器

    磁共振檢查常用線圈及分類方法

    研究。線圈是MRI系統(tǒng)中的關(guān)鍵部件,用于接收和發(fā)射射頻信號(hào),對(duì)成像質(zhì)量具有重要影響。本文將介紹磁共振檢查中常用的線圈及其分類方法。 一、磁共振線圈的
    的頭像 發(fā)表于 08-21 09:52 ?4875次閱讀

    深入淺出系列之代碼可讀性

    原創(chuàng)聲明:該文章是個(gè)人在項(xiàng)目中親歷后的經(jīng)驗(yàn)總結(jié)和分享,如有搬運(yùn)需求請(qǐng)注明出處。 這是“深入淺出系列”文章的第一篇,主要記錄和分享程序設(shè)計(jì)的一些思想和方法論,如果讀者覺得所有受用,還請(qǐng)“一鍵三連
    的頭像 發(fā)表于 08-09 16:00 ?447次閱讀

    高壓功率放大器在核磁共振陀螺研究中的應(yīng)用

    實(shí)驗(yàn)名稱:核磁共振陀螺內(nèi)嵌磁力儀的橫向弛豫時(shí)間在線測量方法實(shí)驗(yàn)研究方向:精密測量測試目的:核磁共振陀螺中探測光頻率變動(dòng)將導(dǎo)致內(nèi)嵌磁力儀所測信號(hào)幅度的變動(dòng),進(jìn)而導(dǎo)致陀螺的零偏漂移。根據(jù)核磁共振陀螺結(jié)構(gòu)
    的頭像 發(fā)表于 07-25 11:49 ?991次閱讀
    高壓功率放大器在核<b class='flag-5'>磁共振</b>陀螺研究中的應(yīng)用

    深入淺出談TDR阻抗測試

    、脈寬、時(shí)序、抖動(dòng)或噪聲內(nèi)容的任何事物都會(huì)影響整個(gè)系統(tǒng)的性能和可靠性。為保證信號(hào)完整性,必須了解和控制信號(hào)經(jīng)過的傳輸環(huán)境的阻抗。阻抗不匹配和不連續(xù)會(huì)導(dǎo)致反射,增加系
    的頭像 發(fā)表于 06-06 08:28 ?9385次閱讀
    <b class='flag-5'>深入淺出</b>談TDR阻抗測試

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品