Verilog HDL项目式教程 课件 项目2 数据流建模.pptx
任务2.1连续赋值语句
任务2.2运算符类型
任务2.3基本语法及其学习建议;任务2.1连续赋值语句;以关键词assign开始的语句为连续赋值语句。连续赋值语句是Verilog数据流建模的基本语句,用于对线网进行赋值。
assign语句对应的电路通常都是组合逻辑电路。
下面介绍3个电路设计案例:多路选择器、奇偶校验器、加法器。
【例2-1】二选一多路选择器电路设计。【例2-2】二选一多路选择器电路仿真。;使用QuartusⅡ软件可以对设计进行综合,综合出来的电路图如图2-1所示。
由图2-1可以看出,该设计实现的是一个二选一选择电路。
奇/偶校验(ParityCheck)是数据传送时采用的一种校正数据错误的方式,根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。
【例2-3】奇校验电路设计。【例2-4】奇校验电路仿真。;仿真输出结果如图2-2所示。
在仿真结果中可直接观察输入数据以及其中1的个数,并跟输出的1的个数进行对比。
【例2-5】使用数据流建模实现一位半加器。
解题指引:半加器实现的是不带进位的两个数的相加,若半加器的输入为ain和bin,输出为sum和co。其中,sum为和,co为进位。半加器的真值表如表2-1所示。
Verilog实现代码如下:;上面例2-3、例2-4和例2-5都是数据流建模,且都使用了assign语句,该语句通常使用连续赋值语句对变量进行赋值,赋值语句通常会涉及大量的运算符。
上述电路设计和仿真涉及的知识点有:assign连续赋值语句、运算符、系统函数、循环语句、延时等。
下面对这些知识点进行说明。
(1)?assign连续赋值语句。
assign是VerilogHDL语言的关键字,是数据流建模的典型特征。
连续赋值语句的基本元素是表达式、运算符和操作数。连续赋值语句的功能是计算右侧表达式的值,然后赋给左边变量。表达式由运算符和操作数构成,根据运算符界定的功能对操作数进行运算后,得出结果。数据流的强大建模能力体现在多种运算符类型上。
连续赋值语句总是处于激活状态,只要任意一个操作数发生变化,表达式就会立即被重新计算,并且将结果赋给等号左边的线网型变量。;assign{co,sum}=ain+bin;是一条连续赋值语句,???将ain和bin的和存放在{co,sum}中。该语句中,“{}”为位拼接符,其完成的功能是将co和sum拼接成一个两位数。
连续赋值语句的左边必须是一个标量或向量线网,或者是标量或向量线网的拼接,而不能是任何形式的寄存器。例如,下面的形式是非法的:
操作数可以是线网型标量或向量,也可以是寄存器型标量或向量。
(2)运算符。
语句assigny=s?b:a;使用了条件运算符,其功能是:当s?=?1时,y?=?b;当s?=?0时,y?=?a。
语句{a,b,s}={a,b,s}+1;使用了算术运算符、拼接运算符,{a,b,s}的功能是将三个1位数a、b、s拼接成一个三位数;使用的算术运算符是“+”。
assign{co,sum}=ain+bin;?使用了算术运算符、拼接运算符。;(3)系统函数。
monitor和time都是VerilogHDL语言的系统函数,monitor监控变量值,当要显示的变量值发生变化时就会显示;time用于显示当前仿真时刻。
(4)循环语句和仿真延时。
forever是VerilogHDL语言的关键字,用来一直产生信号。forever#5d_in=d_in+1;语句的含义是每5个时间单位,变量值加1。;任务2.2?运?算?符?类?型;VerilogHDL语言提供了许多类型的运算符,分别是算术、关系、逻辑、按位、缩减、条件、移位和位拼接运算符。表2-2按运算符类型列出了常用的运算符。;由表2-2可知,VerilogHDL语言中的运算符所带的操作数是不同的。只带1个操作数的运算符称为单目运算符,此时操作数需放在运算符的右边;带2个操作数的运算符称为双目运算符,操作数需放在运算符的两边;带3个操作的运算符称为三目运算符,这3个操作数用三目运算符分隔开,如表2.2中的条件运算符就是三目运算符。
表达式中的操作数可以是以下类型中的一种。
(1)常数。(2)参数。(3)线网。
(4)寄存器。(5)位选择。(6)部分选择。
(7)存储器单元。(8)函数调用。
下面对表2-2中的运算符分别进行介绍。;一、算术运算符
算术运算符包括加(+)、减(-)、乘(×)、除(?/?)、取模(%)、乘方(**)。
依据运算的不同,算术运算符分别对应着加法器、减法器、乘法器、除法器、取余电路。电路设计中,加法器通常由基本的逻