电子元器件网站建设/模板自助建站
D触发器
在时钟上升沿,D输入0,Q输出1
在时钟上升沿,D输入1,Q输出0
输出只在上升沿发生变化。
一般的;
module ex_module(
input wire sclk,
input wire rst_n,
input wire [7:0] d,//声明模块时输入必须是wire变量,构件之间的物理连线
input wire [7:0] q,//模块声明时输出可以是wire变量给,也可以是reg变量,REG 用于时序逻辑,reg 用于 always @ (posedge clk) 的always 块中。
);
always @(posedge sclk or negedge rst_n)//敏感列表可以包括电平触发或沿触发
if(rst_n==1’b0)//条件表,这里是组合逻辑,一个比较器,1比特,b表示2进制
q<=8’h00;//沿触发的逻辑里面一定要用,<=非阻塞值
else
q<=d;
endmodule
这里2个异步D触发器
那么2级D触发器的作用是什么
就是
时钟信号与复位信号有一个亚稳态我们用两个D触发器连起来中间设一个延时,亚稳态信号很小且时间短暂,到第二个D触发器时就基本上消失了,当然也可以继续加D触发器,不过一般2个就足够了。
对于它的程序
module prac (
clk,reset_n,dataa,datab,outa,outb
);
input clk;
input reset_n;
input dataa;
input datab;
output outa;
output outb;
reg reg1;
reg reg2;
reg reg3;
reg reg4;
assign outa = reg1;
assign outb = reg2;
assign rst_n = reg4;
always @ (posedge clk or negedge reset_n) //“异步复位同步释放”的复位模块
beginif (!reset_n)beginreg3 <= 1'b0;reg4 <= 1'b0;endelsebeginreg3 <= 1'b1;reg4 <= reg3;end
endalways @ (posedge clk or negedge rst_n) //功能模块,注意rst_n是沿变驱动。
beginif (!rst_n)beginreg1 <= 1'b0;reg2 <= 1'b0;endelsebeginreg1 <= dataa;reg2 <= datab;end
end
endmodule