cpld的verilog学习(4)

2019-09-02 19:04

T3 = A & B; Cout = (T1 T2) T3; end

assign Sum = S1 ^ Cin; // 连续赋值语句。 endmodule

只要A或B上有事件发生,门实例语句即被执行。只要A、B或Cin上有事件发生,就执行always 语句,并且只要S1或Cin上有事件发生,就执行连续赋值语句。 2.7 设计模拟

Verilog HDL不仅提供描述设计的能力,而且提供对激励、控制、存储响应和设计验证的建模能力。激励和控制可用初始化语句产生。验证运行过程中的响应可以作为“变化时保存”或作为选通的数据存储。最后,设计验证可以通过在初始化语句中写入相应的语句自动与期望的响应值比较完成。 下面是测试模块Top的例子。该例子测试2.3节中讲到的FA_Seq模块。 ‘timescale 1ns/1ns

module Top; // 一个模块可以有一个空的端口列表。 reg PA, PB, PCi; wire PCo, PSum;

// 正在测试的实例化模块:

FA_Seq F1(PA, PB, PCi, PSum, PCo); // 定位。 initial

begin: ONLY_ONCE reg [3:0] Pal;

//需要4位, Pal才能取值8。

for (Pal = 0; Pal < 8; Pal = Pal + 1) begin

{PA, PB, PCi} = Pal;

#5 $display (“PA, PB, PCi = %b%b%b”, PA, PB, PCi, “ : : : PCo, PSum=%b%b”, PCo, PSum); end end endmodule

在测试模块描述中使用位置关联方式将模块实例语句中的信号与模块中的端口相连接。也就是说,PA连接到模块FA_Seq的端口A,PB连接到模块FA_Seq的端口B,依此类推。注意初始化语句中使用了一个for循环语句,

在PA、PB和PCi上产生波形。for 循环中的第一条赋值语句用于表示合并的目标。自右向左,右端各相应的位赋给左端的参数。初始化语句还包含有一个预先定义好的系统任务。系统任务$display将输入以特定的格式打印输出。

系统任务$display调用中的时延控制规定$display任务在5个时间单位后执行。这5个时间单位基本上代表了逻辑处理时间。即是输入向量的加载至观察到模块在测试条件下输出之间的延迟时间。

这一模型中还有另外一个细微差别。Pal在初始化语句内被局部定义。为完成这一功能,初始化语句中的顺序过程(begin-end)必须标记。在这种情况下, ONLY_ONCE是顺序过程标记。如果在顺序过程内没有局部声明的变量,就不需要该标记。下面是测试模块产生的输出。 PA, PB, PCi = 000 ::: PCo, PSum = 00 PA, PB, PCi = 001 ::: PCo, PSum = 01 PA, PB, PCi = 010 ::: PCo, PSum = 01 PA, PB, PCi = 011 ::: PCo, PSum = 10 PA, PB, PCi = 100 ::: PCo, PSum = 01 PA, PB, PCi = 101 ::: PCo, PSum = 10 PA, PB, PCi = 110 ::: PCo, PSum = 10 PA, PB, PCi = 111 ::: PCo, PSum = 11

验证与非门交叉连接构成的RS_FF模块的测试模块如下例所示。 `timescale 10ns/1ns

module RS_FF (Q, Qbar, R, S); output Q, Qbar; input R, S;

nand #1 (Q, R, Qbar); nand #1 (Qbar, S, Q,);

//在门实例语句中,实例名称是可选的。 endmodule module Test; reg TS, TR; wire TQ, TQb;

//测试模块的实例语句:

RS_FF NSTA (.Q(TQ), .S(TS), .R(TR), .Qbar(TQb)); //采用端口名相关联的连接方式。

// 加载激励: initial begin: TR = 0; TS = 0; #5 TS = 1; #5 TS = 0; TR = 1; #5 TS = 1; TR = 0; #5 TS = 0; #5 TR = 1; end

//输出显示: initial

$monitor (\

\endmodule

RS_FF模块描述了设计的结构。在门实例语句中使用门时延;例如,第一个实例语句中的门时延为1个时间单位。该门时延意味着如果R或Qbar假定在T时刻变化,Q将在T+1时刻获得计算结果值。

模块Test是一个测试模块。测试模块中的RS_FF用实例语句说明其端口用端口名关联方式连接。在这一模块中有两条初始化语句。第一个初始化语句只简单地产生TS和TR上的波形。这一初始化语句包含带有语句间时延的程序块过程赋值语句。

第二条初始化语句调用系统任务$monitor。这一系统任务调用的功能是只要参数表中指定的变量值发生变化就打印指定的字符串。下面是测试模块产生的输出。请注意`timescale指令在时延上的影响。 At time 0, TR=0, TS=0, TQ=x, TQb= x At time 10, TR=0, TS=0, TQ=1, TQb= 1 At time 50, TR=0, TS=1, TQ=1, TQb= 1 At time 60, TR=0, TS=1, TQ=1, TQb= 0 At time 100, TR=1, TS=0, TQ=1, TQb= 0 At time 110, TR=1, TS=0, TQ=1, TQb= 1 At time 120, TR=1, TS=0, TQ=0, TQb= 1

