Verilog中的一些语法和技巧

上传人:cn****1 文档编号:392325285 上传时间:2023-05-26 格式:DOC 页数:30 大小:119KB
返回 下载 相关 举报
Verilog中的一些语法和技巧_第1页
第1页 / 共30页
Verilog中的一些语法和技巧_第2页
第2页 / 共30页
Verilog中的一些语法和技巧_第3页
第3页 / 共30页
Verilog中的一些语法和技巧_第4页
第4页 / 共30页
Verilog中的一些语法和技巧_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《Verilog中的一些语法和技巧》由会员分享,可在线阅读,更多相关《Verilog中的一些语法和技巧(30页珍藏版)》请在金锄头文库上搜索。

1、-1、 .2、 .3、 Reg型的数据类型默认初始值为*。reg型数据可以赋正值也可以赋负值,但是当一个reg型数据是一个表达式的操作数的时候,他的值被当做无符号数及正值。4、 在数据类型中?和Z均表示高阻态。5、 Reg型只表示被定义的信号将用在always模块,并不是说reg型一定是存放器或触发器的输出。虽然reg型信号常常是存放器或触发器的输出但是并不一定总是这样。6、 Verilog语言中没有多维数组的存在。Memory型数据类型是通过扩展reg型数据的弟子和围来生成的。其格式如下regn-1:0存储器名m-1:0;7、 在除法和取余的运算中结果的符号和第一个操作数的符号位是一样的。8

2、、 不同长度的数据进展运算:两个长度不同的数据进展位运算时,系统会自动地将两者按有端对齐,位数少的操作数会在相应的高位用0填满以便连个操作数抚慰进展操作。9、 = = =与!= = =和= =与!= =的区别:后者称为逻辑等是运算符,其结果是2个操作数的值决定的。由于操作书中*些位可能不定值*和高阻态z结果可能是不定值*。而 = = =和!= = =运算符对操作数的比拟时对*些位的高阻态z和不定值*也进展比拟,两个操作数必须完全一致,其结果才是1,否则是0.10、 非阻塞和阻塞赋值方式:非阻塞赋值方式如a=b上面语句所赋得变量值不能立即被下面语句所用,2快完毕后才能完成这次赋值操作 3在编写克

3、综合的时序逻辑模块时这是最常用的赋值方法。 阻塞赋值如a=b 赋值语句执行完后,块才完毕 2 b的值在赋值语句完成后立即执行 3在时序逻辑使用中,可能产生意想不到的结果。11、 模块的描述方式:(RTL为存放器传输级描述)1数据流描述方式:数据流行描述主要用来描述组合功能,具体用assign连续赋值语句来实现。分为两种a、显式连续赋值语句;连线型变量类型连线型变量为快连线型变量名Assign #延时量 连线型变量名=赋值表达式;显式连续赋值语句包含了两条语句;第一条是对连线型变量的进展类型说明的说明语句;第二句是对这个已得到声明的连线型变量进展连续赋值语句。影视赋值语句:连线型变量类型复制驱动

4、强度连线型变量位宽#延时量连线性变量名=赋值表达式。隐式连续赋值语句是把连线性变量说明语句和连线性变量连续赋值语句结合在一条语句中。他可以对连线型变量进展说明的同时进展连续赋值。Assign 连续赋值语句的功能是:当赋值表达式中的变量的只发生变化时,重新计算赋值表达式的值,并在指定的时延后将得到的结果赋给左端的连线性变量。Assign只能实现组合功能。而reg型数据可以可以存储过程赋值的最终结果。端口默认为连线性的不用定义一般,只要输入发生变化输出马上发生变化。2行为描述方式:A、initial语句:此语句只执行一次。B、always语句:次语句循环执行。只有存放器类型数据能够在这两种语句中被

5、赋值。存放器类型数据在被赋新值前保持所有值不变。以上两种语句在0时刻并发执行。3、构造描述方式构造描述是通过实例进展描述的方法,他将verilog中预定义的根本元件实例嵌入到语言中,监控实力的舒服,一旦其中任何一个发生变化,便重新运算并输出。在verilog HDL中可以使用如下构造描述部件:A、 用户自己定义的模块b、用用户自定义元件UDP c、置门级元件 d、置开关级元件4混合型描述11、连续赋值语句与过程赋值语句的区别:我觉得这个在刚开场学习verilog时,是会有一些疑问的!a、从语法上来看,连续赋值语句由assign关键词来表示,而过程赋值语句中则不包含b、连续赋值语句中左侧的被赋值

6、数据类型必须是线网型数据,而过程赋值语句中的被赋值数据类型则必须是存放器类型的变量c、连续赋值语句不能出现在过程快initial 过程快或者always过程块中,而过程赋值语句则只能出现在过程快中d、连续复制语句主要用来对组合逻辑电路进展建模以及对线网型数据间的连接进展描述,而过程赋值语句主要用来对时序逻辑电路进展行为描述e、连续赋值语句对被赋值线网型数据的赋值是连续的即连续复制语句产生作用后,赋值表达式中的信号的任何变换都将立即反映到被赋值线网型数据的取值上,这也是我们有时会使用连续驱动这个术语的原因,而在过程赋值语句情况下,只有在过程赋值语句被执行时才执行赋值操作,语句执行完后被赋值变量的

7、取值不再受到赋值表达式的影响.12、间隔符和注释符:verilog HDL中的间隔符包括空格b、tabt、换行符n以及换页符。注释符有2种:/和/*.*/ 后为多行注释符用于对多行语句注释;前者为单行注释符,只对注释符所在的行有效。13、数值:下划线除了不可以放于数值的首位意外,可以随意用在整型数和实型数之间,他们对数值的大小没有任何的影响,只是为了提高可读性。在verilog中有二进制b或者B、十进制d或者D、八进制o或者O、十六进制h或者H格式: 用于指定所表示数的位宽,在数值的表示中式可以缺省的.位宽小于数值的实际位数时,相应的高位局部被忽略;当位宽大于实际的位数,且数值的最高位是0或者

