首页 > 其他分享 >Verilog语法

Verilog语法

时间:2023-03-28 22:47:29浏览次数:32  
标签:result VGA 语法 编译 Verilog data define

目录

1、整数 integer

  • 整数(正数 0 负数)是一种通用的寄存器数据类型,用于对数量进行操作,整数的默认位宽为宿主机的字的位数,与具体实现有关,最小为32位。
  • reg和integer:reg的寄存器类型变量为无符号数
           integer的寄存器类型变量为有符号数
  • 举例
     integer counter; //作为计数器定义
     initial
       counter = -1;  //将-1存储到计数器中
    

2、函数:关键字 function-----endfunction

举例:

//计算二进制位宽
function integer clogb2 (input integer bit_depth);              
begin                                                           
  for(clogb2 = 0; bit_depth > 0; clogb2 = clogb2 + 1)                   
	    bit_depth = bit_depth >> 1;                                 
  end                                                           
endfunction      

3、关于Verilog的编译指令,使用方式为`keyword

(1)`timescale

用法:`timescale <reference_time_unit>/<time_precision>
说明:<reference_time_unit> (参考时间单位):指定时间和延迟的测量单位。
   <time_precision>(时间精度):指定仿真过程中延迟值进位取整的精度。
   只有1,10,100才是合法的说明时间单位和时间精度的整数。

举例
`timescale 1ns / 1ps
#10      表示延迟10ns
#6.231678   因为精度为1ps,在6.232时赋值语句生效

(2)`define

说明::定义Verilog中的文本宏,类似C语言中的#define
举例

a. 规定子长的文本宏: `define WORD_SIZE 32            //代码中用`WORD_SIZE表示
b. 定义别名:        `define S $stop                 //代码中用`S来代替$stop
c.定义字符串:       `define WORD_REG reg [31:0]     //用`WORD_REG reg 32来定义一个32位的寄存器变量

(3)`include

说明:可以在编译期间将一个Verilog源文件包含在另一个Verilog文件中,作用类似于C语言中的#include结构
举例
可以提前将VGA数据,比如颜色的数据存放在一个源文件中(起名为VGA_Para.v或者VGA_Para.h)
在VGA的driver和display模块可以直接调用这个文件VGA_Para.v

`include "VGA_Para.v"	

module VGA_Dispaly(
	port1,
  port2
    );

endmodule

(4)条件编译`ifdef

说明:条件编译指令可以根据指定条件来生成对应的电路,可以减少电路面积并提高代码的复用性。
用法:在Verilog文件中,条件编译标志可以用`define语句设置。
举例一:有条件的编译模块

`ifdef XOR            //若设置NOR标志,则编译design_xor模块  
module design_xor;
······
endmodule  
`elsif AND           //若设置AND标志,则编译design_and模块
module design_and;
······
endmodule 	
`else                //默认执行design_or模块
module design_or;
······
endmodule 		
`endif
 

举例二:有条件的编译语句

`define	XOR			    //执行该语句
//`define	AND			 
//`define	OR  
 
module test(
	input		i_data_a,
	input		i_data_b,
	output	o_data_result	
);
 
`ifdef XOR
	assign o_data_result = i_data_a ^ i_data_b;	
`elsif AND
	assign o_data_result = i_data_a & i_data_b;	
`else 
	assign o_data_result = i_data_a | i_data_b;		
`endif
 
endmodule

**举例三:ifndef的用法** 它的作用和ifdef 是相反的----当其后的标识符未被定义时,则编译后续的代码段

//`define	XOR       //注释掉,相当于标识符未被定义
 
module test(
	input		i_data_a,
	input		i_data_b,
	output	o_data_result	
);
 
`ifndef XOR                                       
	assign o_data_result = i_data_a ^ i_data_b;	   //XOR未被定义,执行该语句
`else 
	assign o_data_result = i_data_a | i_data_b;		
`endif
 
endmodule

标签:result,VGA,语法,编译,Verilog,data,define
From: https://www.cnblogs.com/zqh1126/p/17267049.html

相关文章

  • 小梅哥课程学习——数码管动态扫描显示的verilog实现(C)
    1//动态数码管扫描,通过这种方式可以节约引脚2//可以使用三八译码器来切换数码管位3//要求每个数码管每20ms都要点亮一次,20/8=2.5ms4//源代码1用的是组合逻......
  • 缺失值处理基础语法
    1、Imputerfromsklearn.preprocessingimportImputerfromsklearn.model_selectionimporttrain_test_splitimportpandasaspdfileName='***/abc.xlsx'df=pd......
  • 使用Map和循环,优化对象扩展语法操作
    在pnpm的一次提交中,优化了针对对象扩展语法的操作...{}。通过如下代码:constallDeps={...projectSnapshot.devDependencies,...projectSnapshot.dependencies......
  • Mysql基本语法学习
    数据库/模式创建createdatabase/schema<数据库/模式名>使用use<数据库/模式名>删除dropdatabase/schema<数据库/模式名>查询所有showdatabase查询当前数据库sel......
  • FPGA Verilog AD7606驱动代码,包含SPI模式读取和并行模式读取两种
    FPGAVerilogAD7606驱动代码,包含SPI模式读取和并行模式读取两种,代码注释详细YID:6928665912784264......
  • FPGA实现和ET1100通信verilog源码。 ethercat从站方案。
    FPGA实现和ET1100通信verilog源码。ethercat从站方案。YYID:34299659977307299......
  • mysql笔记1 基本语法(待完结)
    语法样式总的来说挺像c++的,无论是分号结尾,不强制的缩进还是/**/的注释。不过要注意它并不区分大小写,这很重要语句分类分为四种,定义的、增删改的、查询的、和管权限的。......
  • vscode中emmet语法让行内标签自动换行
    在VSCode中在使用emmet插件生成注入a*5或span*5,生成多个行内标签时,不会自动换行,对块标签则会自动换行,例如:div*5,如何解决行内元素自动换行呢?解决方法如下:1、打开“文件”......
  • go基础语法规则
    前言:go语言基础语法记录正文:1、package package中必须包含一个main的package,并且只能有一个,不然无法编译2、使用import导入包,使用goland会自动导入3、每行的结尾......
  • python基本语法元素
    命名与保留字注:嵩天老师的python课的笔记python语言程序设计(慕课)变量:程序中保存和表示数据的占位符号如:Money=input()#从键盘获取一串字符串后将字符串赋值给Mon......