At time 150, TR=0, TS=1, TQ=0, TQb= 1 At time 160, TR=0, TS=1, TQ=1, TQb= 1 At time 170, TR=0, TS=1, TQ=1, TQb= 0 At time 200, TR=0, TS=0, TQ=1, TQb= 0 At time 210, TR=0, TS=0, TQ=1, TQb= 1 At time 250, TR=1, TS=0, TQ=1, TQb= 1 At time 260, TR=1, TS=0, TQ=0, TQb= 1 后面的章节将更详细地讲述这些主题。 习题

1. 在数据流描述方式中使用什么语句描述一个设计?

2. 使用`timescale 编译器指令的目的是什么?举出一个实例。 3. 在过程赋值语句中可以定义哪两种时延?请举例详细说明。 4. initial语句与always 语句的关键区别是什么?

5. 为2.3节中描述的模块Decode2x4编写一个测试验证程序。 6. 列出你在Verilog HDL模型中使用的两类赋值语句。 7. 在顺序过程中何时需要定义标记? 8. 找出下面连续赋值语句的错误。 assign Reset = #2 ^ WriteBus; 本章介绍Verilog

HDL的基本要素,包括标识符、注释、数值、编译程序指令、系统任务和系统函数。另外,本章还介绍了Verilog硬件描述语言中的两种数据类型。

3.1 标识符 Verilog

HDL中的标识符(identifier)可以是任意一组字母、数字、$符号和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。以下是标识符的几个例子: Count

COUNT //与Count不同。 _R1_D2 R56_68 FIVE$

转义标识符(escaped identifier )可以在一条标识符中包含任何可打印字符。转义标识符以/

(反斜线)符号开头,以空白结尾(空白可以是一个空格、一个制表字符或换行符)。下面例举了几个转义标识符: /7400 /.*.$ /{******} /~Q

/OutGate 与OutGate相同。

最后这个例子解释了在一条转义标识符中,反斜线和结束空格并不是转义标识符的一部分。也就是说,标识符/OutGate 和标识符OutGate恒等。

Verilog HDL定义了一系列保留字,叫做关键词,它仅用于某些上下文中。

附录A列出了语言中的所有保留字。注意只有小写的关键词才是保留字。例如,标识符always(这是个关键词)与标识符ALWAYS(非关键词)是不同的。

另外,转义标识符与关键词并不完全相同。标识符/initial 与标识符initial(这是个关键词)不同。注意这一约定与那些转义标识符不同。

3.2 注释

在Verilog HDL中有两种形式的注释。 /*第一种形式:可以扩展至 多行 */

//第二种形式:在本行结束。 3.3 格式

Verilog HDL区分大小写。也就是说大小写不同的标识符是不同的。此外,Verilog

HDL是自由格式的,即结构可以跨越多行编写,也可以在一行内编写。白空(新行、制表符和空格)没有特殊意义。下面通过实例解释说明。 initial begin Top = 3' b001; #2 Top = 3' b011; end 和下面的指令一样: initial begin

Top = 3' b001; #2 Top = 3' b011; end


cpld的verilog学习(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:停车设备基础知识培训稿(定稿) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: