①描述体的结合,      ②结构级描述

1、在采取verilog描述电路时,既可以举行行为级的叙述,也足以开展结构级的叙说。

1、在使用verilog描述电路时,既可以开展行为级的叙说,也能够开展结构级的讲述。

verilog
/* Verilog 学习笔记 – 1 */

      ①行为级描述:侧重对模块行为功用的空洞描述。

      ①行为级描述:侧重对模块行为效率的架空描述。

// @`13
// 2017年6月6日

      ②结构级描述:侧重对模块内部结构实现的有血有肉讲述。

      ②结构级描述:侧重对模块内部结构实现的切实可行讲述。

/* 1.1 什么是Verilog HDL? */
//———————————————————————
// Verilog HDL (Hardware Description Language)
是一种硬件描述语言,可以在算法级、
// 门级到开关级的有余虚无设计层次上对数字系统建模。
//
它可以描述设计的表现特征、数据流特性、结构重组以及富含响应监控和计划性验证方面
// 的时延和波形暴发体制。其它,verilog提供了编程语言接口,
//
通过该接口用户可以在模拟、验证期间从表面访问计划,包括模拟的实际控制和周转。
// Verilog
不仅定义了语法,而且对每个语法结构都定义了显著的模拟、仿真语义。因而,
// 用这种语言编写的模子可以利用 Verilog 仿真器举行表明。
// Verilog
从C语言中继续了多种操作符和布局,所以从构造上看双方有众多相似之处。
// Verilog HDL是你在支付 FPGA 、ASIC 时使用的言语,跟开发软件使用
C语言一个道理。

2、行为级描述

2、行为级描述

/* 1.2 Verilog的历史 */
//———————————————————————
// Verilog HDL是由GDA(Gateway Design Automation)公司
// 的PhilMoorby在1983年末首创的,
//
最初只计划了一个冒牌与认证工具,之后又陆续开发了有关的故障模拟与时序分析工具。
// 1985年Moorby推出它的第六个商用仿真器Verilog-XL,拿到了了不起的功成名就,
// 从而使得 Verilog HDL
迅速得到推广应用。1989年CADENCE集团收购了GDA公司,
// 使得 Verilog HDL成为了该商家的分别专利。
// 1990年CADENCE集团公开刊登了Verilog HDL,
// 并创造LVI社团以推动Verilog HDL成为IEEE标准,即IEEE Standard
1364-1995.
// Verilog-1995后的版本是Verilog 2001,称作Verilog 2.0。
// SystemVerilog 是近几年提升起来的,称作 Verilog 3.0.
// 本书讲述的是Verilog-1995。对于大多数支付FPGA的人来说,
// 领会Verilog-1995是必须的,因为大部分已有规划都是按照Verilog 1995的。

     ①描述体的组合

     ①描述体的组成

/* 1.3 Verilog的严重性讲述能力 */
//———————————————————————
// Verilog
是极品的寄存器传输级设计语言和门级描述语言,这是Verilog成功的常有。
// 上边列出的是 Verilog 硬件描述语言的机要力量(不耐烦的读者可以略过):

      ※由三个互相运行的经过块组成。

      ※由五个互相运行的过程块组成。

// (1)基本逻辑门,
// 例如 and、
// or 和
// nand 等都内置在语言中。

      ※过程块由过程语句(initial和always)和块语句(串行块begin-end和彼此块fork-join)组成。

      ※过程块由过程语句(initial和always)和块语句(串行块begin-end和相互块fork-join)组成。

//
(2)用户定义原语(UDP)创立的八面玲珑。用户定义的原语既可以是整合逻辑原语,
// 也得以是时序逻辑原语。

      ※块语句由过程赋值语句和高等程序语句构成。

      ※块语句由过程赋值语句和高档程序语句构成。

// (3)开关级基本协会模型,例如 pmos 和 nmos 等也被内置在语言中。

            ◇过程赋值语句:阻塞与非阻塞式赋值。

            ◇过程赋值语句:阻塞与非阻塞式赋值。

//
(4)提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。

            ◇高级程序语句:C语言如if-else、case、while、wait等组合。

            ◇高级程序语句:C语言如if-else、case、while、wait等整合。

