2.2 电路板规格

2.2 电路板规格

本节将确定电路板的规格。制定 AZPR EvBoard 的规格时,在实现必要功能的前提下,尽量考虑降低制作上的难度。

2.2.1 电路板名称

因为这块电路板是用于测试本书制作的 AZPR SoC,所以命名为 AZPR EvBoard。Ev 是取自评价、测试的英文单词 Evaluation。如果基板名称太长了,有可能没法进行丝网印刷,所以尽量选用简短的名称。

AZPR EvBoard 的电路板名称中虽然含有 AZPR 的字样,但却是作为通用的 FPGA 学习电路板而设计的。所以,也可以用于实现 AZPR SoC 以外的电路。

2.2.2 电路板的构成

AZPR EvBoard 由一块 FPGA 电路板和一块电源电路板构成。这种设计方式有以下两个理由。

一是电路板尺寸有限制。如果在一块基板上同时搭载 FPGA 电路和电源电路,I/O 部分的面积将会缩小,导致无法搭载足够的 I/O。

另外一个理由是将电源电路区分开后,可以单独对电源电路进行测试。在电源电路上连接 FPGA 等负载后,有可能会由于一些预料之外的原因导致不能输出正常电压。将电路板分成两部分后,可以简单地区分是电源电路板的问题还是 FPGA 电路板的问题。

2.2.3 电路板尺寸

FPGA 的尺寸取决于两点限制。

一个是设计时使用的电路板 CAD 软件。本书设计时使用的电路板 CAD 是 Eagle,可以设计的电路板尺寸上限为 100mm×80mm。关于 Eagle 的详细信息,请参见 2.4.5 节。另外一个是感光电路板的大小限制。使用感光电路板进行制作时,需要选择尺寸最接近 CAD 软件限制的感光电路板。因为 100mm×80mm 以下的感光电路板有 100mm×75mm 的,所以 FPGA 的电路板大小选定为 100mm×75mm。

除了 FPGA 电路板,还需要设计制作电源电路板。较之 FPGA 电路板,电源电路板的规模比较小,所以选用的尺寸为 47.5mm×72mm。这个尺寸是日本 Sunhayato 公司生产的开孔感光电路板的一半大小。关于开孔感光电路板,将在 2.5.3 节进行详细说明。

2.2.4 电路板层数

印刷电路板是将走线样式对齐后,各层间通过垂直通孔连接制作起来的。例如,计算机的主板一般使用的是 4 层电路板。除了我们可以直接看到的两面的表层之外,内侧还夹有两层。IC 的信号线和电源之间的连接比较多,所以为了使得设计更加容易,4 层基板的内层一般集中布置电源、GND 等。

由于使用感光电路板可以制作双层双面电路板,AZPR EvBoard 使用双层电路板来进行设计。但是双层电路板的制作难度比较大,对新手来说门槛比较高。所以我们将电路设计为也可使用单层电路板制作的布局。布局时,基本上正面走信号线,反面配电源线。元件也仅安装在单面。另外,电源电路板使用单面板就足够了,所以使用单层设计。电路板的尺寸、层数如图 2-2 所示。

图 2-2 电路板的尺寸、层数

2.2.5 FPGA 选型

我们需要对搭载在 AZPR EvBoard 上的元件进行选型。首先是 FPGA,著名的 FPGA 厂商有赛灵思、Altera 等公司。根据 FPGA 厂家不同,配置电路也不一样,所以需要首先确定使用哪个厂家的 FPGA。

这次根据笔者的使用经验选择赛灵思公司的产品。打开赛灵思公司的网页,会发现他们有 Artix、Kintex、Virtex 和 Spartan 等产品系列。在这些产品中,仅 Spartan 采用了可以使用烙铁焊接的 QFP 封装。考虑到焊接的难易度,AZPR EvBoard 选用采用了 VQG100 的 Spartan-3E。

驱动 Spartan-3E 需要的电源有 1.2V、2.5V、3.3V 三种。其中 1.2V 是用作 FPGA 内部核心电压。2.5V 用作配置(Configuration)电路。FPGA 与配置 ROM、缓存 IC 相连 接。3.3V 用作与外围电路连接的 I/O 的电压。

2.2.6 外围电路的选定

板上的外围电路与 FPGA 的用户 I/O 相连接。用户 I/O 是指用户可以自由使用的 FPGA 引脚。VQG100 封装有 66 个用户 I/O 引脚。由于电路板的尺寸以及布线密度等限制,本书不能用上全部引脚,但是会尽量多地使用。

AZPR EvBoard 上搭载的外围电路,要可以充分发挥利用 AZPR SoC 的全部功能。表 2-1 列出了外围电路一览。

表 2-1 搭载的外围电路

外围电路

备注

USB-串口转换电路

通过 USB 口配置 FPGA
UART 通信

晶体振荡器

用于时钟输入

复位电路

用于输入复位信号,监视电压

LED

用于显示 1 位数据
搭载两个

七段数码管

用于显示数字
搭载两个

按键开关

用于用户输入
搭载 4 个

排线插座(VPort 兼容端口)

用于通用 I/O
搭载两个

首先要为 AZPR SoC 提供时钟电路和复位电路。时钟使用 10MHz 的晶体振荡器。

接下来是连接 UART 和 GPIO 的外围电路。将 UART 的信号电压转换到 ±9V 之后,就可以和计算机的串口相连。但是由于近年来搭载串口的计算机越来越少,所以我们使用 UART 转 USB 芯片。GPIO 部分,使用按键开关作为输入,使用 LED 和七段数码管作为输出。接入按键开关时需要进行防抖处理。关于按键开关抖动问题的详细说明请参见 2.4.3 节。

