實(shí)驗(yàn)?zāi)康?/h2>實(shí)驗(yàn)任務(wù)
本實(shí)驗(yàn)的任務(wù)是描述一個(gè)帶有邊沿觸發(fā)的同步D觸發(fā)器電路,并通過STEP FPGA開發(fā)板的12MHz晶振作為觸發(fā)器時(shí)鐘信號clk,撥碼開關(guān)的狀態(tài)作為觸發(fā)器輸入信號d,觸發(fā)器的輸出信號q和~q,用來分別驅(qū)動開發(fā)板上的LED,在clk上升沿的驅(qū)動下,當(dāng)撥碼開關(guān)狀態(tài)變化時(shí)LED狀態(tài)發(fā)生相應(yīng)變化。
實(shí)驗(yàn)原理
從D觸發(fā)器的特性我們知道,它的狀態(tài)僅僅取決于時(shí)鐘信號達(dá)到之前瞬間的D信號。為了防止SR鎖存器的S、R被同時(shí)置1的情況,常采用維持阻塞結(jié)構(gòu)的D觸發(fā)器,其電路結(jié)構(gòu)如下,邊沿觸發(fā)器的次態(tài)僅僅取決于CLK信號上升沿(或下降沿)到達(dá)時(shí)刻輸入信號的狀態(tài)。

Verilog HDL建模描述
用行為描述方式實(shí)現(xiàn)的D觸發(fā)器程序清單dff.v
moduledff( //模塊名及參數(shù)定義 inputclk,rst,d, outputregq, outputwireqb); assignqb=~q; always@(posedgeclk)//只有clk上升沿時(shí)刻觸發(fā) if(!rst) //復(fù)位信號判斷,低有效 q<=1'b0;//復(fù)位有效時(shí)清零 else q<=d;//觸發(fā)時(shí)輸出q值為輸入d endmodule
仿真文件dff_tb.v
`timescale1ns/100ps//仿真時(shí)間單位/時(shí)間精度 moduledff_tb(); regclk,rst,d; //需要產(chǎn)生的激勵信號定義 wireq,qb; //需要觀察的輸出信號定義 //初始化過程塊 initial begin clk=0; rst=0; d=0; #50 rst=1; end always#10clk=~clk;//產(chǎn)生輸入clk,頻率50MHz always#15d=~d; //module調(diào)用例化格式 dffu1(//dff表示所要例化的module名稱,u1是我們定義的例化名稱 .clk(clk),//輸入輸出信號連接。 .rst(rst), .d(d), .q(q),//輸出信號連接 .qb(qb) ); endmodule

