Verilog學習之觸發(fā)器與modelsim仿真
一、前言
????????本文將學習常見類型觸發(fā)的verilog編寫,結合仿真結果來熟悉。
二、觸發(fā)器介紹
????????觸發(fā)器在verilog中的作用主要是具有存儲作用,由時鐘信號來觸發(fā)改變存儲內(nèi)容,較常見的觸發(fā)從同步,異步角度來區(qū)分,可分為同步清零,同步置位,異步清零,異步置位。
//同步清零
always@(posedge clk ,posedge rst )
begin
if(rst)
out_syn_clear<=1'b0;
else?
if (cls)
out_syn_clear<=1'b0;
else
out_syn_clear<=d;
end
波形如下,只有rst和cls信號都為0時,輸出信號為輸入信號,其余情況輸出為0

//同步置位
always@(posedge clk,posedge cls)
if(rst)
out_syn_set<=1'b1;
else if (cls)
out_syn_set<=1'b0;
else
out_syn_set<=d;
波形如下,只有rst和cls信號都為0時,輸出信號為輸入信號,其余情況輸出為0,置位信號rst為1時輸出為1。

//異步清零
always@(posedge clk or posedge cls)
begin
if(cls)
out_asyn_clear<=1'b0;
else?
out_asyn_clear<=d;
end
波形如下,cls信號為0時,輸出信號為輸入信號,為1時進行清零操作,輸出0。

//異步置位
always@(posedge clk or posedge rst)
begin
if(rst)
out_asyn_set<=1'b1;
else?
out_asyn_set<=d;
波形如下,置位rst信號為0時,輸出信號為輸入信號,為1時進行置位操作,輸出1。

三、測試文件代碼
module FF_SIM();
reg? d;
reg clk,rst,cls;
wire out_asyn_clear,out_asyn_set,out_syn_set,out_syn_clear;
initial
begin
clk=1'b0;
d=1'b0;
rst=1'b0;
cls=1'b0;
#150;
cls=1'b1;
rst=1'b1;
#150;
cls=1'b0;
rst=1'b1;
#150;
cls=1'b1;
rst=1'b0;
#150;
cls=1'b0;
rst=1'b0;
end
always
#2 clk=~clk;
always?
#10 d=~d;
FF FF_sim(.d(d),.clk(clk),.rst(rst),.cls(cls),.out_asyn_clear(out_asyn_clear),.out_asyn_set(out_asyn_set),.out_syn_set(out_syn_set),.out_syn_clear(out_syn_clear));
endmodule