对于你的程序,a1, a2为输入信号,b1, b2, c1, c2为输出信号,在不做特殊说明情况下,信号是wire类型,如果需要中间赋值或运算,需声明成reg类型第一个问题:
A=2‘hFF是十六进制表示的,FF本来前面是8位表示才是完全,他只用了2位。
举个例子,A这样写你是不是好理解,A=8‘hFF,转成2进制就是A=8’b1111_1111
A写成这样,A=2‘hFF,就是取低两位,高位补0,所以2进制就是(1)8'b0000_0011
同理写成十六进制就是(2)8'h03
第二个问题:
B=8'bZ0,是二进制表示的,2进制的0只能表示一个位,所以就只有一个0,在最末位
(4)8'bZZZZ_ZZZ0
希望能帮到你integer类型也是一种寄存器数据类型,integer类型的变量为有符号数,而reg类型的变量则为无符号数,除非特别声明为有符号数,还有就是integer的位宽为宿主机的字的位数,但最小为32位,用integer的变量都可以用reg定义,只是对于用于计数更方便而已。reg,integer,real,time都是寄存器数据类型,定义在Verilog中用来保存数值的变量,和实际的硬件电路中的寄存器有区别
今天看代码时遇到了integer,只知道这是个整数类型,可详细的内容却一窍不通,查看了资料---《verilog数字VLSI设计教程》。其中是这么写到的:
大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做有符号数。通常,real类型是不可综合的。
假设在没有溢出的情况下,不管是无符号数还是有符号数,它们都是二进制的一串数值而已;而当这个值被当做某种类型比较时:又符号数的MSB被用来表示这个数字的符号,而无符号数的MSB则是位权最高的那一位。无论采用什么样的二进制格式,一个无符号数永远也不能成为负值。在ISE下创建Verilog Test Fixture其实就是写测试激励文件(TestBench),没区别。
Add stimulus这部分是测试激励文件的核心,需要向被测试模块中所涉及的逻辑提供全面的测试激励,以全面验证逻辑设计的正确性。1.nets变量
nets型变量指输出始终根据输入的变化而更新其值的变量,
它一般指的是硬件电路中的各种物理连接。Verilog HDL中提
供了多种nets型变量,典型为wire类型,默认的变量类型为wire。
2 register型变量
register型变量对应的是具有状态保持作用的电路元件,如触发器、
寄存器等。register型变量与nets型变量的根本区别在于:reegister型
变量需要被明确地赋值,并且在被重新赋值前一直保持原值。在设计
中必须将寄存器型变量放在过程块语句(如initial, always)中,通过过
程赋值语句赋值。另外,在always,initial等过程块内被赋值的每一个
信号都必须定义成寄存器型。register类型代表类型为reg。
assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。
例如:
wire A,B,SEL,L;//声明4个线型变量
assign L=(A&~SEL)|(B&SEL);//连续赋值
在assign语句中,左边变量的数据类型必须是wire型。input和output如果不特别声明类型,默认是wire类型。
举例2选1的数据选择器:
module mux2x1_df(A,B,SEL,L);
input A,B,SEL;
output L;
assign L=SELA:B;
endmodule
扩展资料:
注意事项
assign的功能属于组合逻辑的范畴,应用范围可概括为以下三点:
1、持续赋值;
2、连线;
3、对wire型变量赋值,wire是线网,相当于实际的连接线,如果要用assign直接连接,就用wire型变量。wire型变量的值随时变化。其实以上三点是相通的。
要更好的把握assign的使用,Verilog中有几个要点需要深入理解和掌握:
1、在Verilog module中的所有过程块(如initial块和always块)、连续赋值语句(如assign语句)和实例引用都是并行的。在同一module中这三者出现的先后顺序没有关系。
2、只有连续赋值语句assign和实例引用语句可以独立于过程块而存在于module的功能定义部分。
3、连续赋值assign语句独立于过程块,所以不能在always过程块中使用assign语句。
verilog里一般不声明输出类型的话 默认是wire型的 如果你想在输出处寄存一下:比如使用always时序语句,则必须声明为reg类型 wire是线网,就是相当于实际中的连接线,你想assign的话就是直接连接,就是用wire型,他的值是随时变化的。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)