FPGA_verilog学习1_verilog模块的模板

1.一个简单的与-或-非门电路

module aoi(
    a,
    b,
    c,
    d,
    f
);
    input a,b,c,d;
    output f;
    wire a,b,c,d,f;
    

//用assign持续赋值语句定义
//assign 语句一般用于组合逻辑的赋值,称为持续赋值方式。赋值时,只需将逻辑表达式放在关键字assign后即可
assign f = ~ ( (a & b) | ~( (c & d) ) );
    
//
//用always过程块定义
//always@(a or b or c or d)
//always@(*)统配符,等价于a or b or c or d



endmodule


(1) 每个模块首先要进行端口定义,并说明输入和输出口(input 、output 或 inout)之后对模块的功能进行定义

input   输入端口  ;

output 输出端口;

inout   双向端口;

2. Verilog模块的基本结构

Verilog 模块的基本结构

//
// 
module 名字(端口列表) :
端口定义
input  输入端口
output 输出端口
inout  双向端口

//
//
数据类型说明 :
wire
reg 
parameter

//
// 
逻辑功能定义 :
assign
always
function
task
...


(1)每个端口除了要声明是输入、输出还是双向端口外,还要声明其数据类型,是wire型、reg型还是其他类型

(2)输入和双向端口不能声名为寄存器型

(3)测试模块中不需要定义端口

3. Verilog模块的模板:

module <顶层模块名> (输入输出端口列表)
input  输入端口列表;               //输入端口声明
output 输出端口列表;               //输出端口声明

///
//
定义数据, 信号的类型, 函数声明, 用关键字 wire,reg,task, funtion等定义
wire 信号名;
reg  信号名;

///
//
逻辑功能定义
assign <结果信号名> = <表达式>;

///
//
用always块描述逻辑功能
always@(*)//敏感信号表达式
begin

//过程赋值
//if-else,case语句,for循环语句
//task,function调用
   
end

///
//
调用其他模块
<调用模块名> <例化模块名> (<端口列表>);

门元件例化
门元件关键字 <例化门元件门> (<端口列表>);

endmodule

你可能感兴趣的:(FPGA学习,fpga开发)