chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

硬件乘法寄存器是可以通過(guò)CPU匯編指令的讀或著寫(xiě)進(jìn)行操作

2oON_changxuemc ? 來(lái)源:未知 ? 作者:李倩 ? 2018-09-30 10:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

32 位硬件乘法器是一個(gè)并行器件,而不是 CPU 內(nèi)核的一部分。這也就意味著:它在工作時(shí)不會(huì)涉及 CPU 的活動(dòng)。硬件乘法寄存器是可以通過(guò) CPU 匯編指令的讀或著寫(xiě)進(jìn)行操作。

硬件乘法器特點(diǎn):

○無(wú)符號(hào)乘法;

○ 有符號(hào)乘法;

○ 無(wú)符號(hào)乘加操作;

○ 由符號(hào)乘加操作;

○ 8 位,16 位,24 位,和 32 位操作數(shù);

○ 整數(shù)乘法

○ 小數(shù)乘法

○ 8位和 16 位操作數(shù)與 16 位硬件乘法器兼容;

○ 8位和 24 位在沒(méi)有符號(hào)位擴(kuò)展的情況下,依然可以進(jìn)行乘法操作;

硬件乘法器結(jié)構(gòu)圖:

硬件乘法器支持 8 位,16 位,24 位,32 位無(wú)符號(hào)操作數(shù),有符號(hào)操作數(shù),無(wú)符號(hào)乘、加操作和有符號(hào)乘、加操作。操作數(shù)的大小,可以通過(guò)對(duì)"字"或者"字節(jié)"的定義來(lái)確定。操作數(shù)的類(lèi)型可以通過(guò)第一個(gè)操作數(shù)的寫(xiě)入進(jìn)行選擇。

硬件乘法器有兩個(gè) 32 位操作數(shù)寄存器,操作數(shù) OP1 和操作數(shù) OP2,以及一個(gè) 64 位結(jié)果寄存器,而這個(gè)寄存器需要使用 RES0 和 RES3 寄存器。為了兼容 16 X 16 硬件乘法器,8 位或者 16 位操作數(shù)的結(jié)果需要使用 RESL0,RESL1 和 SUMNEXT這三個(gè)寄存器。RESL0 用于存儲(chǔ) 16 X 16 結(jié)果的低“字”,RESL1 用于存儲(chǔ) 16 X 16 結(jié)果的高“字”。以及 SUMEXT 用于存儲(chǔ)結(jié)果的信息。

硬件乘法器操作:

表1總結(jié)了針對(duì)各種操作數(shù)可能的結(jié)果的每一個(gè)"字"。此表展示了兩點(diǎn),一個(gè)是 OP2L 的寫(xiě)入操作,另一個(gè)時(shí) OP2H 的寫(xiě)入操作。而最糟糕的情況就是實(shí)際結(jié)果的可能性。

8 位或者 16 位操作數(shù)通常在 3 個(gè) MCLK 周期內(nèi)準(zhǔn)備好,并且在寫(xiě)入 OP2 操作數(shù)后的下一個(gè)指令就可以讀出結(jié)果。 如果使用了間接尋址方式進(jìn)行操作,在結(jié)果計(jì)算出之前,一個(gè) NOP指令是必需的。

在 OP2 操作數(shù),或者 OP2H 進(jìn)入 RES0 時(shí) 24 位或者 32 位的結(jié)果可以通過(guò)連續(xù)指令的方式進(jìn)行讀取。當(dāng)時(shí)用間接尋址方式進(jìn)行讀結(jié)果操作時(shí),一條 NOP 指令時(shí)必須的。

由于有一個(gè) 32 位第二個(gè)操作數(shù)的存在,OP2L,OP2H 寄存器都要被使用。又由于兩個(gè) 16 位部分的被使用,從而使得結(jié)果變得復(fù)雜。

操作數(shù)寄存器OP1 :

