實(shí)驗(yàn)13:JK觸發(fā)器
實(shí)驗(yàn)?zāi)康?/h2>實(shí)驗(yàn)任務(wù)
本實(shí)驗(yàn)的任務(wù)是設(shè)計(jì)一個(gè)JK觸發(fā)器
本文引用地址:http://2s4d.com/article/202310/451353.htm實(shí)驗(yàn)原理
帶使能端RS鎖存器的輸入端R=S=1時(shí),鎖存器的次態(tài)不確定,這一因素限制了其應(yīng)用。為了解決這個(gè)問題,根據(jù)雙穩(wěn)態(tài)元件兩個(gè)輸出端互補(bǔ)的特點(diǎn),用Q和非Q反饋控制輸入信號(hào),并用J代替S,用K代替R,構(gòu)成了J-K鎖存器。
Verilog HDL建模描述
用行為級(jí)描述實(shí)現(xiàn)的帶異步復(fù)位和置位端的邊沿觸發(fā)器
程序清單 jk_ff.v
module jk_ff( //模塊名及參數(shù)定義input clk,j,k,rst,set, output reg q,output wire qb); assign qb = ~q;//clk上升沿以及復(fù)位和置位下降沿時(shí)觸發(fā)器工作always@(posedge clk or negedge rst or negedge set)
begin
if(!rst)
q <= 1'b0; // 異步清零
else if (!set)
q <= 1'b1; // 異步置1
else
case({j,k})
2'b00: q <= q; //保持
2'b01: q <= 0; //置0
2'b10: q <= 1; //置1
2'b11: q <= ~q; //翻轉(zhuǎn)
endcase
endendmodule
仿真文件jkff_tb.v
`timescale 1ns/100ps //仿真時(shí)間單位/時(shí)間精度
module jk_ff_tb();
reg clk,j,k,rst,set; //需要產(chǎn)生的激勵(lì)信號(hào)定義wire q,qb; //需要觀察的輸出信號(hào)定義 //初始化過程塊initialbegin
clk = 0;
j = 0;
k = 0;
rst = 1;
set = 1;
#50
set = 0;
#50
set = 1;
#50
rst = 0;
#50
rst = 1;endalways #10 clk = ~clk; //產(chǎn)生輸入clk,頻率50MHzalways #20 j = ~j;always #30 k = ~k;//module調(diào)用例化格式j(luò)k_ff u1 ( //jk_ff表示所要例化的module名稱,u1是我們定義的例化名稱
.clk(clk), //輸入輸出信號(hào)連接。
.j(j),
.k(k),
.rst(rst),
.set(set),
.q(q), //輸出信號(hào)連接
.qb(qb) );endmodule
實(shí)驗(yàn)步驟
仿真結(jié)果和實(shí)驗(yàn)現(xiàn)象
仿真結(jié)果如下圖所示:
本實(shí)驗(yàn)的任務(wù)是設(shè)計(jì)一個(gè)JK觸發(fā)器
本文引用地址:http://2s4d.com/article/202310/451353.htm帶使能端RS鎖存器的輸入端R=S=1時(shí),鎖存器的次態(tài)不確定,這一因素限制了其應(yīng)用。為了解決這個(gè)問題,根據(jù)雙穩(wěn)態(tài)元件兩個(gè)輸出端互補(bǔ)的特點(diǎn),用Q和非Q反饋控制輸入信號(hào),并用J代替S,用K代替R,構(gòu)成了J-K鎖存器。
用行為級(jí)描述實(shí)現(xiàn)的帶異步復(fù)位和置位端的邊沿觸發(fā)器
程序清單 jk_ff.v
module jk_ff( //模塊名及參數(shù)定義input clk,j,k,rst,set, output reg q,output wire qb); assign qb = ~q;//clk上升沿以及復(fù)位和置位下降沿時(shí)觸發(fā)器工作always@(posedge clk or negedge rst or negedge set) begin if(!rst) q <= 1'b0; // 異步清零 else if (!set) q <= 1'b1; // 異步置1 else case({j,k}) 2'b00: q <= q; //保持 2'b01: q <= 0; //置0 2'b10: q <= 1; //置1 2'b11: q <= ~q; //翻轉(zhuǎn) endcase endendmodule
仿真文件jkff_tb.v
`timescale 1ns/100ps //仿真時(shí)間單位/時(shí)間精度 module jk_ff_tb(); reg clk,j,k,rst,set; //需要產(chǎn)生的激勵(lì)信號(hào)定義wire q,qb; //需要觀察的輸出信號(hào)定義 //初始化過程塊initialbegin clk = 0; j = 0; k = 0; rst = 1; set = 1; #50 set = 0; #50 set = 1; #50 rst = 0; #50 rst = 1;endalways #10 clk = ~clk; //產(chǎn)生輸入clk,頻率50MHzalways #20 j = ~j;always #30 k = ~k;//module調(diào)用例化格式j(luò)k_ff u1 ( //jk_ff表示所要例化的module名稱,u1是我們定義的例化名稱 .clk(clk), //輸入輸出信號(hào)連接。 .j(j), .k(k), .rst(rst), .set(set), .q(q), //輸出信號(hào)連接 .qb(qb) );endmodule
仿真結(jié)果如下圖所示:
評(píng)論