• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于TEC-XP16的16位乘除指令設(shè)計(jì)

      2022-01-17 06:20:42宗德才王康康
      電子元器件與信息技術(shù) 2021年9期
      關(guān)鍵詞:觸發(fā)器寄存器乘法

      宗德才,王康康

      (1. 常熟理工學(xué)院 計(jì)算機(jī)科學(xué)與工程學(xué)院,江蘇 常熟 215500;

      2. 江蘇科技大學(xué) 數(shù)理學(xué)院,江蘇 鎮(zhèn)江 212003)

      0 引言

      目前,國內(nèi)很多高校計(jì)算機(jī)組成原理實(shí)驗(yàn)教學(xué)主要是基于TEC-XP16教學(xué)機(jī)進(jìn)行的。為使學(xué)生系統(tǒng)建立整機(jī)概念,培養(yǎng)學(xué)生的計(jì)算機(jī)系統(tǒng)能力,亟需開發(fā)一些設(shè)計(jì)性的實(shí)驗(yàn),如為TEC-XP16教學(xué)機(jī)設(shè)計(jì)一些新指令。

      在TEC-2000微程序控制器中設(shè)計(jì)實(shí)現(xiàn)了NXOR等四條指令[1]。在TEC-2000微程序控制器中設(shè)計(jì)實(shí)現(xiàn)了NXOR和SWRM指令[2]。提出了在TEC-XP16組合邏輯控制器中設(shè)計(jì)實(shí)現(xiàn)SWRR等簡(jiǎn)單指令的方法[3]。提出了TEC-XP16微程序控制器中8bit無符號(hào)乘除指令的設(shè)計(jì)實(shí)現(xiàn)方法[4]。

      本文提出了一種在TEC-XP16教學(xué)機(jī)微程序控制器中設(shè)計(jì)16bit無符號(hào)乘法指令MULS、16bit無符號(hào)除法指令DIVS與16bit變形補(bǔ)碼乘法指令MULB的方法。

      實(shí)驗(yàn)結(jié)果表明,設(shè)計(jì)的16bit無符號(hào)數(shù)乘法指令MULS、16bit無符號(hào)除法指令DIVS與16bit變形補(bǔ)碼乘法指令MULB是正確的。

      1 16bit乘除指令的設(shè)計(jì)實(shí)現(xiàn)

      本文設(shè)計(jì)實(shí)現(xiàn)了三條指令:16bit無符號(hào)乘法指令MULS、16bit無符號(hào)除法指令DIVS與16bit變形補(bǔ)碼乘法指令MULB。

      1.1 軟硬件環(huán)境

      在16bit乘除指令的設(shè)計(jì)實(shí)現(xiàn)過程中用到的硬件設(shè)備主要有TEC-XP16教學(xué)機(jī)、Lattice USB下載電纜HW-USB-2A等;使用的軟件主要有Lattice ispLEVER Classic 2.0和WinPcec等軟件。

      1.2 16bit乘除指令的設(shè)計(jì)

      下面將介紹三種16bit乘除指令的格式和功能并設(shè)計(jì)相應(yīng)的算法。主要以16bit變形補(bǔ)碼乘法指令為例,介紹其在TEC-XP16教學(xué)機(jī)微程序控制器中設(shè)計(jì)實(shí)現(xiàn)的過程。

      設(shè)計(jì)16bit乘除指令的主要步驟如下:

      (1)設(shè)計(jì)16bit乘除指令的功能,如表1所示。

      表1 MULS、MULB與DIVS指令的格式與功能

      (2)根據(jù)三種16bit乘除指令的功能和格式,分別設(shè)計(jì)了算法1,算法2,算法3。

      算法1.(16bit無符號(hào)數(shù)乘法).乘積高16bit存R6寄存器,乘積低16bit存R9寄存器。其中,Q寄存器是教學(xué)機(jī)AM2901運(yùn)算器芯片中的乘商寄存器。

      (1)初始化R6、R8寄存器,(R6) = 0,(R8) = 17,乘數(shù)從SR送Q寄存器。

      (2)R6與Q寄存器聯(lián)合右移一位,Q0移入C觸發(fā)器。

      (3)如果C為0,則轉(zhuǎn)(4),如果C不為0,轉(zhuǎn)(6)。

      (4)R8減1,結(jié)果不為0,則轉(zhuǎn)(5),結(jié)果為0,則轉(zhuǎn)(8)。

      (5)R6與Q寄存器聯(lián)合右移一位,Q0移入C觸發(fā)器,轉(zhuǎn)(3)。

      (6)R8減1,結(jié)果不為0,則轉(zhuǎn)(7),結(jié)果為0,則轉(zhuǎn)(8)。

      (7)(R6)+(DR)→R6,R6與Q寄存器聯(lián)合右移一位,Q0移入C觸發(fā)器,轉(zhuǎn)(3)。

      (8)Q寄存器內(nèi)容傳送到R9寄存器。

      基2 Booth算法[5]通過比較乘數(shù)相鄰兩位的值決定進(jìn)行加法、減法還是僅進(jìn)行移位操作。

      根據(jù)基2 booth算法,我們?cè)O(shè)計(jì)了16bit變形補(bǔ)碼乘法算法。

      算法2.(16bit變形補(bǔ)碼乘法).乘積為32bit變形補(bǔ)碼,乘積高16bit存R6寄存器,乘積低16bit存R9寄存器。

      (1)初始化R6、R8寄存器,(R6) = 0,(R8) = 17,乘數(shù)從SR送Q寄存器,C觸發(fā)器清0。

      (2)將Q寄存器內(nèi)容送R7寄存器。

      (3)將R7寄存器與C觸發(fā)器循環(huán)右移,將C觸發(fā)器值移到R7寄存器最高位,將R7寄存器最低位移入C觸發(fā)器。

      (4)檢查C的值,即Q0的值(Q0即乘數(shù)yn)。

      (5)將R7寄存器邏輯左移一位,將R7最高位移入C觸發(fā)器,檢查C的值(C即附加位)。

      (6)如果Q0=C,則轉(zhuǎn)(7),如果Q0=0,C=1,則轉(zhuǎn)(9),如果Q0=1,C=0,則轉(zhuǎn)(11)。

      (7)R8減1,結(jié)果不為0,則轉(zhuǎn)(8),結(jié)果為0,則轉(zhuǎn)(13)。

      (8)R6與Q寄存器聯(lián)合右移一位,Q0移入C觸發(fā)器,轉(zhuǎn)(2)。

      (9)R8減1,結(jié)果不為0,則轉(zhuǎn)(10),結(jié)果為0,則轉(zhuǎn)(13)。

      (10)(R6)+(DR)→R6,然后R6與Q寄存器聯(lián)合右移一位,Q0移入C觸發(fā)器,轉(zhuǎn)(2)。

      (11)R8減1,結(jié)果不為0,則轉(zhuǎn)(12),結(jié)果為0,則轉(zhuǎn)(13)。

      (12)(R6)-(DR)→R6,然后R6與Q寄存器聯(lián)合右移一位,Q0移入C觸發(fā)器,轉(zhuǎn)(2)。

      (13)Q寄存器內(nèi)容傳送到R9寄存器。

      算法3.(16bit無符號(hào)數(shù)除法). R9寄存器存16bit商,R7寄存器存余數(shù)。

      (1)初始化Q寄存器、R8寄存器,(Q) = 0,(R8) = 16,被除數(shù)從DR送R7寄存器。

      (2)(R7)-(SR)→R7,R7與Q寄存器聯(lián)合左移一位,RAM15移入C觸發(fā)器,Q0為/F15(其中,RAM15為運(yùn)算結(jié)果最低位,F(xiàn)15為運(yùn)算結(jié)果的符號(hào)位)。

      (3)如果C為0,則轉(zhuǎn)(4),如果C不為0,轉(zhuǎn)(6)。

      (4)R8減1,結(jié)果不為0,則轉(zhuǎn)(5),結(jié)果為0,則轉(zhuǎn)(8)。

      (5)(R7)-(SR)→R7,R7與Q寄存器聯(lián)合左移一位,RAM15移入C觸發(fā)器,Q0為/F15,轉(zhuǎn)(3)。

      (6)R8減1,結(jié)果不為0,則轉(zhuǎn)(7),結(jié)果為0,則轉(zhuǎn)(8)。

      (7)(R7)+(SR)→R7,R7與Q寄存器聯(lián)合左移一位,RAM15移入C觸發(fā)器,Q0為/F15,轉(zhuǎn)(3)。

      (8)Q寄存器內(nèi)容傳送到R9寄存器。

      (9)根據(jù)16bit乘除指令算法,設(shè)計(jì)16bit乘除指令的執(zhí)行步驟,其中MULB指令的執(zhí)行步驟如表3所示。

      表3 MULB指令的執(zhí)行步驟表

      (10)根據(jù)MULB指令執(zhí)行步驟表,設(shè)計(jì)每一條微指令的地址和下地址字段的值,并設(shè)計(jì)每一條微指令中每一個(gè)控制信號(hào)的值,最終得到MULB指令的微程序表。16bit無符號(hào)數(shù)乘法指令的操作碼為EAH,微程序入口地址為AFH,16bit無符號(hào)數(shù)除法指令的操作碼為EBH,微程序入口地址為D0H,16bit變形補(bǔ)碼乘法指令的操作碼為ECH,微程序入口地址為7FH。

      在TEC-XP16中,每一條微指令由下地址字段和控制命令字段組成[6]。16bit下地址字段包括8bit下地址、4bit命令碼和4bit微轉(zhuǎn)移條件,32bit控制命令字段包括3bit MRW信號(hào)、3bit I2~I(xiàn)0信號(hào)、3bit I8~I(xiàn)6信號(hào)、3bit I5~I(xiàn)3信號(hào)、4bit B口地址、4bit A口地址、3bit SST信號(hào)、3bit SSHSCI信號(hào)、3bit DC2信號(hào)、3bit DC1信號(hào)。

      當(dāng)命令碼CI3~CI0為0011時(shí),用于條件微轉(zhuǎn)移控制[7],如表2所示。

      表2 條件微指令轉(zhuǎn)移所依據(jù)的判斷條件表

      (11)根據(jù)MULB指令微程序表,修改描述MACH芯片功能的ABEL語言源程序m256c.abl,編譯適配后下載到MACH芯片中。

      首先,修改描述MACH芯片功能的ABEL語言源程序m256c.abl。所設(shè)計(jì)的MULB指令的操作碼為ECH,因此,加一行代碼:MULB = (IR==[1,1,1,0,1,1,0,0]);

      其次,依據(jù)表2修改源程序m256c.abl文件中CC信號(hào)的邏輯表達(dá)式。修改后的CC0與CC表達(dá)式如下所示:

      MACH芯片向AM2910器件提供8位下地址D7~D0,該地址有2個(gè)來源[8]。我們?cè)O(shè)計(jì)的MULB指令的微程序入口地址為7FH,因此,在D6、D5、D4、D3、D2、D1、D0的邏輯表達(dá)式中需增加MULB信號(hào)。

      然后,依據(jù)MULB指令微程序表中的內(nèi)容修改源程序m256c.abl文件中16bit下地址字段和32bit控制命令字段的邏輯表達(dá)式。由于論文篇幅關(guān)系代碼省略。

      最后,對(duì)修改后的m256c.abl文件編譯后下載到教學(xué)機(jī)MACH芯片中,其過程詳見文獻(xiàn)[3-4]。

      (12)設(shè)計(jì)程序驗(yàn)證所設(shè)計(jì)的16 bit乘除指令的功能。

      為了驗(yàn)證MULB指令的功能是否正確,在WinPcec16軟件中編寫了一個(gè)包含MULB指令的教學(xué)機(jī)程序,實(shí)現(xiàn)兩個(gè)16 bit變形補(bǔ)碼的乘法運(yùn)算。

      3123H的變形補(bǔ)碼×2123H的變形補(bǔ)碼=3123H×123H=065C3AC9H(變形補(bǔ)碼),

      3123H的變形補(bǔ)碼×(-2123H的變形補(bǔ)碼)=3123H×DEDDH=F9A3C537(變形補(bǔ)碼),

      程序運(yùn)行結(jié)果表明所設(shè)計(jì)的擴(kuò)展指令MULB是正確的,如圖1所示。

      圖1 包含MULB指令的教學(xué)機(jī)程序

      2 結(jié)論

      目前,國內(nèi)外還沒有研究在TEC-XP16教學(xué)機(jī)微程序控制器中設(shè)計(jì)16bit乘除指令的文獻(xiàn)。本文設(shè)計(jì)了一種16bit無符號(hào)數(shù)乘法指令、16bit無符號(hào)數(shù)除法指令與一種16bit變形補(bǔ)碼乘法指令,實(shí)驗(yàn)結(jié)果表明,設(shè)計(jì)的16bit乘除指令是正確的。

      下一步將研究在TEC-XP16教學(xué)機(jī)組合邏輯控制器中設(shè)計(jì)實(shí)現(xiàn)16bit乘除指令等復(fù)雜指令的方法。

      猜你喜歡
      觸發(fā)器寄存器乘法
      算乘法
      我們一起來學(xué)習(xí)“乘法的初步認(rèn)識(shí)”
      《整式的乘法與因式分解》鞏固練習(xí)
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      把加法變成乘法
      主從JK觸發(fā)器邏輯功能分析
      電子世界(2017年22期)2017-12-02 03:03:45
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      使用觸發(fā)器,強(qiáng)化安全性
      對(duì)觸發(fā)器邏輯功能轉(zhuǎn)換的分析
      觸發(fā)器邏輯功能轉(zhuǎn)換的兩種方法
      阿合奇县| 普定县| 磐安县| 多伦县| 白水县| 射阳县| 昭通市| 和顺县| 黄浦区| 内乡县| 茌平县| 蓬安县| 正安县| 信阳市| 沙雅县| 汽车| 冀州市| 景泰县| 酒泉市| 石泉县| 台江县| 田东县| 屯昌县| 凌云县| 中江县| 福安市| 武川县| 宁强县| 舞阳县| 六安市| 阳泉市| 浦北县| 许昌县| 益阳市| 禹城市| 如皋市| 湾仔区| 建阳市| 林周县| 沈阳市| 襄城县|