OP1 操作數(shù)寄存器內(nèi)置 12 個(gè)寄存器,如表所示,這些寄存器通常用來(lái)裝載數(shù)據(jù)到乘法器,并且也用來(lái)選擇乘法器模式。寫(xiě)入第一個(gè)操作數(shù)的“低字”到由乘法操作數(shù)類(lèi)型所確定的地址的乘法操作,才能夠開(kāi)始操作。當(dāng)寫(xiě)入一個(gè)雙個(gè)“字”到后綴為:32H 的高字寄存器(此時(shí)假定 OP1 為 32 位寬)。對(duì)于寫(xiě)入 OP2 操作來(lái)說(shuō),最新的地址寫(xiě)入的優(yōu)先級(jí)通常定義了第一個(gè)操作數(shù)的寬度。例如:如果 MPY32L 被 MPY32H 寫(xiě)入,則所有的 32 位都將被使用并且 OP1將被設(shè)置為:32 位。如果 MPY32H 被 MPY32L 寫(xiě)入,則乘法操作將不會(huì)使用 MPY32H,并且假設(shè) MPY32L 將數(shù)據(jù)寫(xiě)入到 16 位寬的 OP1。

在 OP1 操作數(shù)用于連續(xù)的操作時(shí),重復(fù)性乘法操作就可以被執(zhí)行,而此時(shí)無(wú)需載入 OP1 操作數(shù)。

操作數(shù)寄存器OP2:

寫(xiě)入第二個(gè)操作數(shù)到 OP2 寄存器通常會(huì)初始化乘法操作。寫(xiě)入 OP2 將會(huì)使得一個(gè) 16 位寬的第二個(gè)操作數(shù)和 OP1 中的值開(kāi)始進(jìn)行選擇操作。寫(xiě)入 OP2L 通常會(huì)使得一個(gè) 32 位寬的第二個(gè)操作數(shù),和被要求寫(xiě)入高字的 OP2H 的乘法器開(kāi)始進(jìn)行操作選擇。

對(duì)于 8 位,24 位操作數(shù)寄存器來(lái)說(shuō),可以通過(guò)字節(jié)指令進(jìn)行操作。用一個(gè)字節(jié)指令進(jìn)行的乘法器操作,在單獨(dú)操作期間,乘法器模塊將會(huì)自動(dòng)的有一個(gè)符號(hào)字節(jié)的擴(kuò)展。對(duì)于 24 位操作數(shù)來(lái)說(shuō),只有一個(gè)高字將會(huì)作為字節(jié)寫(xiě)入。如果 24 位操作數(shù)通過(guò)寄存器被定義了符號(hào)位擴(kuò)展,那么作為符號(hào)位將會(huì)有一個(gè)低字的寫(xiě)入,因?yàn)榧拇嫫鞫x了操作數(shù)是否有無(wú)符號(hào)。

一個(gè) 32 位操作數(shù)的高字在保持不變的條件下,當(dāng)改變操作數(shù)的大小至 16 位,可以通過(guò)修改操作數(shù)的大小,或者寫(xiě)入操作數(shù)寄存器來(lái)實(shí)現(xiàn)。在 16 位操作執(zhí)行器件,高字的內(nèi)容忽略。

注意:

在乘法操作期間改變第一個(gè)或者第二個(gè)操作數(shù),在默認(rèn)的條件下,在選擇乘法操作時(shí),改變 OP1 或者 OP2,而所得的結(jié)果均不正確,因?yàn)槟菚r(shí)操作數(shù)在正在改變。對(duì) OP2 或者 OP2L 的寫(xiě)入,將會(huì)對(duì)任何正在進(jìn)行的計(jì)算操作進(jìn)行放棄;同時(shí),也將開(kāi)始進(jìn)行一個(gè)新的操作。而此時(shí)沒(méi)有計(jì)算出的結(jié)果對(duì)接下來(lái)的 MAC 和MACS 操作 不再可靠。

