当前位置: 代码迷 >> 综合 >> 【 Verilog HDL 】清晰的时序逻辑描述方法之计数器的描述范例
  详细解决方案

【 Verilog HDL 】清晰的时序逻辑描述方法之计数器的描述范例

热度:49   发布时间:2023-12-12 22:26:22.0

所谓清晰,就是便于阅读与理解,如下HDL代码所描述的电路就是清晰的时序逻辑电路,对应计数器的功能:
 

always@( posedge clk )
beginif( rst )begincount <= 1'b0;endelsebegincount <= nextCount;endendassign nextCount = count + 1'b1;

虽然这个代码简单,但就是这样的代码能说明问题,带给了我一些启发。上述代码之所以清晰,就是把描述组合逻辑和纯时序逻辑的代码分隔开来,尤其是当代码所描述的功能稍微复杂一些的时候,这样更方便阅读和理解。

所谓的纯时序逻辑,其实就是对寄存器的行为进行描述。其相对于组合逻辑最大的不同就是敏感时钟边沿事件,可以是敏感上升沿也可以是敏感下降沿,这个根据实际需求决定,但是绝不可能是同时敏感时钟的两种边沿事件,这是由其所对应的触发器的结构和工作原理决定的,因为触发器这种硬件结构只有一个时钟输入端。

因此,类似如下的代码是无法综合的:

always@( posedge clk, negedge clk )
begina <= din;end

由于上述那个计数器的例子比较简单,所以组合逻辑和时序逻辑混写也无伤大雅。如下:

always@( posedge clk )
beginif( rst )begincount <= 1'b0;endelsebegincount <= count + 1'b1;endend

这个组合逻辑就藏身于赋值操作符号的右边。当组合逻辑比较简单时,这样做也无伤大雅,甚至能让代码更加的简洁。

 

  相关解决方案