今天写两个项目中用到的两个代码设计技巧!
技巧一:当某信号出现下降沿时,输出一个clk时钟周期的高电平使能信号,程序代码如下:
assign f_in_edge = (~f_in_m)&f_in_n; // producting one period negedge singnal
always @(posedge sys_clk or negedge rst_n) begin //to product one period negedge singnal for f_in
if(!rst_n) begin
f_in_m <= 1'b0;
f_in_n <= 1'b0;
end
else begin
f_in_n <= f_in_m;
f_in_m <= f_in;
end
end
技巧二:信号在低电平时对clk时钟个数进行计数
always @(negedge rst_n or posedge sys_clk) begin //account for err_phase
if(!rst_n) begin
err_phase <= 0;
err_phase_up_flag <= 0;
err_phase_temp <= 0;
end
else if(!up) begin
err_phase_temp <= err_phase_temp + 1'b1;
err_phase_up_flag <= 1;
end
else if(err_phase_up_flag) begin
err_phase_up_flag <= 0;
err_phase <= err_phase_temp;
end
else
err_phase_temp <= 0;
end
注意:err_phase_up_flag 标志非常重要
今天就记录这两个代码写作技巧,这些都是项目中用到的一些程序设计技巧!项目完成就把整个代码分享出来