// (5)可应用二种不同模式或混合格局对规划建模。那么些主意包括:
// 行为描述格局—使用过程化结构建模;
// 数据流情势—使用连续赋值语句格局建模;
// 结构化方式—使用门和模块实例语句描述建模。

     ②行为级描述模块的组合图

     ②行为级描述模块的组成图

// (6)Verilog HDL 中有两类数据类型:
// 线网数据类型和寄存器数据类型。
// 线网类型表示构件间的情理连线,而寄存器类型表示抽象的数额存储元件。

    图片 1

    图片 2

// (7)可以描述层次设计,可利用模块实例结构描述任何层次。

 Verilog Code 

 Verilog Code 

// (8)设计的范畴足以是即兴的;语言不对统筹的规模(大小)施加任何限制。
// (9)Verilog HDL 不再是某些集团的专有语言而是 IEEE 标准。
// (10)人和机具都可观望 Verilog 语言,因此它可用作 EDA
的工具和设计者之间的竞相语言。
// (11)Verilog HDL
语言的叙说能力能够由此动用编程语言接口(PLI)机制更加扩大。
// PLI 是同意外部函数访问 Verilog
模块内信息、允许设计者与模拟器交互的例程集合。
//
(12)设计可以在四个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,
// 包括过程和队列级。
// (13)可以拔取内置开关级原语在开关级对设计完全建模。
//
(14)同一语言可用于转移模拟激励和指定测试的认证约束原则,例如输入值的指定。
// (15)Verilog HDL 可以监督模拟验证的推行,
//
模拟验证执行进程中规划的值能够被监控和显示。这一个值也可以用于与期望值相比,
// 在不般配的状况下,打印报告信息。
// (16)在行为级描述中,Verilog HDL 不仅可以在 RTL 级上拓展设计描述,
// 而且可以在系统结构级描述及其算法级行为上开展设计描述。
// (17)可以使用门和模块实例化语句在结构级举办布局描述。
// (18)Verilog HDL 还兼具内置逻辑函数,例如
// &(按位与)和
// |(按位或)。

//例:全加器行为级描述
module fadder(sum,a,b,cin);//模块定义
output sum,cout;//端口声明
input a,b,cin;//端口讲明
reg sum,cout;//数据类型阐明

//例:全加器行为级描述
module fadder(sum,a,b,cin);//模块定义
output sum,cout;//端口评释
input a,b,cin;//端口注脚
reg sum,cout;//数据类型声明

// (19)对高档编程语言结构,例如
// 条件语句、
// 境况语句和
// 循环语句, 语言中都能够应用。

always @(a or b or cin)//过程语句
   
    begin//高级程序语句
      sum=a^b^cin;//过程赋值语句
      cout=(a&b)|(b&cin)|(a&cin);//过程赋值语句
    end
endmodule//结束行

always @(a or b or cin)//过程语句
   
    begin//高级程序语句
      sum=a^b^cin;//过程赋值语句
      cout=(a&b)|(b&cin)|(a&cin);//过程赋值语句
    end
endmodule//结束行

// (20)可以显式地对出现和定时举办建模。
// (21)提供强有力的公文读写能力。
//
(22)语言在特定情景下是非显然的,即在不同的模拟器上模型可以暴发不同的结果;
// 例如,事件队列上的轩然大波顺序在标准中并未概念。

 

 

/* 2.1 Verilog-模块 */
// ==============================================
// 模块是Verilog
的大旨描述单位,用于描述某个设计的功力或协会及其与另外模块通信的外部端口。
// 一个规划的协会可应用 开关级原语、 门级原语和
用户定义的原语情势讲述;
// 设计的数量流行为运用 连续赋值语句举办描述;
时序行为使用过程结构描述。
// 一个模块可以在另一个模块中利用。

3、结构级描述

3、结构级描述

// 一个模块的基本语法如下:
module module_name(port_list) ;
// …
endmodule
[/** 注意最终有个支行 */]

    ①描述体的组合

    ①描述体的构成

