問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

Similar documents
2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

Microsoft Word - 実験4_FPGA実験2_2015

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

if clear = 1 then Q <= " "; elsif we = 1 then Q <= D; end rtl; regs.vhdl clk 0 1 rst clear we Write Enable we 1 we 0 if clk 1 Q if rst =

Microsoft PowerPoint LC_15.ppt

ソフトウェア基礎技術研修

Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用]

スライド 1

スライド 1

エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor

計算機アーキテクチャ

スライド 1

VHDL VHDL VHDL i

スライド 1

TECH_I Vol.25 改訂新版PCIデバイス設計入門

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

Microsoft PowerPoint - 7.Arithmetic.ppt

C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

コンピュータ工学Ⅰ

VHDL

スライド 1

コンピュータ工学Ⅰ

Unconventional HDL Programming ( version) 1

スライド 1

フリップフロップ

スライド 1

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

C プログラミング 1( 再 ) 第 5 回 講義では C プログラミングの基本を学び演習では やや実践的なプログラミングを通して学ぶ

PowerPoint プレゼンテーション

Microsoft Word - HW06K doc

出 アーキテクチャ 誰が 出 装置を制御するのか 1

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx

Microsoft PowerPoint - 3.3タイミング制御.pptx

スライド 1

電卓の設計 1

Microsoft Word - 19-d代 試é¨fi 解ç�fl.docx

<4D F736F F D2091B28BC68CA48B8695F18D902E646F63>

PowerPoint プレゼンテーション

VelilogHDL 回路を「言語」で記述する

Microsoft PowerPoint - 11Web.pptx

スライド 1

Microsoft PowerPoint - Chap4 [Compatibility Mode]

Microsoft PowerPoint - Chap3 [Compatibility Mode]

スライド 1

FPGA と LUPO その1

PowerPoint プレゼンテーション

計算機ハードウエア

卒 業 研 究 報 告

PeakVHDL Max+Plus VGA VG

VBI VBI FM FM FM FM FM DARC DARC


QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

授業のあとで 情報処理工学 : 第 3 回 10 進数を 16 進数に変換する方法と 16 進数を 10 進数に変換する方法は 標準的な方法でも良いですか? 履修申告は済みましたか? 割り算 方法 ) 54 余り 6 16 ) 3 余り 3 ) 0 第 4 回へ 201

Microsoft PowerPoint - Lec ppt [互換モード]

論理設計の基礎

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

PowerPoint プレゼンテーション

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

Microsoft PowerPoint - NxLecture ppt [互換モード]

Microsoft Word - マイコン実験 doc

スライド 1

ソフトウェア基礎技術研修

PowerPoint プレゼンテーション

1. ボードの複数台制御 コンフィグ ROM から FPGA が起動できる場合を想定しています FPGA 回路には 特定のレジスタアドレスにプリセットしたデータが必要です 製品出荷時のサンプル FPGA 回路では レジスタ No.3 を 8bit 幅に設定し FPGA 外部の 4bit ディップスイ

PowerPoint プレゼンテーション

Microsoft PowerPoint - Sol7 [Compatibility Mode]

Microsoft PowerPoint - LogicCircuits11note.ppt [互換モード]

PLCシリアル通信 MODBUS通信 データ送信/受信プログラム例

Microsoft PowerPoint - Chap2 [Compatibility Mode]

Microsoft PowerPoint - LogicCircuits09note.ppt [互換モード]

Microsoft PowerPoint - kougi7.ppt

0630-j.ppt

untitled

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

ソフトウェア基礎技術研修

スライド 1

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

スライド 1

スライド 1

アナログ・接点変換器

スライド 1

Microsoft PowerPoint LCB_14_論理回路シミュレータ.ppt

スライド 1

Verilog HDL による回路設計記述

Microsoft PowerPoint - vlsi4.ppt [互換モード]

Microsoft PowerPoint LC1_14_論理回路シミュレータ.ppt

スライド 1

ex04_2012.ppt

デザインパフォーマンス向上のためのHDLコーディング法

スライド 1

Microsoft PowerPoint - Lec pptx

Microsoft PowerPoint - ProcML-12-3.ppt

PowerPoint プレゼンテーション

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

