JPH0348332A - シフト回路 - Google Patents

シフト回路

Info

Publication number
JPH0348332A
JPH0348332A JP1182141A JP18214189A JPH0348332A JP H0348332 A JPH0348332 A JP H0348332A JP 1182141 A JP1182141 A JP 1182141A JP 18214189 A JP18214189 A JP 18214189A JP H0348332 A JPH0348332 A JP H0348332A
Authority
JP
Japan
Prior art keywords
shift
carry flag
signal
data
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP1182141A
Other languages
English (en)
Other versions
JP3070014B2 (ja
Inventor
Makoto Mogi
誠 茂木
Kikuo Tomosawa
友澤 菊雄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP1182141A priority Critical patent/JP3070014B2/ja
Publication of JPH0348332A publication Critical patent/JPH0348332A/ja
Application granted granted Critical
Publication of JP3070014B2 publication Critical patent/JP3070014B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野〉 本発明は、マイクロプロセッサで使用される命令の一つ
であるシフト命令実行時に動作するシフト回路、特に多
数桁のシフl・時におけるオーバフロー判定の可能なシ
フト回路に関するものである。
(従来の技術) 従来、このような分野の技術としては、rMC6800
0  16ビットマイクロプロセッサ ユーザーズ・マ
ニュアル」4版(昭57−7−15>日本モトローラ(
株)P.149に記載されるものがあった。
プログラム制御で動作するマイクロプロセッサの命令に
は、通常、オペランド(命令のオペレーションコードに
作用するデータやアドレス等が示される部分)のデータ
を右方向(最上位ビットMSB→最下位ビットLSB)
にシフトする右シフト命令と、左方向にシフトする左シ
フト命令が含まれている。一般に、シフト命令の命令実
行時間は、桁移動により乗算あるいは除算を行うため、
乗算命令あるいは除算命令の命令実行時間より短い。そ
のため、オペランドのデータに特定の数値を掛ける場合
、あるいはオペランドのデータを特定の数値で割る場合
に、シフト命令が多用されている。例えば、オペランド
データに2″ (但し、n;正の整数〉を掛ける場合は
、左シフト命令が使用され、オペランドデータを20で
割る場合は、右シフト命令が使用される。
シフト命令では、オペランドの指定、シフト回数の指定
、左あるいは右のシフ1・方向の指定を行なう。指定さ
れたオペランドのデータは、シフト回路にロードされ、
そのシフト回路で指定された回数だけ、右あるいは左方
向にシフトされる.シフト結果はオペランドに書込まれ
、命令の実行が完了する。このようなシフト命令を実行
する従来のシフト回路の一楢成例が第2図(a).(b
}に示されている。
第2図(a),(b)は、前記文献に記載された従来の
シフ1一回路の構成図である。
このシフト回路は、オペランドのデータをシフトするた
めのシフトレジスタ10と、シフトレジスタ10からの
桁あふれを格納するための1ビットのレジスタからなる
キャリーフラグ20とで、横成されている。
このシフト回路の動作を第2図(a).(b)を参照し
つつ説明する。
シフト前のオペランドデータは57H(但し、H;ヘキ
サデシマル数)、シフト回数は3回とする。
第4図の(a)−1と(b)−1は、オペランドのデー
タがシフト回路のシフトレジスタ10にロードされた状
態を示す。
右シフトでは、1回のシフト毎に、次の■〜■の動作が
行われる. ■ シフトレジスタ10のビット7には“0″が入る。
■ シフトレジスタ10のビット6〜ビットOには、シ
フト前のビット7ヘビット1の状態がそれぞれ入る。
■ キャリーフラグ20には、シフト前のシフトレジス
タ10のビットOの状態が入る。
左シフトでは、1回のシフト毎に、次の■〜■の勤作が
行われる。
■ シフトレジスタ10のビット0には゛゜0″が入る
■ シフトレジスタ10のビット7〜ビット1には、シ
フト前のビット6〜ビット0の状態がそれぞれ入る。
■ キャリーフラグ20には、シフト前のシフトレジス
タ10のビット7の状態が入る。
第2図(a> −2.  (a> −3. <a) −
4はそれぞれ1回口.2回目.3回目の右シフトが実行
された後のシフ1−レジスタ10とキャリーフラグ20
の状態を示し、第2図(b)−2.(b)−3,(b)
−4はそれぞれ1回目,2回目.3回目の左シフトが実
行された後のシフトレジスタ10とキャリーフラグ20
の状態を示す。
このようにしてオペランドのデータは、右あるいは左方
向にシフトされる。
(発明が解決しようとする課題〉 しかしながら、上記構成のシフト回路では、次のような
課題があった。
従来のシフト回路では、例えばオペランドデー夕を左シ
フ1〜して、(オペランドデータ)X2”の乗算を行な
う際に、乗算結果がオーバフローしたか否かの判定が行
えない。即ち、第2図(b)゛3で示されるように、2
回目のシフトにより、シフトレジスタ10からの桁あふ
れにより、キャリーフラグ20が“゜1′゜になったに
もかかわらず、第4図(b)−4で示されるように、3
回目のシフトでキャリーフラグ20が゛゜0゜゜となる
ため、そのキャリーフラグ20の内容のテスト(チェッ
ク)を行なっても、乗算結果がオーバフローしたか否か
を判定することができなかった。
これを防止するため、1ビットシフト毎にキャリーフラ
グ20の内容をチェックする回路を付加すノ1ば、オー
バフローの検出が可能であるが、チェックのために時間
がかかる。そのため、回路の増加を招くことなく、短時
間に、多数桁のシフト動作時のオーバフローの判定を的
確に行なうことが困難であった. 本発明は前記従来技術が持っていた課題として、簡単な
回路で、短時間に、多数桁のシフト動作時のオーバフロ
ーの判定を行うことが困難である点について解決したシ
フト回路を提供するものである. (課題を解決するための手段) 本発明は前記課題を解決するために、オペランドのデー
タをシフトするシフトレジスタと、前記シフトレジスタ
からの桁あふれを格納するキャリーフラグとを、備えた
マイクロプロセッサのシフト回路において、前記シフト
レジスタにおける最下位ビットLSBから最上位ビット
MSBの方向へ前記オペランドのデータのシフトを行う
場合に、そのシフト開始前に前記キャリーフラグをリセ
ットするリセット手段と、前記キャリーフラグの出力と
前記最上位ビットMSBとの論理をとってその論理結果
を前記キャリーフラグの入力にフィードバックするフィ
ードバック手段とを、設けたものである. (作用) 本発明によれば、以上のようにシフト回路を構成したの
で、リセット手段は、多数回の左シフトを1命令で実行
する場合に、シフト開始前にキャリーフラグをリセット
する。そして、フィードバック手段は、.一連のシフト
の途中で一度でもキャリーフラグが“1”にセットされ
ると、その後のシフトにより、再び゛゜0”にリセット
されることを防止する。これにより、回路の増加を招く
ことなく、左シフト命令の実行時に、シフト結果がオー
バフローしたかどうかを判定でき、オペランドのデータ
に特定の数値を掛ける演算を、乗算命令よりも命令実行
時間の短い左シフト命令に置き換えて実行できる。従っ
て、前記課題を解決できるのである。
(実施桝) 第1図は、本発明の一実施例を示すシフト回路の回路図
である。
このシフト回路は、データのパラレル入力及びパラレル
出力が可能なシフトレジスタ30を備え、そのシフトレ
ジスタ30のパラレルデータ入力端子DO〜D7(但し
、DOがLSB.D7がMSB)には、マイクロプロセ
ッサの内部データバスDBO〜DB? (但し、DBO
がLSB,DB7がMSB)がそれぞれ接続されている
.また、シフトレジスタ30のロード信号入力端子LO
、シフト方向選択入力端子R+/L− 、シフトクロッ
ク入力端子CKには、マイクロプロセッサの内部制御信
号であるロード信号LOAD、ライト信号RIG}IT
、シフトクロック信号S}−IFTcLKの各信号がそ
れぞれ接続されている。
このシフトレジスタ30は、入力端子R+/L一に“゜
1”が与えられて入力端子CKにクロックが入力される
と、そのクロックの立下りでデータが1ビット右方向(
MSB−LSB方向)にシフトされ、MSBの入力端子
D7に“011が入る。
また、入力端しR”/L−に“゜0゜゜が与えられてい
て、入力端子CKにクロックが入力されると、そのクロ
ックの立下りで、データは1ビット左方向(LSB−M
SB方向)にシフトされ、LSDの入力端子Doに“゜
0”が入る。
シフトレジスタ30のパラレルデータ出力端子QO〜Q
7(但し、QOがLSB.Q7がMSB)には、トライ
ステートバッファ群40中の各トライステートバッファ
41〜48の入力端子がそれぞれ接続され、その各出力
端子が内部データパスDBO〜DB7にそれぞれ接続さ
れている。各トライステートバッファ41〜48の制御
入力端子は、マイクロプロセッサの内部制御信号である
イネーブルシルト信号ENSHFTと接続されている。
出力端子Q7.QO及びライト信号RIGHTは、フィ
ードバック回路50に接続され、その回路50の出力側
が、D型フリップフロップ(以下、D 一FFという)
からなるキャリーフラグ60に接続されている。
フィードバック手段であるフィードバック回路50は、
キャリーフラグ60のデータ出力端子Qと出力端子Q7
の論理和をとる2人力のオアゲート(以下、ORゲート
という)51と、ライト信号RIGIITを反転するイ
ンバータ52とを備え、そのORゲート51及びインバ
ータ52の出力{p,!Iに、2人力のアンドゲート(
以下、ANDゲートという〉53が接続されている。出
力端子QOとライト信号HIGHTは、2人力ANDゲ
ート54の入力側に接続され、そのANDゲート54と
53の出力側が、2人力ORゲー1・55の入力側に接
続されている。ORゲート55の出力信号CFINは、
キャリーフラグ60のデータ入力端子Dに接続されてい
る。
キャリーフラグ60のクロック入力端子CKは、シフト
クロツク信号SHFTCLKに、リセット入力端子Rは
マイクロプロセッサの内部制御信号であるキャリーフラ
グリセット信号RSTCFに、データ出力端子Qから出
力される信号CFはORゲート51の入力側に、それぞ
れ接続されている。
リセット入力端子R及び信号RSTCFにより、リセッ
ト手段が構成されている。, このキャリーフラグ60は、端子CKにクロック信号S
HFTCLKが入力されると、その信号SHFTCLK
の立下りで、端子D上の信号CFINが端子Qに伝えら
れる。また、端子Rに゜“1゜゜の信号RSTCFが入
力されると、出力端子Qが“Ot+となる。
第3図は第1図の右シフトのタイムチャート第4図は第
1図の左シフトのタイムチャートであり、これらの図を
参照しつつシフト動作(1).(2)を説明する。なお
、第3図及び第4図において、ステートi〜i+4は、
マイクロプロセッサの命令実行動作を最小単位の動作に
分解したものである。
(1〉 第3図の右シフト動作 シフト前のオペランドのデータは、57■4、シフト回
数は3回とする。
右シフト実行中のステートiにおいて、信号LOADが
出力されて、内部データバスDBO〜DB7に乗せられ
たオペランドのデータが第1図のシフトレジスタ30に
ロードされ、そのシフトレジスタ30の出力端子QO−
Q7が57Hとなる。
ステートi+1では、信号RIGHTが“゜1′゜とな
り、信号SHFTCLKが出力される。そのため、シフ
トレジスタ30のデータは、1ビット右にシフトされ、
MSBの入力端子D7には“O′゛が入る。ステートi
+2.i+3においても、信号RIGHTは“1”とな
り、信号SHFTCLKが出力されるため、ステートi
+1,i+2,i+3で、シフトレジスタ30の内容が
3回右方向にシフトされ、出力端子QO〜Q7における
オペランドのデータはOAIIとなる。
また、ステートi+1,i+2,i+3で、信号RIG
HTは“゜1゜゛となっているため、インバータ52か
ら“゜O″が出力され、ANDゲート53の出力が゜“
0゛′となり、ANDゲート54の一方の入力端子には
“1゛′が入力される。そのため、シフトレジスタ30
の出力端子QOが、信号CFINとしてキャリーフラグ
60の入力端子Dに印加される。ステートi+1では、
出力端子QOが“1″であるため、信号SHF’l’C
LKの立下りで信号CFが“1゜゜となる。ステートi
+2,i+3においても、出力端子QOは“1゜゛であ
り、信号CFが、シフト終了後に“1゜゜となっている
ステートi+4で、信号E N S H F Tは“1
″となり、シフトされた出力端子QO〜Q7上のオペラ
ンドのデータは、トライステートバッファ41〜48を
介して内部データパスDBO〜DB7に乗せられ、オペ
ランドに書込まれる。
(2) 第4図の左シフト動作 右シフト時と同様に、オペランドのデータは57H、シ
フト回数は3回とする。
左シフト実行中のステートiにおいて、信号LOADが
出力され、内部データパスDB7〜DBOに乗せられた
オペランドのデータがシフトレジスタ30の入力端子D
O〜D7にロードされ、出力端子Q7〜QOが57Hと
なる。また、ステートiで、信号RSTCFも出力され
、キャリーフラグ60がリセットされてその出力信号C
Fが“O′゛となる。
ステートi+1では、信号SHFTCLKが出力される
.この時、信号RIGHTは“0”であるため、シフト
レジスタ30のデータは1ビット左にシフトされる。L
SBの入力端子DOには“゜0”が入り、出力端子QO
は“011となる.ステートi+2,i+3においても
、信号SHFTCLKは出力されるため、ステートi+
1,i+2,i+3でシフトレジスタ30の内容は3回
左方向にシフトされ、オペランドのデータがB8Hとな
る。
また、ステートi+1.i−}−2,i+3で信号RI
GHTは“゜0゜゛となっているため、ANDゲート5
4の一方の入力端子には“゜0゛が入力されてそのAN
Dゲート54の出力が“゜0゜゛となり、インバータ5
2の出力が“゜1゛゜となる。そのため、出力端子Q7
の出力信号とキャリーフラグ60の出力信号CFとの論
工里和がORゲート51でとられ、その結果が信号CF
IN信号としてキャリーフラグ60の入力端子Dに印加
される。ステートi+1では、シフトレジスタ30の出
力端子Q7とキャリーフラグ60の出力端子Qとも゛゜
0゜゛であり、信号CFINは“0”となるため、信号
SHFTCLKの立下りで信号CFは“O゜゜がら変化
しない。ステートi+2では、出力端子Q7が“゜1゜
゜となるため、信号CFINは゜“1゛となり、信号S
HFTCLKの立下りで信号CFは“゜1′゜となる。
ステートi+3では、出力信号Q7は′゛O゜”である
が、キャリーフラグ60の出力端子Qは“゜l”であり
、信号CFINが゛1”となるため、信号SHFTCL
Kの立下りで、信号CFは“1′゜から変化しない。ス
テートi+4で、信号E N S HFTが“゜1′゜
となり、シフトされたオペランドのデータはトライステ
ートバッファ41〜48を介して内部データパスDBO
〜DB7にのせられ、オペランドに書込まれる。
本実施例では、左方向にデータをシフトする場合に、シ
フト開始前にキャリーフラグ60のリセットを行ない、
キャリーフラグ60が一連のシフト過程で一度″1”に
セットされると、フィードバック回路50により、その
後のシフトによって再び゛゜O゜゜にリセットされるこ
とがない。そのため、オーバフローが発生しても、キャ
リーフラグ60の内容をチェックすることにより、的確
なオーバフ口一を検出し、演算結果の有効性を判断でき
る。従って、(オペランドのデータ)X2″の演算を、
乗算命令から左シフト命令に完全に置き換えることがで
き、複雑な回路を増加することなく、処理の高速化を計
ることができる。
なお、本発明は図示の実施例に限定されず、例えばシフ
トレジスタ30を他のビット横成にしたり、フィードバ
ック回路5oを他のゲー1・回路等で横成したり、ある
いはキャリーフラグ6oをリセット機能付きの他のレジ
スタで椙成ずる等、種々の変形が可能である。
(発明の効果) 以上詳細に説明したように、本発明によれば、シフト開
始前にキャリーフラグをリセットするリセット手段と、
キャリーフラグの出力を入力にフィードバックするフィ
ードバック手段とを設けたので、キャリーフラグが一連
のシフト過程で−・度、例えば″゜1゜゜にセットされ
ると、その後のシフトにより、再び“゜O′゛にリセッ
トされることがない。
そのため、オーバフローの的確な判定が行える。
従って、(オペランドのデータ)×2aの演算を、乗算
命令から左シフト命令に完全に置き換えることができ、
回路を増加することなく、処理の高速化が期待できる.
【図面の簡単な説明】
第1図は本発明の実施例を示すシフト回路の回路図、第
2図(a>.(b)は従来のシフト回路の動作説明図、
第3図は第1図の右シフトのタイムチャート、第4図は
第1図の左シフトのタイムチャートである。 10.30・・・・・・シフトレジスタ、5o・曲・フ
ィードバック回路、20.60・・・・・・キャリーフ
ラグ。

Claims (1)

  1. 【特許請求の範囲】 オペランドのデータをシフトするシフトレジスタと、前
    記シフトレジスタからの桁あふれを格納するキャリーフ
    ラグとを、備えたマイクロプロセッサのシフト回路にお
    いて、 前記シフトレジスタにおける最下位ビットから最上位ビ
    ットの方向へ前記オペランドのデータのシフトを行う場
    合に、そのシフト開始前に前記キャリーフラグをリセッ
    トするリセット手段と、前記キャリーフラグの出力と前
    記最上位ビットとの論理をとつてその論理結果を前記キ
    ャリーフラグの入力にフィードバックするフィードバッ
    ク手段とを、 設けたことを特徴とするシフトレジスタ。
JP1182141A 1989-07-14 1989-07-14 シフト回路 Expired - Fee Related JP3070014B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1182141A JP3070014B2 (ja) 1989-07-14 1989-07-14 シフト回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1182141A JP3070014B2 (ja) 1989-07-14 1989-07-14 シフト回路

Publications (2)

Publication Number Publication Date
JPH0348332A true JPH0348332A (ja) 1991-03-01
JP3070014B2 JP3070014B2 (ja) 2000-07-24

Family

ID=16113068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1182141A Expired - Fee Related JP3070014B2 (ja) 1989-07-14 1989-07-14 シフト回路

Country Status (1)

Country Link
JP (1) JP3070014B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61123930A (ja) * 1984-11-19 1986-06-11 Fujitsu Ltd 可変長デ−タ演算のオ−バフロ−検出方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61123930A (ja) * 1984-11-19 1986-06-11 Fujitsu Ltd 可変長デ−タ演算のオ−バフロ−検出方式

Also Published As

Publication number Publication date
JP3070014B2 (ja) 2000-07-24

Similar Documents

Publication Publication Date Title
JP3076046B2 (ja) 例外検出回路
JPH0431411B2 (ja)
KR950006580B1 (ko) 나눗셈연산장치
US3660646A (en) Checking by pseudoduplication
US3596074A (en) Serial by character multifunctional modular unit
US6519621B1 (en) Arithmetic circuit for accumulative operation
JPH04270415A (ja) 高性能加算器
JPH0348332A (ja) シフト回路
JPS5968058A (ja) フロ−テイング乗算器
KR970004474B1 (ko) 디지탈 데이타 처리기 및 그 방법
EP0375948A2 (en) Predetermination of result conditions of decimal operations
US6035310A (en) Method and circuit for performing a shift arithmetic right operation
JPH0612239A (ja) コンピュータaluにおける除算により生じさせられた不正確な結果を検出する装置
Hamilton Basic MIPS Architecture Version 1.4
JP2615746B2 (ja) ビット操作回路
JPH03129523A (ja) データ処理方法及び装置
JP2664750B2 (ja) 演算装置及び演算処理方法
JP3114909B2 (ja) プログラマブルコントローラの演算エラー処理方法
JP2591250B2 (ja) データ処理装置
JPS62249228A (ja) シフト装置
JP2508269B2 (ja) 平方根演算装置
JPH06201779A (ja) テスト回路
JPH0786840B2 (ja) モジュロw回路
JPH0779247B2 (ja) デコ−ド回路
JPH0553759A (ja) 固定小数点演算ユニツト

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees