⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。 🔥文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。


使用自下而上的方法(bottom-up) :
//************ 一位半加器的描述 ************
module halfadder (S,C,A,B); //IEEE 1364—1995 Syntax
input A,B; //输入端口声明
output S,C; //输出端口声明
xor (S,A,B); //实例引用逻辑门原语
and (C,A,B);
endmodule //************ 一位全加器的描述 ************
module fulladder (Sum,Co,A,B,Ci);
input A,B,Ci; output Sum,Co;
wire S1,D1,D2; //内部节点信号声明
halfadder HA1 (.B(B),.S(S1),.C(D1),.A(A)); //实例引用底层模块halfadder
halfadder HA2 (.A(S1),.B(Ci), .S(Sum),.C(D2)); //端口信号按照名称对应关联
or g1(Co,D2,D1);
endmodule//************四位全加器的描述************
module _4bit_adder (S,C3,A,B,C_1);
input [3:0] A,B;
input C_1;
output [3:0] S;
output C3;
wire C0,C1,C2; //声明模块内部的连接线
fulladder U0_FA (S[0],C0,A[0],B[0],C_1); //实例引用模块fulladder
fulladder U1_FA (S[1],C1,A[1],B[1],C0); //端口信号按照位置顺序对应关联
fulladder U2_FA (S[2],C2,A[2],B[2],C1);
fulladder U3_FA (S[3],C3,A[3],B[3],C2);
endmodule 模块实例引用语句的格式如下:
module_name instance_name(port_associations);(port_associations)父、子模块端口的关联方式:

关于模块引用的几点注意事项:

参考文献: