計算機構成 第2回 ALUと組み合わせ回路の記述

Slides:



Advertisements
Similar presentations
2009/11/10 10 進数と r 進数を相互に変換できる コンピュータのための数を表現できる 2進数の補数を扱える コンピュータにおける負の数の表現を説明で きる コンピュータでの演算方法を説明できる 文字や記号の表現方法を示せる 第7回 今日の目標 § 2.2 数の表現と文字コード.
Advertisements

プログラミング論 第八回数字の計算,整数の入出力. 本日の内容 前回の課題(続き) 前回の課題(続き) 数字の計算をする 数字の計算をする – 加減乗除を行う – インクリメント演算子とデクリメン ト演算子.
平成 27 年 10 月 21 日. 【応用課題 2-1 】 次のビット列は、ある 10 進数を 8 ビット固定小数点表示で表した時の ものです。ただし、小数点の位置は 3 ビット目と 4 ビット目の間としてお り、負数は2の補数で表しています。このとき、元の 10 進数を求めてく ださい。
論理回路 第3回 今日の内容 前回の課題の解説 論理関数の基礎 – 論理関数とは? – 真理値表と論理式 – 基本的な論理関数.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
10進数 Digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 例: 3271 = (3×103) + (2×102) + (7×101) + (1×100) 8進数 Digits: 0, 1, 2, 3, 4, 5, 6, 7 例: 3271 = (3×83) + (2×82)
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
Verilog HDL 12月21日(月).
Q q 情報セキュリティ 第6回:2005年5月20日(金) q q.
第5回 ディジタル回路内の数値表現 瀬戸 ディジタル回路内部で,数を表現する方法(2進数)を学ぶ 10進数⇔2進数⇔16進数の変換ができる
情報教育論 第9回 仮定文の仕組み 政策・メディア研究科 岡田 健.
VLSI設計論第2回 組み合わせ回路の記述と 論理シミュレーション
4.2.2 4to1セレクタ.
補数 n:桁数、b:基数 bの補数 bn-x 253(10進数)の10の補数は、 =747
デジタル回路(続き) コンピュータ(ハードウェアを中心に)
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
情報処理Ⅱ 第4回 2007年10月29日(月).
基本情報技術概論(第3回) 埼玉大学 理工学研究科 堀山 貴史
ハードウェア記述言語による 論理回路設計とFPGAへの実装 2
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
第6回 よく使われる組合せ回路 瀬戸 重要な組合せ回路を理解し、設計できるようにする 7セグディスプレイ用デコーダ 加算回路・減算回路
アルゴリズムとチューリングマシン 「もの」(商品)としてのコンピュータ 「こと」(思想)としてのコンピュータ アルゴリズム
高速剰余算アルゴリズムとそのハードウェア実装についての研究
第5回 今日の目標 §1.6 論理演算と論理回路 ブール代数の形式が使える 命題と論理関数の関係を示せる
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング演習I 2003年5月7日(第4回) 木村巌.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
04: 式・条件分岐 (if) C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
プログラミング演習Ⅱ 課題4第3週 画像処理 (1) ビット演算子.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第二部  回路記述編 第3章 文法概略と基本記述スタイル 3.1 文法を少々 3.1.1~3.1.3.
第3章 演算装置.
ディジタル回路の設計と CADによるシステム設計
Ibaraki Univ. Dept of Electrical & Electronic Eng.
9. 演算回路 五島 正裕.
コンピュータアーキテクチャ 第 7 回.
コンピュータアーキテクチャ 第 7 回.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
VLSI設計論第3回 順序回路の記述と論理合成
7. 機能的な組み合わせ回路 五島 正裕.
ディジタル回路 9. 演算回路 五島 正裕.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
論理回路 第12回
  第3章 論理回路  コンピュータでは,データを2進数の0と1で表現している.この2つの値,すなわち,2値で扱われるデータを論理データという.論理データの計算・判断・記憶は論理回路により実現される.  コンピュータのハードウェアは,基本的に論理回路で作られている。              論理積回路.