8、1时,相应的高位补零;当位宽高于数值的实际位数,但数值的最高位是*或者z时相应的高位局部补*或者z。二进制中的*或者z表示一位处于*或者z,八进制的表示三位,十六进制的表示4位。14、实型数及其表示方法Verilog HDL中的实数可以用十进制与科学计数法两种格式来表示,如果采用十进制数格式,小数点两边必须有数字,否则为非法字符。如 3.8E10 2.1e-9;15、字符串字符串是用双引号括起来的字符序列,他必须包含在同一行中,不能分成多行书写。如字符串用作verilog HDL表达式或赋值语句中的操作数,则字符串被看做8位的ASCII值序列 ,即一个对应8位的ASCII码。在verilog中

9、采用存放器变量来存储字符串,存放器变量的位数要大于字符串的最大长度。需要注意的是,verilog HDL中并不需要特殊位来存储终止符。可以采用标准操作符对字符串进展诸如连接类的操作。在操作过程中字符串变量位数大于字符串的实际长度,则字符串变量的高位补零。Reg8*12:1stringvarInitialBegin string=hello woeld!;End特殊字符:n 换行符t tab键 符号*符号* ddd三位八进制数表示的ASCII值 %符号%16、数据类型1、物理数据类型:分为连线性和存放器型 变量可以取0、1、*、z,中的认可一个。*表示一个位置初始状态的变量,或者由于多个驱动源试

10、图将其设定为不同的值而引起的冲突性连线性变量,z表示高祖状态或浮空量。物理类型数据分为连线型和存放器型亮中连线型数据对应的是硬件电路的物理信号连线,没有电荷的保持作用trireg除外。连线型数据必须有去发动驱动,有两种方式对他进展驱动:一种是构造描述中把它连接到一个们或者模块的输出端;二是用连续赋值语句assign对其进展复制。当没有驱动源对其驱动时,他将保持高阻态连线型数据功能描述Wire,tri两种常见类型Wor,trior多重驱动时,具有线或特性的连线型Wand,triand多重驱动时,具有线与特性的连线型Tri1上拉电阻Tri0下拉电阻Supp.ly1电源线,逻辑1Supply0电源线

11、,逻辑0Verilog HDL中的连线型数据及其功能描述存放器数据对应的是具有保持作用的硬件电路与元件,如触发器、锁存器等。如reg没初始化则将为*缺省为一位。两种数据的区别:存放器型数据保持最后一次的赋值,而连线型数据需要有持续的驱动。存放器数据的驱动刻意通过过程赋值语句实现,过程赋值语句只能出现在过程语句后面的过程块语句中。存储区:verilog中采用存放器数组来表示存储器,用来对ROM,RAM或存放器文件进展建模。数组中的每一个存放器均称为一个元素,用不同的索引来寻址。Reg16:1 mem5:1 申明16位5字的存储器与存放器。2、抽象数据类项有整型integer 时间型time 实型

12、real 参数性parameter17、运算符算术运算符:包括+ - * / %是二元运算符。如果操作数为存放器或者连线型则为无符号数;如果为整型或者实型,则刻意是有符号数。当用基数格式表示整数时,一定是无符号数;两个操作数中的一个为*则记过为*。18、按位运算符和逻辑运算符:!是逻辑非而是按位操作的非即按位取反。例如:对于!3=2的结果是1;而后者对为进展操作0、0、1、0=1101;19、归约运算符:归约运算是对单个的操作数进展归约的递推运算,最后的结果是一位的二进制数。具体过程:先讲操作数的第一位和第二位进展归约运算,然后将运算结果与第三位进展归约运算,以此类推,直到最后一位。格式&b1

13、9、移位运算?!不会20、条件运算符:verilog HDL中只有唯一的一种三目运算符,及条件运算符有三个操作数。如第一个操作数为逻辑1,则算子返回第二个操作数;如第一个操作数为逻辑0,则返回第三个操作数;如第一个操作数为高阻态或未知态则按下表给出的逻辑,将第二个和第三个操作数按位比拟得到结果。?:01*Z00*1*1*Z*21、连接和复制:连接运算是将多个小的表达式合并成一个大的表达式。Verilog HDL中用符号, ,实现多个表达式的运算,各个表达式之间用,隔开。复制运算符将一个表达式放入双重花括号,而复制因子放在第一个括号,用来指定复制的次数。运算符描述为选择或局部选择圆括号!逻辑非或

14、按位非&| & | 归约运算符+ -单目算术运算符运算符*/%算术运算符+ -双目运算符以为运算符关系运算符= !=相等运算符&按位与 按位异或或异或非|按位或&逻辑与|逻辑或?:条件表达式二、模块的根本构造1、行为描述的构造:Module模块端口说明参数定义可选数据类型说明过程快initial过程块或always快,可有一个或多个连续赋值语句任务定义tast可选函数定义function可选其中:数据类型说明用来对模块中用到的各类变量类型进展说明,如果*个变量没有进展数据类型说明,则他的类型缺省为连线类型wire。上面列出的各个模块组成项可以是任意次序出现,但是端口说明和数据类型说明必须出现在端口和数据被引用之前。2、1在行为描述模块中出现的每个过程块always过程块或者initial过程块都代表一个独立的进程。2在进展仿真时,所有的过程块的执行都是从0时刻开场并行的执行。3每一个过程块部的多条语句的执行方式可以是顺序执行的当快定义语句为beginend时的情况,也可以是并行执行的块定义语句是fork-join时的情况。4always和

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号