cpld的verilog学习(6)

2019-09-02 19:04

2. 基数表示法

这种形式的整数格式为: [size ] 'base value size

定义以位计的常量的位长;base为o或O(表示八进制),b或B(表示二进制),d或D(表示十进制),h或H(表示十六进制)之一;value是基于base的值的数字序列。值x和z以及十六进制中的a到f不区分大小写。

下面是一些具体实例: 5'O37 5位八进制数 4'D2 4位十进制数 4'B1x_01 4位二进制数

7'Hx 7位x(扩展的x), 即xxxxxxx 4'hZ 4位z(扩展的z) , 即zzzz 4'd-4 非法:数值不能为负

8'h 2 A 在位长和字符之间,以及基数和数值之间允许出现空格 3'b001 非法: ` 和基数b之间不允许出现空格 (2+3)'b10 非法:位长不能够为表达式

注意,x(或z)在十六进制值中代表4位x(或z),在八进制中代表3位x(或z),在二进制中代表1位x(或z)。

基数格式计数形式的数通常为无符号数。这种形式的整型数的长度定义是可选的。如果没有定义一个整数型的长度,数的长度为相应值中定义的位数。下面是两个例子: 'o721 9位八进制数 'hAF 8位十六进制数

如果定义的长度比为常量指定的长度长,通常在左边填0补位。但是如果数最左边一位为x或z,就相应地用x或z在左边补位。例如: 10'b10 左边添0占位, 0000000010 10'bx0x1 左边添x占位,xxxxxxx0x1

如果长度定义得更小,那么最左边的位相应地被截断。例如: 3'b1001_0011与3'b011 相等 5'H0FFF 与5'H1F 相等

?字符在数中可以代替值z在值z被解释为不分大小写的情况下提高可读性(参见第8章)。 3.6.2 实数

实数可以用下列两种形式定义: 1) 十进制计数法;例如 2.0 5.678 11572.12 0.1

2. //非法:小数点两侧必须有1位数字

2) 科学计数法; 这种形式的实数举例如下: 23_5.1e2 其值为23510.0; 忽略下划线 3.6E2 360.0 (e与E相同) 5E-4 0.0005

Verilog语言定义了实数如何隐式地转换为整数。实数通过四舍五入被转换为最相近的整数。 42.446, 42.45 转换为整数42 92.5, 92.699 转换为整数93 -15.62 转换为整数-16 -26.22 转换为整数-26 3.6.3 字符串

字符串是双引号内的字符序列。字符串不能分成多行书写。例如: \ \->HERE\

用8位ASCII值表示的字符可看作是无符号整数。因此字符串是8位ASCII值的序列。为存储字符串“INTERNAL ERROR”,变量需要8*14位。 reg [1 : 8*14] Message; . . .

Message = \

反斜线 (/ ) 用于对确定的特殊字符转义。 /n 换行符 /t 制表符 // 字符/本身 /\字符\

/206 八进制数206对应的字符 3.7 数据类型

Verilog HDL 有两大类数据类型。 1) 线网类型。net type

表示Verilog结构化元件间的物理连线。它的值由驱动元件的值决定,例如连续赋值或门的输出。如果没有驱动元件连接到线网,线网的缺省值为z。

2) 寄存器类型。register

type表示一个抽象的数据存储单元,它只能在always语句和initial语句中被赋值,并且它的值从一个赋值到另一个赋值被保存下来。寄存器类型的变量具有x 的缺省值。 3.7.1 线网类型

线网数据类型包含下述不同种类的线网子类型。 * wire * tri * wor * trior * wand * triand * trireg * tri1 * tri0 * supply0 * supply1

简单的线网类型说明语法为:

net_kind [msb:lsb] net1, net2, . . . , netN; net_kind 是上述线网类型的一种。msb和lsb

是用于定义线网范围的常量表达式;范围定义是可选的;如果没有定义范围,缺省的线网类型为1位。下面是线网类型说明实例。 wire Rdy, Start; //2个1位的连线。 wand [2:0] Addr; //Addr是3位线与。

当一个线网有多个驱动器时,即对一个线网有多个赋值时,不同的线网产生不同的行为。例如, wor Rde; . . .

assign Rde = Blt & Wyl;

. . .

assign Rde = Kbl | Kip;

本例中,Rde有两个驱动源,分别来自于两个连续赋值语句。由于它是线或线网,Rde的有效值由使用驱动源的值(右边表达式的值)的线或(wor)表(参见后面线或网的有关章节)决定。 1. wire和tri线网

用于连接单元的连线是最常见的线网类型。连线与三态线(tri)网语法和语义一致;三态线可以用于描述多个驱动源驱动同一根线的线网类型;并且没有其他特殊的意义。 wire Reset;

wire [3:2] Cla, Pla, Sla; tri [ MSB-1 : LSB +1] Art;

如果多个驱动源驱动一个连线(或三态线网),线网的有效值由下表决定。

wire (或 tri) 0 1 x z 0 0 x x 0 1 x 1 x 1 x x x x x z 0 1 x z

下面是一个具体实例: assign Cla = Pla & Sla; . . .

assign Cla = Pla ^ Sla;

在这个实例中,Cla有两个驱动源。两个驱动源的值(右侧表达式的值)用于在上表中索引,以便决定Cla的有效值。由于Cla是一个向量,每位的计算是相关的。例如,如果第一个右侧表达式的值为01x,

并且第二个右测表达式的值为11z,那么Cla 的有效值是x1x (第一位0和1在表中索引到x, 第二位1和1在表中索引到1,第三位x 和z在表中索引到x)。 2. wor和trior线网

线或指如果某个驱动源为1,那么线网的值也为1。线或和三态线或(trior)在语法和功能上是一致的。 wor [MSB:LSB] Art;

trior [MAX-1: MIN-1] Rdx, Sdx, Bdx;

如果多个驱动源驱动这类网,网的有效值由下表决定。

wor (或 trior) 0 1 x z 0 0 1 x 0 1 1 1 1 1 x x 1 x x z 0 1 x z

3. wand和triand线网

线与(wand)网指如果某个驱动源为0,那么线网的值为0。线与和三态线与(triand)网在语法和功能上是一致的。 wand [-7 : 0] Dbus; triand Reset, Clk;

如果这类线网存在多个驱动源,线网的有效值由下表决定。 wand (或 triand) 0 1 x z 0 0 0 0 0 1 0 1 x 1 x 0 x x x z 0 1 x z 4. trireg线网

此线网存储数值(类似于寄存器),并且用于电容节点的建模。当三态寄存器(trireg)的所有驱动源都处于高阻态,也就是说,值为z时,三态寄存器线网保存作用在线网上的最后一个值。此外,三态寄存器线网的缺省初始值为x。

trireg [1:8] Dbus, Abus; 5. tri0和tri1线网

这类线网可用于线逻辑的建模,即线网有多于一个驱动源。tri0(tri1)线网的特征是,若无驱动源驱动,它的值为0(tri1的值为1)。 tri0 [-3:3] GndBus; tri1 [0:-5] OtBus, ItBus;

下表显示在多个驱动源情况下tri0或tri1网的有效值。 tri0 (tri1) 0 1 x z 0 0 x x 0 1 x 1 x 1 x x x x x z 0 1 x 0(1)


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

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

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

马上注册会员

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