verilog 数据流描述 行为描述 结构化描述

数据流描述 assign:

即信号从输入流向输出,并不会在其中存储。 没有reg,只有assign。数据流描述中最基本的语句是assign连续赋值语句。
eg: 4位全加器


// 4位全加器
module Full_Add_4b_1(A, B, Cin, Sum, Cout); 
input[3:0] 	A; 
input[3:0] 	B; 
input 		Cin; 
output[3:0] Sum; 
output 		Cout; 

assign {Cout, Sum} = A + B + Cin; 
endmodule


行为描述 always:

类似数据流的建模方式,但一般是把用 initial块 语句或 always 块 语句描述的归为行为建模方式。
只有寄存器 reg型 的信号才可以在 always 和 initial 语句中进行赋值。从0 时刻开始always 语句是一直重复执行,由敏感表(always 语句括号内的变量)中的变量触发。

eg: 4位全加器

module Full_Add_4b_2(A, B, Cin, Sum, Cout);
input[3:0]	A; 
input[3:0] 	B;
input 		Cin; 
output[3:0] Sum; 
output		Cout; 

reg[3:0] Sum;  // reg型变量才可以用always
reg Cout;
 
always @(A or B or Cin) 
begin 
	{Cout, Sum} <= A + B + Cin;
end 
endmodule

结构化描述 include:

实例化已有的功能模块,这些功能模块包括门原语、用户自定义原语(UDP)和其他模块(module)。
类似于 “顶层封装” 各个模块,中间如果有连线全是 wire。

eg: 4位全加器


`include "Full_Add_4b_1.v" 
module Full_Add_4b_3( A, B, Cin, Sum, Cout); 

input[3:0] A; 
input[3:0] B; 
input Cin;
output[3:0] Sum; 
output Cout; 

//实例化全加器 
Full_Add_4b_1 FA0(A, B, Cin, Sum, Cout);  // 同名例化

endmodule

eg: 1位全加器


module Full_Add_1b_3(A, B, Cin, Sum, Cout); 

input A; 
input B; 
input Cin; 
output Sum; 
output Cout; 

wire S1, T1, T2, T3;  // 模块间连线

// -- statements -- // 
xor x1 (S1, A, B);   // 异或门 A⊕B,  A、B是输入,S1是输出
xor x2 (Sum, S1, Cin); 
and A1 (T3, A, B );  // 与门 , A、B是输入,T3是输出
and A2 (T2, B, Cin); 
and A3 (T1, A, Cin); 
or O1 (Cout, T1, T2, T3 );   // 或门, T1, T2, T3是输入,Cout是输出

endmodule

eg: 2个1位全加器组成的两位全加器
顶层模块Full_Add_2b_3 调用了两个一位的全加器 Full_Add_1b_3,即顶层模块例化了两个现成的模块


`include "Full_Add_1b_3.v" 
module Full_Add_2b_3(FA, FB, FCin, FSum, FCout) ; 

parameter SIZE = 2; 
input [SIZE:1] FA; 
input [SIZE:1] FB; 
input FCin; 
output [SIZE:1] FSum; 
output FCout; 

wire FTemp; 

Full_Add_1b_3 FA1( .A (FA[1]), .B (FB[1]), .Cin (FCin) , .Sum (FSum[1]), .Cout (FTemp) ); 
Full_Add_1b_3 FA2( .A (FA[2]), .B (FB[2]), .Cin (FTemp) , .Sum (FSum[2]), .Cout (FCout) );   // .A (FA[2]) ,其中.A 表示调用器件的管脚A,括号中的信号表示接到该管脚A的电路中的具体信号

endmodule


数字系统的设计过程为:
Idea->行为级描述->RTL描述->门级网标->物理版图

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值