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

  • 53
  • 0
  • 约1.44万字
  • 约 59页
  • 2017-01-11 发布于湖北
  • 举报
Verilog HDL硬件描述语言 Hardware Description Language(HDL) 阻塞赋值和非阻塞赋值简单原则 时序电路建模时,用非阻塞赋值。 用always块建立组合逻辑模型时,用阻塞赋值。 在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值。 在同一个always块中不要既用非阻塞赋值又用阻塞赋值。 严禁在多个always块中对同一个变量赋值 有时候将简单的组合逻辑和时序逻辑写在一起很方便。当把组合逻辑和时序逻辑写到一个always块中时,应遵从时序逻辑建模的原则,使用非阻塞赋值。 用两个always块实现以上逻辑也是可以的,一个always块是采用阻塞赋值的纯组合部分,另一个是采用非阻塞赋值的纯时序部分。 Verilog语法并没有禁止将阻塞和非阻塞赋值自由地组合在一个always块里。虽然Verilog语法是允许这种写法的,但不建议在可综合模块的编写中采用这种风格。 严禁在多个always块中对同一个变量赋值 如果在一个以上always块中对同一个变量进行多次赋值,那么由于多个always块执行的顺序是随机的,所以仿真时会产生竞争冒险。 task说明语句 task和function说明语句分别用来定义任务和函数。利用任务和函数可以把一个很大的程序模块分解成许多较小的任务和函数,便于理解和调试。 任务和函数往往还是大的程序模块中在不同地点多次用到的相同的程序段。学会使用task和function语句可以简化程序的结构,使程序明白易懂,是编写较大型模块的基本功。 一个任务就像一个过程,它可以从描述的不同位置执行共同的代码段。任务可以包含时序控制,即时延控制,并且任务也能调用其它任务和函数。 task说明语句 定义任务的语法如下: task 任务名; 端口及数据类型声明语句 语句1 语句2 ..... 语句n endtask 任务可以没有或有一个或多个参数。值通过参数传入和传出任务。除输入参数外,任务还能带有输出参数(从任务中返回值)和输入输出参数。任务的定义在模块说明部分中编写。 task说明语句 任务调用 一个任务由任务调用语句调用。任务调用语句给出传入任务的参数值和接收结果的变量值。任务调用语句是过程性语句,可以在always 语句或initial 语句中使用。形式如下: task _ id [ (expr1 , expr2 , . . . ,exprN) ] ; 任务调用语句中参数列表必须与任务定义中的输入、输出和输入输出参数说明的顺序匹配。 任务调用既可以表达组合逻辑,也可以表达时序逻辑,这取决于任务调用出现的上下文环境。 综合系统通过把调用的任务直接插入其余代码中实现任务调用,事实上并未将任务调用作为一个独立的结构层次来处理。 任务调用1:组合逻辑的例子 任务调用 任务调用2:时序逻辑的例子 三态输出驱动器 双向(inout)驱动器 只读存储器ROM RAM RAM建模 测试平台-Test Bench 测试平台是验证电路的工作状态是否正确的测试用模块。 测试平台的作用是对电路的输入信号加上测试图形,并通过观察输出信号来验证电路是否正常工作。 Verilog HDL不仅提供描述设计的能力,而且提供对激励、控制、存储响应和设计验证的建模能力。 测试平台-Test Bench 电路仿真所需要的数据 ㈠被测电路的HDL描述 。 ㈡ 测试平台的HDL描述 HDL仿真器 将测试平台中描述的激励信号按照所定时间提供给被测电路。 对被测电路进行仿真。 将仿真后被测电路产生的输出信号以部波形、数据或文字的方式表示出来。 将响应输出与期望值进行比较。 波形产生 使用initial语句: 波形产生 波形产生 波形产生 波形产生 波形产生 波形产生 波形产生 测试平台-Test Bench `timescale 1ns/1ns module Top; reg PA, PB, PCi; wire PCo, PSum; FA_RTL F1(PA, PB, PCi, PSum, PCo); initial begin: ONLY_ONCE reg [2:0] Pal; for (Pal = 0; Pal =3’b111; Pal = Pal + 1) Begin {PA, P

文档评论(0)

1亿VIP精品文档

相关文档