// 表明有些用来定义不同的项,例如模块描述中行使的寄存器和参数。
// 语句定义设计的机能和布局。
// 说明部分和话语能够散布在模块中的任哪里方;然则变量、寄存器、
// 线网和参数等的辨证有些必须在行使前出现。
// 为了使模块描述清晰和具备可以的可读性,
// 最好将有所的验证部分放在语句前。本书中的所有实例都遵守这一正经。

        ※门级描述:对由基本逻辑门(and、or、not、xor等)互连而成的拥有自然效率的电路模块的叙说。

        ※门级描述:对由中央逻辑门(and、or、not、xor等)互连而成的富有自然功用的电路模块的讲述。

// Demo 一个半加器电路的模块。
module HalfAdder (A, B, Sum, Carry) ;

        ※结构级描述:将上述逻辑门用一个个功效模块替换,就展开到一般意义的结构级描述。

        ※结构级描述:将上述逻辑门用一个个效用模块替换,就展开到一般意义的结构级描述。

input A, B; //输入
output Sum, Carry;//输出

    ②结构级描述模块

    ②结构级描述模块

assign #2 Sum = A ^ B;//赋值
assign #5 Carry = A & B;//赋值

      例:全加器门级

      例:全加器门级

endmodule

      图片 3

      图片 4

// 模块的名字是 哈尔(Hal)fAdder。
// 模块有4个端口:
// 五个输入端口A和B,
// 六个出口端口Sum和Carry。
// // 由于尚未定义端口的位数, 所有端口大小都为1位;
// // 同时, 由于尚未各端口的数据类型表达, 这两个端口都是 [线网]
数据类型。
// // 模块包含两条描述半加器数据流行为的总是赋值语句。
// // 从这种意义上讲,这多少个话语在模块中冒出的逐条无关首要,这多少个言辞是
[并发] 的。
// 每条语句的实践顺序倚重于爆发在变量A和B上的风波。

 Verilog Code 

 Verilog Code 

// 在模块中,可用下述模式讲述一个企划:
// 1) 数据流格局;
// 2) 行为艺术;
// 3) 结构形式;
// 4) 上述描述格局的混合。

//例:全加器结构级描述
module fadder(sum,a,b,cin);//模块定义
    output sum,cout;//端口阐明
    input a,b,cin;//端口注明
    /*******门级互连*****/
    xor U0(sum,a,b,cin);
    and U1(net1,a,b);
    and U2(net2,a,cin);
    and U3(net3,b,cin);
    or U4(cout,net1,net2,net3);
endmodule//结束行

//例:全加器结构级描述
module fadder(sum,a,b,cin);//模块定义
    output sum,cout;//端口讲明
    input a,b,cin;//端口阐明
    /*******门级互连*****/
    xor U0(sum,a,b,cin);
    and U1(net1,a,b);
    and U2(net2,a,cin);
    and U3(net3,b,cin);
    or U4(cout,net1,net2,net3);
endmodule//结束行

/* 2.2 Verilog-时延 */

//

// Verilog
HDL模型中的所有时延都依据时间单位定义。下面是带时延的连年赋值语句实例。

assign #2 Sum = A ^ B;
// # 2指2个刻钟单位。

//
使用编译指令将时刻单位与物理时间相关联。这样的编译器指令需在模块描述前定义,
// 如下所示:
`timescale 1ns /100ps

// 此语句表明时延时间单位为1 ns 并且时间精度为100ps
// (时间精度是指具有的时延必须被限制在0.1ns内)。
// 假如此编译器指令所在的模块包含上边的总是赋值语句,
// #2 代表2ns。要是没有这样的编译器指令,
// Verilog HDL 模拟器会指定一个缺省时间单位。
// IEEE Verilog HDL 1995 标准中绝非确定缺省时间单位。

// 注意:这里讲的是IEEE Verilog 1995的语法,
// 我们将在后文讲述IEEE Verilog 2001与1995的两样。

/* 2.3 Verilog-assign语句 */

//

//
本节讲述连续赋值语句。在连年赋值语句中,某个值被派遣给线网变量。连续赋值语句的语法为:

assign [delay] LHS_n e t = RHS_expression;

//右侧表明式使用的
[/* 操作数无论啥时候暴发变化 , 左边表达式都再也统计 , /]
//并且在指定的时延后变化值被给予右边表达式的线网变量。
// 时延定义了右手表明式操作数变化与赋值给左侧表明式之间的持续时间。
[/
假诺没有概念时延值, 缺省时延为0。 */]

// DEMO2 解码器电路
`timescale 1ns/ 1ns
module Decoder2x4 (A, B, EN, Z);

