verilog中include的用法

Verilog  的`include和C语言的include用法是一样一样的,要说区别可能就在于那个点吧。

include一般就是包含一个文件,对于Verilog这个文件里的内容无非是一些参数定义,所以

这里再提几个关键字:`ifdef    `define   `endif(他们都带个点,呵呵)。

他们联合起来使用,确实能让你的程序多样化,就拿彬哥VGA程序说事吧。

首先,你可以新建一个.h文件(可以直接新建一个TXT,让后将后缀换成.h)其实这个后缀

没所谓,.v也是可以的,我觉得,写成.h更能体现出这个文件的意义。

lcd_para.h中内容如下:

//    640 * 480 
`ifdef       VGA_640_480_60FPS_25MHz 
`define    H_FRONT    11‘d16 
`define    H_SYNC     11‘d96  
`define    H_BACK     11‘d48  
`define    H_DISP    11‘d640 
`define    H_TOTAL    11‘d800     
                     
`define    V_FRONT    11‘d10  
`define    V_SYNC     11‘d2   
`define    V_BACK     11‘d33 
`define    V_DISP     11‘d480   
`define    V_TOTAL    11‘d525 
`endif

//--------------------------------- 
//    800 * 600 
`ifdef       VGA_800_600_72FPS_50MHz 
`define    H_FRONT    11‘d56 
`define    H_SYNC     11‘d120  
`define    H_BACK     11‘d64  
`define    H_DISP     11‘d800 
`define    H_TOTAL    11‘d1040 
                    
`define    V_FRONT    11‘d37  
`define    V_SYNC     11‘d6   
`define    V_BACK     11‘d23  
`define    V_DISP     11‘d600  
`define    V_TOTAL    11‘d666 
`endif

//---------------------------------

`define    H_Start    (`H_SYNC + `H_BACK) 
`define    H_END     (`H_SYNC + `H_BACK + `H_DISP)

`define    V_Start    (`V_SYNC + `V_BACK) 
`define    V_END     (`V_SYNC + `V_BACK + `V_DISP)

这里为VGA定义了两种分辨率,通过

`define   VGA_800_600_60MHz VGA_640_480_60FPS_25MHz 或

`define   VGA_800_600_72FPS_50MHz

来觉得使用哪种分辨率。

比如,我的xxx.v文件想调用lcd_para.h,xxx.v我可以写到:

`define    VGA_800_600_60MHz  //这句要放在"lcd_para.v"的上面,不然编译不通过 
`include "lcd_para.h"

那么xxx.v文件中就可以用lcd_para.h中的参数了,且对应是VGA_800_600_60MHz下

的参数。

其次`include "lcd_para.h" 这个路径也有一点讲究,xxx.v作为引用lcd_para.h的文件

它和lcd_para.h在同一文件夹下才能怎么写,就是相对路径一说了。也就是以xxx.v

为当前路径去引索lcd_para.h文件的位子。所以如果他们不再一个文件夹那么请写出

更详细(正确)的路径。顺便说一句,lcd_para.h添不添加到工程是无所谓的,只要路径

对了即可,当然我还是建立添加到工程,且和.v文件放在同一文件夹下,以方便观察和管理。

时间: 2024-10-12 04:57:55

verilog中include的用法的相关文章

verilog中defparam的用法 (verilog调用底层模块(只改变)参数的传递)

当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1)defparam 重定义参数 语法:defparam path_name = value ; 低层模块的参数可以通过层次路径名重新定义,如下例: module top ( .....)input....;output....;defparam U1 . Para1 = 10 ;M1 U1 (..........);endmodulemodule M1(....);

verilog中defparam的用法

有机会看下defparam的语法了:如下: 当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1)defparam 重定义参数 语法:defparam path_name = value ; 低层模块的参数可以通过层次路径名重新定义,如下例: module top ( .....)input....;output....;defparam U1 . Para1 = 10 ;M1 U1 (..........);end

verilog中的function用法与例子

转http://www.cnblogs.com/hfyfpga/p/4280946.html 函数的功能和任务的功能类似,但二者还存在很大的不同.在 Verilog HDL 语法中也存在函数的定义和调用. 1.函数的定义 函数通过关键词 function 和 endfunction 定义,不允许输出端口声明(包括输出和双向端口) ,但可以有多个输入端口.函数定义的语法如下: function [range] function_id;    input_declaration    other_d

verilog中的task用法

任务就是一段封装在“task-endtask”之间的程序.任务是通过调用来执行的,而且只有在调用时才执行,如果定义了任务,但是在整个过程中都没有调用它,那么这个任务是不会执行的.调用某个任务时可能需要它处理某些数据并返回操作结果,所以任务应当有接收数据的输入端和返回数据的输出端.另外,任务可以彼此调用,而且任务内还可以调用函数.  1.任务定义 任务定义的形式如下: task task_id;     [declaration]     procedural_statement endtask 

verilog中task的用法

任务就是一段封装在“task-endtask”之间的程序.任务是通过调用来执行的,而且只有在调用时才执行,如果定义了任务,但是在整个过程中都没有调用它,那么这个任务是不会执行的.调用某个任务时可能需要它处理某些数据并返回操作结果,所以任务应当有接收数据的输入端和返回数据的输出端.另外,任务可以彼此调用,而且任务内还可以调用函数.  1.任务定义 任务定义的形式如下: task task_id;     [declaration]     procedural_statement endtask 

Verilog中generate语句的用法

在Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计提供了方便,generate语句一般在循环和条件语句中使用,为此,Verilog-2001增加了四个关键字generate,endgenerate, genvar, localparam,genvar是一个新增的数据类型,用在generate的循环中的标尺变量必须定义为gnevar类型. 首先设计一个1bit位宽的buffer_1,这里有几点

经验积累thinkphp中的include的用法,还有数据库中的汉字存入变成????的问题

在新公司上班第二天,总结一些在做项目时遇到的问题,大大小小的问题我都会总结出来,一些实用性强的代码和用法我也会公布出来. 现在先总结两个小问题,待会回家有时间再发点干货. 显示thinkphp中的include的用法,其实很简单,就是所有tpl下的模板文件,都相当于是和入口文件同级. 也就是说想包含tpl/default/left.html 就写成<?php include './app/Tpl/default/left.html'?> 其中的app是项目名称,你的名称是什么就该什么. 数据库

JSP中include指令和include动作区别

首先 <%@ include file=" "%>:为指令元素 <jsp:include page=" " flush="true"/>:为 动作元素 先说指令元素: include指令元素读入指定页面的内容.并把这些内容和原来的页面融合到一起. 然后经过两个阶段: 1.将jsp翻译成 servlet  2.servlet 翻译成 .class文件 这样的话,在被引入文件中请不要加入 contentype 的属性 ,因为j

PHP中include和require的区别详解

1.概要  require()语句的性能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估:而对于require()来说,文件只处理一次(实际上,文件内容替换require()语句).这就意味着如果可能执行多次的代码,则使用require()效率比较高.另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用include()语句. require的使用方法如:require("myfil