第一节 FPGA中的基本运算

第一节 FPGA中的基本运算*

1、算术运算(按位运算)

与&、或|、非~、异或^

2、逻辑运算

与&&、或||、非!

下面来看程序,看他们分别会产生什么电路?`

module and_gate(
input wire a,
input wire b,
output wire s
);
assign s=a&b;

endmodule
二输入与门,输入位宽1bit二输入与门,输入位宽1bit。

接下来我i们改一下代码。

module and_gate(
input wire a,
input wire b,
output wire s
    );
assign s=a&&b;

endmodule


输入1bit时,算术与与逻辑与是一样的电路。
接下来把位宽增到2bit试试。注意咱们写的程序是组合逻辑电路,不带记忆功能,输入输出唯一确定。
assign关键字必须引领wire类型,而且要使用‘=’进行赋值。

module and_gate(
input wire [1:0]a,
input wire [1:0]b,
output wire [1:0]s
    );
assign s=a&b;

endmodule

在这里插入图片描述
b[1]与a[1]按位与,b[0]与a[0]按位与,输出到s[1]和s[0]中。
改成逻辑与。

module and_gate(
input wire [1:0]a,
input wire [1:0]b,
output wire [1:0]s
    );
assign s=a&&b;

endmodule

在这里插入图片描述
可以看出,首先分别对a,b进行了或运算,判断是否为真值,再进行逻辑与运算,有效位数为1位,但我们定义的s是2bit,故补0。
把a扩大到4bit,进行缩减运算看看。

module and_gate(
input wire [3:0]a,
//input wire [1:0]b,
output wire [1:0]s
    );
assign s=&a;

endmodule

在这里插入图片描述
也就是进行了s=a[3]&a[2]&a[1]&a[0];如果等于0,说明里面至少有一个0。
请读者思考,1、所有的逻辑门都可以用与非门表示,fpga里面按有门电路吗?
2、自行完成剩下的或、非门的算术运算和逻辑运算,看看他们会出现什么电路。下一节课将会教大家如何进行modelsim仿真。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页