input A, B, EN;
output [0 :3] Z;
wire Abar, Bbar;

assign #1 Abar = ~ A; // 语句1。
assign #1 Bbar = ~ B; // 语句2。
assign #2 Z[0] = ~ (Abar & Bbar & EN ) ; // 语句3。
assign #2 Z[1] = ~ (Abar & B & EN) ; // 语句4。
assign #2 Z[2] = ~ (A & Bbar & EN) ; // 语句5。
assign #2 Z[3] = ~ ( A & B & EN) ; // 语句6。

endmodule

// 解释
[预编译指令]
// 以反引号“ ”开始的第一条语句是编译器指令, // 编译器指令 timescale
将模块中兼有时延的单位设置为1 ns,时间精度为1 ns。
// 例如,在接连赋值语句中时延值# 1和# 2分别对应时延1ns和2ns。
[网线型数据类型]
//
模块Decoder2x4有3个输入端口和1个4位输出端口。线网类型表明了多少个连线型变量
Abar
// 和 Bbar (连线类型是线网类型的一种)。另外,模块包含6个连续赋值语句。
// 当E N在第5 ns变化时,语句3、4、5和6执行。
// 这是因为E N是那一个连续赋值语句中右侧表明式的操作数。
// Z[ 0 ]在第7 ns时被赋予新值0。当A在第15 ns变化时,
语句1、5和6推行。
// 执行语句5和6不影响Z[ 0 ]和Z[ 1 ]
// 的取值。执行语句5导致Z[ 2 ]值在第17 ns变为0。
// 执行语句1导致A b a r在第16 ns被另行赋值。由于A b a r
// 的更动,反过来又导致Z[ 0 ]值在第18 n s变为1。
// 请注意连续赋值语句是如何对电路的数目流行为建模的;
// 这种建模情势是隐式而非显式的建模形式。
// 此外,
[总是赋值语句是出新执行的]
// 也就是说各语句的进行顺序与其在叙述中出现的一一无关。

/* 2.4 Verilog-initial语句 */

//

//
initial语句:在假冒伪劣中只举行两回,用于开首化变量,描述一遍性行为,在假冒伪劣时刻0初始实践。
// 下边是initial语句的演示:

