verilog语言的问题,我在verilog语言中定义一个regshell 变量赋值不做赋值,在仿真的时候应该是xxx为什么是0呢??

&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!Verilog常见寄存器类型 - ygb_tju的个人空间 - 中国电子顶级开发网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台
- Powered by X-Space
天之蓝,地之广,心之大,悟之深!
Verilog常见寄存器类型
& 15:33:10
/ 个人分类:
寄存器类型的变量在Verilog语言中通常表示一个存储数据的空间,在Verilog仿真器中,寄存器类型的变量通常要占据一个仿真内存空间。(仿真内存空间如何定义,是规定大小还是和选用的仿真环境有关或PC之类???) reg:最常用的寄存器类型数据,可以一位、多位或者二维数组 integer:整数型数据,存储一个至少32位的整数 time:时间类型,存储一个至少64位的时间值 real、realtime:实数和实数时间寄存器reg太过常用,在此不再赘述,简单说明一下二维数组,这种结构可以用于描述存储器(Memeory)reg [3:0] MEMABC [0:7];
//定义一个存储器,地址为0~7,每个存储单元都是4bit 与一维reg变量不同的是,不能再对存储器中的存储单元进行位选择或部分选择(即不能对位操作),但是可以对每个单元进行单独赋值 MEMABC[1] = 4‘0101 ; & &//为MEMABC中的第一个存储单元赋值Verilog中,不存在一条语句可以对整个存储器赋值,必须对每个单元单独赋值,除非使用$readmemb或$readmemh系统任务从文件中读入整个或者部分存储器的数值 integer变量通常用于高层次建模,也常用在for的语句中initialbegin:ACCESS
for(i=0;i&=7;i=i+1) begin
MEMABC[i] = endendtime变量用于存储和处理系统时间,real和realtime用来存储实数实数时间Verilog HDL语言的数据类型---变量
作者:admin 日期: 16:1:10
变量是在程序运行过程中,其值可以改变的量。在Verilog HDL中变量类型有很多种,这里只对常用的几种变量进行介绍。1.网络类型变量
网络类型表示结构实体(例如门)之间的物理连接。网络类型的变量不能储存值,而且它必需受到驱动器(例如门或连续赋值语句,assign)的驱动。如果没有驱动器连接到网络类型的变量上,则该变量就是高阻的,即其值为ze
常用的网络类型变量包括wire型和tri型。这两种变量都是用于连接器件单元,它们具有相同的语法格式和功能。之所以提供这两种名字来表达相同的概念是为了与模型中所使用的变量的实际情况相一致。
wire型变量通常是用来表示单个门驱动或连续赋值语句驱动的网络型数据:tri型变量则用来表示多驱动器驱动的网络型数据.如果wire型或tri型变量没有定义逻辑强度(logicstrength ),在多驱动源的情况下,逻辑值会发生冲突,从而产生不确定值.
表3.1所示为在同等驱动强度下,’两个驱动源驱动的wire型和tri型变量的真值表。wire型变量常用来表示用于以入/输出信号类型缺省时自动定义为assign关键字指定的组合逻辑信号。Verilog程序模块中输wire型。wire型变最可以用作任何方程式的输入,也可以用作“assign”语句或实例元件的输出。wire型变量的声明格式如下:也可以如下表示:其中,wire是wire型变量的确认符,[n-1:们和【n:l ]代表该变量的位宽,即该变量有几位,最后跟着的是变量的名字。如果一次定义多个变量,变量名之间用逗号隔开。声明语句的最后要用分号表示语句结束。如下所示:2.寄存器型变量
寄存器是数据储存单元的抽象。寄存器型变量的关键字是reg.通过赋值语句可以改变寄存器储存的值,其作用与改变触发器储存的值相当。
Verilog HDL语言提供了功能强大的结构语句使设计者能有效地控制是杏执行这些赋值语句。这些控制结构用来描述硬件触发条件,例如时钟的上升沿和多路器的选通信号。reg类型变量的缺省初始值为不定值,即x。
reg型变量常用来表示用于“always”模块内的指定信号,常代表触发器。通常,在设计中要由“always”块通过使用行为描述语句来表达逻辑关系.在“always”块内被赋值的每一个信号都必须定义成reg型。和wire型变量类似,reg型变量的声明格式如下:也可以如下表示其中,reg是reg型变量的确认标识符,有几位(bit),最后跟着的是变量的名字。【n一l:0〕和【n:1]代表该变量的位宽,即该变量如果一次定义多个变量,变量名之间用逗号隔开。声明语句的最后要用分号表示语句结束。如下所示:reg型变量可以赋正值,也可以赋负值。但当一个reg型变量是一个表达式中的操作数时,它的值将被当作是无符号值,即正值。例如:当一个四位的寄存器用作表达式中的操作数时,如果开始寄存器被赋以值一1,则在表达式中进行运算时,其值被认为是++15.3.存储器型变且
Verilog HDL通过对reg型变量建立数组来对存储器建模,用于描述RAM型存储器、ROM存储器和reg文件。数组中的每一个单元通过一个数组索引进行寻址。由于在Verilog语言中没有多维数组存在,因此memory型数据是通过扩展reg型数据的地址范围来生成的。其格式如下:在这里位的寄存器reg [n-1:0]定义了存储器中每一个存储单元的大小,即该存储单元是一个n存储器名后的【m-1:0〕或【MA I则定义了该存储器中有多少个这样的寄存器。最后用分号结束定义语句。下面举例说明:这个例子定义了一个名为mema的存储器,该存储器有256个8位的存储器.该存储器的地址范围是0-255.需要注意的是,对存储器进行地址索引的表达式必须是常数表达式。
另外,在同一个数据类型声明语句里,可以同时定义存储器型数据和reg型数据。例如:尽管memory型数据和reg型数据的定义格式很相似,但要注意其不同之处.如一个由n个1位寄存器构成的存储器组是不同于一个n位的寄存器的,如下所示:一个n位的寄存器可以在一条赋值语句里进行赋值,而一个完整的存储器则不行,例如:如果想对memory中的存储单元进行读写操作,必须指定该单元在存储器中的地址。下面的写法是正确的。进行寻址的地址索引可以是表达式,这样就可以对存储器中的不同单元进行操作。表达式的值可以取决于电路中其他的寄存器的值。例如可以用一个加法计数器来做RAM的地址索引。
&&( 9:50:32)&&( 9:44:40)&&( 9:38:30)&&( 9:51:28)&&( 9:43:24)&&( 9:40:11)&&( 10:11:41)&&( 10:3:18)&&( 17:16:10)&&( 9:52:13)
| 查看次数:}

我要回帖

更多关于 shell 变量赋值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信