注意要避免 MPYDLYWRTEN 位被置 1。所有寫(xiě)入 MPY32 寄存器的操作通常會(huì)由于MPYDLY32=0 而延遲,直到 64 位結(jié)果準(zhǔn)備好或者 MPYDLY32=1,且 32 位結(jié)果算出。

結(jié)果寄存器:

乘法操作結(jié)果通常都是 64 位寬。而這要使用 RES0,RES3 寄存器。使用一個(gè)單操作指令MPYS 或者 MACS,結(jié)果將會(huì)有符號(hào)位的擴(kuò)展。在 MACS 操作之前如果結(jié)果寄存器載入初始值,用戶的軟件必須仔細(xì)關(guān)注所寫(xiě)入帶符號(hào)位的 64 位值。

備注:

在乘法操作期間改變結(jié)果寄存器的值 在寫(xiě)入OP2 或者 OP2L 之后,直到初始化操作完成之前,結(jié)果寄存器不可以被用戶軟件修改。

除了 RES0 和 RES3。為了兼容 16 X 16 硬件乘法器,一個(gè) 8 位或者 16 位操作的 32 位結(jié)果通常使用 RESL0 和 RESL1 以及 SUMEXT。在這種情況下,結(jié)果的低位寄存器 RESL0 保存了計(jì)算結(jié)果的低16位,并且結(jié)果保存在寄存器RESH1高16為中。RES0和RES1等同于RESL0和 RESH1。

結(jié)果擴(kuò)展寄存器 SUMEXT 的內(nèi)容依靠乘法操作并且這些操作在表中以列出。如果所有的操作是 16 位寬或者小于 32 位的結(jié)果通常決定符號(hào)和 carry。如果操作數(shù)中的一個(gè)比 16 位數(shù)大,則結(jié)果將會(huì)是 64 位。

MPYC 位通常反映了乘法器的 Carry,而這也列在表中。因而,將會(huì)反映在第 33 位或者第 65 位的結(jié)果中。當(dāng)然,前提是小數(shù)模式,和連續(xù)模式?jīng)]有被選擇.

MACS 下溢出和溢出:

乘法器在 MACS 模式中通常不會(huì)自動(dòng)監(jiān)測(cè)下溢出和溢出。例如: 工作于 16 位輸入數(shù)據(jù)和 32 位結(jié)果中,使用 RESL0 和 RESH1,正數(shù)的范圍的可能數(shù)字將在 0 到 07FFF FFFFh,并且負(fù)數(shù)的結(jié)果范圍將在:0FFFF FFFFh 到 08000 0000h。

下溢出出現(xiàn)時(shí)兩個(gè)負(fù)操作數(shù)的相加的計(jì)算結(jié)果范圍在正數(shù)范圍內(nèi)。

當(dāng)兩個(gè)正操作數(shù)相加的結(jié)果為負(fù)數(shù)時(shí),溢出的結(jié)果出現(xiàn)!

SUMEXT 寄存器包含了結(jié)果符號(hào)位(在上面的兩種情況下),offffh 通常針對(duì)一個(gè) 32 的溢出,0000h 通常針對(duì)一個(gè) 32 位的下溢出。在 MPY32CTL0 中 MPYC 位能夠被用來(lái)監(jiān)測(cè)溢出狀態(tài)。如果 Carry 寄存器不同于 SUMEXT 寄存器內(nèi)容則溢出出現(xiàn)。用戶軟件必須能夠處理這些狀態(tài)。

乘法控制寄存器:

Reserved 位 15-10 保留

MPYDL32 位 9 延時(shí)寫(xiě)模式

0 寫(xiě)延時(shí)在 64 位結(jié)果(RES0-RES3)之前是有效的。

1 寫(xiě)延時(shí)在 32 位結(jié)果(RES0-RES3)之前是有效的。

MPYDLYWRTEN 位 8 延時(shí)寫(xiě)使能