`timescale 1ns/1ns

module Test(Pop,Pid);

output Pop,Pid;
reg Pop,Pid;

initial

begin
Pop = 0;//语句1。
Pid = 0;//语句2。
Pop = #5 1;//语句3。
Pid = #3 1;//语句4。
Pop = #6 0;//语句5。
Pid = #2 0;//语句6。
end

endmodule

[nitial语句包含一个梯次过程。]
// 这一相继过程在0ns时开头实施,并且在挨家挨户过程中
[拥有语句全体履行完毕后,initial语句永远挂起。]
// 这一梯次过程包含带有定义语句内时延的分组过程赋值的实例。
// 语句1和2在0ns时举办。第三条语句也在0时刻执行,
// 导致Pop在第5ns时被赋值。语句4在第5ns执行,并且Pid在第8ns被赋值。
// 同样,Pop在14ns被赋值0,Pid在第16ns被赋值0。第6条语句执行后,
// initial语句永远被挂起。第8章将更详尽地上课initial语句。

/* 2.5 Verilog-always语句 */

//

[always语句总是循环执行],
// 或者说此语句再一次执行。只有
[唯有 寄存器类型数据(REG) 可以在这种话语中被赋值]。
// 寄存器类型数据在被赋新值前保障原来值不变。
// 所有的先河化语句和always语句在0时刻现身执行。

// DEMO 1位全加器电路
module FA_Seq(A,B,Cin,Sum,Cou)t;

input A,B,Cin;
output Sum,Cout;
reg Sum,Cout;
reg T1,T2,T3;

always @(A or B or Cin)
begin
Sum = (AB)Cin;
T1 = A&Cin;
T2 = B&Cin;
T3 = A&B;

Cout=(T1|T2)|T3;
end

endmodule

// 模块FA_Seq有六个输入和六个出口。由于Sum、Cout、T1、T2和T3
//
在always语句中被赋值,它们被证实为reg类型(reg是寄存器数据类型的一种)。
[always语句中有一个与事件控制(紧跟在字符@前边的表达式)]。
//
这意味只要A、B或Cin上发出事件,即A、B或Cin之一的值暴发变化,顺序过程就推行。

[相关联的各样过程(begin-end对)。]
// 在挨家挨户过程中的语句顺序执行,并且在依次过程举行完毕后被挂起。
// 顺序过程进行到位后,always语句再一次等待A、B或Cin上发出的事件。
// 在各种过程中出现的口舌是经过赋值模块化的实例。
//
模块化过程赋值在下一条语句执行前完成实施。过程赋值可以有一个可选的时延。

[时延可以分开为二种档次]:
// 1)语句间时延: 这是时延语句执行的时延。
// 2)语句内时延: 这是右手表明式数值总结与右侧表明式赋值间的时延。

// 下面是语句间时延的演示:

Sum = (AB)Cin;

4 T1 = A&Cin;

// 在第二条语句中的时延规定赋值延迟4个时刻单位推行。
// 就是说,在率先条语句执行后等候4个时刻单位,然后实施第二条语句。

// 下面是语句内时延的演示。

Sum= #3 (AB)Cin;
//
这一个赋值中的时延意味着首先总结右侧表明式的值,等待3个刻钟单位,然后赋值给Sum。

/* 2.6 Verilog的结构化描述情势(???) */
// ===============================

// 在VerilogHDL中可使用如下模式讲述结构:
// 1)内置门原语(在门级);
// 2)开关级原语(在晶体管级);
// 3)用户定义的原语(在门级);
// 4)模块实例(创制层次结构)。

//
在这一实例中,模块包含门的实例语句,也就是说包含内置门xor、and和or的实例语句。
// 门实例由线网类型变量S1、T1、T2和T3互连。由于尚未点名的逐条,
//
门实例语句可以以此外顺序出现;图中显得了纯结构;xor、and和or是内置门原语;
// X1、X2、A1等是实例名称。紧跟在各类门后的信号列表是它的互连;
// 列表中的第一个是门输出,余下的是输入。
// 例如,S1与xor门实例X1的输出连接,而A和B与实例X1的输入连接。

// 4位全加器的布局描述模式。
module FourBitFA(FA,FB,FCin,FSum,FCout);

parameter SIZE=4;

input [SIZE:1]FA,FB;
output [SIZE:1]FSum
input FCin;
input FCout;

wire [1:SIZE-1]FTemp;

FA_Str

FA1(.A(FA[1]),.B(FB[1]),.Cin(FCin),.Sum(FSum[1]),.Cout(FTemp[2])),
FA2(.A(FA[2]),.B(FB[2]),.Cin(FTemp[1]),.Sum(FSum[2]),.Cout(FTemp[2])),
FA3(FA[3],FB[3],FTemp[2],FSum[3],FTemp[3],
FA4(FA[4],FB[4],FTemp[3],FSum[4],FCout);

endmodule

//在这一实例中,模块实例用于建模4位全加器。在模块实例语句中,
//
端口足以与名称或职务关系。前多少个实例FA1和FA2使用命名关联形式,也就是说,
// 端口的称号和它总是的线网被显式描述
[(每一个的款式都为“.port_name(net_name))]
//
最终两个实例语句,实例FA3和FA4使用地方关系格局将端口与线网关联。这里提到的逐条很重点,
// 例如,在实例FA4中,第一个FA[4]与FA_Str的端口A连接,
// 第二个FB[4]与FA_Str的端口B连接,余下的因而类推。

/* 2.7 Verilog-混合设计描述情势 */
// ===============================

// 在模块中,结构的和作为的协会可以肆意混合。也
// 就是说,模块描述中可以蕴涵
// 实例化的门、
// 模块实例化语句、
// 连续赋值语句
// 以及always语句和initial语句的搅和。
// 它们之间可以相互包含。来自always语句和initial语句
[难忘只有寄存器类型数据能够在这二种语句中赋值]
//的值能够驱动门或开关,而来自于门或连续赋值语句(只可以驱动线网)的值能
// 够反过来用于触发always语句和initial语句。

// DEMO 混合设计方法的1位全加器实例。

module FA_Mix (A, B, Cin, Sum, Cout);

input A,B, Cin;
output Sum, Cout;

reg Cout;
reg T1, T2, T3;

wire S1;
xor X1(S1, A, B); // 门实例语句。

always @( A or B or Cin )

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

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

endmodule

//
只要A或B上有事件暴发,门实例语句即被实施。只要A、B或Cin上有事件时有发生,
// 就执行always 语句,并且只要S1或Cin上有事件时有暴发,就推行连续赋值语句。

/* 2.8 Verilog-设计模拟 */
// =========================================

// Verilog
HDL不仅提供描述设计的能力,而且提供对鼓舞、控制、存储响应和计划性验证的建模能力。
//
激励和操纵可用先河化语句爆发。验证运行过程中的响应得以视作“变化时保留”或当作选通的数目存储。
//
最后,设计验证可以因而在开端化语句中写入相应的语句自动与希望的响应值相比形成。

// 下边是测试模块Top的例证。该例子测试2 . 3节中讲到的FA Seq模块。

`timescale 1 ns/1 ns

