编程语言——Verilog建模概述


在HDL的建模中,主要有结构化描述方式、数据流描述方式和行为描述方式,下面分别举例说明三者之间的区别

结构化描述方式

结构化的建模方式就是通过对电路结构的描述来建模,即通过对器件的调用( HDL概念称为例化),并使用线网来连接各器件的描述方式。
模块例化语句例化的格式为:
<设计模块名> <例化电路名> < 端口列表>;

// 名关联法
xxxx		u_xxxx
(
	.a		(a1),
	.b		(b1),
	.c		(c1),
	.d		(d1)
);

其中设计模块名是用户设计的电路模块名,例化电路名是用户为了系统设计定义的标书费(为可选项),相当于电路板上为插入设计元件的插座;端口列表用于描述模块元件上引脚与插座的对应关系。端口列表的描述方法有两种:
1. 位置关联法(.设计模块端口名, .设计模块端口名,…… .设计模块端口名) 但是顺序要对应。
2.名称关联法 (.设计模块端口名(插座引脚名), .设计模块端口名(插座引脚名), ….)
顺序可以不对应,上例使用的就是名称关联法(推荐使用)。

数据流描述方式

数据流的建模方式就是通过对数据流在设计中的具体行为的描述的来建模。最基本的机制就是用连续赋值语句。在连续赋值语句中,某个值被赋给某个线网变量(信号),语法如
下:
assign #time net_name = expression;
如:
assign #2 a = b;
在数据流描述方式中,还必须借助于HDL提供的一些运算符,如按位逻辑运算符:逻辑与(&),逻辑或(|)等。

module FA_flow
(
input 		a,
input 		b,
input 		cin,
output 		so,
output 		count
);
wire s1,t1,t2,t3;
assign  s1 = a ^ b;
assign  so = s1 ^ cin;
assign  t3 = a & b;
assign  t1 = a & cin;
assign  t2 = b & cin ;
endmodule

注意在各assign 语句之间,是并行执行的,即各语句的执行与语句之间的顺序无关。如上,当A有个变化时, S1、 T3、 T1 将同时变化, S1的变化又会造成Sum的变化。

行为描述方式

行为方式的建模是指采用对信号行为级的描述(不是结构级的描述)的方法来建模。在表示方面,类似数据流的建模方式,但一般是把用initial 块语句或always 块语句描述的归为行为建模方式。行为建模方式通常需要借助一些行为级的运算符如加法运算符( +),减法运算符(-)等。

module FA_behav2
(
input 		a,
input 		b,
input 		cin,
output reg	so,
output reg	count
);
always@ ( * ) begin
	{count , so} = a + b + cin ;
end
endmodule
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值