Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Verilog

D Kait

Flip-flop menangkap data pada inputnya di tepi positif atau negatif jam. Hal penting yang perlu diperhatikan adalah bahwa apapun yang terjadi pada data setelah tepi jam sampai tepi jam berikutnya tidak akan tercermin dalam output. Sebuah gerendel di sisi lain, tidak menangkap di tepi jam, sebaliknya output mengikuti input selama pin aktifkan dinyatakan.

Desain

Dalam contoh ini, kita akan membuat gerendel yang memiliki tiga input dan satu output. Masukan d singkatan dari data yang dapat berupa 0 atau 1, pertama singkatan dari reset aktif-rendah dan en singkatan dari enable yang digunakan untuk membuat data input latching ke output. Reset menjadi aktif-rendah berarti bahwa elemen desain akan direset ketika input ini menjadi 0 atau dengan kata lain, reset aktif ketika nilainya rendah. Nilai keluaran q ditentukan oleh input d , id dan pertama .

  
  
module d_latch (  input d,           // 1-bit input pin for data
                  input en,          // 1-bit input pin for enabling the latch
                  input rstn,        // 1-bit input pin for active-low reset
                  output reg q);     // 1-bit output pin for data output
 
   // This always block is "always" triggered whenever en/rstn/d changes
   // If reset is asserted then output will be zero
   // Else as long as enable is high, output q follows input d
   always @ (en or rstn or d)
      if (!rstn)
         q <= 0;
      else
         if (en)
            q <= d;
endmodule

  

Perhatikan bahwa daftar sensitivitas terhadap always blok berisi semua sinyal yang diperlukan untuk memperbarui output. Blok ini akan dipicu setiap kali salah satu sinyal dalam daftar sensitivitas mengubah nilainya. Juga q akan mendapatkan nilai d hanya jika en tinggi, dan karenanya adalah positif kait.

Skematis

Testbench

  
  
module tb_latch;
   // Declare variables that can be used to drive values to the design
   reg d;  
   reg en;
   reg rstn;
   reg [2:0] delay;
   reg [1:0] delay2;
   integer i;
   
   // Instantiate design and connect design ports with TB signals
   d_latch  dl0 ( .d (d),
                  .en (en),
                  .rstn (rstn),
                  .q (q));

   // This initial block forms the stimulus to test the design
   initial begin
      $monitor ("[%0t] en=%0b d=%0b q=%0b", $time, en, d, q);
   
      // 1. Initialize testbench variables
      d <= 0;
      en <= 0;
      rstn <= 0;
      
      // 2. Release reset
      #10 rstn <= 1;
      
      // 3. Randomly change d and enable
      for (i = 0; i < 5; i=i+1) begin
         delay = $random;
         delay2 = $random;
         #(delay2) en <= ~en;
         #(delay) d <= i;
      end
   end
endmodule

  

Untuk membuat testbench kami menegaskan dan menonaktifkan sinyal dengan cara yang lebih acak, kami telah mendeklarasikan reg variabel yang disebut penundaan berukuran 3 bit sehingga dapat mengambil nilai apapun dari 0 sampai 7. Kemudian delay variabel digunakan untuk menunda penugasan d dan id untuk mendapatkan pola yang berbeda di setiap loop.

Keluaran

Log Simulasi
ncsim> run
[0] en=0 d=0 q=0
[11] en=1 d=0 q=0
[18] en=0 d=0 q=0
[19] en=0 d=1 q=0
[20] en=1 d=1 q=1
[25] en=1 d=0 q=0
[27] en=0 d=0 q=0
[32] en=0 d=1 q=0
[33] en=1 d=1 q=1
[34] en=1 d=0 q=0
ncsim: *W,RNQUIE: Simulation is complete.

Klik pada gambar untuk membuatnya lebih besar.

d latch

Verilog

  1. Penguat Common-Emitter
  2. Op-Amp Sederhana
  3. Pengikut Tegangan Presisi
  4. C# Input dan Output Dasar
  5. Masukan/Keluaran Dasar C++
  6. C Masukan Keluaran (I/O)
  7. Masukan, Keluaran, dan Impor Python
  8. Input dan Output Dasar Java
  9. C++ Basic Input/Output:Cout, Cin, Cerr Contoh
  10. C - Masukan dan Keluaran