verilog 学习笔记1

1.#:是延迟的意思,#号后面数字是延迟的数量,延迟的单位由'timescale控制,比如有:'timescale 1ns/1ps 意思就是单位为1ns,精度是1ps。那么,#10.5就是延迟10.5ns的意思。注意在同步时序数字逻辑电路的verilog代码中,不能加入“#”进行延迟,这不是代码编写阶段能决定的。

2.`include:文件包含处理。所谓“文件包含”处理是一个源文件可以将另外一个源文件的全部能容包含进来,即将另外的文件包含到本文件之中。Verilog HDL语言提供了`include命令用来实现“文件包含”的操作。例如:include “file2.v”.就是将file2.v的全部内容复制插入到该命令出现的地方。

关于文件包含的注意事项(https://www.cnblogs.com/icelyb24/archive/2011/09/29/2195779.html):

a:一个`include命令只能指定一个被包含的文件,如果要包含n个文件,要用n个`include命令。注意下面的写法是非法的`include"aaa.v""bbb.v";

b:'include 命令可以出现在Verilog HDL源程序的任何地方,被包含文件名可以是相对路径名,也可以是绝对路径名。例如'include "parts/count.v"

c:可以将多个`include 命令写在一行,在'include 命令行,只可以出空格喝注释行。例如下面的写法是合法的。`include "fileB" `include "fileC" //include fileB and fileC

d:如果1文件包含文件2,而文件2要用到文件3的内容,则可以在文件1用两个`include 命令分别包含文件2和文件3,而且文件3应出现在文件2之前。

e:在一个被包含文件中又可以包含另一个被包含文件。文件包含是可以嵌套的。

3.`define,parameter,localparam:

a:'define :作用是常用于定义常量可以跨模块,跨文件;所以作用范围是整个工程。【可以跨模块的定义,写在模块名称上面,在整个设计工程都有效。一旦`define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的`define指令,定义的常量可以被其他文件调用,直到遇到`undef】

b:parameter:常用于模块间参数传递,也就是在module内有效的定义;【本module内有效的定义,可用于参数传递;如果在模块内部定义时无法进行参数传递,若在模块名后照下面这样写则可以进行传递】

//定义
module video_in
    #(
        parameter MEM_DATA_BITS = 64,
        parameter INTERLACE     =1)
    (
        input clk,
        input rst_n,
        
        output burst_finsh    
    );

//使用-》调用此模块的时候可以向端口信号传递一样进行参数传递
video_in
    #( .MEM_DATA_BITS(64),
       .INTERLACE(1)
     )
    u_video_in(
    .clk(clk_50m),
    .rst_n(rst_n),
    
    .burst_finsh(burst_finsh)
);

c:localparam:常用于状态机的参数定义;本module内有效的定义,不可用于参数传递;localparam cannot be used within the module port paramter list.【本module内有效的定义,不可用于参数传递;一般情况下,状态机的参数都是用localparam的】

localparam BURST_LEN              =10'd64; //一次写操作数据长度

localparam BURST_IDLE             =3'd0;   //状态机状态:空闲
localparam BURST_ONE_LINE_START   =3'd1;   //状态机状态:视频数据一行写开始
localparam BURSTING               =3'd2;   //状态机状态:正在处理一次ddr2写操作
localparam BURST_END              =3'd3;   //状态机状态:一次ddr2写操作完成
localparam BURST_ONE_LINE_END     =3'd4;   //状态机状态:视频数据一行写完成

reg[2:0] burst_state              =3'd0;   //状态机状态:当前状态
reg[2:0] burst_state_next         =3'd0;   //状态机状态:下一个状态

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值