1 / 21
文档名称:

天津大学Verilog HDL课件第9章.ppt

格式:ppt   大小:114KB   页数:21页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

天津大学Verilog HDL课件第9章.ppt

上传人:mh900965 2017/11/14 文件大小:114 KB

下载得到文件列表

天津大学Verilog HDL课件第9章.ppt

相关文档

文档介绍

文档介绍:第9章结构建模
结构建模3种方式
门实例
用户定义原语实例
模块实例
模块的端口
根据信号的传递方向,模块的端口分为3种,input,output,inout,缺省的类型为连线线网wire;
端口可被显式声明,输出和双向端口可以被重新声明为reg寄存器类型;
module Micro(PC,Instr,NextAddr);
input [3:1] PC; //端口说明,默认wire
output [1:8] Instr;
inout [16:1] NextAddr;
wire [16:1] NextAddr; //重新说明端口类型
reg [1:8] Instr;

endmodule
模块实例语句
模块实例即模块的调用,顶层调用底层,其语法格式:
module_name instance_name (port_associations);
实例端口和模块端口有两种关联方式:位置和名称,不能混合;
位置关联需要按顺序严格的一一对应;而名称关联则显式指定实例端口和模块端口的对应关系,而不关心先后顺序,名称关联的语法格式:
.PortName_module (port_expr_instance)
port_expr的类型
标识符()
位选择
部分位选
混合
表达式(输入端口)
例:
Micro M1(UdIn[3:0], {WrN,RdN}, Status[0], Status[1], UdOut[0:7], TxData);
全加器(两个半加器构造)
module HA(A,B,S,C);
input A,B;
output S,C;
parameter AND_DELAY=1, XOR_DELAY=2;
assign #XOR_DELAY S=A^B;
assign #AND_DELAY C=A&B;
endmodule
module FA(P,Q,Cin,Sum,Cout);
input P,Q,Cin;
output Sum,Cout;
parameter OR_DELAY=1;
wire S1,C1,C2;
HA h1(P,Q,S1,C1);
HA h2(.A(Cin),.B(S1),.S(Sum),.C(C2));
or O1(Cout,C1,C2);
endmodule
悬空端口
通过将实例端口表达式表示为空白的方法将一个端口设置成悬空端口;
输入端口悬空,其值为z;输出端口悬空,表示该端口弃置不用;
例:
DFF d1(.Q(QS), .Qbar(), .Data(D),
.Preset(), .Clock(CK));
DFF d2(QS, ,D, ,CK);
实例端口和模块端口的位宽不等
当实例端口和被引用模块端口的位宽不等时,采用右对齐的方式进行匹配;在前者大于后者的情况下,将左侧多出的位忽略,反之,如果前者小于后者,则被引用端口的空闲位是高阻态z;
例:
module Chiled (Pba, Ppy);
input [5:0] Pba;
output [2:0] Ppy; …
endmodule
module Top;
wire [1:2] Bd1;
wire [2:6] Mpr;
Chiled C1(Bd1, Mpr);
endmodule
模块的参数值
顶层模块在引用底层模块时还可以改变其内部定义的参数值;
有两种方式:
参数定义语句(defparam)
带参数值的模块引用
module HA(A,B,S,C);
input A,B;
output S,C;
parameter AND_DELAY=1, XOR_DELAY=2;
assign #XOR_DELAY S=A^B;
assign #AND_DELAY C=A&B;
endmodule
module FA(P,Q,Cin,Sum,Cout);
input P,Q,Cin;
output Sum,Cout;
parameter OR_DELAY=1;
wire S1,C1,C2;
HA h1(P,Q,S1,C1);
HA h2(.A(Cin),.B(S1),.S(Sum),.C(C2));
or O1(Cout,C1,C2);
endmodule