欢迎光临散文网 会员登陆 & 注册

Verilog学习之触发器与modelsim仿真

2023-03-20 23:33 作者:行中悟_悟中行  | 我要投稿

一、前言

        本文将学习常见类型触发的verilog编写,结合仿真结果来熟悉。

二、触发器介绍

        触发器在verilog中的作用主要是具有存储作用,由时钟信号来触发改变存储内容,较常见的触发从同步,异步角度来区分,可分为同步清零,同步置位,异步清零,异步置位。

//同步清零

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


Verilog学习之触发器与modelsim仿真的评论 (共 条)

分享到微博请遵守国家法律