Verilog基本语法之模块以及模块调用详解(2) | 您所在的位置:网站首页 › verilog项目文件怎么级联 › Verilog基本语法之模块以及模块调用详解(2) |
模块结构
一、模块结构组成
模块由三个元素组成,分别是模块起始、接口说明、逻辑功能描述
1. 模块起始:每个模块都要进行端口定义,格式为:module 模块名(端口1, 端口2, 端口3),
2. I/O接口说明:input输出,output输出,inoutput双向接口
3. 逻辑功能描述:always、assign等功能描述。
二、模块详解
组合成为完整程序如下:
module ()
Endmodule
拿与门、或门举例:
module AndOR(a, b, c)//模块起
input a,b;//接口方向为输入
output c,d;
assign c = a & b;//组合逻辑-与
assign d = a | b;//组合逻辑-非
endmodule //模块终
注意:每条逻辑功能语句和数据定义的最后必须有分号。 程序模块---->>>到电路模块 ** 二、模块调用** 模块调用包括元件库的调用以及已设计模块的调用,设计模块调用如下 1.模块例化有两种方法:按位置顺序调用、按名词调用 1.位置相关: 1)例化时,例化的参数顺序必须和模块顺序一致 2)例化时,只要写端口名字2.名称相关: 1)必须指定当前例化的端口名称 2)端口的顺序可以自由排序位置相关举例: wire [3:0] x1; wire [3:0] x2; wire [4:0] x3; add add_inst0 ( x1, //对应 模块本身的a,顺序必须一一对应 x2, //对应 模块本身的b x3 //对应 模块本身的c );名称相关举例: wire [3:0] x1; wire [3:0] x2; wire [4:0] x3; add add_inst1 ( .a (x1), .c (x3),//用“.”指定例化端口名,例化顺序可打乱 .b (x2) ); 三、调用实例拿一个二选一多路选择器举例,二选一多路选择器代码如下: module mux21 (dataa,datab, outdata, sel); input [2:0] dataa; input [2:0] datab; inpur sel; outdata [2:0] outdata; ········ ········ endmodule那么我们应该怎么样去调用它呢?如下: ( .端口(连线), .端口(连线) );下面是用结构建模的方式调用上述二选一模块,实现三选一: module mux31 (dataa, datab, datac, sel1, sel2, outdata); input[2:0] dataa; input[2:0] datab; input [2:0] datac; input sel1; input sel2; output [2:0] outdata; wire [2:0] data; mux21 mux21_dut1( .dataa(dataa), .datab(datab), .outdata(data), .sel(sel1) ); mux21 mux21_dut2( .dataa(data), .datab(datac), .outdata(outdata), .sel(sel2) ); endmodule上述建模是利用了两个二选一多路选择器来构成了一个三选一多路选择器。 ------->下一章: Verilog语法之模块巩固(3)(实例练习篇) 章节进程条-STEP1 |
CopyRight 2018-2019 实验室设备网 版权所有 |