新聞中心

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

        實驗12:邊沿觸發的D觸發器

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

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

        本文引用地址:http://www.104case.com/article/202310/451323.htm

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


        用行為描述方式實現的D觸發器
        程序清單dff.v

           module dff   (						//模塊名及參數定義
            input clk,rst,d,	
            output reg q,
            output wire qb   );
           assign qb = ~q;
           always @( posedge clk )   //只有clk上升沿時刻觸發
        	if(!rst)				  //復位信號判斷,低有效
        		q <= 1'b0;        //復位有效時清零
        	else
        		q <= d;           //觸發時輸出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. 根據邏輯綜合并分配管腳。clk/C1,rst_n/L14,d/M7,q/N13,qb/M12
        4. 根據仿真教程,實現對本工程的仿真,驗證仿真結果是否與預期相符。
        5. 如果仿真無誤,構建并輸出編程文件,燒寫至的Flash之中。
        6. 觀察輸出結果。
        1. 仿真結果如下圖所示:
        2. 實驗現象:撥動撥碼開關的第1位到ON,給D觸發器輸入1,則LED1滅,LED2亮輸出q=1,notq輸出0;撥到OFF時LED1亮,LED2滅,即q輸出0,notq輸出1(注意LED上拉到3.3V,所以LED管腳為0時亮)。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 贡觉县| 华安县| 乌审旗| 黄平县| 漯河市| 托克托县| 长顺县| 沈阳市| 图木舒克市| 原阳县| 兴安县| 格尔木市| 霍城县| 金华市| 闸北区| 铁岭市| 讷河市| 林甸县| 邢台市| 阜新| 安龙县| 宁陕县| 泌阳县| 张北县| 文水县| 无极县| 白水县| 岳阳市| 平遥县| 攀枝花市| 通河县| 泾川县| 淮滨县| 庆城县| 太湖县| 镇康县| 巨鹿县| 西青区| 南京市| 绍兴县| 桦南县|