64 位(MPYDLY32=0)或 32 位(MPYDLY32=1)結(jié)果準(zhǔn)備好之前,所有寫(xiě)入到任何 MPY32 寄存器的操作會(huì)被延遲。

0 寫(xiě)是不延時(shí)

1 寫(xiě)是延時(shí)的

MPYOP2_32 位7 乘法器操作數(shù)2的位寬度

0 16位

1 32位

MPYOP1_32 位6 乘法器操作數(shù)1的位寬度

0 16位

1 32位

MPYMx 位5-4 乘法器模式

00 MPY 乘法

01 MPYS 有符號(hào)乘法

10 MAC 乘法積累

11 MACS 有符號(hào)乘法積累

MPYSA 位3 飽和模式

MPYFRAC 位2 小數(shù)模式

Reserved 位1 保留

MPYC 位0 乘法器的進(jìn)位標(biāo)志如果未選擇小數(shù)模式或飽和模式時(shí)可以被看作是第

33或65位結(jié)果,因?yàn)楫?dāng)切換到小數(shù)模式或飽和模式時(shí)MPYC位不改變。

舉例:

例如 配置 8 * 8 無(wú)符號(hào)累加硬件乘法

MPY = 0x12; //第一操作數(shù)

OP2 = 0x56; // 第二操作數(shù)

MAC = 0x12; // 16 位累加乘法器

OP2 = 0x56;

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

    關(guān)注

    31

    文章

    5602

    瀏覽量

    129600
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11253

    瀏覽量

    223897
  • 乘法器
    +關(guān)注

    關(guān)注

    9

    文章

    221

    瀏覽量

    38665

原文標(biāo)題:MSP430F5438 硬件乘法器

