FPGA数字系统设计(2)——门级建模

一、门级建模语法
1、模块定义

module 模块名(端口名1 ,端口名2...;
...
endmodule
例:
module MUX4x1(Y,A,B,C,D,S1,S0,EN_);

Verilog HDL语言中标识符由字母、数字、美元符号、下划线组成,字母区分大小写,同时标识符的开头只能是字母或下划线。
2、端口声明

Verilog HDL关键字 端口类型
input 输入端口
output 输出端口
inout 双向端口

端口默认1位宽度,即只能传播1位有效信息

端口类型 [端口位宽左界:端口位宽右界] 端口名;
例如:
input [2:0] cin;
outout[0:4] cout;
inout [4:7] fast;

端口声明中会默认把定义的端口声明位wire类型;除了output可以定义为reg类型,input、inout只能为wire类型。

在这里插入图片描述3、门级调用`

	逻辑门类型 <实例名称(可选)> (端口连接)
	例:
	not (s1_n , s1);
	buf b1 (out1 , in);
	

逻辑门分为两大类:
buf(缓冲器),not(非门)
单输入逻辑门的功能表
在这里插入图片描述
多输入逻辑门
多输入调用

	and(Y,A,B);
	or (Y,A,B);
	and and1 (Y,A,B);

在这里插入图片描述
4、模块实例化

	模块名称  实例名称 (端口连接)
	例
	MUX4*1 mymux(.Y(y), .A(a), .B(b), .C(c), .D(d), .En(e), .S1(f), .S0(g));
	

在这里插入图片描述
5、内部连接声明

	wire [线宽-1 :0] 线名称;
	例:
	wire [3:0] b;   //定义4位网线b
	wire a;         //定义1位网线a

二、典型门级建模
1、四位全加器
四位全加器是由1位全加器串联组成

1位全加器RTL图如下图所示RTL仿真图

module fulladd(cin ,A ,B ,S ,cout);
output S,cout;
input cin ,A ,B;
xor (S, cin , A , B);
and (a1, cin , A);
and (a2, cin , B);
and (a3, A , B);
or  (cout , a1 , a2 , a3);
endmodule 

四位全加器RTL图如下图所示
在这里插入图片描述

module add4 (S, COUT , CIN , A , B);
output [3:0] S;
output COUT;
input [3:0] CIN, A, B;
wire c0 ,c1 ,c2;
fulladd add0(.S(S[0]) , .cout(c0) , .cin(CIN), .A(A[0]), .B(B[0]));
fulladd add1(.S(S[1]) , .cout(c1) , .cin(c0), .A(A[1]), .B(B[1]));
fulladd add2(.S(S[2]) , .cout(c2) , .cin(c1), .A(A[2]), .B(B[2]));
fulladd add3(.S(S[3]) , .cout(COUT) , .cin(c2), .A(A[3]), .B(B[3]));
endmodule

仿真结果如下图所示;
在这里插入图片描述
2、2-4译码器门级电路
2–4译码器即是对输入00 01 10 11,分别输出四位不同的值。
RTL电路图如下图所示:

在这里插入图片描述

module DEC2_4(A,B,En,Z);
input A,B,En;
output [3:0] Z;
wire n1,n2;
not (n1, A);
not (n2, B);
nand(Z[0],n1,n2,En);
nand(Z[1],n1,B,En);
nand(Z[2],A,n2,En);
nand(Z[3],A,B,En);
endmodule

仿真结果如下图所示
在这里插入图片描述
3、主从D触发器
D触发器是一个具有记忆功能的,同时具有零个稳定状态的储存器。
功能表
在这里插入图片描述

时序图
在这里插入图片描述
RTL门级电路图如下图所示:
在这里插入图片描述

module MSDFF(D,Q,Qbar,C);
output Q,Qbar;
input  D,C;
not
 not1(NotD, D),
 not2(NotC, C),
 not3(NotY, Y);
nand 
 nand1(D1,D,C),
 nand2(D2,C,NotD),
 nand3(Y,D1,Ybar),
 nand4(Ybar,D2,Y),
 nand5(Y1,Y,NotC),
 nand6(Y2,NotY,NotC),
 nand7(Q,Qbar,Y1),
 nand8(Qbar,Y2,Q);
endmodule

仿真电路图如下图所示
在这里插入图片描述
声明:该文只适用于学习,其内容包含来自书本的摘抄和总结,欢迎大家补充,共同学习进步。

猜你喜欢

转载自blog.csdn.net/qq_24213087/article/details/107457306