第 1 回マイクロプロセッサの時代 マイクロプロセッサとは, コンピュータの CPU( および周辺回路 ) を1チップ化した集積回路である. このマイクロプロセッサを構成する最も細かい部分の動作の基本は, 電子デバイスの持つ増幅作用と非線形作用にある. 一方, その働き全体を捉えれば, 記号を操作す

MODBUS ユーザーズマニュアル 페이지 1 / 23

プログラミング実習I

< B8CDD8AB B83685D>

Transcription:

第 8 回中間試験前の演習 問.VHDL ソースコードを読む () 次の VHDL のソースコードが記述しているゲート回路の回路図を示せ. use IEEE.STD_LOGIC_64.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Logic is port ( A : in std_logic_vector(3 downto Y : out std_logic end Logic; architecture Behavioral of Logic is signal TMP : std_logic_vector( downto TMP() <= A(3) xor A(2 TMP() <= TMP() xor A( Y <= TMP() xor A( end Behavioral; (2) この回路の入出力の真理値表を示し,(3) どのような働きをする回路か述べよ (2) (3) A(3) A(2) A() A() TMP() TMP() Y ヒント :4 ビットパターン A の中の の個数に注目 マイクロプロセッサとインタフェース講義資料 8-

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN : in std_logic; R : in std_logic_vector(n- downto Q : out std_logic_vector(n- downto ) end RegN; architecture RTL of RegN is process(clk) if (CLK'event and CLK = '') then if (EN = '') then Q <= R; CLK EN R() Q() H L 2)LOAD 入力付きカウンタ use IEEE.std_logic_64.all; use IEEE.std_logic_unsigned.all; entity PC4 is port ( CLK, RESET, LOAD : in std_logic; D : in std_logic_vector(3 downto C : out std_logic_vector(3 downto ) end PC4; architecture RTL of PC4 is signal count : std_logic_vector(3 downto process(clk, RESET) if (RESET = '') then count <= (others => '' elsif (CLK'event and CLK = '') then if (LOAD = '') then count <= D; count <= count + ''; C <= count; end RTL; リセット データのロード CLK RESET LOAD D(3) D(2) D() D() C(3) C(2) C() C() 8-2 マイクロプロセッサとインタフェース講義資料

3) 同期イネーブル入力付きカウンタ リスト : 問 2 の VHDL コード use IEEE.STD_LOGIC_64.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Logic_circuit is port ( CLK : in std_logic; RST : in std_logic; EN : in std_logic; REG_EN_O: out std_logic; COUNT : out std_logic_vector(3 downto ) end Logic_circuit; architecture Behavioral of Logic_circuit is signal cnt : std_logic_vector(3 downto signal reg_en : std_logic; process(clk,rst) レジスタの記述 if(rst='') then reg_en<=''; elsif(clk'event and CLK='') then reg_en<=en; process(clk,rst) if(rst='') then cnt<=(others=>'' elsif(clk'event and CLK='') then if(reg_en='') then if(conv_integer(cnt)=8) then cnt<=(others=>'' cnt<=cnt+''; REG_EN_O<=reg_en; COUNT<=cnt; end Behavioral; CLK RST EN REG_EN_O COUNT[3] COUNT[2] COUNT[] COUNT[] タイミングチャート マイクロプロセッサとインタフェース講義資料 8-3

問 3. ステートマシンの応用バスの動作応答速度のばらつきが大きい入出力装置 (I/O) をバスに接続する場合,READY 信号などの確認用信号を用いて入出力のタイミングを調整する 以下に示すのは, バスに接続された I/O にアクセスするためのバスコントローラの VHDL コードである コントローラの入出力信号の仕様は Table に示すとおりである N bit N bit M bit W_DATA R_DATA ADDRESS W D_BUS A_BUS READY IO_WRITE IO_READ N bit M bit W_DATA:I/O に書き込みたいデータ [ 入力 ] R_DATA:I/O から読み出されたデータ [ 出力 ] ADDRESS : I/O のアドレス [ 入力 ] W: で I/O への書き込み, で読み出し [ 入力 ] D_BUS: データバス [ 入出力 ] A_BUS: アドレスバス [ 出力 ] READY: I/O がアクセス可能なときに になる [ 入力 ] IO_WRITE: 書き込みを指示する制御バス信号 [ 出力 ] IO_READ: 読み出しを指示する制御バス信号 [ 出力 ] CLK RESET use IEEE.std_logic_64.all; use IEEE.std_logic_unsigned.all; entity BUS_CONTROLLER is generic (N : integer := 8; M : integer := 6 port ( CLK, RESET, READY, W : in std_logic; W_DATA : input std_logic_vector(n- downto ADDRESS : input std_logic_vector(m- downto D_BUS : inout std_logic_vector(n- downto A_BUS : out std_logic_vector(m- downto R_DATA : output std_logic_vector(n- downto IO_WRITE, IO_READ : out std_logic end BUS_CONTROLLER; architecture RTL of BUS_CONTROLLER is signal count : std_logic_vector(n- downto type type_state is (Idle, Write, Read, W_wait, R_wait signal state : type_state; IO_WRITE <= W; IO_READ <= not W; A_BUS <= ADDRESS; process(clk, RESET) if (RESET = '') then state <= Idle; elsif (CLK'event and CLK = '') then case state is when Idle => if (W = '') then state <= W_wait; state <= R_wait; when W_wait => if(ready= '') state = W_wait; state <=Write; end if when R_wait => if(ready= '') state <= R_wait; state <= Read; when Write => state <= Idle; when Read => state <= Idle; when others => state<=idle; end case; D_BUS <= W_DATA when state = Write (others=> 'Z' R_DATA <= D_BUS when state = Read (others=> '' end RTL; 8-4 マイクロプロセッサとインタフェース講義資料

RESET= Idle W= W= W_wait R_wait マイクロプロセッサとインタフェース講義資料 8-5

問 4. マイクロプロッサのアーキテクチャ Fig.4 (a) は,4 ビットプロセッサのアーキテクチャの例である このプロセッサのコントローラが 出力する制御信号は 4 ビットで そのフォーマットを Fig.4 (b) に示す W/ R はメモリ制御信号, OP_MODE は ALU( 算術演算論理回路 ) の演算の種類を指定するモード,WE_A,B, 及び C はレジスタにデータ を書き込むための許可信号,WE_R_F はレジスタファイルにデータを書き込むための許可信号,SEL はマル チプレクサの選択信号,R_ADR はレジスタファイルアドレス, 及び M_ADR はメモリアドレスを示す また, リスト 2 はアーキテクチャ内で用いられる ALU の VHDL 記述である デコーダ & ステートマシン 命令 データメモリアドレス M_ADR W/R WE_A WE_B WE_C WE WE R_A R_B WE R_C リセット SEL 命令フェッチ MUX デコード 実行 ライトバック OP_MODE A B ALU WE_R_F R_ADR レジスタファイル 制御信号フォーマット (4ビット) WE_ OP_MODE R_ADR M_ADR A B C R_F SEL W/R OP_MODE :ALU の演算モード : 算術加算 : 算術減算 : 論理 AND : 論理 OR WE_ : レジスタライトイネーブル WE_ A B C R_F 9 8 32 9 レジスタ名 のときにデータを各レジスタに格納 8 7 6 5 4 3 2 SEL: MUX( マルチプレクサ ) の選択出力信号 W/R : ポート を選択 : ポート を選択 : メモリ制御信号 : メモリから読み込み : メモリに書き込み R_ADR: レジスタファイルアドレス (~) M_ADR: メモリアドレス (~) (a) アーキテクチャ (b) 制御信号フォーマットとその機能 --リスト 2 ALU の VHDL 記述 2レジスタ A と C の内容を論理 AND し結果をレ use IEEE.STD_LOGIC_64.ALL; ジスタファイルアドレス に書き込む場合 use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_SIGNED.ALL; entity ALU4 is port ( A, B : in std_logic_vector(3 downto -- データ入力 (4bit) M : in std_logic_vector( downto -- 制御入力 (2bit) O : out std_logic_vector(3 downto -- 出力 (4bit) S : out std_logic -- 符号出力 (bit) end ALU4; architecture RTL of ALU4 is signal alu : std_logic_vector(3 downto -- ALU 内部データ (9bit に拡張 ) alu <= (A(3) & A) + (B(3) & B) when (M = "") -- bit 拡張後に符号付き加算 (A(3) & A) - (B(3) & B) when (M = "") -- bit 拡張後に符号付き減算 ('' & A) and ('' & B) when (M = "") -- AND 演算 end RTL; ('' & A) or ('' & B O <= alu(3 downto S <= alu(4 Fig.4 マイクロプロセッサのアーキテクチャの例 レジスタ B にメモリアドレス 番地のデ ータを格納する場合 -- OR 演算 注 : レジスタファイルには符号出力を除いたデータを出力している 8-6 マイクロプロセッサとインタフェース講義資料

このマイクロプロセッサのアーキテクチャについて, 以下の問に答えよ () 以下の )~5) の各動作を実行するためのビットパターンのシーケンスを示せ ) メモリ間算術加算命令 メモリアドレス からデータを読み込み, レジスタ B に格納 2 メモリアドレス からデータを読み込み, レジスタ C に格納 3 レジスタ B 及びレジスタ C の内容を算術加算演算し, 結果をレジスタファイルアドレス のレジスタに格納 2) レジスタ間データ転送命令 レジスタファイルアドレス の内容をレジスタ A に格納 3) レジスタ間減算命令 レジスタ A 及びレジスタ C の内容を算術減算し, 結果をレジスタファイルアドレス に格納 4) メモリ - レジスタ間論理 OR 演算命令 メモリアドレス からデータを読み込み, レジスタ C に格納 2 レジスタファイルアドレス の内容をレジスタ A に格納 3 レジスタ A 及びレジスタ C の内容を論理 OR 演算し, 結果をレジスタファイルアドレス へ格納 5) レジスタからメモリへのデータ転送命令 レジスタファイルアドレス の内容をメモリアドレス 番地に書き込む 32 9 8 7 6 5 4 3 2 ) メモリ間算術加算命令 2 3 2) レジスタ間データ転送命令 3) レジスタ間減算命令 4) メモリ - レジスタ間 論理 OR 演算命令 5) レジスタからメモリへのデータ転送命令 2 3 (2) 上記の命令を全て実行した時の, レジスタファイルの内容を記入せよ ただし, 上記で指定されたメモリの内容は Table のとおりであり, レジスタファイルアドレス にはデータとして が格納されているとせよ Table 指定されたメモリアドレスの内容 メモリアドレスデータ アドレス レジスタファイル データ マイクロプロセッサとインタフェース講義資料 8-7

問 5. コンピュータと内部表現の基礎 ) アドレス 24 ビットのプロセッサが直接にアクセス ( 読み書き ) できるメモリの最大容量を求めよ ただし, アドレスに 8 ビットデータを割り当てる通常のメモリ構成とし, 容量は G バイト,K バイト,M バイトなどの慣用的な単位を用いること 24 最大 2 個のアドレスを指定でき, つのアドレスに8 ビット (= バイト ) が割り当てられるから, 24 2 バイト =6M バイト 2)8 ビットプロセッサについて以下の問いに答えよ ただし, このプロセッサでは, データレジスタのビット幅は 8 であり,ALU 内部では 9 ビットにビット拡張して扱っているものとせよ 8 ビットおよび 9 ビットのデータで表現できる整数の値の範囲を示せ 8ビット : 2 7 ~ 2 7 の範囲 (-28~27) 9ビット : 2 8 ~ 2 8 の範囲 (-256~255) 22 つの 8 ビットのデータの加減算の結果の値の範囲を示せ -28~27 の範囲の 2 数の加減算なので,-256~254 3 内部表現 および で表される整数の値と, そのビット拡張後の内部表現を示せ = 64 + 8 + 4 + = 77 ビット拡張すると, MSB が なので負の数 2 の補数を求めると, となる = 64 + 32 + 8 + 2 + = 7 表されている数値は -7 ビット拡張すると, 3) 以下の演算を 8 ビット内部表現で実行し, 結果の 進数表記を示せ ( 結果がオーバーフローする場合は, オーバーフロー と記せ ) + 2 + 3-2 3 4)3)~3 の演算を 9 ビットに拡張してから行ってみよ 2 3 8-8 マイクロプロセッサとインタフェース講義資料

第 8 回中間試験前の演習 問.VHDL ソースコードを読む () 次の VHDL のソースコードが記述しているゲート回路の回路図を示せ. use IEEE.STD_LOGIC_64.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Logic is Port ( A : in std_logic_vector(3 downto Y : out std_logic end Logic; architecture Behavioral of Logic is signal TMP : std_logic_vector( downto TMP() <= A(3) xor A(2 TMP() <= TMP() xor A( Y <= TMP() xor A( end Behavioral; A(3) A(2) A() A() TMP() TMP() Y (2) この回路の入出力の真理値表を示し,(3) どのような働きをする回路か述べよ (2) (3) A(3) A(2) A() A() TMP() TMP() Y 入力信号のビット列の中で の個 数が奇数の場合に出力信号 Y が になる回路である * * つまり 奇数パリティチェック回 路 として働く ヒント :4 ビットパターン A の中の の個数に注目 マイクロプロセッサとインタフェース講義資料 8-9

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 (R() と Q() のみのタイミングチャート ) use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN : in std_logic; R : in std_logic_vector(n- downto Q : out std_logic_vector(n- downto ) end RegN; architecture RTL of RegN is process(clk) if (CLK'event and CLK = '') then if (EN = '') then Q <= R; CLK EN R() Q() H L 2)LOAD 入力付きカウンタ use IEEE.std_logic_64.all; use IEEE.std_logic_unsigned.all; entity PC4 is port ( CLK, RESET, LOAD : in std_logic; D : in std_logic_vector(3 downto C : out std_logic_vector(3 downto ) end PC4; architecture RTL of PC4 is signal count : std_logic_vector(3 downto process(clk, RESET) if (RESET = '') then count <= (others => '' elsif (CLK'event and CLK = '') then if (LOAD = '') then count <= D; count <= count + ''; C <= count; end RTL; リセット データのロード CLK RESET LOAD D(3) D(2) D() D() C(3) C(2) C() C() C = 8- マイクロプロセッサとインタフェース講義資料

3) 同期イネーブル入力付きカウンタ リスト : 問 2 の VHDL コード use IEEE.STD_LOGIC_64.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Logic_circuit is Port ( CLK : in std_logic; RST : in std_logic; EN : in std_logic; REG_EN_O: out std_logic; COUNT : out std_logic_vector(3 downto ) end Logic_circuit; architecture Behavioral of Logic_circuit is signal cnt : std_logic_vector(3 downto signal reg_en : std_logic; process(clk,rst) レジスタの記述 if(rst='') then reg_en<=''; elsif(clk'event and CLK='') then reg_en<=en; process(clk,rst) if(rst='') then cnt<=(others=>'' elsif(clk'event and CLK='') then if(reg_en='') then if(conv_integer(cnt)=8) then cnt<=(others=>'' cnt<=cnt+''; REG_EN_O<=reg_en; COUNT<=cnt; end Behavioral; CLK RST EN REG_EN_O COUNT[3] COUNT[2] COUNT[] COUNT[] COUNT=,,,,,,,,,,, タイミングチャート マイクロプロセッサとインタフェース講義資料 8-

問 3. ステートマシンの応用バスの動作応答速度のばらつきが大きい入出力装置 (I/O) をバスに接続する場合,READY 信号などの確認用信号を用いて入出力のタイミングを調整する 以下に示すのは, バスに接続された I/O にアクセスするためのバスコントローラの VHDL コードである コントローラの入出力信号の仕様は Table に示すとおりである N bit N bit M bit W_DATA R_DATA ADDRESS W D_BUS A_BUS READY IO_WRITE IO_READ N bit M bit W_DATA:I/O に書き込みたいデータ [ 入力 ] R_DATA:I/O から読み出されたデータ [ 出力 ] ADDRESS : I/O のアドレス [ 入力 ] W: で I/O への書き込み, で読み出し [ 入力 ] D_BUS: データバス [ 入出力 ] A_BUS: アドレスバス [ 出力 ] READY: I/O がアクセス可能なときに になる [ 入力 ] IO_WRITE: 書き込みを指示する制御バス信号 [ 出力 ] IO_READ: 読み出しを指示する制御バス信号 [ 出力 ] CLK RESET use IEEE.std_logic_64.all; use IEEE.std_logic_unsigned.all; entity BUS_CONTROLLER is generic (N : integer := 8; M : integer := 6 port ( CLK, RESET, READY, W : in std_logic; W_DATA : input std_logic_vector(n- downto ADDRESS : input std_logic_vector(m- downto D_BUS : inout std_logic_vector(n- downto A_BUS : out std_logic_vector(m- downto R_DATA : output std_logic_vector(n- downto IO_WRITE, IO_READ : out std_logic end BUS_CONTROLLER; architecture RTL of BUS_CONTROLLER is signal count : std_logic_vector(n- downto type type_state is (Idle, Write, Read, W_wait, R_wait signal state : type_state; IO_WRITE <= W; IO_READ <= not W; A_BUS <= ADDRESS; process(clk, RESET) if (RESET = '') then state <= Idle; elsif (CLK'event and CLK = '') then case state is when Idle => if (W = '') then state <= W_wait; state <= R_wait; when W_wait => if(ready= '') state <= W_wait; state <=Write; end if when R_wait => if(ready= '') state <= R_wait; state <= Read; when Write => state <= Idle; when Read => state <= Idle; when others => state<=idle; end case; D_BUS <= W_DATA when state = Write (others=> 'Z' R_DATA <= D_BUS when state = Read (others=> '' end RTL; 8-2 マイクロプロセッサとインタフェース講義資料

() このバスコントローラの状態遷移図を示せ RESET= Idle W= W= READY= READY= W_wait READY= R_wait READY= Write Read マイクロプロセッサとインタフェース講義資料 8-3

問 4. マイクロプロッサのアーキテクチャ Fig.4 (a) は,4ビットプロセッサのアーキテクチャの例である このプロセッサのコントローラが出力する制御信号は 4 ビットで そのフォーマットを Fig.4 (b) に示す W/ R はメモリ制御信号,OP_MODE は ALU( 算術演算論理回路 ) の演算の種類を指定するモード,WE_A,B, 及び C はレジスタにデータを書き込むための許可信号,WE_R_F はレジスタファイルにデータを書き込むための許可信号,SEL はマルチプレクサの選択信号,R_ADR はレジスタファイルアドレス, 及び M_ADR はメモリアドレスを示す また, リスト 2 はアーキテクチャ内で用いられる ALU の VHDL 記述である 命令 データメモリアドレス M_ADR W/R WE_A WE_B WE_C WE WE R_A R_B WE R_C リセット デコーダ & ステートマシン SEL 命令フェッチ MUX デコード 実行 ライトバック OP_MODE A B ALU WE_R_F R_ADR レジスタファイル 制御信号フォーマット (4ビット) WE_ OP_MODE R_ADR M_ADR A B C R_F SEL W/R OP_MODE :ALU の演算モード : 算術加算 : 算術減算 : 論理 AND : 論理 OR WE_ : レジスタライトイネーブル WE_ A B C R_F 9 8 32 9 レジスタ名 のときにデータを各レジスタに格納 8 7 6 5 4 3 2 SEL: MUX( マルチプレクサ ) の選択出力信号 W/R : ポート を選択 : ポート を選択 : メモリ制御信号 : メモリから読み込み : メモリに書き込み R_ADR: レジスタファイルアドレス (~) M_ADR: メモリアドレス (~) (a) アーキテクチャ (b) 制御信号フォーマットとその機能 Fig.4 マイクロプロセッサのアーキテクチャの例 2レジスタ A と C の内容を論理 AND し結果をレ --リスト 2 ALU の VHDL 記述ジスタファイルアドレス に書き込む場合 use IEEE.STD_LOGIC_64.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_SIGNED.ALL; entity ALU4 is port ( A, B : in std_logic_vector(3 downto -- データ入力 (4bit) M : in std_logic_vector( downto -- 制御入力 (2bit) O : out std_logic_vector(3 downto -- 出力 (4bit) S : out std_logic -- 符号出力 (bit) end ALU4; architecture RTL of ALU4 is signal alu : std_logic_vector(3 downto -- ALU 内部データ (9bit に拡張 ) alu <= (A(3) & A) + (B(3) & B) when (M = "") -- bit 拡張後に符号付き加算 (A(3) & A) - (B(3) & B) when (M = "") -- bit 拡張後に符号付き減算 ('' & A) and ('' & B) when (M = "") -- AND 演算 end RTL; ('' & A) or ('' & B O <= alu(3 downto S <= alu(4 レジスタ B にメモリアドレス 番地のデ ータを格納する場合 -- OR 演算 注 : レジスタファイルには符号出力を除いたデータを出力している 8-4 マイクロプロセッサとインタフェース講義資料

このマイクロプロセッサのアーキテクチャについて, 以下の問に答えよ () 以下の )~5) の各動作を実行するためのビットパターンのシーケンスを示せ ) メモリ間算術加算命令 メモリアドレス からデータを読み込み, レジスタ B に格納 2 メモリアドレス からデータを読み込み, レジスタ C に格納 3 レジスタ B 及びレジスタ C の内容を算術加算演算し, 結果をレジスタファイルアドレス のレジスタに格納 2) レジスタ間データ転送命令 レジスタファイルアドレス の内容をレジスタ A に格納 3) レジスタ間減算命令 レジスタ A 及びレジスタ C の内容を算術減算し, 結果をレジスタファイルアドレス に格納 4) メモリ - レジスタ間論理 OR 演算命令 メモリアドレス からデータを読み込み, レジスタ C に格納 2 レジスタファイルアドレス の内容をレジスタ A に格納 3 レジスタ A 及びレジスタ C の内容を論理 OR 演算し, 結果をレジスタファイルアドレス へ格納 5) レジスタからメモリへのデータ転送命令 レジスタファイルアドレス の内容をメモリアドレス 番地に書き込む 32 9 8 7 6 5 4 3 2 ) メモリ間算術加算命令 2 3 2) レジスタ間データ転送命令 3) レジスタ間減算命令 4) メモリ - レジスタ間 論理 OR 演算命令 5) レジスタからメモリへのデータ転送命令 2 3 (2) 上記の命令を全て実行した時の, レジスタファイルの内容を記入せよ ただし, 上記で指定されたメモリの内容は Table のとおりであり, レジスタファイルアドレス にはデータとして が格納されているとせよ Table 指定されたメモリアドレスの内容 メモリアドレスデータ アドレス レジスタファイル データ マイクロプロセッサとインタフェース講義資料 8-5

問 5. コンピュータと内部表現の基礎 ) アドレス 24 ビットのプロセッサが直接にアクセス ( 読み書き ) できるメモリの最大容量を求めよ ただし, アドレスに 8 ビットデータを割り当てる通常のメモリ構成とし, 容量は G バイト,K バイト,M バイトなどの慣用的な単位を用いること 24 最大 2 個のアドレスを指定でき, つのアドレスに8 ビット (= バイト ) が割り当てられるから, 24 2 バイト =6M バイト 2)8 ビットプロセッサについて以下の問いに答えよ ただし, このプロセッサでは, データレジスタのビット幅は 8 であり,ALU 内部では 9 ビットにビット拡張して扱っているものとせよ 8 ビットおよび 9 ビットのデータで表現できる整数の値の範囲を示せ 8ビット : 2 7 ~ 2 7 の範囲 (-28~27) 9ビット : 2 8 ~ 2 8 の範囲 (-256~255) 22 つの 8 ビットのデータの加減算の結果の値の範囲を示せ -28~27 の範囲の 2 数の加減算なので,-256~254 3 内部表現 および で表される整数の値と, そのビット拡張後の内部表現を示せ = 64 + 8 + 4 + = 77 ビット拡張すると, MSB が なので負の数 2 の補数を求めると, となる = 64 + 32 + 8 + 2 + = 7 表されている数値は -7 ビット拡張すると, 3) 以下の演算を 8 ビット内部表現で実行し, 結果の 進数表記を示せ ( 結果がオーバーフローする場合は, オーバーフロー と記せ ) + 2 + 3-2 3 + 進数表記では 23 + オーバーフロー の 2 の補数は, + 桁上げを無視して 進数表記では 3 4)3)~3 の演算を 9 ビットに拡張してから行ってみよ 2 3 + 進数表記では 23 + 進数表記では 38 の 2 の補数は, + 桁上げを無視して 進数表記では 3 8-6 マイクロプロセッサとインタフェース講義資料