OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4525|回复: 2

[其他] 第二章 FPGA知识大串讲02_知识串联

[复制链接]

58

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2022-2-11
在线时间
32 小时
发表于 2022-3-23 15:24:10 | 显示全部楼层 |阅读模式
第二章 FPGA知识大串讲02_知识串联

本文为明德扬原创文章,转载请注明出处!

在上一篇文章中,我们概括地讲述了FPGA的一些学习误区。本文我们将FPGA的关键知识串联起来,系统地介绍各个知识点所处的层次和位置,为后面几仿篇文章的详细讲解做好铺垫。



第1节  FPGA的基本电路结构
1.png
首先,我们来讲解一下FPGA的基本电路结构。请看上图中左边红色方框,该方框内包含了组合逻辑电路以及一个D触发器。组合逻辑里可能是加法器、减法器、选择器,甚至是什么都没有,就是连线;组合逻辑的输出将连接到D触发器的输入端;D触发器在时钟的驱动下,将组合逻辑的运算结构,输出到D触发器的输出端。

这就是一个FPGA的基本电路结构,而这个电路结构则与VERILOG中的一个ALWAYS对应,如下面的代码
2.png
上面代码在综合器的作用下,其综合的FPGA电路结构,也是组合逻辑+D触发器的形式。其中组合逻辑由比较器(cnt==0、cnt==1、cnt==2就是比较器)、选择器(从1、2、3或者保持不变中选择)等组成;D触发器的时钟就是代码中的clk,输入则是组合逻辑的结果,输出则是信号cnt。

有读者可能会对基本电路结构有疑问,难道所有代码都这样结构吗?例如下面代码中的add_cnt0和end_cnt0信号,它是由assign设计的,它们就没有D触发器。
3.png
单纯只看add_cnt0和end_cnt0的代码,貌似是没有D触发器,但仔细看第5行和第6行,这个两个信号是参与了判断(事实就是选择器),决定了D触发器的输出cnt0。即从add_cnt0到cnt0之间,就是组合逻辑+D触发器的结构。

FPGA代码是由一个又一个ALWAYS代码组成的,这说明FPGA的绝大部分电路,就是由一个又一个“组合逻辑+D触发器”的电路组合起来的,如下图
4.png
上面这种结构是我们设计的基本单位。这种结构还有一种隐含的意思:组合逻辑决定电路的运算及功能,D触发器就像一个节点,将运算结果保存下来,为下一级运算作准备。FPGA代码设计过程,就像是设计一个功能,保存一下,设计下一个功能,保存一下。文字难以描述,请读者认真体会体会。

还有注意的是,上面推荐的是“组合逻辑+D触发器”结构思维,不要使用“D触发器+组合逻辑”思维,这种思维是不正确的。
5.png
再看上图,为什么说FPGA代码里,各个ALWAYS是并行的呢?从上图就很容易理解了。图中可以看到,三个D触发器都连接时钟CLK。当时钟CLK的上升沿的时候,这三个D触发器将同时受到此信息,同时将D触发器的输入值给到输出。这些电路都是同时工作的,不存在谁先谁后的。没有所谓说这个电路在工作,另一个不在工作的情况。

这个就是FPGA 的基本电路结构,读者务必做到非常清楚这个电路结构,这是我们后面描述的一个重要基础。





第2节 FPGA的知识点

我们在FPGA基础电路结构图的基础,将FPGA的所有知识点串联起来,然后通过4篇文章,逐一进行详细的讲解。
6.png
1. 先讲述组合逻辑部分。组合逻辑是由加法器、减法器、比较器、选择器等电路组成的,所以一开始我们要理解组合逻辑的电路有哪些类型;然后据此掌握这些类型的VERILOG代码的写法;接下来讨论这些组合逻辑的时序,引出组合逻辑才有的竞争和冒险现象,最后提出竞争和冒险的解决方法。
7.png
2. 完成组合逻辑的讲述后,我们将讨论D触发器。首先会讲解D触发器的结构,进而会讲述D触发器的时序,讨论D触发器时序与组合逻辑的异同。从D触发器时序中,有一个非常重要的概念:建立时间和保持时间。如果建立时间和保持时间不满足,就会有一个叫亚稳态的情况。亚稳态有什么危害,亚稳态出现的场合有哪些。在明确了出现的场合后,就要想办法解决亚稳态问题,提出了亚稳态的解决方法。其解决方法分两种:一种是单一信号,也就是一比特信号的解决方法;还有一种是多比特信号的解决方法。
8.png
3. 讲完了D触发器之后,我们将把组合逻辑和D触发器联合起来。前面已经讲魔神,组合逻辑+D触发器是一个正确的的电路结构。有正确,那么就不正确,根据收集读者的反馈情况,我们列出了一些经常会犯的、不合理的结构。之后将讨论这个基本结构的时序;接下来是讲述如何用VERILOG来实现。实现的话,就有行为描述以及状态机的实现这几种方法了。
9.png
4. 最后一部分,我们将单独对时钟进行讲解。时钟是FPGA的一个基础,是一个很重要的概念,是FPGA设计的重点和难点。首先我们将讲述时钟的概念;然后是时钟抖动SKEW和时钟频率。经常有被问到:我这个电脑CPU能跑1G,他那个电脑CPU能跑2G,这就是使用频率。那这个频率取决于什么因素,为什么有些跑得快,有些跑得慢?这个问题将引出关键路径的概念。为了提高时钟频率,我们可以怎么做?流水线的设计!!!


以上就是我们FPGA 的所有知识点,将其展示到一张图,方便读者使用。
10.png




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

163

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2021-12-14
在线时间
70 小时
发表于 2022-3-23 15:46:00 | 显示全部楼层
太棒啦!!!感谢分享
回复 支持 反对

使用道具 举报

58

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2022-2-11
在线时间
32 小时
 楼主| 发表于 2022-3-23 15:59:19 | 显示全部楼层
F4PigLet 发表于 2022-3-23 15:46
太棒啦!!!感谢分享

不客气,需要更多FPGA学习资料可以家fpgamdy
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表