Home > Desain Sistem VLSI, Kuliah, Sistem Digital Lanjut > HDL untuk Rangkaian Sekuensial Sinkron

HDL untuk Rangkaian Sekuensial Sinkron

Kuliah TKC305 Sistem Digital Lanjut minggu ini akan membahas tentang HDL (hardware description language) untuk elemen dan rangkaian sekuensial (sinkron), meliputi modul flip-flop (D, T, JK), latch, register data, register geser, HDL untuk FSM Moore, dan modul pencacah. Sinkron berarti semua operasi rangkaian ini dikendalikan oleh sinyal clock, baik dengan transisi  (berbasis flip-flop) maupun level (berbasis latch).

Bahasa HDL yang digunakan adalah Verilog. Kode HDL harus bisa disintesis untuk FPGA Xilinx.

Setelah mempelajari materi ini, mahasiswa akan mampu untuk:

  1. [C5] memprogram modul Verilog untuk flip-flop, latch,register register geser dan pencacah sinkron/asinkron;
  2. [C6] mensimulasikan modul-modul tersebut;
  3. [C6] membuat modul-modul HDL tersintesis untuk counterdengan fungsi serupa dengan IC seri 74xx dan mensimulasikannya;

Contoh desain rangkaian sekuensial (FSM Moore) untuk mendeteksi deretan masukan 11. Rangkaian mempunyai satu masukan, w, dan satu keluaran, z. Semua perubahan dalam rangkaian terjadi saat transisi naik dari sinyal clock. Keluaran z=1 jika masukan w=1 secara berurutan selama 2 clock.

Diagram dan tabel keadaan dari rangkaian adalah sbb:

Kode HDL Verilog untuk FSM deteksi dereten 11 adalah:

module sequence_11(
  input clk, input w, input reset,
  output reg z
);
reg [1:0] current_state, next_state;
always @(posedge clk) begin // current_state_logic
  if (reset == 0) current_state = 0;
  else  current_state = next_state;
end
always @(current_state or w) begin // next_state_logic
  case ({current_state,w})
    3'b000: next_state = 2'b00;
    3'b001: next_state = 2'b01;
    3'b010: next_state = 2'b00;
    3'b011: next_state = 2'b10;
    3'b100: next_state = 2'b00;
    3'b101: next_state = 2'b10;
    default: next_state = 2'b00; // never happens
  endcase
end;
always @(current_state) begin // output_logic
  case (current_state)
    2'b00: z = 0;
    2'b01: z = 0;
    2'b10: z = 1;
    default: z = 1;    // never happens
  endcase
end;
endmodule;

Download materi lengkap: HDL untuk rangkaian sekuensial sinkron

Materi terkait:

  1. No comments yet.
  1. No trackbacks yet.
*

This blog is kept spam free by WP-SpamFree.

Skip to toolbar