module Top; // 一个模块可以有一个空的端口列表。

reg PA, PB, PCi;
wire PCo, PSum;

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

FA_Seq F1(PA, PB, PCi, PSum, PC)o; // 定位。

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,P B连接受模块FA S e
q的端口B,依此类推。
// 注意开头化语句中接纳了一个f o r循环语句,在PA、P B和P C
i上暴发波形。
// for
循环中的第一条赋值语句用于表示合并的目的。自右向左,右端各对应的位赋给左端的参数。
// 初叶化语句还蕴含有一个事先定义好的系统任务。系统任务$d i s p l a
y将输入以一定的格式打印输出。
// 系统任务$ d i s p l a y调用中的时延控制规定$d i s p l a
y任务在5个时刻单位后进行。
// 这5个时间单位大多代表了逻辑处理时间。
// 即是输入向量的加载至观察到模块在测试条件下输出之间的延迟时间。
// 这一模型中还有其它一个细微差距。P a l在先导化语句内被部分定义。
// 为成功这一效应,先导化语句中的顺序过程( b e g i n – e n
d)必须标记。
// 在这种场所下, ONLY O N C
E是逐一过程标记。假如在挨家挨户过程内并未局部声明的变量,
// 就不需要该标记。测试模块发生的波浪如图2 –
7展现。下边是测试模块暴发的出口。

// DEMO 交叉连接的与非门
// 验证与非门交叉连接构成的R S F F模块的测试模块如图2 – 8所示。

`timescale 10ns / 1ns

module RSFF (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(T Q), .S(T S), .R(T R), .Q b a r(T Q b));

//采纳端口名相关联的连接模式。

// 加载激励:

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(“At time %t ,” , $ t i m e,”TR = %b, TS=%b, TQ=%b, TQb= %b”T,R
, TS, TQ, TQ)b ;

endmodule
/*
RS_FF模块描述了统筹的布局。在门实例语句中接纳门时延;例
如,首个实例语句中的门时延为1个日子单位。
该门时延意味着如若R或Qbar假定在T时刻变化,Q将在T+
1时刻得到总括结果值。
模块Te s t是一个测试模块。测试模块中的R S F
F用实例语句表达其端口用端口名关联形式连接。
在这一模块中有两条开始化语句。第一个起始化语句只简单地暴发T S和T
R上的波形。
这一起首化语句包含带有语句间时延的次序块过程赋值语句。
其次条初步化语句调用系统任务$m o n i t o r。
这一系统任务调用的成效是假诺参数表中指定的变量值发生变化就打印指定的字符串。
*/

相关文章