論理設計実習ポイント - Iguchi

Download Report

Transcript 論理設計実習ポイント - Iguchi

論理設計実習ポイント
• 組合せ回路
– function, caseなどを使った回路の設計
• p. 35, p. 36など
– +などの演算記号を使った加算回路
– 2の補数をつかって加算器で減算するほう補
• 順序回路
– カウンタの構成
• 総合
– 基数変換回路のように複数のモジュールを組合せて回路
を構成するときのtop moduleの記述方法
課題
• 次のようなステートマシンを記述しなさい
– 入力 w, 出力 z
– クロックのポジティブエッジで出力が変わる
– 2クロック期間 w = 1なら次に続くクロック期間は
出力が1になる回路を作りなさい。それ以外のと
きは、0を出力する。
Clock cycle: t0
w: 0
z: 0
t1
1
0
t2
0
0
t3
1
0
t4
1
0
t5
0
1
t6
1
0
t7
1
0
t8
1
1
t9
0
1
t10
1
0
状態遷移図
1が0個
入った状態
w=1
S0 / z = 0
S1 / z = 0
w=0
w=0
w=0
w=1
S2 / z = 1
w=1
VerilogHDL記述
module foo(clk, reset_N, w, z);
`define S0 3'b001
`define S1 3'b010
`define S2 3'b100
`define SX 3'b000
input clk, reset_N, w;
output z;
reg [2:0] state;
assign z = state[2];
always @(posedge clock or negedge reset_N) begin
if(!reset_N) begin
state <= `S0;
end else begin
case(state)
`S0: state <=(w) ? `S1 : `S0;
`S1: state <=(w) ? `S2 : `S0;
`S2: state <=(w) ? `S2: `S0;
default: state <= `SX;
endcase
end
end
endmodule