データの表現 2進数 0と1を使う。 基数(基準になる数)が2. 101(2) かっこで2進数と示すことがある。
計算機工学特論 スライド 電気電子工学専攻 修士1年 弓仲研究室 河西良介
コンピュータアーキテクチャ 第 4 回.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
コンピュータアーキテクチャ 第 4 回.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
9. 演算回路 五島 正裕.
情報処理Ⅱ 2005年10月28日(金).
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
Q q 情報セキュリティ 第8回:2004年5月28日(金) の補足 q q.
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
論理回路(and,or,not)を作成. 回路を組み合わせ半/全加算器.
JavaScript    プログラミング入門 2-3 式と演算子 2006/10/12 神津 健太.
香川大学創造工学部 富永浩之 情報数学1 第3-3章 多進法での四則演算 香川大学創造工学部 富永浩之
2009年8月18日,新潟大学 「情報」と「ものづくり」 の実践教育3 下保敏和,佐藤亮一.
C言語講座 四則演算  if ,  switch 制御文.
情報処理Ⅱ 2006年10月27日(金).
Presentation transcript:

計算機構成 第2回 ALUと組み合わせ回路の記述 情報工学科 天野英晴

コンピュータは計算機だが 実際はそんなに演算はしない コンピュータの本質は演算器と関係が薄い しかし、演算器から入った方が理解が楽 コンピュータの演算はALU(Arithmetic Logic Unit)で行う そのコンピュータで実行する演算をセットにしてどれか一つを選んで行う組み合わせ回路 コンピュータの基本は逐次演算なので、一度に一つだけ選んで実行すれば良い ALUはコンピュータのデータの流れの中心にある

ALU Sの値によって、AとBの間の演算を選択 Sが3ビットならば8種類の演算が選択可能 Y 例: S=0 Y=A S=1 Y=B S S=2 Y=A & B S=3 Y=A | B S=4 Y=A<<1 S=5 Y=A>>1 S=6 Y=A+B S=7 Y=A-B Y S A B

ALUで行う演算 ALUではスルー、整数演算、論理演算、シフトを行う スルーは何も演算をしないが重要 普通、乗算と除算はALUではやらない 他の演算に比べて時間が掛かるから 乗算は入れてしまう場合もある

加算、減算 2の補数表現を用いる 1と0を反転 +1 利点 0000 -8 1000 1 0001 -7 1001 2 0010 -6 4桁の例 1と0を反転 +1 例: 5 0101 →1010→1011 利点 同じ操作で正負が変換可能 減算が加算器で可能 +0、-0が生じない 最上位ビットを符号ビットとして利用可能 0000 -8 1000 1 0001 -7 1001 2 0010 -6 1010 3 0011 -5 1011 4 0100 -4 1100 5 0101 -3 1101 6 0110 -2 1110 7 0111 -1 1111

論理演算(ANDとOR) 論理積(AND) Verilog演算子 & 論理和(OR) Verilog演算子 | 0&0=0, 1&0=0, 0&1=0, 1&1=1 多桁の場合、対応するビット間の演算となる 例) 1011 & 1101 = 1001 1を検出するマスク操作に良く用いる 論理和(OR)  Verilog演算子 | 0|0=0, 1|0=1, 0|1=1, 1|1=1 例) 1001 | 1101 = 1101

論理演算(NOTとEX-OR) 反転(NOT) Verilog演算子 ~ 排他的論理和(EX-OR) Verilog演算子 ^ ~0=1, ~1=0 多桁の場合、各ビットを反転する 例) ~1011 = 0100 1項演算子 排他的論理和(EX-OR)  Verilog演算子 ^ 0^0=0, 1^0=1, 0^1=1, 1^1=0 多桁の場合、対応するビット間の演算となる 例) 1001 ^1101 = 0100 一致、反一致の判定に使う

シフト(論理シフト) 左シフト(Shift Left Logical) Verilog演算子 << 指定ビット数分左にずらす 2倍、4倍、8倍、、、 ずれた分、右(LSB:Least Significant Bit)には0を詰める 11101010<<1 = 11010100 11101010<<5 = 01000000 右シフト(Shift Right Logical) Verilog演算子 >> 指定ビット数分右にずらす ½、 ¼、1/8、、、、 ずれた分、左(MSB:Most Significant Bit)には0を詰める 11101010>>1 = 01110101 11101010>>5 = 00000111

