一段verilog代码不理解,求解答
时间:10-02
整理:3721RD
点击:
always @(posedge clk13_5)
begin
vref_d1<=vref;
vref_d2<=vref_d1;
end
and(vref_2,vref_d2,vref_d1);
xor (headd,vref_2,vref_d1); //在vref的开始拉高一个脉冲
拉高一个脉冲,是什么意思?
begin
vref_d1<=vref;
vref_d2<=vref_d1;
end
and(vref_2,vref_d2,vref_d1);
xor (headd,vref_2,vref_d1); //在vref的开始拉高一个脉冲
拉高一个脉冲,是什么意思?
一个脉冲应该是指一个时钟周期
搜索“脉冲序列检测”
检测一个上升沿过来
还是没看明白
是产生一个脉冲
检查脉冲上升沿,并产生一个时钟周期宽度的脉冲
确实是检测上升沿,最后两行
and(vref_2,vref_d2,vref_d1);
xor(headd,vref_2,vref_d1);
实际上就是:
assign vref_2 = vref_d1&vref_d2;
assign headd = vref_2 ^ vref_d1;
可以进行逻辑化简:
assign headd=(vref_d1&vref_d2)^vref_d1;
等价于
assign headd =!(vref_d1&vref_d2)&vref_d1 | (vref_d1&vref_d2)&(!vref_d1);
等价于
assign headd= vref_d1 & !vref_d2;
