(精)VerilogHDL硬件描述-6——最新.pptVIP

  • 0
  • 0
  • 约4.34千字
  • 约 30页
  • 2017-01-11 发布于湖北
  • 举报
Verilog HDL硬件描述语言 Hardware Description Language(HDL) `define 和`undef 宏定义 `define:用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为: `define 标识符(宏名) 字符串(宏内容) 这种方法使用户能以一个简单的名字代替一个长的字符串,也可以用一个有含义的名字来代替没有含义的数字和符号,因此把这个标识符(名字)称为“宏名”,在编译预处理时将宏名替换成字符串的过程称为“宏展开”。 `define WORDSIZE 8 reg[1:`WORDSIZE] data; //这相当于定义 reg[1:8] data; 注意:宏定义不是Verilog HDL语句,不必在行末加分号。如果加了分号会连分号一起进行置换。 `define 和`undef `undef 指令取消前面定义的宏。 例如: `define WORD 16 //建立一个文本宏替代。 . . . wire [ `WORD : 1] Bus; . . . `undef WORD // 在`undef编译指令后, WORD的宏定义不再有效. 条件编译命令 `ifdef、`else 和`endif 一般情况下,Verilog HDL源程序中所有的行都将参加编译。但是有时希望对其中的一部分内容只有在满足条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足条件时对一组语句进行编译,而当条件不满足是则编译另一部分。 例如: `ifdef WINDOWS parameter WORD_SIZE = 16 `else parameter WORD_SIZE = 32 `endif 在编译过程中,如果已定义了名字为WINDOWS的文本宏,就选择第一种参数声明,否则选择第二种参数说明。 `else 程序指令对于`ifdef 指令是可选的。 “文件包含”处理`include “文件包含”处理是一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。一般形式为: `include “文件名” “文件包含”处理`include 共享任务和函数:在不同模块间共享任务和函数的方法是在文本文件中编写共享任务和函数的定义,然后使用`include编译指令在需要的模块中包含这些定义。 时间尺度 `timescale `timescale命令用来说明跟在该命令后的模块的时间单位和时间精度。 命令的格式如下: `timescale 时间单位/时间精度 时间单位参量用来定义模块中仿真时间和延迟时间的基准单位。 时间精度参量用来声明该模块的仿真时间的精确程度。 时间单位(time_unit) 和时间精度(time_precision) 由值1、10、和100以及单位s、ms、us、ns、ps和fs组成。 例如: `timescale 10ns/1ns 在这个命令之后,模块中所有的时间值都表示是10ns的整数倍。这是因为在`timescale命令中,定义了时间单位是10ns。模块中的延迟时间可表达为带一位小数的实型数,因为 `timescale命令定义时间精度为1ns. 时间尺度 `timescale 在模块test中,所有的时间值应为10ns的整数倍,且以1ns为时间精度。 仿真时刻值按照以下的步骤来计算: 根据时间精度,参数d值被从1.55取整为1.6。 因为时间单位是10ns,时间精度是1ns,所以延迟时间#d作为时间单位的整数倍为16ns。 EDA工具预定在仿真时刻为16ns的时候给寄存器set赋值0(即语句 #d set=0;执行时刻),在仿真时刻为32ns的时候给寄存器set赋值1(即语句 #d set=1;执行时刻)。 有限状态机是由寄存器组和组合逻辑构成的硬件时序电路。 有限状态机的状态可以在同一时钟跳变沿的情况下从一个状态转向另一个状态。 究竟转向哪一状态还是留在原状态不但取决于各个输入值,还取决于当前所在状态。 有限状态机分为Mealy型有限状态机,和Moore型有限状态机。 有限状态机状态编码state定义 定义STATE常量 状态较少情况下(比如4个一下),用onehot方式表示. 比如: STATE0, STATE1, STATE2, STATE3分别用 0001 , 0010 , 0

文档评论(0)

1亿VIP精品文档

相关文档