シフト(算術シフト) 右シフト(Shift Right Arithmetic) Verilog演算子 存在しない! 指定ビット数分右にずらす ずれた分、左(MSB:Most Significant Bit)には符号ビットを詰める 負の数を右シフトして(1/2、1/4、、、)も負の数の属性を保持する 11101010>>1 = 11110101 11101010>>5 = 11111111 01101010>>5= 00000011 算術左シフトは普通存在しない では、Verilogではどう書くか?→後ほど、、、

ALUのVerilog記述 module alu ( input [15:0] a,b, input [2:0] s, バス構文 [MSB:LSB] module alu ( input [15:0] a,b, input [2:0] s, output [15:0] y); assign y = s==3’b000 ? a: s==3’b001 ? b: s==3’b010 ? a&b: s==3’b011 ? a|b: s==3’b100 ? a<<1: s==3’b101 ? a>>1: s==3’b110 ? a+b : a-b ; endmodule 選択(マルチプレクサ)演算子 ? : ; 数の表現

バスの表現 信号線、データを束(バス)として表現する input a[15:0] → [MSB:LSB]で宣言 バスの分離(ビット切り出し) 本当は0じゃなくてもいいけど混乱する場合が多い バスの分離(ビット切り出し) a[15] : 15bit目 (符号ビット) a[15:8] 15ビット目から8ビット目までの8ビット(上位8ビット)

数の表現 2進数の表現(b) 桁数’b数 3’b001, 1’b1, 8’b11010010, 8’b1101_0010 16進数の表現(h) 16’ha23c 32’hff00_abcd 普通に書くと10進数となる 示した桁分の数を書くのが良い アンダースコアで区切って良い

条件演算子(マルチプレクサ構文) assign Y = (条件1)? 式1: (条件2)? 式2: …… (条件n)? 式n: 式n+1;         (条件2)? 式2:          …… (条件n)? 式n: 式n+1; 成立した条件に対する式がYに出力 どれも成立しなければ式n+1がYに出力 先に書いた条件に優先順位がある この授業の書き方のルール 条件は可能な限り排他的(どれかが成り立てば他は成り立たない)に書く 式中に選択構文を使って入れ子にしてはならない 上記を守れば選択構文で全ての組み合わせ回路は分かりやすく書ける   → 他にもfunction文やalways文を使った書き方があるのだがこの授業ではやらない

define文の利用 なるべくコード中に直接数を書かないようにする 変更が容易 #ではなく、バックシングルコーテーションを用いる `define DATA_W 16 `define SEL_W 3 `define ALU_THA `SEL_W’b000 `define ALU_THB `SEL_W’b001 `define ALU_AND `SEL_W’b010 `define ALU_OR `SEL_W’b011

define文の利用 シングルバックコーテーションで引用 module alu ( input [`DATA_W-1:0] a,b, input [`SEL_W-1:0] s, output [`DATA_W-1:0] y); assign y = s==`ALU_THA? a; s==`ALU_THB? b; s==`ALU_AND? a&b: a+b; endmodule

比較演算子 成立すれば1、そうでなければ0を返す 大小比較:< <= > >= 等号: == != === !== 等号: == != === !== == !=は、x(不定)、z(ハイインピーダンス)が入力にあれば結果はxやzになる === !==は、x、zを含めて比較する この授業で== !=のみを利用する

リダクション演算 論理演算子をバスの前に書くとリダクション演算子となる 全ビットを演算し、結果は1か0の1ビットの値になる A=4’b1001ならば AND &A=0 OR |A=1 NAND ~&A=1 NOR ~|A=0

論理否定 ! (条件に対する否定) ~ 乗除算 * / % 加減算 + - シフト演算 << >> 比較演算 演算子の優先順位 論理否定 ! (条件に対する否定) ~ 乗除算 * / % 加減算 + - シフト演算 << >> 比較演算 < > <= >= 等号 == != === !== 論理積 & 排他的論理和 ^ ~& 論理和 | 論理積(条件) && 論理和(条件) || 条件 ? :

演習課題 2kai中のALU(alu.v)をalu0.vのシフトの代わりに論理反転と排他的論理和を入れるようにせよ。 THA,THB,AND,OR,NOT,EOR,ADD,SUB alu.vのみ提出 report@am.ics.keio.ac.jp Subject: PARTHENON Number Name 4ビットの正の数のうち、素数が入力された際 に1を出力するモジュールsosu.vを設計せよ。