这次用Verilog进行一个16位简单运算器进行建模并仿真
题目如下:
需要的功能有加、减、按位与、按位或、对输入一按位非、按位异或。16位加法器需自己完成,不要使用“+“。
根据题目,画出如图架构
然后根据架构,来进行各个功能的设计,逻辑运算非常简单,关键在于加减法的实现,因为减去一个正数可以表示为加上一个负数的补码,所以结果都采用补码表示,运算过程通过补码进行运算。
我这里加法器的设计为行波进位加法器(更细致的讲解可以参照https://blog.csdn.net/zhouxuanyuye/article/details/103834320?spm=1001.2014.3001.5501 纸上谈芯这位大佬的博客,讲的非常详细)
Verilog是硬件描述性语言,如果在编写代码之前,能把逻辑电脑在脑海中构思或者在纸上画出来,代码编写会事半功倍。
构建加法器的过程,我们就采用行波进位加法器的做法。
全加器Verilog代码如下:
module fadder(
input a, //operand0输入的补码
input b, //operand1输入,加法为补码,减法为反码
input ci, //若位减法,则为1,加法则为0
output sum, //单位和输出
output co //进位输出
);
assign sum = a ^ b ^ ci;
assign co = a&b | a&ci | b&