2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > HDL语言三种描述方式--结构化描述方式 数据流描述方式 行为级描述方式

HDL语言三种描述方式--结构化描述方式 数据流描述方式 行为级描述方式

时间:2021-03-17 04:43:05

相关推荐

HDL语言三种描述方式--结构化描述方式 数据流描述方式 行为级描述方式

当我们使用HDL代码在描述硬件功能时,主要有三种描述方式,即结构化描述方式、数据流描述方式、行为级描述方式。在平时编程时,可根据实际情况及个人喜好选择其中一种或者几种混合在一起进行自己的HDL代码编写。下面对三种描述方式进行介绍。

1.结构化描述方式

结构化描述方式时抽象级别最低的描述方式,但同时也是最接近于实际硬件的描述方式。采用结构化描述方式来编写HDL代码,其思路就跟在面包板上搭建数字电路是一样的,编程就是一个一个的器件相连

但结构化描述不常用,原因有二:

1.使用结构化描述方式不宜描述功能复杂电路。因为我们大脑不仅要抽象出电路逻辑功能,还要抽象出具体实现形式。

2.不同FPGA厂商提供的软件集成开发环境中的原语使用名称是不一样的,代码编写起来不通用。

但结构化描述方式也有优势。父模块调用子模块的过程只能通过结构化的描述方式来实现。

言而总之,结构化描述方式的特征就是实例化语句

一个例子

输入abcd分别为一比特逻辑,当ab不相等且cd不相等时输出o为1,否则输出o为0.要用结构化描述方式编写代码,必须先抽象出数字电路结构(即具体用到什么门电路)。

比如说采用下图的门电路(答案不唯一)

这里采用两个异或门和一个与门。

verilog实现

module aa(input a,b,c,d,output o);wire tmp0,tmp1;XOR2 m0(.O(tmp0),.I0(a),.I1(b));XOR2 m1(.O(tmp1),.I0(c),.I1(d));AND m2(.O(o),.I0(tmp0),.I1(tmp1));endmodule

2.数据流描述方式

数据流描述方式,又可称为寄存器传输级描述,他主要从数据的变换和传送角度来描述设计模块,并且使用的语句多为和硬件行为一致的并行语句。

数据流描述方式描述上例。

module aa(input a,b,c,d,output o);wire tmp0,tmp1;assign tmp0 = a ^ b;assign tmp1 = c ^ d;assign o = tmp0 & tmp1;endmodule

对比结构化描述方式,数据流描述方式清晰地阐明数据从输入到输出的传递情况。但是队医tmp0,tmp1,o却没有显式地规定一定要用什么具体电路去实现。比如,数据流的描述只说明tmp0可以=由ab异或产生,但并没有说明用什么门电路来实现异或操作。是直接一个异或门,还是使用与或非搭建)。这一部分工作交给编译器。

到这里,你可能想问前面结构化描述方式就说明异或操作就用一个异或门来实现了吗?况且FPGA基本单位也不是一个个的与或非异或门啊。其实前面结构化描述方式使用的原语。类似于一个IP核,核内描述就能够说明使用的是一个什么门电路。

3.行为级描述

行为级描述方式的主要载体就是串行语句,例如ifelse同时辅以并行语句用以描述各个算法之间的连接关系

module aa(input a,b,c,d,output o);always@(a,b,c,d)if(a != b && c != d)o = 1'b1;else 0 = 1'b0;endmodule

行为级描述简直就是自然语言的直译啊。所以行为级描述抽象级别最高、概括能力也最强。

摘自《FPGA之道》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。