FPGA基础知识1:FPGA简介


提示:点击上方链接,即可快速跳转至对应章节


一、前言

从方法论上来说,学习这件事本身会围绕着以下几个问题:是什么,为什么,怎么样。

学习FPGA的第一步是认识它,文章围绕FPGA是什么的问题,依次从FPGA的概念芯片实体以及代码实际生成的电路实例几个方面去认识FPGA,让初学者对于FPGA的认知不再浮于表面,理解更加深刻。

文章的重点包括两部分
1.芯片的内部结构介绍;
2.结合1,通过很简单的verilog代码去带大家观察自己设计出来的电路在最底层实际的样子。


二、FPGA概念

FPGA 的全称为 Field-Programmable Gate Array,即现场可编程门阵列。通俗易懂地介绍,就是一种内部电路的设计能通过编程实现的芯片。
从它的名字上去理解,可以得到FPGA的部分特性:
现场可编程:芯片功能可以现场通过编程改变;
门阵列:对于FPGA内部结构的一种描述。
注意:这里仅介绍FPGA部分,不设涉及ZYNQ或者其他SOC


三、FPGA芯片实体

3.1 芯片外部样子

Xilinx FPGA(V7、K7)的外观如下:

Xilinx FPGA
芯片上面一般会有FPGA芯片的型号等信息。

3.2 芯片内部结构(重点)

3.2.1 FPGA内部架构示意图

下面是一张典型的FPGA内部架构示意图,由下图可以看到,FPGA芯片内部由各种资源按照一定的设计规则进行排列。从芯片外围向内部看过去,首先是排列在周围的I/O组、高速收发器serdes块、时钟管理单元和锁相环,然后是内部的大量逻辑块,以及散落在其中的块状RAM、运算单元(DSP、乘法器)等资源。

在这里插入图片描述

3.2.2 实际FPGA内部架构图

在vivado中打开一个FPGA芯片的底层,可以看到,其结构如下图所示,由于芯片上含有的资源量巨大,下图无法显示出芯片的详细架构。
在这里插入图片描述
将上图的中间部分进行放大后,可以看到如下所示的FPGA内部局部结构图如下所示,其中包括了逻辑块和其他各种资源,同理可将上图中的边缘部分进行放大,对FPGA的实际内部结构进行进一步了解,这里就不一一去观察。
FPGA内部局部图


四、代码实际生成的电路实例(重点)

veirlog代码如下:

(* DONT_TOUCH = "yes" *)
module top(
    input       i_clk       ,
    input       i_rst       ,
    output      o_dout
    );
    
    reg         r_a = 0;
    always @ (posedge i_clk)begin
        if(i_rst == 1)begin
            r_a         <= 0;
        end else begin
            r_a         <= ~r_a;
        end
    end
    
    reg[01:00]  r_b = 0;
    always @ (posedge i_clk)begin
        if(i_rst == 1)begin
            r_b         <= 0;
        end else begin
            r_b         <= r_b + 1;
        end
    end
    
    reg         r_c = 0;
    always @ (posedge i_clk)begin
        if(i_rst == 1)begin
            r_c         <= 0;
        end else if(r_b >= 2)begin
            r_c         <= 1;
        end else begin
            r_c         <= 0;
        end
    end    
    
assign  o_dout = r_a & r_c;
       
endmodule

综合后得到RTL图如下:

在这里插入图片描述

实现后的底层结构图如下:

注意:这里的管脚约束可以不用设置,直接运行,系统会给默认分配
下面是代码实际生成的电路的内部图
实际电路
在vivado中添加其布线信息后,得到由文中代码得到的实际电路的布局布线图如下:
实际电路布局布线图

五、总结

从以上看来,其实可以做以下总结:FPGA是一种包含了多种底层资源的,可以通过编程改变电路功能的芯片。实际上,我们写的代码会被综合成FPGA的各种底层资源,综合这一步相当于确定了实现目标电路需要哪些“元器件”,然后再由软件在芯片上对这些“元器件”进行选址和连线,形成目标电路。


六、相关知识快速通道

1.FPGA基础知识----FPGA 简介,作者:原来如此呀
2.FPGA到底是什么,作者:战斗机上的飞行员
系列文章持续更新中,欢迎大家关注,一起进行技术探讨~

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值