2021.7.26
1.用generate循环结构解决了(41)题和(42)题。
(41)实例化100个全加器,获得一个100位的二进制串行进位加法器。
(42)实例化100个四位的bcd加法器,获得一个能相加400位的二进制串行进位加法器。
2.有符号数运算初步:
①有符号数相加实际上就是补码相加。
②正数的补码是其原码,负数的补码是其反码加一,但是符号位不变。
③然后对相加的两者进行数值上的相加,包括符号数。
④对相加的结果再取一次补码。
对有符号数运算有了初步的了解,但还是做不出(69)题...答案也看不懂。
因为溢出的问题不知道怎么解决,也没有办法分清相加之后的结果01111是15还是-7,先放着吧。
3.补完了BCD相关的知识点和(71)题。
(71)实例化4个bcd加法器,获得一个16位二进制串行进位加法器。
//至此,前面只剩下和有符号数运算相关的(69)题:Signed Addition Overflow。
4.学习一下Verilog里面的function相关语法。
Verilog函数(function)用于重复使用同一段行为级语句时,对其进行封装从而通过多次调用来简化写法的一种结构。
①function不含有任何延迟和时序逻辑成分。
②至少有一个输入变量。
③只有一个返回值,无输出。
④不能使用非阻塞赋值“<=”。
⑤函数可嵌套,但不能调用任务。
⑥函数的返回值是reg变量。
函数声明的基本格式如下:
//注:
①关键字function后跟的是函数返回值所设定的位宽和函数调用时所用的函数名。
②在function语句后声明函数的输入变量,变量至少一个。
③在声明完输入变量之后还可以声明其他变量,如行为级语句for循环中所用到的变量i。
④在后边跟着的就是行为级语句,如果语句是一句以上的话就要用begin...end来括起来。
⑤在结束function的声明之后的关键字是endfunction而不是end。
而调用本函数的基本格式如下:
//注:调用函数名的时候记得后面跟的输入变量要按声明的顺序来写。
函数的声明和调用整体结构如下:(设计一个半加器)