FPGA之道(36)Verilog中的编译指令

举报
李锐博恩 发表于 2021/07/15 03:30:27 2021/07/15
【摘要】 文章目录 前言Verilog中的编译指令define指令timescale指令inlcude指令 前言 本文摘自《FPGA之道》,一起来了解下Verilog中的编译指令。 Verilog中的编译指令 为了方便我们对程序编译、仿真时的控制,Verilog提供了很多编译指令,这里主要介绍几种比较常用的编译指令。注意,编译指令都不需要在结尾加类似分号这...

前言

本文摘自《FPGA之道》,一起来了解下Verilog中的编译指令。

Verilog中的编译指令

为了方便我们对程序编译、仿真时的控制,Verilog提供了很多编译指令,这里主要介绍几种比较常用的编译指令。注意,编译指令都不需要在结尾加类似分号这样的结束符号,只需要换行即可。

define指令

define指令有四种语法:

语法一:`define <name> <string>

  
 
  • 1

它可以用来定义参数,功能和parameter类似,例如:

`define WIDTH 8
reg [`WIDTH-1:0] data;

  
 
  • 1
  • 2
语法二:`define <name>

  
 
  • 1

它只是表示定义了一个名为的变量,具体用法参看语法四。
语法三:

	`ifndef <define_name> <statements>;
`endif	

  
 
  • 1
  • 2
  • 3

该语法表示,如果名为<define_name>的变量被定义了,那么就将在编译的时候将的内容包含进来,否则不编译这部分内容。我们可以看出条件编译指令的作用跟条件生成语句比较类似,具体用法参看语法四。
语法四:

`ifdef <define_name0>
<statements>;
`elsif <define_name1>
<statements>;
	<other branchs>
`else
<statements>;
`endif

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
该语法是条件编译语法的完全形式,用法举例如下:

  
 
  • 1
	`define AND
`ifdef AND
		assign c = a & b;
`elsif OR
		assign c = a | b;
`else
		assign c = a;
`endif

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

由于AND已经被定义,那么c将被综合为a和b的按位与。如果以后设计需要该为用或门,则将第一行的编译指令改为如下即可:
`define OR
与条件生成语句一样,每次修改后必须重新编译才能生效。

timescale指令

时标指令是用来定义时间单位和时间精度的,它一般用于仿真和时序分析中,语法如下:

`timescale <number0> <unit0> / <number1> <unit1>

  
 
  • 1

其中 表示在后续程序中,数值每增加1所对应的时间增加量; 表示了小数部分所能描述的精度。为了防止不必要的混淆,Verilog规定的值只能是1、10或者100。举例如下:

	`timescale 10ns / 1ns
	a = 1'b0; #1; a = 1'b1; #0.5; a = 1'b0; #0.3;
a = 1'b1;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

那么上述程序的执行结果如下:

在这里插入图片描述

inlcude指令

包含指令对于复杂工程设计来说很有用,有了这个指令,我们就可以在一个文件中定义好工程系统中需要用到的参数、函数、任务等等,然后在需要使用这些资源的的文件中通过include命令将它们包含进来。这种做法非常像C语言中的头文件,因此我们一般都将被include的文件以“*.vh”命名,即verilog header。包含指令的语法如下:

	`include  "<file_name>"
	举例如下:
	`include "para.vh" 
`include "../data/para.vh" 
`include "c:/data/para.vh"

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

上述三条语句分别对应同一目录下的引用,相对路径引用和绝对路径引用。

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/104305200

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。