模块化设计是FPGA设计中一个很重要的技巧,它能够使一个大型设计的分工协作和仿真测试更加容易,使代码维护和升级更加便利。所谓模块化设计,就是将一个比较复杂的系统按照一定的规则划分为多个小模块,然后我们再分别对每个小模块进行设计,当这些小模块全都完成以后,我们再将这些小模块有机的组合起来,最终我们就能够完成整个复杂系统的设计。这里我们以半加器为例进行说明。
1. 模块层次划分
我们将半加器分为了与门模块和异或模块,我们只需要完成实现与门模块和异或模块,然后再将实现的与门模块和异或模块相结合,最终我们就能实现半加器。下面给出图相对应的Verilog代码。
module Half_adder(input a, input b, output s, output c);
AndGate_Module AndGate_Ins
(
.andgate_a(a),
.andgate_b(b),
.andgate_c(c)
);
XOR_Moudle XOR_Ins
(
.XOR_a(a),
.XOR_b(b),
.XOR_s(s)
);
endmodule
看完顶层模块,下面我们再来看下与门和异或的代码。
module AndGate_Module(input andgate_a, input andgate_b, output andgate_c);
assign andgate_c = andgate_a && andgate_b;
endmodule
module XOR_Module(input XOR_a, input XOR_b, output XOR_c);
assign XOR_c = XOR_a ^ XOR_b;
endmodule