樱木花道长

不忘初心,方得始终

Verilog基础知识汇总一

1
阅读(1825)
  1. 组合逻辑和时序逻辑

    组合逻辑:不受系统时钟的控制,电路由与或非等等纯逻辑门电路组成,不包含触发器,寄存器等等;

    一般在verilog中组合逻辑产生的信号由assign赋值,当然always@(*)也是组合逻辑,它表示所有信号的变化都能触发电路,使输出发生变化

    时序逻辑:电路要受到系统时钟的控制,由时钟沿触发电路产生变化,一般always@(posedge clk)所表示的电路我们认为是时序逻辑,括号中的信号是电路的敏感信号列表,这里的posedge clk是指的时钟上升沿,也就是说检测到时钟上升沿变化,就能触发电路,使输出产生相应的变化。

  2. 模块定义

    module name(port1,port2,port3......);

    endmodule

    每一个module都必须配套一个endmodule;

    括号里面需要声明该模块的所有端口

  3. 模块端口

    input:输入        input [3:0] key 表示有一个4位的输入端口,端口名为key;

    output:输出     output[7:0]led 表示有一个8位的输出端口,端口名为led;

    inout:输入/输出端口 inout[5:0]K 表示有一个6位的输入输出端口,端口名为K;

    端口的位宽是从0开始数,4位定义[3:0],8位定义[7:0]。如果在程序中只需要使用单独的某一位或部分位的时候,例如led[7:5]是表示led端口的6-8位;led[7]是表示led端口的第8位。

    另外端口的I/O特性也可以在模块定义声明端口时一起定义,例如:

    module led(

    input clk,

    input rst_n,

    output [7:0]led

    );

    endmodule

  4. 信号类型

    信号类型用的最多的是reg(寄存器类型)和wire(线型);

    reg型的信号具有保持存储信号的功能,一般在时序逻辑中产生的信号,我们将它定义为reg型

    wire型的信号只具备传递信号的功能,不具备保持信号的功能,一般在组合逻辑中产生的信号,我们将它定义为wire型。