Microsoft PowerPoint - Chap3 [Compatibility Mode]

Size: px
Start display at page:

Download "Microsoft PowerPoint - Chap3 [Compatibility Mode]"

Transcription

1 ディジタル設計 (A1) (Chap. 情報システム学科次世代コンピューティング研究室山下茂 0

2 目次 1. Verilog HDLの概要 2. ゲートレベルのモデリング 3. データフローモデリング 4. 動作のモデリング 5. FunctionとTask 6. 構造のモデリング 7. 検証 8. 論理合成 1

3 1:Verilog HDL の概要 各種レベルでハードウェアを記述できる言語 アルゴリズム / ゲート / スイッチレベル 記述だけでなく検証機能をもつ syntax だけでなく semantics も明確 プログラミング言語インタフェースをもつ シミュレーション中に内部を制御可能ション中に内部を制御可能 C 言語との親和性が高い 2

4 Verilog HDL の特徴 基本論理ゲート (AND,ORなど) の組込み ユーザ定義プリミティブの生成 遅延の記述 動作記述 ( 手続き的記述 ) データフロー記述 構造記述 ( ゲートト モジュールの接続 ) 階層的記述 並行性記述 3

5 Verilog HDL 設計手順 仕様設計 RTL 設計 RTL 検証 HDL で記述 機能の確認 OK? 論理合成ゲートレベル検証 回路 ( ネットリスト ) に変換 タイミングの確認 OK? 4

6 Verilog-HDL の文法体系 回路記述 テストベンチ記述 論理合成可能 ライブラリ記述 5

7 Module module モジュール名ポート宣言入出力のピン変数宣言回路記述本体データフロー記述動作記述構造記述 endmodule 信号線やレジスタ 6

8 Module の例 module HalfAdder (A,B,Sum, Carry); input A,B; output Sum, Carry; assign Sum = A ^ B; assign Carry = A & B; endmodule A Sum B Carry 7

9 基本構文 1 データフロー記述 assign LHS_net = RHS_expression; assign 文の右辺に含まれる値が変化すると右辺を計算し 遅延のあと左辺に代入する assign 文は順序に依存せず 並行実行される 左辺の信号と右辺の式との永続的な関係を表す 8

10 モジュールのシミュレーションの単位ションの単位 データフロー記述例 シミュレーションの精度 `timescale 1ns / 10ps module Decoder2x4 (A,B,EN,Z); EN A B input A,B,EN; output [3:0] Z; AN wire AN, BN; assign AN = ~A; assign BN = ~B; assign Z[0] = ~(AN & BN & EN); assign Z[1] = ~(AN & B & EN); assign Z[2] = ~(A & BN & EN); assign Z[3] = ~(A & B & EN); endmodule BN Z[0] Z[1] Z[2] Z[3] 9

11 お絵かきスペース 10

12 手続き的な記述 2 動作記述 initial : 一度だけ実行される ( テスト信号や, シミュレーション結果の表示方法を指定など ) always : 繰り返し実行される ( 設計する本体 ) 動作記述の結果はregister 型データに格納され 値を保持する すべての initial 文 always 文は時刻 0 で実行 11

13 module FA_Seq(A,B,Ci,S,Co); input A,B,Ci; output t S,Co; SC reg S,Co; regt1t2t3; T1,T2,T3; or B or Ci) begin S = (A ^B) ^ Ci) ; T1 = A & Ci; T2 = B & Ci; T3 = A&B; Co = T1 T2 T3; end endmodule 動作記述例 A B Ci 動作記述の結果はregister 型データに格納され 次に入力が変わるまで値を保持する 合成結果が必ずしもレジスタになるとは限らない. T1 T2 T3 前の実行 ( 行 ) が終わってから次の実行が始まる. S Co 12

14 お絵かきスペース 13

15 構造記述の要素 基本ゲート スイッチ ユーザ定義 モジュール 3 構造記述 要素間の接続を net を用いて記述する 14

16 module FA_str(A,B,Ci,S,Co); input A,B,Ci; output S,Co; wire S1,T1,T2,T3; xor and or endmodule X1(S1,A,B), X2(S,S1,Ci); A1(T3,A,B), A A2(T2,B,Ci), A3(T1,A,Ci);, O1(Co,T1,T2,T3); 構造記述例 A B Ci S1 T1 T2 T3 S Co 15

17 お絵かきスペース 16

18 module FA_Mix(A,B,Ci,S,Co); input A,B,Ci; output S,Co; reg Co; reg T1,T2,T3; wire S1; 混合記述 xor X1 (S1,A,B); or B or Ci)begin T1 = A & Ci; T2 = B & Ci; T3 = A & B; Co = T1 T2 T3; end assign S = S1 ^ Ci; endmodule 構造記述 動作記述 データフロー記述 17

19 シミュレーション 設計した回路が期待通りのものであるかどうかを検証するため テストパターンを与えたときの動作を確認すること 被検証回路 テストパターン 信号の確認手段 テストパターン 被検証回路の記述 観測された信号 18

20 遅延 assign #2 S = A ^ B; 2 time unitの遅延 A B S timescale 1ns / 100ps 1 time unitが1nsに対応 ( 精度は 100ps) 19

21 シミュレーションの記述例 `timescale 1ns/1ns module Top; reg PA,PB,PCi; PB PCi 入力信号は reg で wire PCo, PS; 観測信号はwireで FA_Seq F1(PA,PB,PCi,PS,PCo); PB PCi PS PC 被検証回路 initial begin: ONLY_ONCEONCE reg [3:0] Pal; for (Pal=0; Pal<8; Pal=Pal+1) begin {PA,PB,PCi} = Pal; #5 $display("pa,pb,pci=%b%b%b",pa,pb,pci, " :::PCo,PS=%b%b",PCo,PS);,PCo,PS); end end 5 単位時間後に実行 endmodule テストパターン確認手段 20

22 シミュレーション結果 PCi PB PA PS PCo PA,PB,PCi = 000 ::: PCo,PS=00 PA,PB,PCi = 001 ::: PCo,PS=01 PA,PB,PCi PB PCi = 010 ::: PCo,PS=01PS PA,PB,PCi = 011 ::: PCo,PS=10 PA,PB,PCi = 100 ::: PCo,PS=01 PA,PB,PCi = 101 ::: PCo,PS=10 PA,PB,PCi = 110 ::: PCo,PS=10 PA,PB,PCi = 111 ::: PCo,PS=11 自分で書けますね? 21

23 お絵かきスペース 22

24 言語要素 C 言語に類似 識別子 ( エンティティ 信号 変数 サブプログラムなどの要素 ) 先頭はアルファベット, またはアンダースコア ( _ ) (2 文字目以降は, アルファベット ( a ~ z a z または A ~ Z ) 数字( 0 ~ 9 ) アンダースコア ( _ ) ダラー( $ ) を使う ) 予約語は使えない. 大文字小文字は区別されるが 予約語については区別されない (case でも CaSeでも同じ ) コメント // this is a comment. /* this is a comment */ 23

25 コンパイラ指示子 #(C 言語 ) ではなく `を用いる `define, `undef 定数の定義, 定義の `ifdef, `else, `endif 条件コンパイル `include 共通情報のファイル化 `timescale 遅延時間単位の指定 24

26 基本値 0 1 ( 条件式の中では,trueとみなされる) x:unknown z: ハイ インピーダンス値 and 0 1 x z or 0 1 x z x x x x x 0 x x x x x 1 x x z 0 x x x z x 1 x x 25

27 数値 format 2 進数 :b { size } 'base value 例 4'b0001 'o721 4'd2 16'h12AB 8 進数 :o 10 進数 :d 16 進数 :h ビット幅を 10 進数で書く ( 省略可 ) 4ビット2 進数 (9 ビット )8 進数 4ビット10 進数 16 ビット 16 進数 試験の時にはこのルールは覚えておこうルは覚えておこう 26

28 net register 型 : 値を伝搬する データ型 dataflow 記述 構造記述で用いられる 型 : 値を保持する 動作記述 (always l initial iti 文 ) で用いられる * 主にシュミレーションだけに使われる 抽象データ型シが これとは別にある (time, event, parameterなど ) 27

29 演算子 算術演算子 : +, -, *, / シフト演算子 : <<, >> 関係演算子 : >, <, >=, <=, ==,!= 論理演算子 : &&,,! ビットワイズ演算子 : ~, &,, ^ 条件演算子 :? : 連結演算子 :{} C 言語にはないのは, 連結演算子 28

30 お絵かきスペース 29

31 C 言語との主な違い Verilog C 言語 コンパイラ指示子 `define #define 数値 16`hABCD 0xABCD 遅延 #5 なし 連結演算子 {A,B} なし 増分演算子 なし i++ 複合代入演算子 なし i+=1 ブロック構造 begin { end } 30

32 お絵かきスペース 31

33 2: ゲートレベルのモデリング 多重入力ゲート (and,nand,or,nor,xor,xnor) gate_type {instance} (Out,In1,In2,,inN) 多重出力ゲート (buf, not) gate_type {instance} (Out1,Out2, OutN, In) Ti Tri ステートゲートト (bufif0,bufif1,notif0,notif1) b fif1 if1) gate_type {instance} (Out, In, Control) 次ページに例から具体的に見ていきます 試験が終わるまでは, 覚えておいてください. 32

34 多重入力ゲート Gate_type [instance_name] (output, input1, input2, ) In1 In2 Bud[0] Bud[1] Bud[2] Sut[2] Sut[1] Sut[0] Sut[3] and A1 (Out1, In1, In2); and RBX (Sty, Rib, Bro, Qit, Fix); xor (Bar, Bud[0], Bud[1], Bud[2]), (Car, Cut[0], Cut[1]), (Sar, Sut[2], Sut[1], Sut[0], Sut[3]); A1 Out1 Bar Sar Rib Bro Qit Fix Cut[0] Cut[1] RBX Sty Car 33

35 多重出力ゲート Gate_type [instance_name] (output1, output2,,input) buf B1 (Fan[0], Fan[1], Fan[2], Fan[3], Clk); not N1 (PhA, PhB, Ready); Clk B1 Fan[0] Fan[1] Fan[2] Fan[3] Ready N1 PhA PhB 34

36 Tri ステートゲート bufif0 bufif1 notif0 notif1 Gate_type [instance_name] (output,input, control) notif1 (output,input, control); notif1 bufif1 (output,input, control); bufif1 input output input output control control control=1 の時通す notif0 (output,input, control); notif0 input output control bufif0 (output,input, control); bufif0 input output control 35

37 Tri ステートゲート : ミニクイズ 1 bufif1 (output,input, control); bufif0 (output,input, control); input 0 1 x z input 0 1 x z control 0 z z z z control x x x x 1 z z z z notif1 (output,input, control); notif0 (output,input, p, control); input input 0 1 x z 0 1 x z control 0 z z z z control x x x x 1 z z z z 36

