新聞中心

EEPW首頁 > 模擬技術 > 設計應用 > 實驗12:邊沿觸發(fā)的D觸發(fā)器

實驗12:邊沿觸發(fā)的D觸發(fā)器

作者: 時間:2023-10-10 來源:電子森林 收藏

本實驗的任務是描述一個帶有邊沿觸發(fā)的同步電路,并通過STEP 開發(fā)板的12MHz晶振作為觸發(fā)器時鐘信號clk,撥碼開關的狀態(tài)作為觸發(fā)器輸入信號d,觸發(fā)器的輸出信號q和~q,用來分別驅動開發(fā)板上的LED,在clk上升沿的驅動下,當撥碼開關狀態(tài)變化時LED狀態(tài)發(fā)生相應變化。

本文引用地址:http://www.butianyuan.cn/article/202310/451323.htm

從D觸發(fā)器的特性我們知道,它的狀態(tài)僅僅取決于時鐘信號達到之前瞬間的D信號。為了防止SR鎖存器的S、R被同時置1的情況,常采用維持阻塞結構的D觸發(fā)器,其電路結構如下,邊沿觸發(fā)器的次態(tài)僅僅取決于CLK信號上升沿(或下降沿)到達時刻輸入信號的狀態(tài)。


用行為描述方式實現(xiàn)的D觸發(fā)器
程序清單dff.v

   module dff   (						//模塊名及參數(shù)定義
    input clk,rst,d,	
    output reg q,
    output wire qb   );
   assign qb = ~q;
   always @( posedge clk )   //只有clk上升沿時刻觸發(fā)
	if(!rst)				  //復位信號判斷,低有效
		q <= 1'b0;        //復位有效時清零
	else
		q <= d;           //觸發(fā)時輸出q值為輸入d
  endmodule

仿真文件dff_tb.v

   `timescale 1ns/100ps    //仿真時間單位/時間精度
  module dff_tb();       
   reg    clk,rst,d;         	//需要產生的激勵信號定義
   wire   q,qb;      	  //需要觀察的輸出信號定義 
   //初始化過程塊
   initial
   begin
	 clk = 0;
	 rst = 0;
	 d = 0;
	 #50
	 rst = 1;
   end
   always #10 clk = ~clk;      //產生輸入clk,頻率50MHz
   always #15 d = ~d;
   //module調用例化格式
   dff  u1 (      //dff表示所要例化的module名稱,u1是我們定義的例化名稱
		.clk(clk),     //輸入輸出信號連接。
		.rst(rst),
		.d(d),
		.q(q),    //輸出信號連接
		.qb(qb)   
           );
  endmodule
  1. 打開,建立工程。
  2. 新建設計文件,并鍵入設計代碼。
  3. 根據(jù)邏輯綜合并分配管腳。clk/C1,rst_n/L14,d/M7,q/N13,qb/M12
  4. 根據(jù)仿真教程,實現(xiàn)對本工程的仿真,驗證仿真結果是否與預期相符。
  5. 如果仿真無誤,構建并輸出編程文件,燒寫至的Flash之中。
  6. 觀察輸出結果。
  1. 仿真結果如下圖所示:
  2. 實驗現(xiàn)象:撥動撥碼開關的第1位到ON,給D觸發(fā)器輸入1,則LED1滅,LED2亮輸出q=1,notq輸出0;撥到OFF時LED1亮,LED2滅,即q輸出0,notq輸出1(注意LED上拉到3.3V,所以LED管腳為0時亮)。


評論


相關推薦

技術專區(qū)

關閉