微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > fpga基础篇(二):三大并行结构

fpga基础篇(二):三大并行结构

时间:10-02 整理:3721RD 点击:

fpga基础篇(二):三大并行结构

最近小编比较忙,所以这期给大家介绍一个基础篇,比较简单,但却是FPGA编程的基础。我们知道FPGA与单片机最大的区别就是FPGA是并行执行的,而单片机是串行的,说简单一点,就是FPGA同一时刻有好多语句在执行,而单片机同一时刻只有一条语句在执行。既然FPGA是并行的,那就意味着彼此并行语句之间不能互相包含,比如你在一个并行语句块中又写了一条并行语句,根据规则,并行语句是同时执行的,想想怎么让FPGA执行,所以FPGA从语法层次上就不允许并行套并行。

我把实际编程中经常用到的并行语句给总为一下3大类:

1.  元件例化语句

2.  always块语句(注意:initial块等其他块一般只用在测试文件中)

3.  assign赋值语句

我们在实际中经常用的就是上述三种,既然他们是并行的就彼此不能相互包含,是互相独立的。例如,有的人想通过if语句来例化原件,这是不可以的(generate块除外),if本身为串行语句,为了保持并行性,所以把if放到并行always块中,always块和元件例化属于并行关系,彼此谁也不能包含谁,所以是不允许的。

这里简单介绍一下assign语句,assign主要给wire类型的变量赋值(注意输入输出端口默认都是wire型),wire型变量与reg型变量最大的区别就是reg有保存的,实际上叫保持的功能更合适,而wire无,所以我们如果想让wire保持某一数值,就必须连续不断地给wire变量赋值,所以assign叫做连续赋值,由于reg本身的保持功能,所以不需要连续赋值,所以reg不能用assign语句赋值。



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top