38 例 1: マルチプレクサ (4 to 1) module MUX4x1 (Z,D0,D1,D2,D3, S0,S1); output Z; input D0,D1,D2,D3,S0,S1; wire T0,T1,T2,T3,S0n,S1n; D0 T0 and (T0,D0,S0n,S1n), S1n) (T1,D1,S0n,S1), (T2,D2,S0,S1n), (T3,D3,S0,S1); not (S0n,S0), (S1n,S1); or (Z,T0,T1,T2,T3); endmodule S0 S1 D1 D2 D3 S1n S0n T1 T2 T3 Z 37

39 お絵かきスペース 38

40 例 2: デコーダ (2 to 4) module DEC2x4(A,B,EN,Z); input A,B,EN; output [3:0] Z; wire An,Bn; not V0(An,A), A) V1(Bn,B); nand N0(Z[0],EN,An,Bn), N1(Z[1],EN,An,B), N2(Z[2],EN,A,Bn), N3(Z[3],EN,A,B); endmodule A B EN V0 An Bn V1 N0 N1 N2 N3 Z[0] Z[1] Z[2] Z[3] EN:enable 信号この値が1のときデコーダの出力が有効となる 39

41 お絵かきスペース 40

42 例 3: パリティ生成器 module Parity_9(D,Even,Odd); input [8:0] D; output Even, Odd; xor XE0(E0,D[0],D[1]), XE1(E1,D[2],D[3]), XE2(E2,D[4],D[5]), D[5]) XE3(E3,D[6],D[7]), XF0(F0,E0,E1), XF1(F1,E2,E3), XH0(H0,F0,F1), XEVEN(Odd,D[8],H0); not XODD(Even,Odd); endmodule D[0] D[1] D[2] D[3] D[4] D[5] D[6] D[7] D[8] 意味は? XE0 XE1 XE2 XE3 E0 E1 E2 E3 F0 XF0 XH0 XF1 F1 H0 XEVEN XODD Even Odd 41

43 お絵かきスペース 42

44 3: データフローモデリング Continuous assignment model ( 組み合わせ回路のモデリング ) Assign LHS(net) = RHS_expression; 右辺の変数が変化したとき評価される 左辺はnet 型でなければならない assign 文は順序に依存せず 並行実行される 重要 左辺の信号と右辺の式との永続的な関係を表す assign BusErr = Parity (One & Op); assign Z = ~(A B) & (C D) & (E F); 43

45 演算子 算術演算 :+ - * /( シミュレーションのみ ) %( シミュレーションのみ ) ビット演算 :~(NOT) &(AND) (OR) ^(EXOR) 比較演算 :==!= < <= > >= 論理演算 :!( 否定 ) &&( かつ )!!( または ) シフト :<< >> 条件演算 :? 連結演算 :{ } 試験が終わるまでは, 覚えておいてください. 44

46 お絵かきスペース 45

47 full adder module FullAdder (A,B,Ci,S,Co); input A,B,Ci; output S,Co; assign S = A^ B ^Ci Ci; assign Co = (A & Ci) (B & Ci) (A & B); endmodule A B Ci S Co 46

48 加算器 module Adder (A,B,S); input [7:0] A,B; output [7:0] S; 演算子 + を用いた記述 assign S = A + B; endmodule A B + S 但し 桁あふれは無視している (Sを9ビットにすれば桁上げを最上位ビットに出力する 次スライド参照 ) 47

49 連結演算 module Adder (A, B, S, Ci, Co); input [3:0] A,B; input Ci; output [3:0] S; output Co; assign {Co, S} = A + B + Ci ; endmodule + A B Ci Co S 48

50 多ビットの記述方法 wire[3:0] A, B; wire C; wire[11:0] D = {2'b00, A, B[1:0], 4'ha, B[2]} wire[4:0] F = {4{C}} { & A; // = 13 bits 連結は繰り返しの記述が可能 {4{C}} = {C, C, C, C} 多ビット信号のビット選択をする際は 信号名の右辺に [ ビット番号 ] ビット範囲を選択する ( 複数ビット ) をする際は 信号名の右辺に [MSB:LSB] を指定 49

51 シフト演算 module dl Shifter (din, dout, count); input [7:0] din; input [2:0] count; output [7:0] dout; assign dout = din << count ; endmodule 桁あふれは無視している count=2 のとき din dout

52 シフト演算 (2) module Shifter (din, dout, carry_in, carry_out); input [7:0] din; input carry_in ; output [7:0] dout; output carry_out; assign {carry_out, dout} = {din, carry_in} ; endmodule 連結演算を用いると 桁あふれも記述できる din carry_in carry_out dout 51

53 条件演算 マルチプレクサの記述例 assign mux = (S == 0)? A : (S == 1)? B : (S == 2)? C : (S == 3)? D : `bx; unknown A B C D if (S == 0) mux = A; else if (S == 1) mux = B; else if(s == 2) mux = C; else if (S == 3) mux = D; otherwise mux = bx; S multiplexer mux 52

54 Tri ステートゲート : ミニクイズ 2 bufif0 u1(z, A, G); と等価な記述は? 条件演算子を使えば簡単 assign Z = G?1 bz 1bz : A; // wire は tri も可 53

55 お絵かきスペース 54

56 比較器 Module dl Comparator (A,B,AgtB,AeqB,AltB); parameter BUS = 8; A B input [BUS-1:0] A,B; output AgtB, AeqB, AltB; 8 8 comparator assign AeqB = A == B; assign AgtB = A > B; assign AltB = A < B; endmodule AeqB AgtB AltB parameter 文 : 記述を読みやすくする 55

57 デコーダ (2-4) A デコーダ F A[1] A[0] F[3] F[2] F[1] F[0] module Decoder(A,F); input [1:0] A; output [3:0] F; assgin F= (A==2'b00)? 4'b0001: (A==2'b01)? 4'b0010: (A==2'b10)? 4'b0100: (A==2'b11)? 4'b1000; endmodule 56

58 マルチプレクサ (4-1) S A B C D マルチプレクサ Q A B C D S[1] S[0] Q 0 x x x x x x x 0 x x x 1 x x x x 0 x x x 1 x x x x x x x module Multiplexer (A,B,C,D,S,Q); input [3:0] [30] A,B,C,D; ABCD input[1:0] S; output [3:0] Q; assign Q= (S==2'b00)? A: (S==2'b01)? B: (S==2'b10)? C: (S==2'b11)? D; endmodule 57

59 お絵かきスペース 58

60 エンコーダ A エンコーダ F A[3] A[2] A[1] A[0] F[1] F[0] 1 x x x x x x x 0 0 module Encoder(A,F); input [3:0] A; output t [1:0] F; assign F= (A[3]==1)? 2'b11: (A[2]==1)? 2'b10: (A[1]==1)? 2'b01: 2'b00; endmodule 59

61 4: 動作のモデリング 手続き的な記述 initial : 一度だけ実行される always : 繰り返し実行される initial 文 always 文の中で条件文 繰返し文などが記述できる 動作記述の結果は register 型データに格納されタに格納され 値を保持する すべての initial 文 always 文は時刻 0 で実行される 60

62 Initial 文と Always 文 構文 initial [timing control] procedural statement always [timing control] procedural statement timing control : 実行条件を記述 reg Yurt; reg Clk; initial alwaysa Yurt = 0; #5 Clk = ~Clk; Initial 文 : 一度だけ実行 Always 文繰り返し実行 : 初期化 波形生成に 時刻 5 毎に反転する 用いられる 61

63 波形生成の例 Initial 文 parameter APPLY_DELAY = 5; reg [7:0] Port_A; initial begin Port_A = h20; #APPLY_DELAY Port_A = hf2; #APPLY_DELAY Port_A = h41; #APPLY_DELAY Port_A = h0a; end Port_A h20 hf2 h41 h0a

64 Always 文 reg[5:0]instrreg; reg[3:0] Accum; wire ExecuteCycle; begin case (InstrReg[1:0]) 2 b00 : Store (Accum,InstrReg[5:2]); 2 b01 : Load (Accum,InstrReg[5:2]); 2 b10 : Jump (InstrReg[5:2]); 2 b11 : ; endcase end timing control ExecuteCycleのイベント発生時に実行される ( 値が変化したとき ) task 呼び出し 63

65 module TestXorBehavior; reg Sa, Sb, Zeus; initial begin end Initial 文と Always 文の混合 Sa = 0; Sb = 0; #5 Sb = 1; #5 Sa = 1; #5 Sb = 0; or Sb) Zeus = Sa ^ Sb; $display("at time %t, Sa=%d, Sb=%d, Zeus=%b". $time, Sa, Sb, Zeus); endmodule 64

66 前ページのタイミングチャートを書いてください お絵かきスペース 65

67 遅延制御 タイミング制御の仕方 #delay yp procedural_ statement (delay 分だけ遅延してから手続き文を実行する ) procedural_statement (event が起こったら 手続き文を実行する ) 66

68 initial begin #3 Wave = b0111; #3 Wave = b1100; #3 Wave = b0000; end 遅延制御 parameter ON_DELAY = 3, OFF_DELAY = 5; always begin end #ON_DELAY; RefClk = 0; #OFF_DELAY; RefClk = 1; 67

69 @(posedge Clock); Curr_state = Reset); Count = Count = 0; イベント制御 Clock の立ち上がり実行 Reset の立下りで実行 time RiseEdge, OnDelay; initial ClockA); RiseEdge = ClockA); OnDelay = $time RiseEdge; end イベントの発生 (r の値の変化 ) で実行改行しないと ; は不要 現在のシミュレーション時間を返すシステムタスク 68

70 Block 文 ブロック文は 2つ以上の手続き文をまとめて 1つの文のように定義 逐次 ( 順序 )block (begin end) block 内の文は逐次実行される 並列 block ( 論理合成の対象外 ) (fork join) block 内の文は並列実行される 69

71 逐次 Block と並列 Block begin end #2 Stream = 1; #5 Stream = 0; #3 Stream = 1; #4 Stream = 0; #2 Stream = 1; #5 Stream = 0; fork join #2 Stream = 1; #7 Stream = 0; #10 Stream = 1; #14 Stream = 0; #16 Stream = 1; #21 Stream = 0; stream

72 手続き的代入文 initial 文 always 文の中で用いる 代入先は reg 型 Blocking 型代入文とNon-blocking 型代入文 重要 reg Enable, A, B; #5 Enable = ~A ^ ~B; Blocking 型 reg Enable, A, B; #5 Enable <= ~A ^ ~B; Nonー blocking 型 71

73 お絵かきスペース 72

74 Blocking 型手続き的代入文 それぞれの代入文は次の代入文の前に実行が完了する記述順により実行結果が変わる可能性があ or B or Cin) begin: CARRY_OUT reg T1,T2,T3; T2 T3 り 危険なので推奨されない場合も多い T1 = A&B; T2 = B & Cin; T3 = A & Cin; Cout = T1 T2 T3; end 73

75 Non-blocking 型手続き的代入文 それぞれの代入文は遅延に基づいて評価される (time stepの最初に右辺が評価され 最後に代入が行われる ) begin Load <= 32; RegA <= Load; RegB <= Store; end RegAに代入されるのは Loadの古い値 (32ではない) 74

76 Blocking と Non-blocking の違い Blocking initial begin Clr = #5 0; Clr = #4 1; Clr = #10 0; end Non-blocking initial begin Clr <= #5 1; Clr <= #4 0; Clr <= #10 0; end

77 同期式回路のモデルは? お絵かきスペース 76

78 Blocking initial begin a = 3; #10 a = b + 1; end initial begin b = 5; #10 b = a + 1; end Blocking 代入文の問題 Non-Blocking initial begin a <= 3; #10 a <= b + 1; end initial begin b <= 5; #10 b <= a + 1; end a と b が実行順序により値が異なる a=6, b=4 a=6, b=7 a=5, b=4 77

79 連続的代入と手続き的代入 手続き的代入 連続的代入 always 文 initial 文の中 assign 文の中 前後の文と関連して実行 他の文と並行して実行 値が変化すればいつでも実行 結果はreg 結果はnet =, <= = 重要 module Procedural; reg A,B,Z; begin Z = A; A = B; end endmodule module Continuous; wire A,B,Z; assign Z = A; assign A = B; endmodule 78

80 if 文 if (Sum < 60) begin Grade = C; if ( 条件 1) procedural_statement_1 Total_C = Total_C + 1; else if ( 条件 2) procedural_statement_2 _ end else procedural_statement_3 else if (Sum < 75) begin Grade = B; Total_B = Total_B + 1; end else begin Grade = A; Total_A = Total_A + 1; end 79

81 case 文 case (expression) case item : procedural_statement; default : procedural_statement; endcase module ALU(A,B,OpCode,Z); input [3:0] A,B; input [1:0] OpCode; output [7:0] Z; reg [7:0] Z; parameter ADD = 2 b10, SUB = 2 b11, MULT = 2 b01, DIV = 2 b00; or B or OpCode) 記載されている順番 case (Opcode) に評価され マッチ ADD : Z = A + した場合実行される B; SUB : Z = A B; MULT : Z = A * B; DIV: Z = A / B; endcase endmodule 80

82 お絵かきスペース 81

83 case ( in[3:0]) 4 b1111 : q <= 3; casez,casex 文 4 b1110 : q <= 3; casex 値 x やzを比較対象外とする 4 b1101 : q <= 3; (xやzは何にでもマッチ) 4 b1100 : q <= 3; casez 値 zのみ比較対象外とする. 4 b1011 : q <= 3; 4 b1010 : q <= 3; 4 b1001 : q <= 3; 4 b1000 : q <= 3; 4 b0111 : q <= 2; q 4 b0101 : q <= 2; 4 b0100 : q <= 2; 4 b0011 : q <= 1; 4 b0010 : q <= 1; 4 b0001 : q <= 0; endase casex ( in[3:0]) 4 b1xxx : q <= 3; 4 b0110 : q <= 2; 4 b01xx : q <= 2; 4 b001x : q <= 1; 4 b0001 : q <= 0; endase 82

84 お絵かきスペース 83

85 for 文 for (initial_assignment; condition; step_assignment) procedural _ statement integer K; for (K = 0; K < MAX_RANGE; K = K + 1) begin if (Abus[K] == 0) Abus[K] = 1; else if (Abus[K] == 1) Abus[K] = 0; else $display( Abus[K] is an x or a z ); end 84

86 D-FF D CLK D-FF Q module DFF(CLK,D,Q); input CLK, D; output Q; reg gq; CLK ) begin Q <= D; end endmodule 85

87 BCD カウンタ (10 進カウンタ ) module BCDCOUNTER(CLK,Q,DATA,LOAD); input CLK, LOAD; input [3:0] DATA; 9の次に0となる output [3:0] Q; カウンタ reg [3:0] Q; CLK) begin if (!LOAD) Q <= DATA; else begin if (Q == 4 h9) Q <= 0; else Q <= Q+1; end end endmodule d 86

88 お絵かきスペース 87

89 シフトレジスタ module SHIFT_REG(SIN,CLK,SOUT); SOUT) input SIN, CLK; output SOUT; reg [7:0] SREG; assign SOUT = SREG[7]; CLK) begin SREG <= {SREG[6:0], SIN}; end endmodule SIN SREG SOUT 88

90 メモリの記述レジスタの配列として記述する module sram(adr,data,rd,wr); input [9:0] adr; inout [7:0] data; input rd,wr; reg [7:0] mem[1023:0]; assign data = (rd)? mem[adr] : hzz; or data or wr) begin if (wr) mem[adr] <= data; end endmodule adr rd wr 左側の添え字がビット幅右側の添え字が語数 10 8 SRAM data 89

91 Reset == 1 乗算の例 INIT Reset == 0 ステートマシン ADD Count!= 16 SHIFT Count ==16 SHIFT: CLK) begin case (state) INIT: if (Reset) state <= INIT; else state <= ADD; ADD: state <= SHIFT; SHIFT: if (Count== 16) state <= INIT; else state <= ADD; endcase end 90

92 同期式回路のモデルは? お絵かきスペース 91

93 5:Function と Task ( 更に記述性を上げるために ) プログラムにおけるサブルーチン的なもの Function 同一モジュール内でのみ呼び出せる 遅延なしの実行であり ノンブロッキング代入文は使えない ( 全ての処理が遅延 0で終わる処理のかたまりなので ) 組合せ回路の記述性を上げるのに有効 Task どこからでも呼び出せる 遅延を含むことができる 動作記述の中で用いられる 92

94 Function の定義 function [range] function_id; 宣言手続き endfunction function [7:0] Reverse_bits; input [7:0] Din; integer K; begin for (K=0; K < 8; K = K+1) end endfunction Reverse_bits[7-K] = Din[K]; output 宣言はない Function 名が返り値となる 93

95 お絵かきスペース 94

96 Function の呼び出し 式の中で function を呼び出すことができる reg [7:0] New_Reg, Reg_X; CLK) begin New_Reg = Reverse_Bits(Reg_X); end 95

97 Function の記述例 A デコーダ F A[1] A[0] F[3] F[2] F[1] F[0] module Decoder(A,F); input [1:0] 0]A; output [3:0] F; function [3:0] dec; input [1:0] in; case (in) 2'b00: dec=4'b0001; 2'b01: dec=4'b0010; 2'b10: dec=4'b0100; 2'b11: dec=4'b1000; endcase endfunction assign F = dec(a); endmodule d function の定義 function の呼び出し 96

98 task task_id; 宣言手続き endtask task Reverse_bits; input [7:0] Din; output [7:0] Dout; integer K; Task の定義 begin for (K=0; K < 8; K = K+1) Dout[7-K] = Din[K]; end endtask 97

99 お絵かきスペース 98

100 Task の呼び出し Always Initial 文中で使用する reg [7:0] New_Reg, Reg_X; CLK) begin Reverse_Bits(Reg_X, New_Reg); end 99

101 6: 構造のモデリング Gate instantiation UDP instantiation (User Defined Primitive) Module instantiation 定義されている (or 自分で定義した ) もののインスタンスを作って利用 : 部品としてモジュールを利用すること 100

102 module HA (A,B,S,C); input A,B; output t S,C; SC assign S = A ^ B; assign C = A & B; endmodule Module Instantiation 位置による接続 Moduleの宣言順序の順 module FA(P,Q,Ci,Sum, FA(PQ CiS Co); 名前による接続 input P,Q,Ci; output Sum, Co; wire S1, C1, C2; HA h1 (P,Q,S1,C1); HA h2 (.A(Ci),.S(Sum),.B(S1),.C(C2)); or O1 (Co, C1, C2); endmodule ポート名 (A,B,S,C) と式とを対応づける.port_name (port 式 ) 101

103 お絵かきスペース P Q C1 A C Ci B h1 S S1 A C h2 C2 B S Sum Co 102

104 例 (10 進カウンタ ) Clk S1 A1 JK1 JK2 JK3 JK4 J Q J Q J Q J Q S2 CK CK CK CK K NQ K NQ K NQ K NQ 1 Z[0] Z[1] Z[2] Z[3] 103

105 例 (10 進カウンタ ) module Decade_Ctr(Clk, Z); input Clk; output [3:0] Z; wire S1, S2; and A1(S1, Z[2], Z[1]); JK_FF JK1(.J(1 b1) b1),.k(1 b1) b1),.ck(clk),.q(z[0]),.nq()), JK2(.J(S2),.K(1 b1),.ck(z[0]),.q(z[1]),.nq()), JK3(.J(1 b1),.k(1 b1),.ck(z[1]),.q(z[2]),.nq()), JK4(.J(S1),.K(1 b1),.ck(z[0]),.q(z[3]),.nq(s2)); endmodule d 104

106 7: 検証 設計した回路が期待通りのものであるかどうかを検証するため テストパターンを与えたときの動作を確認する 被検証回路 テストパターン 信号の確認手段 被検証テストパターン回路の観測された信号記述 105

107 test bench の役割 Test Bench シミュレーションの入力を生成する テスト対象のmoduleに入力を与え 出力を収集する シミュレーションの出力と期待値を比較する テストベンチ 変数 reg テスト回路 変数 wire 106

108 Test Bench の構造 module Test_Bench 名 ; ローカル変数の宣言シミュレーションの入力波形の生成ションの入力波形の生成テスト対象のmoduleのinstantiation シミュレーション出力の観測と期待値との比較ション出力の観測と期待値との比較 endmodule Top モジュールとなるので, 入出力はない. 107

109 module Adder_test; reg [3:0] a, b; wire [3:0] c; Adder のテストベンチ テスト対象 moduleの instantiation Adder A1 (a, b, c); initial begin a = 4 h0; b = 4 h0; #10 a = 4 h5; b = 4 ha; #10 a = 4 h7; b = 4 ha; #10 a = 4 h1; b = 4 hf; #10 $finish; end or b or c) $display("time %t, a=%h, b=%h, c=%h", $time, a, b, c); endmodule シミュレーションの入力波形の生成 シミュレーションシ出力の観測 108

110 お絵かきスペース 109

111 波形の生成 シミュレーションに必要な信号の種類 繰り返しパターン ( クロック信号 ) モジュールの状態に応じた値の系列 110

112 値の系列の生成 initial begin Reset = 0; #100 Reset = 1; #80 Reset = 0; #30 Reset = 1; end initial begin Reset = 0; Reset = #100 1; Reset = #80 0; Reset = #30 1; end initial begin Reset <= 0; Reset <= #100 1; Reset <= #180 0; Reset <= #210 1; end Reset

113 繰り返しパターンの生成 module Gen_Clk_A(Clk_A); output Clk_ A; reg Clk_A; parameter tperiod = 10; initial Clk_A = 0; 周期の半分になることに注意 always #(tperiod / 2) Clk_A = ~Clk_A; endmodule Clk_A

114 繰り返しパターンの生成 (2) module Gen_Clk_D(Clk_D); D); output Clk_D; reg Clk_D; parameter START=5, LOW=2, HIGH=3; initial begin Clk_ D = 0; #START; forever begin #LOW Clk_D = 1; #HIGH Clk_ D = 0; end end endmodule d

115 お絵かきスペース 114

116 システムタスク シミュレーション用に用意された機能ション用に用意された機能 $ で始まる initial,alwaysブロックの中に書かねばならない ファイルアクセス 画面表示 シミュレーションの実行制御など 115

117 画面表示システムタスク (1) $display 呼び出されたときにそのときの値を表示する ノンブロッキング代入文はまだ代入されていない $strobe ノンブロッキング代入文の代入が完了してから表示する ( その時刻でのイベントが全て終わってから表示てから表示 ) $monitor 信号を常に監視し 値が変化したときに表示する initial 文で一回かけば OK 116

118 画面表示システムタスク (2) $display( Simulation l i time is %t,$time); $strobe( The flop-flop value is %b at time %t, Q, $time); $monitor( At %t: D=%d, Clk=%d, $time, D, Clk); format 指定 %h hexadecimal %d decimal %o octal %b binary %c ASCII character %s string %t time format 117

119 メモリ読み書きシステムタスク $readmemh( filename, memname, begin_addr, end_addr); //16 進数 $readmemb( filename, memname, begin _ addr, end_ addr); //2 進数 $writememh( filename, memname, begin_addr, end_addr); //16 進数 $writememb( filename, memname, begin_addr, end_addr); //2 進数 file reg [15:0] mem[0:255]; 5C00 01FF 2034 A54B C00 01FF 2034 A54B 118

120 ファイル出力のシステムタスク integer fd; wire [3:0] A; initial begin end fd = $fopen( data.hex ); for (i=0; i < 256; i = i+1) #STEP $fdisplay (fd, A=%b, A); $fclose(fd); fdisplay, fmonitor, fstrobe の 3 種類は display,monitor,strobe と同様 119

121 お絵かきスペース 120

122 その他のシステムタスク $time $stop $finish シミュレーション時刻を返すシミュレーションを中断するシミュレーションを終了する 121

123 Testbench の記述例 (decoder:1) A module Decoder2x4 (A,B,EN,Z); Z[0] input A,B,EN; An output [3:0] Z; wire AN, BN; Z[1] B EN Bn Z[2] Z[3] assign AN = ~A; assign BN = ~B; assign Z[0] = ~(AN & BN & EN); assign Z[1] = ~(AN & B & EN); assign Z[2] = ~(A (A&BN &EN) EN); assign Z[3] = ~(A & B & EN); endmodule 122

124 module Decoder_test; reg DA,DB,DE; DB DE; wire [3:0] DZ; Decorder2x4 4D1 (DA,DB,DE,DZ); DB DE DZ) Testbenchの記述例 (decoder:2) DA initial begin DE = 0; DA = 0; DB = 0; #10 DE = 1; #10 DA = 1; #10 DB = 1; #10 DA = 0; #10 DB = 0; end or DA or DB or DZ) $display("time %t, input is %b%b%b, output is %b", $time,da,db,de,dz; endmodule DB DE DZ[0] DZ[1] DZ[2] DZ[3]

125 お絵かきスペース 124

126 8: 論理合成 論理合成とは HDLで記述されたモデルからゲートレベルのネットリストを構成すること 論理合成システムは指定された面積制約 タイミング制約にしたがって回路を最適化する Verilog HDL のすべてが合成可能な構文ではない 125

127 論理合成の利点 真理値表 論理式 簡単化 回路図 HDL 記述 論理合成 ライブラリ 1 回路 1 ( ゲートアレイ ) ライブラリ 2 回路 2 ( スタンダードセル ) 126

128 論理合成可能な記述法 論理合成ツールを用いる LSI 設計法が主流 高位レベル記述でゲートレベルを自動生成するアプローチがもっとも生産性が高い 記述のしかたによりどんな回路が合成されるかを知っておく必要がある 127

129 組み合わせ回路の合成 データフロー記述 (assign 文 ) 動作記述 (always ブロック ) ファンクションを用いた記述 alwaysブロックでは 注意しないとラッチを生成する可能性がある 128

130 データフロー記述による組合せ回路 必ず組合せ回路が生成される 右辺の式により 高位の表現が可能 if 文 case 文などが使えない 条件演算子の利用 assign y = (s)? a : b; assign y = (s == 2 b00)? a : (s == 2 b01)? b : (s == 2 b10)? c : (s == 2 b11)? d ; 129

131 動作記述による組合せ回路 always ブロックによる記述 reg y; or b or c or s) begin case (s) 2 b00: y <= a; 2 b01: y <= b; 2 b10: y <= c; default: y <= x; endcase end 代入される変数は reg 型 ブロック内で参照されるすべての信号を列挙する 場合分けにもれがないようにする default には できるだけ x を記入 130

132 動作記述による組合せ回路 (2) always ブロックによる記述 reg y; or b or c or s) begin case (s) 2 b00: y <= a; 2 b01: y <= b; 2 b10: y <= c; endcase end S=2 b11のとき yは前の値を保持しなければならない y にラッチが生成され 組合せ回路でなくなる 131

133 module shifter(q,a,dir); 組合せ回路 output t [7:0] q; input [7:0] a; input dir; assign q = (dir)? lshift(a) : rshift(a); Functionを用いた組合路 function [7:0] lshift; input [7:0] data; lshift = data << 1; endfunction function [7:0] rshift; input [7:0] data; rshift = data >> 1; endfunction endmodule 132

134 お絵かきスペース 133

135 同期式順序回路 クロックの立上り ( 立下り ) で入力値を取り込むエッジトリガ D-FF が基本 reg q; ck ) begin q <= d; end d ck q d ck q 134

136 非同期 Reset の追加 reg q; ck or negedge g reset) begin if (!reset) begin q <= 0; end else begin q <= d; end end reset d ck q d ck reset q 135

137 同期 Load の追加 module counter(out,d,ld,ck,res); ck res); output [3:0] out; input [3:0] d; input ld, ck, res; reg [3:0] q; ck or negedge res) begin if (!res) )q <= 0; else begin if (!ld) q <= d; else q <= q + 1; end end assign out = q; endmodule d リセット ロード カウント 136

138 お絵かきスペース ld reset d ck out 137

139 レジスタ代入の記述 正しい記述 CLR or posedge RES) begin if (RES==1 b1) Q <= 1 b0; else Q <= P; end 不完全な記述 begin if (RES==1 b1) Q <= 1 b0; end CLK) begin Q <= P; end 同一レジスタに対する代入は単一の always 文の中で行わないとエラー 138

140 最適化 論理合成における最適化 面積 遅延 ハードウェアの記述量と合成される回路のゲート数は関係しない 139

141 if (ShReg) out = A+B; else if (ReadWrite) out = C + D; else out = E + F; Adder を 3 個生成する 資源割り付け ( 共有化 ) if (ShReg) begin temp1 = A; temp2 = B; end else if (ReadWrite) begin temp1 = C; temp2 = D; end else begin temp1 = E; temp2 = F; end out = temp1 + temp2; Adder を 1 個生成する 140

142 ミニクイズ : 前のページの記述に相当する回路をお絵かきしましょう 141

143 共通部分式の利用 X = A & (B ^ C); Y = (B ^ C) D; Temp = (B ^ C); X = A & Temp; Y = Temp p D; B C A B C A D D 142

144 お絵かきスペース 143

145 ラッチの回避 always 文の中の分岐において 変数への代入が行われないの代入が行われないパスが存在するとき ラッチが生成される reg Luck; (Probe or Count) if (Probe) Luck = Count; reg Luck; (Probe or Count) if (Probe) Luck = Count; else Luck = 0; 144

146 お絵かきスペース 145

Microsoft PowerPoint - Chap3

Microsoft PowerPoint - Chap3 ディジタル設計 (A1) (Chap. 3) @C105 http://www.ngc.is.ritsumei.ac.jp/~ger/lectures/digital2011/index.html 情報システム学科次世代コンピューティング研究室山下茂 ger@cs.ritsumei.ac.jp 0 目次 1. Verilog HDLの概要 2. ゲートレベルのモデリング 3. データフローモデリング

More information

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

VelilogHDL 回路を「言語」で記述する 2. ソースを書く 数値表現 数値表現形式 : ss'fnn...n ss は, 定数のビット幅を 10 進数で表します f は, 基数を表します b が 2 進,o が 8 進,d が 10 進,h が 16 進 nn...n は, 定数値を表します 各基数で許される値を書くこ Verilog ビット幅 基数 2 進表現 1'b0 1 2 進 0 4'b0100 4 2 進 0100 4'd4 4

More information

Verilog HDL による回路設計記述

Verilog HDL による回路設計記述 Verilog HDL 3 2019 4 1 / 24 ( ) (RTL) (HDL) RTL HDL アルゴリズム 動作合成 論理合成 論理回路 配置 配線 ハードウェア記述言語 シミュレーション レイアウト 2 / 24 HDL VHDL: IEEE Std 1076-1987 Ada IEEE Std 1164-1991 Verilog HDL: 1984 IEEE Std 1364-1995

More information

untitled

untitled Verilog HDL Verilog HDL VerilogHDL veriloghdl / CPLD , 1bit 2 MUX 5 D,E) always) module MUX(out, a, b, sel); output out; input a, b, sel; A) IF module MUX(out, a, b, sel); output out; input a, b, sel;

More information

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

Microsoft PowerPoint - 集積回路工学_ ppt[読み取り専用] 2007.11.12 集積回路工学 Matsuzawa Lab 1 集積回路工学 東京工業大学 大学院理工学研究科 電子物理工学専攻 2007.11.12 集積回路工学 Matsuzawa Lab 2 1. 1. ハードウェア記述言語 (VHDL で回路を設計 ) HDL 設計の手順や基本用語を学ぶ RTL とは? Register Transfer Level レジスタ間の転送関係を表現したレベル慣例的に以下のことを行う

More information

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

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな 第 回 VHDL 演習組み合せ論理回路 VHDL に関する演習を行う 今回は, 組み合せ論理回路の記述について学ぶ - 論理回路の VHDL 記述の基本 同時処理文を並べることで記述できる 部品の接続関係を記述 順番は関係ない process 文の内部では, 順次処理文を使う process 文 つで, つの同時処理文になる順次処理文は, 回路の動作を 逐次処理的 に ( 手続き処理型プログラム言語のように

More information

2.5. Verilog 19 Z= X + Y - Z A+B LD ADD SUB ST (X<<1)+(Y<<1) X 1 2 LD SL ST 2 10

2.5. Verilog 19 Z= X + Y - Z A+B LD ADD SUB ST (X<<1)+(Y<<1) X 1 2 LD SL ST 2 10 2.5. Verilog 19 Z= X + Y - Z A+B LD 0 0001 0000 ADD 1 0110 0001 SUB 2 0111 0010 ST 2 1000 0010 (X

More information

Microsoft PowerPoint - 01-VerilogSetup-2018.pptx

Microsoft PowerPoint - 01-VerilogSetup-2018.pptx 2018 年 4 月 13 日ハードウエア設計論 :2 ハードウエアにおける設計表現 ハードウエア設計記述言語 VerilogHDL ~ 状態遷移と順序機械 ~ TA2 名 : 古賀 杉山が担当します Ubuntu を起動し verilog が実行できる状態にしておいてください http://www.mos.t.u-tokyo.ac.jp/~ikeda/hwdesign/ 38 VerilogHDL

More information

電卓の設計 1

電卓の設計 1 電卓の設計 1 FPGA Express と MAXPLUS2 に よる FPGA 設計 FPGA EXPRESS RTL circuit.edf circuit.acf RTL MAXPLUS2 FPGA circuit.acf circuit.sof, ttf, pof SRAM 2 どうして電卓なの? その場で 10 キーを使って動かせる プロセッサだと プログラムを考えたり メモリとのインタフェースが必要

More information

スライド 1

スライド 1 東北大学工学部機械知能 航空工学科 2016 年度 5 セメスター クラス C3 D1 D2 D3 計算機工学 10. 組合せ回路 ( 教科書 3.4~3.5 節 ) 大学院情報科学研究科 鏡慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ 組合せ論理回路 x1 x2 xn 組合せ論理回路 y1 y2 ym y i = f i (x 1, x 2,, x

More information

スライド 1

スライド 1 東北大学工学部機械知能 航空工学科 2018 年度クラス C3 D1 D2 D3 情報科学基礎 I 10. 組合せ回路 ( 教科書 3.4~3.5 節 ) 大学院情報科学研究科 鏡慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ 組合せ論理回路 x1 x2 xn 組合せ論理回路 y1 y2 ym y i = f i (x 1, x 2,, x n ), i

More information

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

ソフトウェア基礎技術研修 算術論理演算ユニットの設計 ( 教科書 4.5 節 ) yi = fi (x, x2, x3,..., xm) (for i n) 基本的な組合せ論理回路 : インバータ,AND ゲート,OR ゲート, y n 組合せ論理回路 ( 復習 ) 組合せ論理回路 : 出力値が入力値のみの関数となっている論理回路. 論理関数 f: {, } m {, } n を実現.( フィードバック ループや記憶回路を含まない

More information

untitled

untitled 13 Verilog HDL 16 CPU CPU IP 16 1023 2 reg[ msb: lsb] [ ]; reg [15:0] MEM [0:1023]; //16 1024 16 1 16 2 FF 1 address 8 64 `resetall `timescale 1ns/10ps module mem8(address, readdata,writedata, write, read);

More information

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

エンティティ : インタフェースを定義 entity HLFDD is port (, : in std_logic ;, : out std_logic ) ; end HLFDD ; アーキテクチャ : エンティティの実現 architecture RH1 of HLFDD is <= xor VHDL を使った PLD 設計のすすめ PLD 利用のメリット 小型化 高集積化 回路の修正が容易 VHDL 設計のメリット 汎用の設計になる ( どこのデバイスにも搭載可能 ) 1/16 2001/7/13 大久保弘崇 http://www.aichi-pu.ac.jp/ist/~ohkubo/ 2/16 設計の再利用が促進 MIL 記号の D での設計との比較 Verilog-HDL などでも別に同じ

More information

Microsoft Word - 実験4_FPGA実験2_2015

Microsoft Word - 実験4_FPGA実験2_2015 FPGA の実験 Ⅱ 1. 目的 (1)FPGA を用いて組合せ回路や順序回路を設計する方法を理解する (2) スイッチや表示器の動作を理解し 入出力信号を正しく扱う 2. スケジュール項目 FPGAの実験 Ⅱ( その1) FPGAの実験 Ⅱ( その2) FPGAの実験 Ⅱ( その3) FPGAの実験 Ⅱ( その4) FPGAの実験 Ⅱ( その5) FPGAの実験 Ⅱ( その6) FPGAの実験 Ⅱ(

More information

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

Microsoft PowerPoint - 3.3タイミング制御.pptx 3.3 タイミング制御 ハザードの回避 同期式回路と非同期式回路 1. 同期式回路 : 回路全体で共通なクロックに合わせてデータの受け渡しをする 通信における例 :I 2 C(1 対 N 通信 ) 2. 非同期式回路 : 同一のクロックを使用せず データを受け渡す回路間の制御信号を用いてデータの受け渡しをす 通信における例 :UART(1 対 1 通信 ) 2 3.3.1 ハザード 3 1 出力回路のハザード

More information

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx 2019 年 4 月 26 日ハードウエア設計論 :3 ハードウエアにおける設計表現 ハードウエア設計記述言語 VerilogHDL ~ 種々の記述 ~ ALU の実装とタイミングに関して always @(A or B or C) Ubuntu を起動し verilog が実行できる状態にしておいてください 79 演習 4: 簡単な演算器 1 入力 A:8 ビット 入力 B:8 ビット 出力 O:8

More information

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

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE 差し替え版 第 7 回マイクロプロセッサの VHDL 記述 マイクロプロセッサ全体および主要な内部ユニットの,VHDL 記述の例を示す. 1)MPU(Micro Processor Uit) Module 1MPU のエンティティ記述とコントローラの例以下は, 簡単な MPU の VHDL 記述の例である ただし, アーキテクチャ部分は, 命令読み込みと実行の状態遷移のみを実現したステートマシンである

More information

計数工学実験/システム情報工学実験第一 「ディジタル回路の基礎」

計数工学実験/システム情報工学実験第一 「ディジタル回路の基礎」 計数工学実験 / システム情報工学実験第一 ディジタル回路の基礎 ( 全 3 回 ) システム 8 研 三輪忍 参考資料 五島正裕 : ディジタル回路 ( 科目コード 400060) 講義資料 ( ググれば出てくる ) 高木直史 : 論理回路, 昭晃堂 Altera: Cyclone II FPGA スターター開発ボードリファレンス マニュアル Altera: Introduction to Quartus

More information

ディジタル電子回路 設計演習課題

ディジタル電子回路 設計演習課題 Arch 研究室スキルアップ講座 NEXYS4 による 24 時間時計 仕様書および設計例 1 実験ボード (NEXYS4) 外観 ダウンロード (USB) ケーブル接続端子 FPGA:Xilinx 社製 Artix7 XC7A100T-CSG324 7 セグメント LED8 個 LED16 個 リセット SW スライドスイッチ (16 個 ) 押しボタンスイッチ (5 個 ) 2 実験ボードブロック図

More information

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

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ 第 4 回 VHDL 演習 2 プロセス文とステートマシン プロセス文を用いるステートマシンの記述について学ぶ 回路 6 バイナリカウンタ (Fig.4-1) バイナリカウンタを設計し, クロック信号に同期して動作する同期式回路の動作を学ぶ ⅰ) リスト 4-1 のコードを理解してから, コンパイル, ダウンロードする ⅱ) 実験基板上のディップスイッチを用いて, 発生するクロック周波数を 1Hz

More information

Microsoft PowerPoint LC_15.ppt

Microsoft PowerPoint LC_15.ppt ( 第 15 回 ) 鹿間信介摂南大学理工学部電気電子工学科 特別講義 : 言語を使った設計 (2) 2.1 HDL 設計入門 2.2 FPGA ボードの設計デモ配布資料 VHDL の言語構造と基本文法 2.1 HDL 設計入門 EDAツール : メンター社製品が有名 FPGAベンダーのSW 1 1 仕様設計 にも簡易機能あり 2 3 2 HDLコード記述 3 論理シミュレーション 4 4 論理合成

More information

フリップフロップ

フリップフロップ 第 3 章フリップ フロップ 大阪大学大学院情報科学研究科 今井正治 imai@ist.osaka-u.ac.jp http://www-ise1.ist.osaka-u.ac.jp/~imai/ 2005/10/17 2006, Masaharu Imai 1 講義内容 フリップ フロップの基本原理 RS フリップ フロップ D ラッチ D フリップ フロップ JK フリップ フロップ T フリップ

More information

<91E63589F161>

<91E63589F161> ハードウェア実験 組み込みシステム入門第 5 回 2010 年 10 月 21 日 順序論理回路の実験 前回予告した今回の内容 次回も IC トレーナを使って 順序論理回路についての実験を行います 内部に 状態 を持つ場合の動作記述について 理解します 個々の IC を接続し SW 入力と LED の点灯表示とで論理回路としての動作を検証します それぞれの IC( 回路素子 ) ごとに真理値表を作成します

More information

Microsoft Word - HW06K doc

Microsoft Word - HW06K doc 完了した CP:1~19( 合計 19 個 ) 未達成の CP:20 [ 要旨 目的 ] CPU の製作を行う CPU の製作を通じて ハードウェア設計の流れを理解する CPU の構造について 理解を深める CPU 製作第 3 回の実験では 最終的なCPUの完成を目指す [ 原理 理論 ] まずは CPU の構造設計から行う 全体の構成は次のようになる 下の図では モニター回路は含まれない chattering

More information

? FPGA FPGA FPGA : : : ? ( ) (FFT) ( ) (Localization) ? : 0. 1 2 3 0. 4 5 6 7 3 8 6 1 5 4 9 2 0. 0 5 6 0 8 8 ( ) ? : LU Ax = b LU : Ax = 211 410 221 x 1 x 2 x 3 = 1 0 0 21 1 2 1 0 0 1 2 x = LUx = b 1 31

More information

デジタル回路入門

デジタル回路入門 Open-It FPGA トレーニングコース ( 初級編 ) 第 9 版 2. 組み合わせ回路入門 2.2. 実習 Verilog-HDL 記述 2013 年 5 月 10 日修正 デジタル回路の構成要素 O=A&B; O=~I; INV O=A B; 全てのデジタル回路はこの 4 つの要素 ( 回路 ) のみで構成されている 4 要素の HDL 記述を知っていれば最低限の知識としては十分 2 HDL:

More information

HW-Slides-05.ppt

HW-Slides-05.ppt ハードウェア実験 組み込みシステム入門第 5 回 2012 年 10 月 18 日 順序論理回路の実験 このスライドの ゲートの動作記述の部分は 藤井先生のスライドから多くをいただいています 藤井先生に慎んでお礼申し上げます 2 今日の内容! 以下の論理回路を動作させる 1. D フリップフロップ回路 2. 4 進カウンタ回路 ( 同期式 ) 3. 10 進カウンタ回路! シフトレジスタを作成して

More information

スライド 1

スライド 1 東北大学工学部機械知能 航空工学科 2018 年度クラス C3 1 2 3 情報科学基礎 I 11. 順序回路の基礎 ( 教科書 4 章 ) 大学院情報科学研究科 鏡慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ 組合せ回路と順序回路 x1 x2 xn 組合せ回路 y1 y2 ym 組合せ回路 : 出力は, その時点の入力の組合せのみで決まる x1 x2

More information

Microsoft PowerPoint - 7.Arithmetic.ppt

Microsoft PowerPoint - 7.Arithmetic.ppt 第 7 章デジタル演算回路 1 デジタル信号処理音声, 音楽, 通信信号 信号 = 符号付き 2 進データ 負の数値の表現方法 2 2 進数 n ビット n-1 =Σb i 2 i 0 2 の補数 +=2 n n-1 n-1 2 n =1+Σb i 2 i +Σb i 2 i 0 0 n-1 =2 n ー =1+Σb i 2 i 0 3 2 進数の補数 2 の補数 各桁のビットを反転した後で最下位に

More information

0630-j.ppt

0630-j.ppt 5 part II 2008630 6/30/2008 1 SR (latch) 1(2 22, ( SR S SR 1 SR SR,0, 6/30/2008 2 1 T 6/30/2008 3 (a)(x,y) (1,1) (0,0) X Y XOR S (S,R)(0,1) (0,0) (0,1) (b) AND (a) R YX XOR AND (S,R)(1,1) (c) (b) (c) 6/30/2008

More information

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

Microsoft PowerPoint - vlsi4.ppt [互換モード] (4) 工学部講義 坂井 修一 東京大学大学院情報理工学系研究科電子情報学専攻 東京大学工学部電子情報工学科 / 電気工学科 はじめに CPU の設計 (3) はじめに 本講義の目的 の基本を学ぶ : 機能 VLSI 対象者 : 工学部 4 年生以上 担当者 坂井修一 プロセッサ VLSI 池田誠 アルゴリズム VLSI 時間 場所 水曜日 8:30-10:15 工学部 2 号館 243 前提となる知識

More information

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

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

More information

VLSI工学

VLSI工学 25/1/18 計算機論理設計 A.Matsuzawa 1 計算機論理設計 (A) (Computer Logic Design (A)) 東京工業大学大学院理工学研究科電子物理工学専攻 松澤昭 3. フリップフロップ回路とその応用 25/1/18 計算機論理設計 A.Matsuzawa 2 25/1/18 計算機論理設計 A.Matsuzawa 3 注意 この教科書では記憶回路を全てフリップフロップと説明している

More information

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

ディジタル回路 第1回 ガイダンス、CMOSの基本回路 POCO の 1 サイクルマイクロアーキテクチャ POCO は 作りながら学ぶコンピュータアーキテクチャ ( 倍風館 ) で使っている教育用の 16 ビット RISC である www.am.ics.keio.ac.jp/parthenon/pocobook/ も参照のこと POCO の構成 1 + + ext func[2:0] 2:0 THB ADD 00 01 10 comsel com S A

More information

LSI LSI

LSI LSI EDA EDA Electric Design Automation LSI LSI FPGA Field Programmable Gate Array 2 1 1 2 3 4 Verilog HDL FPGA 1 2 2 2 5 Verilog HDL EDA 2 10 BCD: Binary Coded Decimal 3 1 BCD 2 2 1 1 LSI 2 Verilog HDL 3 EDA

More information

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤 情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤 2017.12.7 前回の演習問題の解答例 1. 四則演算のできる計算機のプログラム ( 括弧も使える ) 2. 実数の扱える四則演算の計算機のプログラム ( 実数 も というより実数 が が正しかったです ) 3. 変数も扱える四則演算の計算機のプログラム ( 変数と実数が扱える ) 演習問題 1 で行うべきこと

More information

-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

-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 第 回マイクロプロセッサのしくみ マイクロプロセッサの基本的なしくみについて解説する. -1 マイクロプロセッサと周辺回路の接続 制御バス プロセッサ データ バス アドレス バス メモリ 周辺インタフェース バスの基本構成 Fig.-1 バスによる相互接続は, 現在のコンピュータシステムのハードウェアを特徴づけている. バス (Bus): 複数のユニットで共有される信号線システム内の データの通り道

More information

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

Microsoft PowerPoint - LogicCircuits09note.ppt [互換モード] 組み合わせ回路と順序回路 論理回路 第 9 回フリップフロップ http://www.info.kindai.ac.jp/lc 38 号館 4 階 N-4 内線 5459 takasi-i@info.kindai.ac.jp 組み合わせ回路 ある時刻の信号が 現在の信号だけで決まる回路 順序回路 ある時刻の信号が 現在の信号だけでなく 過去の信号の影響も受ける回路 ( 回路内にバッファ メモリがある

More information

. ディジタル回路設計を始める前に 2

. ディジタル回路設計を始める前に 2 論理回路設計の基礎と演習 (PowerMedusa MU2-EC6S を使った教材 ) . ディジタル回路設計を始める前に 2 . ディジタルとは ひとことで言うなら アナログー連続的な動き ディジタルー断続的な動き 再現が難しい 再現しやすい 例.) アナログー坂道ディジタルー階段最初に居た位置に正確に戻るには階段のほうが再現しやすい! 3 .2 ディジタルにするメリット 再現性が高い ノイズに強い

More information

TULを用いたVisual ScalerとTDCの開発

TULを用いたVisual ScalerとTDCの開発 TUL を用いた Visual Scaler と TDC の開発 2009/3/23 原子核物理 4 年 永尾翔 目次 目的と内容 開発環境 J-Lab におけるハイパー核分光 Visual Scaler TDC まとめ & 今後 目的と内容 目的 TUL, QuartusⅡ を用いて実験におけるトリガーを組めるようになる Digital Logic を組んでみる 内容 特徴 TUL,QuartusⅡ

More information

スライド 1

スライド 1 FPGA/HDLを活用したソフトウェア並列処理の構築 goyoki @ 並列プログラミングカンファレンス 自己紹介 goyoki(hatena/twitter) 千里霧中 http://d.hatena.ne.jp/goyoki/ 組込みエンジニア Doxygen 日本語メンテナ 主にテスト関連コミュニティで情報発信 yomite.swtest xunit Test Patterns 読書会等 概要

More information

シフトレジスタ ステートマシン 4. シミュレーション記述 シミュレーションに必要な物 テストベンチ シミュレーション特有の記述 4.1 カウンターのシミュレーション テストする回路 テストベンチ シミュレーション結果 参考文献 以下の文献を参考にさせていただきました 小林優 入門 Verilog-

シフトレジスタ ステートマシン 4. シミュレーション記述 シミュレーションに必要な物 テストベンチ シミュレーション特有の記述 4.1 カウンターのシミュレーション テストする回路 テストベンチ シミュレーション結果 参考文献 以下の文献を参考にさせていただきました 小林優 入門 Verilog- Verilog-HDL 入門 2014 年 12 月 1 日修正 : 2010 年 8 月 3 日公開 内田智久 E-sys, IPNS, KEK はじめに 回路設計未経験者向けに必要最低限の Verilog-HDL 文法を解説した入門書です 専門家向けに書かれた市販書籍は情報が多すぎるため 回路設計初心者からみると最低限何をどのように使えば良いのか分かりません これは 対象読者が論理 回路設計経験

More information

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

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ arduino プログラミング課題集 ( Ver.5.0 2017/06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイコンから伝える 外部装置の状態をマイコンで確認する 信号の授受は 入出力ポート 経由で行う (2) 入出力ポートとは?

More information

PowerPoint Presentation

PowerPoint Presentation プログラミング基礎 第 2 週 (4,5,6 回 ) 2011-10-07 出村公成 この資料の再配布を禁止します 予定 プログラミング入門 (45 分 ) 変数 入出力 分岐 演習 (90 分 ) タッチタイプ練習 統合開発環境 Codeblocksの使い方 教科書例題の打ち込みと実行 プログラミング入門 C 言語の簡単な例を体験 変数 入出力 分岐 プログラムの例リスト 2.1 改 #include

More information

Microsoft PowerPoint - 01_Vengineer.ppt

Microsoft PowerPoint - 01_Vengineer.ppt Software Driven Verification テストプログラムは C 言語で! SystemVerilog DPI-C を使えば こんなに便利に! 2011 年 9 月 30 日 コントローラ開発本部コントローラプラットフォーム第五開発部 宮下晴信 この資料で使用するシステム名 製品名等は一般にメーカーや 団体の登録商標などになっているものもあります なお この資料の中では トレードマーク

More information

スライド 1

スライド 1 順序回路 (2) 1 順序回路の設計 組合せ論理回路の設計法 構造や規則性に着目した手設計 ( 先人の知恵を使う ) 入力 出力の関係に基づく自動合成 ( カルノー図など ) 順序回路の設計法 構造や規則性に着目した手設計 ( 前回の各例 ) 入力 出力 状態の関係に基づく自動合成 2 同期式順序回路の入力 出力 状態の関係 x 1 x 2 組合せ回路 y 1 y 2 x n q 2 q p q 1

More information

スライド 1

スライド 1 東北大学工学部機械知能 航空工学科 2015 年度 5 セメスター クラス D 計算機工学 6. MIPS の命令と動作 演算 ロード ストア ( 教科書 6.3 節,6.4 節 ) 大学院情報科学研究科鏡慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ レジスタ間の演算命令 (C 言語 ) c = a + b; ( 疑似的な MIPS アセンブリ言語 )

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 仮想マシン (2), コード生成 http://cis.k.hosei.ac.jp/~asasaki /lect/compiler/2007-1204.pdf ( 訂正版 ) 1 概要 仮想マシン 概要 ( 復習 ) 制御命令 出力命令 コード生成 式のコード生成 文 文の列のコード生成 記号表 2 演習で作るコンパイラの例 test.hcc Int main() { int i j; i = 3;

More information

VLD Kazutoshi Kobayashi

VLD Kazutoshi Kobayashi VLD Kazutoshi Kobayashi (kobayasi@kuee.kyoto-u.ac.jp) 2005 8 26-29 1, Verilog-HDL, Verilog-HDL. Verilog-HDL,, FPGA,, HDL,. 1.1, 1. (a) (b) (c) FPGA (d). 2. 10,, Verilog-HDL, FPGA,. 1.2,,,, html. % netscape

More information

Design at a higher level

Design at a higher level Meropa FAST 97 98 10 HLS, Mapping, Timing, HDL, GUI, Chip design Cadence, Synopsys, Sente, Triquest Ericsson, LSI Logic 1980 RTL RTL gates Applicability of design methodologies given constant size of

More information

PLDとFPGA

PLDとFPGA PLDFPGA 2002/12 PLDFPGA PLD:Programmable Logic Device FPGA:Field Programmable Gate Array Field: Gate Array: LSI MPGA:Mask Programmable Gate Array» FPGA:»» 2 FPGA FPGALSI FPGA FPGA Altera, Xilinx FPGA DVD

More information

Microsoft PowerPoint - presen3x4an.pptx

Microsoft PowerPoint - presen3x4an.pptx パイプライン処理のための 演算仕様記述言語 mhdl と その処理系 シグナル プロセス ロジック株式会社瀬尾雄三 mhdl 開発の背景 CodeSqueezer ボタンを押すだけで数値演算論理を形成 x a b c パイプライン処理演算論理 (black box) y=a*x^2+b*x+c x+c 演算仕様を言語 mhdl で記述 reg ツールの想定用途と要求 FPGA を用いた小ロット製品の設計

More information

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 =

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 = VHDL 2 1 VHDL 1 VHDL FPGA VHDL 2 HDL VHDL 2.1 D 1 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; regs.vhdl entity regs is clk, rst : in std_logic; clear : in std_logic; we

More information

Microsoft PowerPoint - 3.2組み合わせ回路BL.pptx

Microsoft PowerPoint - 3.2組み合わせ回路BL.pptx 3.2 組み合わせ回路 マイクロプロセッサへの適用例 3.2.1 加減算器 2 加算器 (Ripple Carry Adder: RCA) FA の真理値表 A B Cin Cout S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 A+B+Cin 3 FA(Full Adder) 真理値表

More information

Microsoft PowerPoint - Lec pptx

Microsoft PowerPoint - Lec pptx Course number: CSC.T341 コンピュータ論理設計 Computer Logic Design 10. シングルサイクルプロセッサのデータパス Datapath for Single Cycle Processor 吉瀬謙二情報工学系 Kenji Kise, Department of Computer Science kise _at_ c.titech.ac.jp www.arch.cs.titech.ac.jp/lecture/cld/

More information

ModelSim-Altera - RTL シミュレーションの方法

ModelSim-Altera - RTL シミュレーションの方法 ALTIMA Corp. ModelSim-Altera RTL シミュレーションの方法 ver.15.1 2016 年 5 月 Rev.1 ELSENA,Inc. 目次 1. 2. 3. はじめに...3 RTL シミュレーションの手順...4 RTL シミュレーションの実施...5 3-1. 3-2. 新規プロジェクトの作成... 5 ファイルの作成と登録... 7 3-2-1. 新規ファイルの作成...

More information

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

ディジタル回路 第1回 ガイダンス、CMOSの基本回路 1 前回教育用の RISC POCO を導入しました 今日はその Verilog 記述を紹介します まず この復習をやっておきましょう 2 最も重要な点は メモリの読み書きで レジスタ間接指定の理解です これはポインタと一緒なので 間違えないように修得してください 3 RISC なので 基本の演算はレジスタ同士でしかできません MV はレジスタ間のデータ移動なので気をつけてください 4 イミーディエイト命令は

More information

<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D>

<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D> 今さら聞けない高位合成 ~ 一から学ぶ高位合成 ~ シャープ株式会社電子デバイス事業本部副参事山田晃久 1 ハードウェア設計と抽象度 要求仕様 動作仕様設計制約 ( コスト 性能 消費電力 ) システムの実現方式を決定システム設計 ( 動作レベル設計 ) ( アーキテクチャ アルゴリズム ) システム分割 (HW/SW) 機能ブロック RTL 記述 機能設計 (RTL 設計 ) 論理合成 ハードウェアの処理を設計

More information

Handsout3.ppt

Handsout3.ppt 論理の合成 HDLからの合成 n HDLから初期回路を合成する u レジスタの分離 u 二段 ( 多段 ) 論理回路への変形 n 二段論理回路の分割 n 多段論理回路への変形 n 多段論理回路の最適化 n テクノロジマッピング u 面積, 速度, 消費電力を考慮したライブラリの割当 1 レジスタの分離 process (clk) begin if clk event and clk = 1 then

More information

FPGAによる24時間時計回路

FPGAによる24時間時計回路 の設計 通信処理ネットワーク研究室 10ec062 志村貴大 1. まえがき今回 24 時間時計回路の設計を行った理由は FPGA を用いた論理回路設計の基礎を学ぶにあたり ハード及びソフト双方の基本技術を一度に習得できる題材であると推測したためである 24 時間時計を構成するモジュールの設計を終えた今 その推測は正しかったものと自負している 本レポートは 復習を兼ねた制作記録としてだけではなく 自分と同じ回路設計初心者が学習の参考にできるものにしたいと考えている

More information

VHDL

VHDL VHDL 1030192 15 2 10 1 1 2 2 2.1 2 2.2 5 2.3 11 2.3.1 12 2.3.2 12 2.4 12 2.4.1 12 2.4.2 13 2.5 13 2.5.1 13 2.5.2 14 2.6 15 2.6.1 15 2.6.2 16 3 IC 17 3.1 IC 17 3.2 T T L 17 3.3 C M O S 20 3.4 21 i 3.5 21

More information

Java講座

Java講座 ~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト

More information

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

Microsoft PowerPoint - CproNt02.ppt [互換モード] 第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント

More information

卒業論文 巡回冗長検査 CRC32 のハード / ソフト最適分割の検討 氏名 : 伊藤大喜学籍番号 : 指導教員 : 山崎勝弘教授提出日 : 2009 年 2 月 19 日 立命館大学理工学部電子情報デザイン学科

卒業論文 巡回冗長検査 CRC32 のハード / ソフト最適分割の検討 氏名 : 伊藤大喜学籍番号 : 指導教員 : 山崎勝弘教授提出日 : 2009 年 2 月 19 日 立命館大学理工学部電子情報デザイン学科 卒業論文 巡回冗長検査 CRC32 のハード / ソフト最適分割の検討 氏名 : 伊藤大喜学籍番号 : 2260050004-3 指導教員 : 山崎勝弘教授提出日 : 2009 年 2 月 19 日 立命館大学理工学部電子情報デザイン学科 内容概要本論文では LSI 設計の主流となっているハードウェア記述言語の Verilog-HDL を用いて CRC32 回路を設計することで Vreilog-HDL

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅰ 条件分岐 : if 文, if~else 文 条件分岐 条件分岐とは ある条件が成立したときとしないときで処理の内容を変更する場合に応じた, 複雑な処理を行うことができる 条件分岐 yes 成績が良かったか? no ご褒美に何か買ってもらう お小遣いが減らされる C 言語では,if 文,if~else 文,if~else if~else 文,switch 文で条件分岐の処理を実現できる

More information

DELPHINUS EQUULEUS 2019 NASA SLS FPGA ( ) DELPHINUS 2

DELPHINUS EQUULEUS 2019 NASA SLS FPGA ( ) DELPHINUS 2 30 1631158 1 29 () 1 DELPHINUS EQUULEUS 2019 NASA SLS FPGA ( 0.010.1 ) DELPHINUS 2 1 4 1.1............................................ 4 1.2 (Lunar Impact Flush)............................. 4 1.3..............................................

More information

プログラミングA

プログラミングA プログラミング A 第 5 回 場合に応じた処理 繰り返し 2017 年 5 月 15 日 東邦大学金岡晃 前回の復習 (1) このプログラムを作成し実行してください 1 前回の復習 (2) このプログラムを作成し実行してください 2 前回の復習 (3) 3 前回の復習 演算子 代入演算子 インクリメント シフト演算子 型変換 4 場合に応じた処理 5 こういうプログラムを作りたい 5 教科のテスト

More information

計算機アーキテクチャ

計算機アーキテクチャ 計算機アーキテクチャ 第 11 回命令実行の流れ 2014 年 6 月 20 日 電気情報工学科 田島孝治 1 授業スケジュール ( 前期 ) 2 回日付タイトル 1 4/7 コンピュータ技術の歴史と コンピュータアーキテクチャ 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現 6 5/19 計算アーキテクチャ

More information

main.dvi

main.dvi CAD 2001 12 1 1, Verilog-HDL, Verilog-HDL. Verilog-HDL,, FPGA,, HDL,. 1.1, 1. (a) (b) (c) FPGA (d). 2. 10,, Verilog-HDL, FPGA,. 1.2,,,, html. % netscape ref0177/html/index.html.,, View Encoding Japanese

More information

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx 2019 年 6 月 14 日ハードウエア設計論 :9 ハードウエアにおける設計表現 ハードウエア設計記述言語 VerilogHDL ~CPU: ハード & ソフト ~ Ubuntu を起動し verilog が実行できる状態にしておいてください 129 6/7, 6/14 の出欠は 本日正午 +δ までに WEB から課題 7-4 を提出する cpu.v と simcpu2.v 以下の部分を切り出して

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 2018/10/05 竹島研究室創成課題 第 2 回 C 言語演習 変数と演算 東京工科大学 加納徹 前回の復習 Hello, world! と表示するプログラム 1 #include 2 3 int main(void) { 4 printf("hello, world! n"); 5 return 0; 6 } 2 プログラム実行の流れ 1. 作業ディレクトリへの移動 $ cd

More information

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~ .NET プログラマー早期育成ドリル VB 編 付録文法早見表 本資料は UUM01W:.NET プログラマー早期育成ドリル VB 編コードリーディング もしくは UUM02W:.NET プログラマー早期育成ドリル VB 編コードライティング を ご購入頂いた方にのみ提供される資料です 資料内容の転載はご遠慮下さい VB プログラミング文法早見表 < 基本文法 > 名前空間の定義 Namespace

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション コンパイラとプログラミング言語 第 3 4 週 プログラミング言語の形式的な記述 2014 年 4 月 23 日 金岡晃 授業計画 第 1 週 (4/9) コンパイラの概要 第 8 週 (5/28) 下向き構文解析 / 構文解析プログラム 第 2 週 (4/16) コンパイラの構成 第 9 週 (6/4) 中間表現と意味解析 第 3 週 (4/23) プログラミング言語の形式的な記述 第 10 週

More information

Microsoft Word - VBA基礎(3).docx

Microsoft Word - VBA基礎(3).docx 上に中和滴定のフローチャートを示しました この中で溶液の色を判断する部分があります このような判断はプログラムではどのように行うのでしょうか 判断に使う命令は IF 文を使います IF は英語で もし何々なら という意味になります 条件判断条件判断には次の命令を使います If 条件式 1 Then ElseIf 条件式 2 Then ElseIf 条件式 3 Then 実行文群 1 実行文群 2 実行文群

More information

HW-Slides-04.ppt

HW-Slides-04.ppt ハードウェア実験 組み込みシステム入門第 4 回 2012 年 10 月 11 日 IC TRAINER の導入 2 ブレッドボードとは何か! 手引き書 P8 半田付けせずに 簡単にリード線を差し込むだけで回路の動作を調べることができるボード! 部品挿入エリアでは ABCDE が縦に裏側で接続されている! 電源ラインでは 横に接続されている! 慣例として! 赤 : + 電源! 青 :- 電源または

More information

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く 変数 入出力 演算子ここまでに C 言語プログラミングの様子を知ってもらうため printf 文 変数 scanf 文 if 文を使った簡単なプログラムを紹介した 今回は変数の詳細について習い それに併せて使い方が増える入出力処理の方法を習う また 演算子についての復習と供に新しい演算子を紹介する 変数の宣言プログラムでデータを取り扱う場合には対象となるデータを保存する必要がでてくる このデータを保存する場所のことを

More information

Taro-Basicの基礎・条件分岐(公

Taro-Basicの基礎・条件分岐(公 0. 目次 3. 条件分岐 3. 1 If 文 3. 1. 1 処理を分岐する方法 3. 1. 2 処理を 2 つに分岐する方法 3. 1. 3 処理を 3 つ以上に分岐する方法 3. 2 Select Case 文 - 1 - 3. 条件分岐 条件により ある 文 を実行したりしなかったりするとき If 文を使う たとえば ある変数の値により 奇数 と表示したり 偶数 と表示したりするような処理ができる

More information

新版 明解C++入門編

新版 明解C++入門編 第 1 章画面 出力 入力 C++ C++ C++ C++ C++ C++ C++ C++ #include using C++ C++ C++ main C++ C++ C++ int double char C++ C++ C++ string C++ C++ C++ 21 1-1 C++ 歴史 C++ C++ 歴史 CC with classes Fig.1-1 C C++ Simula 67

More information

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n を入力してもらい その後 1 から n までの全ての整数の合計 sum を計算し 最後にその sum

More information

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt 計算機言語第 7 回 長宗高樹 目的 関数について理解する. 入力 X 関数 f 出力 Y Y=f(X) 関数の例 関数の型 #include int tasu(int a, int b); main(void) int x1, x2, y; x1 = 2; x2 = 3; y = tasu(x1,x2); 実引数 printf( %d + %d = %d, x1, x2, y);

More information

プログラミングA

プログラミングA プログラミング A 第 5 回 場合に応じた処理 繰り返し 2019 年 5 月 13 日 東邦大学金岡晃 場合に応じた処理 1 こういうプログラムを作りたい 5 教科のテスト 100 点以上各科目の点数の合計が 100 点未満 おめでとう! これで 100 点越えのプレゼントを獲得! というメッセージを出力 残念!100 点越えのプレゼントまであと ** 点! というメッセージを出力 5 教科の点数の合計が

More information

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

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅰ 授業ガイダンス C 言語の概要プログラム作成 実行方法 授業内容について 授業目的 C 言語によるプログラミングの基礎を学ぶこと 学習内容 C 言語の基礎的な文法 入出力, 変数, 演算, 条件分岐, 繰り返し, 配列,( 関数 ) C 言語による簡単な計算処理プログラムの開発 到達目標 C 言語の基礎的な文法を理解する 簡単な計算処理プログラムを作成できるようにする 授業ガイダンス

More information

Microsoft PowerPoint - C1(演算と変数).ppt

Microsoft PowerPoint - C1(演算と変数).ppt C 言語プログラミング 式の計算と変数 配列の概念 50 人の生徒の点数の平均点, 最高点 最低点を求めるプログラム ( センター入試 23 年度数学 2 情報関係基礎 第 3 問 ) (01) sowa 0, saiko 0, saitei 100 代入文 : 変数に値を代入 ( 格納 ) する (02) 配列 TNin のすべての要素を 0 にするための文 (03) bango を 1 から 50

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 6 回目 if 文と if else 文 今日の講義で学ぶ内容 関係演算子 if 文と if~else 文 if 文の入れ子 関係演算子 関係演算子 ==,!=, >, >=,

More information

Microsoft PowerPoint - FPGA

Microsoft PowerPoint - FPGA PLD と FPGA VLD 講習会 京都大学小林和淑 1 PLD FPGA って何 PLD: Programmable Logic Device プログラム可能な論理素子 FPGA: Field Programmable Gate Array 野外でプログラム可能な門の隊列? Field: 設計現場 Gate Array: 論理ゲートをアレイ上に敷き詰めたLSI MPGA: Mask Programmable

More information

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

Microsoft PowerPoint - 03BNFScanner.ppt [互換モード] コンパイラ理論 3 BNF と EBNF そして構文解析へ 3 章ステップ 1: 問題の把握 櫻井彰人 と文法 と EBNF 言語仕様 プログラムと言語仕様との関係 コンパイラ入門 C# で学ぶ理論と実践 より 3.2 BNF(Backus Naur Form) 文法 を記述する表記法 コンピュータ言語を表す為に使われることが多い 英文法 単語と単語の構成 関係を表す 5 文型は単語の品詞から英文の型を表現している

More information

スライド 1

スライド 1 1 1. 2 2. 3 isplever 4 5 6 7 8 9 VHDL 10 VHDL 4 Decode cnt = "1010" High Low DOUT CLK 25MHz 50MHz clk_inst Cnt[3:0] RST 2 4 1010 11 library ieee; library xp; use xp.components.all; use ieee.std_logic_1164.all;

More information

Microsoft PowerPoint - 33.pptx

Microsoft PowerPoint - 33.pptx 3.3 Verilog-A による動作モデリ ング Verilog-A による動作記述例 アナログ動作記述 典型的記述例から アナログ言語記述の考え方を学ぼう ここでは 自分でバリバリ記述できるほど詳しい文法を学ぶ必要はない 与えられた記述が大まかに追えて パラメータが何を表しているか分かれば十分 ( 参考 URI) http://homepage3.nifty.com/hdl_design/ 2

More information

情報処理Ⅰ

情報処理Ⅰ Java フローチャート -1- フローチャート ( 流れ図 ) プログラムの処理手順 ( アルゴリズム ) を図示したもの 記号の種類は下記のとおり 端子記号 ( 開始 終了 ) 処理記号計算, 代入等 条件の判定 条件 No ループ処理 LOOP start Yes データの入力 出力 print など 定義済み処理処理名 end サンプルグログラム ( 大文字 小文字変換 ) 大文字を入力して下さい

More information

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y  小幡智裕 Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :

More information

Microsoft Word - 3new.doc

Microsoft Word - 3new.doc プログラミング演習 II 講義資料 3 ポインタ I - ポインタの基礎 1 ポインタとは ポインタとはポインタは, アドレス ( データが格納されている場所 ) を扱うデータ型です つまり, アドレスを通してデータを間接的に処理します ポインタを使用する場合の, 処理の手順は以下のようになります 1 ポインタ変数を宣言する 2 ポインタ変数へアドレスを割り当てる 3 ポインタ変数を用いて処理 (

More information

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが

More information

Microsoft PowerPoint - Chap1 [Compatibility Mode]

Microsoft PowerPoint - Chap1 [Compatibility Mode] ディジタル設計 (A1) (Chap. 1) @ F301 http://www.ngc.is.ritsumei.ac.jp/~ger/lectures/digital2012/index.html 情報システム学科次世代コンピューティング研究室山下茂 ger@cs.ritsumei.ac.jp 0 目次 1. デジタル回路設計に関する概要の確認 基本的な用語 LSI 設計の流れ LSIの種類 現代用語の基礎知識ともいえます!

More information

JAIST Reposi Title RTL とゲートレベルを混在させた最適な論理回路設計に 関する研究 Author(s) 張, 之飛 Citation Issue Date Type Thesis or Dissertation Text ver

JAIST Reposi   Title RTL とゲートレベルを混在させた最適な論理回路設計に 関する研究 Author(s) 張, 之飛 Citation Issue Date Type Thesis or Dissertation Text ver JAIST Reposi https://dspace.j Title RTL とゲートレベルを混在させた最適な論理回路設計に 関する研究 Author(s) 張, 之飛 Citation Issue Date 2014-03 Type Thesis or Dissertation Text version author URL http://hdl.handle.net/10119/12013 Rights

More information

sinfI2005_VBA.doc

sinfI2005_VBA.doc sinfi2005_vba.doc MS-ExcelVBA 基礎 (Visual Basic for Application). 主な仕様一覧 () データ型 主なもの 型 型名 型宣言文字 長さ 内容 整数型 Integer % 2 バイト -32,768 32,767 長整数型 Long & 4 バイト -2,47,483,648 2,47,483,647 単精度浮動小数点数 Single 型!

More information

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

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O) ALTIMA Corp. SOPC Builder ペリフェラル簡易ユーザ マニュアル PIO (Parallel I/O) ver.1.0 2010 年 8 月 ELSENA,Inc. SOPC Builder ペリフェラル簡易ユーザ マニュアル PIO (Parallel I/O) 目次 1. はじめに... 3 2. PIO 概要... 3 2-1. PIO 概要... 3 2-2. PIO

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 4 回目演算子 今日の講義で学ぶ内容 演算子とオペランド 式 様々な演算子 代表的な演算子の使用例 演算子とオペランド 演算子 演算の種類です例えば + - * / 掛け算の記号は ではなく *( アスタリスク ) を使います割り算の記号は ではなく /( スラッシュ ) を使います オペランド 演算の対象です例えば 5( 値 ) num( 変数 ) 式 演算子とオペランドの組み合わせにより構成される数式です式は演算結果をもちます

More information

Microsoft PowerPoint - C_Programming(3).pptx

Microsoft PowerPoint - C_Programming(3).pptx H23 年度秋学期情報スキル活用 入門 担当 : 田中基彦 ( 工学部共通教育科 ) Email: ak_tanaka@isc.chubu.ac.jp 授業のホームページ学術情報センター > 教育支援 > 情報リテラシー 授業の日程 講義内容提出課題 連絡事項を掲載 > 定期的にアクセスして確認する C 言語によるプログラミング (3) 制御文 繰り返し文 if, while, switch, for,

More information