實驗12:邊沿觸發(fā)的D觸發(fā)器
實驗目的
實驗任務
本實驗的任務是描述一個帶有邊沿觸發(fā)的同步D觸發(fā)器電路,并通過STEP FPGA開發(fā)板的12MHz晶振作為觸發(fā)器時鐘信號clk,撥碼開關的狀態(tài)作為觸發(fā)器輸入信號d,觸發(fā)器的輸出信號q和~q,用來分別驅動開發(fā)板上的LED,在clk上升沿的驅動下,當撥碼開關狀態(tài)變化時LED狀態(tài)發(fā)生相應變化。
本文引用地址:http://m.ptau.cn/article/202310/451323.htm實驗原理
從D觸發(fā)器的特性我們知道,它的狀態(tài)僅僅取決于時鐘信號達到之前瞬間的D信號。為了防止SR鎖存器的S、R被同時置1的情況,常采用維持阻塞結構的D觸發(fā)器,其電路結構如下,邊沿觸發(fā)器的次態(tài)僅僅取決于CLK信號上升沿(或下降沿)到達時刻輸入信號的狀態(tài)。
Verilog HDL建模描述
用行為描述方式實現(xiàn)的D觸發(fā)器
程序清單dff.v
module dff ( //模塊名及參數定義 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
評論