FPGA设计之Verilog中clk为什么要用posedge而不用negedge?

可编程逻辑

1366人已加入

描述

Verilog是一种硬件描述语言,用于描述数字电路的行为和特性。在Verilog中,时钟信号(clk)和线路是非常重要的,它用于同步电路中的各个模块,确保它们在同一时刻执行。

在Verilog中,时钟信号可以使用posedge和negedge两种方式来触发。posedge表示时钟信号的上升沿(电平从低到高跳变),而negedge表示时钟信号的下降沿(电平从高到低跳变)。在实际应用中,大多数设计都使用posedge触发方式。

这是因为在数字电路中,时钟信号的上升沿是同步电路中的关键时间点,它可以确保各个模块在同一时刻执行。同时,posedge触发方式还可以避免由于时钟信号的下降沿带来的抖动和噪声等问题,从而提高电路的稳定性和可靠性。

另外,一般情况下,系统中统一用posedge,避免用negedge,降低设计的复杂度,可以减少出错,由于Verilog是一种硬件描述语言,它的设计目的是为了生成硬件电路,而不是软件程序。

因此,在Verilog中,使用posedge触发方式可以更好地反映硬件电路的实际运行方式,提高设计的准确性和可靠性。

对于典型的counter逻辑

always @(posedge sys_clk or negedge sys_rst_n) begin
  if(!sys_rst_n)
    counter <= 24'd0;  //十进制0
  else if(counter < led_time) begin
    flag_counter = 1'b0;
    counter <= counter + 1'b1;
  end
  else begin
    counter <= 24'd0;
    flag_counter = 1'b1;
  end
end

在ModelSim仿真中,时钟是很严格,但是在真实的晶振所产生的clock却是不严格的,比如高电平和低电平的时间跨度不一样,甚至非周期性的微小波动。如果只使用posedge,则整个系统的节拍都按照clock上升沿对齐,如果用到了negedge,则系统的节拍没有统一到一个点上。上升沿到上升沿肯定是一个时钟周期,但是上升沿到下降沿却很可能不是半个周期。这都会出现问题。

FPGA中特有的Global CLK是指FPGA芯片内部的全局时钟信号,它可以用于同步各种时序逻辑,确保电路的正确性和可靠性。Global CLK是FPGA芯片内部的一个特殊信号,它可以被所有时序逻辑模块使用,从而实现全局同步。

FPGA内部专有的CLK"线"是指FPGA芯片内部的时钟信号线路,它可以用于连接各种时序逻辑模块,实现电路的同步,和一般的逻辑门线路走法不一样,目的是为了保证整个FPGA片内的时钟一致。时钟信号线路应该具有以下特点:

  1. 时钟信号线路应该是低时延、低抖动的。
  2. 时钟信号线路应该具有良好的信号完整性,避免信号失真或干扰。
  3. 时钟信号线路应该能够满足电路的时序要求,确保电路的正确性和可靠性。

在FPGA设计中,应该注意时钟信号的设计和布局,以确保电路的正确性和可靠性。

FPGA芯片

总结

Verilog中的时钟信号使用posedge触发方式可以确保同步电路中各个模块在同一时刻执行,提高电路的稳定性和可靠性。同时,posedge触发方式也更好地反映了硬件电路的实际运行方式,提高了设计的准确性和可靠性。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分