![f6dea6a55d0960ae8f1558130182f02c.png](https://img-blog.csdnimg.cn/img_convert/f6dea6a55d0960ae8f1558130182f02c.png)
1、reg型只表示被定义的信号将用在“always”模块内。
2、Verilog HDL作为一种硬件描述语言,是针对硬件电路而言的。在硬件电路中信号有4种状态值,即1,0,x,z,也即高、低、不确定、高阻值。
3、不同长度的数据进行位运算:两个长度不同的数据进行位运算时,系统会自动地将两者按右端对齐,位数少的操作数会在相应的高位用0填满。
4、 赋值运算符(=,<=);条件运算符(?:);拼接运算符({ })。
5、在进行整数除法运算时,结果值要略去小数部分,只取整数部分;而进行取模运算时,结果值的符号位采用模运算式里第一个操作数的符号位。如:10%3 1;-10%3 -1。
6、初学者一定要深入理解和记住的几个点:
(1)在verilog模块中,所有过程块(如initial块、always块)、连续赋值语句、实例引用都是并行的。
(2)只有连续赋值语句(即用关键词assign引出的语句)和实例引用语句(即用已定义的模块名引出的语句),可以独立于过程块而存在于模块的功能定义部分。
(3) 在always模块内被赋值的每一个信号都必须定义成reg型。
7、模块中的功能描述可以由哪几类语句或语句块组成?它们出现的顺序会不会影响功能的描述?
答: 用assign语句声明,用实例元件,用always块。不会影响。
8、这几类描述中的哪一种直接与电路结构有关?
答:用实例元件直接与电路结构有关。
9、reg型和wire型变量的差别是什么?
答:reg型变量是寄存器变量,wire型变量是连线型变量。两者的根本区别在于reg型变量有个寄存器来存放变量,这个值只有变量发生改变时才会改变,否则保持原来的值不变,wire型变量的值不是确定的值。
10、参数类型的变量有什么用处?
答:参数类型的变量的好处是可以提高程序的可读性和可维护性。
11、Verilog语法规定的参数传递和重新定义功能有什么直接的应用价值?
答:可以用于延迟时间和变量宽度。
第四章 运算符、赋值语句和结构说明语句
1、为了提高程序的可读性,明确各表达各运算符之间的优先关系,建议使用括号。
2、左移:位宽增加,低位补0。
右移:位宽不变,低位舍去。如:4'b1001<<1=5'b10010, 4'b1001>>1=4'b0111。
3、缩减运算符:缩减运算符的具体操作是这样的,第一步先将操作数的第1为与第2位进行与、或、非运算;第二步将运算结果与第3位进行与、或、非运算,以此类推,直至最后一位。故,最后的结果是1位的二进制数。
4、非阻塞(Non_Blocking)赋值方式,例如b<=a;阻塞(Blocking)赋值方式,例如b=a。
其中,b<=a,这种方式的赋值并不是马上执行的,也就是说,“always”块内的下一条语句执行后,b并不等于a,而是保持原来的值,“always”块结束后,才进行赋值。
而b=a,这种赋值是马上执行的。
第五章 条件语句、循环语句、块语句与生成语句
1、条件语句必须在过程块语句中使用。所谓过程块语句是指由initial和always语句引导的执行语句集合。除这两种块语句引导的begin end块中可以编写条件语句外,模块中的其他地方都不能编写。
2020.10.06 16:08记录