文章出處:【微信號(hào):changxuemcu,微信公眾號(hào):暢學(xué)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    用戶對(duì)變量寄存器進(jìn)行操作的方法

    嵌入式系統(tǒng)總是要用戶對(duì)變量寄存器進(jìn)行操作。給定一個(gè)整型變量a,寫(xiě)兩段代碼,第一個(gè)設(shè)置a的bit 3,第二個(gè)清除a 的bit 3。在以上兩個(gè)操作
    發(fā)表于 12-23 08:16

    匯編寄存器的知識(shí)

    學(xué)習(xí)匯編語(yǔ)言,首先必須了解兩個(gè)知識(shí)點(diǎn):寄存器和內(nèi)存模型。 先來(lái)看寄存器。CPU 本身只負(fù)責(zé)運(yùn)算,不負(fù)責(zé)儲(chǔ)存數(shù)據(jù)。數(shù)據(jù)一般都儲(chǔ)存在內(nèi)存之中,CPU
    發(fā)表于 11-20 06:45

    嵌入式系統(tǒng)必懂的 20 個(gè)寄存器

    嵌入式開(kāi)發(fā)看起來(lái)很復(fù)雜,但很多操作其實(shí)都離不開(kāi)寄存器寄存器就是MCU內(nèi)部的存儲(chǔ)單元,它們控制處理和外設(shè)的行為。熟悉這些
    的頭像 發(fā)表于 11-14 10:28 ?914次閱讀
    嵌入式系統(tǒng)必懂的 20 個(gè)<b class='flag-5'>寄存器</b>

    簡(jiǎn)單的內(nèi)聯(lián)匯編介紹

    前言1、在程序中我們可以嵌入匯編直接對(duì)我們加入的硬件進(jìn)行相應(yīng)的操作 2、在RISC-V架構(gòu)中定義的CSR
    發(fā)表于 10-30 08:04

    計(jì)算程序執(zhí)行指令數(shù)的函數(shù)實(shí)現(xiàn)

    (來(lái)源:手把手教你設(shè)計(jì)cpu_RISC-V處理),他們分別存儲(chǔ)了指令計(jì)數(shù)器的高低32位 至此就大致能理解指令數(shù)計(jì)算函數(shù)的實(shí)現(xiàn)原理,即通過(guò)
    發(fā)表于 10-28 06:27

    指令集測(cè)試的一種糾錯(cuò)方法

    ,第三部分代表指令的具體操作。由此可以解讀出,上圖test_2所做的工作是,1.將立即數(shù)20加載到ra寄存器2.將立即數(shù)6加載到sp
    發(fā)表于 10-24 14:04

    蜂鳥(niǎo)自定義指令軟件講解和內(nèi)聯(lián)匯編(一)

    ”是 GCC 的關(guān)鍵字,表示進(jìn)行內(nèi)聯(lián)匯編操作,關(guān)鍵字“volatile”要求編譯對(duì)后續(xù)括號(hào)內(nèi)添加的匯編程序不
    發(fā)表于 10-24 10:51

    蜂鳥(niǎo)E203擴(kuò)展浮點(diǎn)指令設(shè)計(jì)(1)

    , offset[11:0] (rs1) fsw rs2, offset[11:0] (rs1) 該組指令進(jìn)行存儲(chǔ)或者寫(xiě)操作,訪問(wèn)存儲(chǔ)
    發(fā)表于 10-24 10:00

    蜂鳥(niǎo)內(nèi)核中DMA的硬件實(shí)現(xiàn)——寄存器配置

    ,指示搬運(yùn)的數(shù)據(jù)長(zhǎng)度,可讀可寫(xiě); 狀態(tài)寄存器,只讀,指示配置完成,搬運(yùn)完成等。 當(dāng)CPU對(duì)DMA進(jìn)行配置時(shí)會(huì)拉高valid信號(hào),此時(shí)如果DMA發(fā)出ready的高電平信號(hào),即此時(shí)握手完成,才可以
    發(fā)表于 10-24 08:46

    浮點(diǎn)指令(七:寄存器

    )。舍入模式可以通過(guò)浮點(diǎn)控制和狀態(tài)寄存器 fcsr 進(jìn)行設(shè)置。 Risc-V架構(gòu)浮點(diǎn)運(yùn)算的舍入模式可以
    發(fā)表于 10-24 08:28

    通過(guò)內(nèi)聯(lián)匯編調(diào)用乘法指令mulh\\mulhsu\\mulhu

    必需 :可能影響的寄存器存儲(chǔ)//非必需 ); 對(duì)于常見(jiàn)的R型指令,匯編指令列表,即.i
    發(fā)表于 10-24 06:52

    蜂鳥(niǎo)乘法器設(shè)計(jì)分享

    與其他指令復(fù)用一個(gè)加法器。 對(duì)于具體的乘法指令而言,包括MUL指令、MULH指令、MULHSU指令
    發(fā)表于 10-22 08:21

    改進(jìn)型乘法器結(jié)構(gòu)設(shè)計(jì)

    表示源寄存器。4條乘法指令分別按符號(hào)擴(kuò)展操作和結(jié)果高低位選取操作生成相應(yīng)的控制信號(hào),MULHU指令
    發(fā)表于 10-22 07:51

    基于蜂鳥(niǎo)E203架構(gòu)的指令集K擴(kuò)展

    擴(kuò)展指令集架構(gòu)(RISC-V ISA)的K擴(kuò)展。 K擴(kuò)展是一種可選的指令集擴(kuò)展,它增加了一些向量和矩陣操作指令。這些指令
    發(fā)表于 10-21 09:38

    TVP5150是不是可以通過(guò)什么寄存器來(lái)判斷是否有視頻輸入?

    TVP5150這個(gè)視頻芯片是不是可以通過(guò)什么寄存器來(lái)判斷是否有視頻輸入,我現(xiàn)在不知道誰(shuí),說(shuō)明書(shū)上面沒(méi)有找到這個(gè)
    發(fā)表于 02-10 06:24