有了以上部件就可以测试 AZPR SoC 最基本的功能了。未使用的用户 I/O 则与排线 插座连接,作为扩展口安装在电路板的边缘部分。排线插座的引脚顺序遵循 VPort 标准。关于 VPort 的详细说明请参见 2.4.3 节。

外围电路的信号电压统一为 3.3V。这样在进行电路板布局布线时,比较容易安排外围电路的电源线。

专栏

关于 FPGA

实现逻辑电路的方法有很多种。可以使用通用逻辑芯片的组合来实现;也可以通过 LSI 技术设计专用集成电路(ASIC,Application Specific Integrated Circuit)来实现;还可以使用像 FPGA(Field-Programmable Gate Array)这样可以通过配置更改内部逻辑的 IC 来实现。如果使用通用逻辑芯片的组合来实现 AZPR SoC 这样规模的电路,将需要大量 IC,所以不太现实。如果要个人制作 ASIC,则需要花费上百万元,也很不现实。所以我们使用 FPGA 来实现 AZPR SoC。

FPGA 是可以根据使用目的、要求规格而更改内部构成的 IC。FPGA 大体由 6 个模块构成。FPGA 内部构造如图 2-3 所示。各个模块的名称根据生产厂家不同会有所差异。因为 AZPR EvBoard 使用的是 Xilinx 的 FPGA,在这里使用 Xilinx 公司使用的名称进行说明。

图 2-3 FPGA 内部构造

  • CLB

    CLB(Configurable Logic Block)是由 LUT(LookUp Table)和寄存器组成的模块。逻辑电路由组合逻辑电路和时序逻辑电路组成。而 CLB 则用于组成这些电路,是 FPGA 的中心元素。LUT 用于实现组合逻辑电路,寄存器用于实现时序逻辑电路。

    组合逻辑电路是仅依据当前输入值决定唯一输出值的电路,可以用真值表来表示。LUT 内部有像真值表一样的表格,根据输入的信号确定输出信号。例如 4 输入 1 输出的 NAND 的真值表,如表 2-2 所示,4 个输入信号全为 1 时,输出为 0,其余情况输出全部为 1。

    表 2-2 4 输入 NAND 真值表

    输入 输出
    A B C D X
    0 0 0 0 1
    0 0 0 1 1
    0 0 1 0 1
    0 0 1 1 1
    0 1 0 0 1
    0 1 0 1 1
    0 1 1 0 1
    0 1 1 1 1
    1 0 0 0 1
    1 0 0 1 1
    1 0 1 0 1
    1 0 1 1 1
    1 1 0 0 1
    1 1 0 1 1
    1 1 1 0 1
    1 1 1 1 0
  • 内部接线

    我们下面要介绍 CLB、IOB、DCM 以及块 RAM 等模块,内部接线是用来将这些模块输入输出相连的内部布线。所有模块连接到开关矩阵,通过配置切换开关矩阵可以实现任意模块之间的布线。

  • IOB

    IOB(I/O Bank)是指连接到 FPGA 用户 I/O 引脚的模块。IOB 可以用于切换 FPGA 引脚的输入输出方向、指定逻辑电压电平高低等。

    IOB 有多个种类。有作为通用输入输出 I/O 的用户 I/O、仅作为输入的 INPUT、与配置电路共用的 DUAL、参考电压的 VREF,以及时钟的 CLK。CLK 又分几种。AZPR EvBoard 上我们使用连接到 DCM 的全局时钟 GCLK。另外 INPUT 是输入专用用户 I/O,不可以作为输出使用。

  • 块 RAM

    块 RAM 是可以作为内存使用的区域。块 RAM 根据 FPGA 的等级或尺寸不同容量有数千比特到数兆比特不等。

  • DCM

    DCM(Digital Clock Manager)是用作调整时钟的电路。DCM 将输入的时钟信号进行变相、分频输出。分频是指将频率进行 n 倍变换。DCM 的设定在 ISE 软件上进行。详细使用方法请参照第 3 章。

  • 配置电路

    配置电路是存储 FPGA 内部配置信息的模块。CLB、IOB、块 RAM、DCM 等模块内的电路功能可以根据配置电路的数据内容重写,以实现任意电路。

    FPGA 的配置电路由静态随机存储器 SRAM 组成,切断电源后存储内容会丢失。因此一般会在外部使用可编程只读存储器 PROM(Programmable ROM)存储配置信息,在接通电源时将电路配置信息从 PROM 传送到 FPGA。存储配置数据的 PROM 称为配置 ROM。

 

专栏

关于 JTAG

FPGA 内部的配置电路使用 JTAG(Joint Test Action Group)接口与外部进行通信。JTAG 的控制信号由 TCK、TMS、TDI、TDO 组成。JTAG 的信号线接线图如图 2-4 所示。

图 2-4 JTAG 信号线接线图

TCK 是时钟输入,TMS 用于模式选择,TDI 是数据输入,TDO 是数据输出。因为通过 TDI 输入的数据经由 TDO 输出,所以电路板上可以串联多个使用了 JTAG 的 IC。多个 JTAG IC 组成的配置电路称为 JTAG 链。在 AZPR EvBoard 上,配置 ROM 和 FPGA 通过 JTAG 链相连接。

由于 TCK 和 TMS 与 JTAG 链上所有芯片相连接,布线时需要考虑保证这两个信号的输出电流和反应速度。要减少电路分支,使用最短距离来连接 TCK 和 TMS。

JTAG 的信号电平根据 FPGA 而定。Spartan-3E 的配置电路信号电平为 2.5V。

目录