Menu Close

Xilinx 原语STARTUPE2的设置与应用

如果在FPGA配置之后仍然想访问非通用输入输出的管脚(即无法通过*.xdc文件直接限制,一般作特殊用法的管脚),CCLK时,需要使用STARTUPE2原语。如果想要在上电之后再次复位所有的寄存器,触发器和I/O管脚,也需要使用STARTUPE2原语。总的来说,STARTUPE2原语提供了用户访问FPGA配置相关信号的途径。如果没有STARTUPE2原语,用户也无法访问SPI/BPI FLASH。在介绍Xilinx 原语STARTUPE2之前,先介绍两个全局的控制信号GSR和GTS,它们一般用来控制FPGA配置期间所有的寄存器,触发器和I/O管脚的状态。

1. GSR和GTS

GSR(Global set reset)被拉高时,异步地将所有的寄存器和触发器都设置到它们的初始状态。

GTS(Global 3-state)被拉高时,异步强迫所有的I/O管脚拉成高阻(High-Z,3态)。

GSR和GTS都是对全局的寄存器,触发器或是I/O管脚进行复位/设置,并且使用时不需要通用布线资源。GSR在FPGA配置期间会被自动启用,进而确保FPGA在启动时是已知状态。如果是在FPGA配置完成后仍然需要对全局的寄存器,触发器或是I/O管脚进行复位/设置,GSR和GTS都可以用STARTUPE2原语来设置实现。除了GSR和GTS外,STARTUPE2中还有其它在FPGA配置时使用的信号的设置。

 

2. STARTUPE2原语

STARTUPE2 原语提供了用户逻辑和配置逻辑控制和状态信号之间的接口,即用户可以通过STARTUPE2来访问配置逻辑控制和状态信。 许多引脚与启动顺序有关,包括允许用户指定启动时钟的 CLK 信号。 STARTUPE2 可以在设计中实例化,进而在设备运行期间提供用户对选定配置信号的控制。

2.1 STARTUPE2原语模板

原语的使用,可以在点击Vivado的文本编辑器的language template(灯泡状图标),打开原语使用界面,STARTUPE2所在的路径是点开language temp之后,找到Verilog > Device Primitive Instantiation > Artix-7 > Config/BSCAN Components > STARTUP Block (STARTUPE2),如图1所示。

图1 STARTUPE2原语

 

2.1 STARTUPE2原语端口

STARTUPE2原语的端口示意图如图2所示,STARTUPE2块左侧的信号都是输入,右侧的信号都是输出。其端口的例化如下:

图2 STARTUPE2原语端口

 

// STARTUPE2: STARTUP Block
//            Artix-7
// Xilinx HDL Language Template, version 2018.2

STARTUPE2 #(
   .PROG_USR("FALSE"),  // Activate program event security feature. Requires encrypted bitstreams.
   .SIM_CCLK_FREQ(0.0)  // Set the Configuration Clock Frequency(ns) for simulation.
)
STARTUPE2_inst (
   .CFGCLK(CFGCLK),       // 1-bit output: Configuration main clock output
   .CFGMCLK(CFGMCLK),     // 1-bit output: Configuration internal oscillator clock output
   .EOS(EOS),             // 1-bit output: Active high output signal indicating the End Of Startup.
   .PREQ(PREQ),           // 1-bit output: PROGRAM request to fabric output
   .CLK(CLK),             // 1-bit input: User start-up clock input
   .GSR(GSR),             // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name)
   .GTS(GTS),             // 1-bit input: Global 3-state input (GTS cannot be used for the port name)
   .KEYCLEARB(KEYCLEARB), // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM)
   .PACK(PACK),           // 1-bit input: PROGRAM acknowledge input
   .USRCCLKO(USRCCLKO),   // 1-bit input: User CCLK input
                          // For Zynq-7000 devices, this input must be tied to GND
   .USRCCLKTS(USRCCLKTS), // 1-bit input: User CCLK 3-state enable input
                          // For Zynq-7000 devices, this input must be tied to VCC
   .USRDONEO(USRDONEO),   // 1-bit input: User DONE pin output control
   .USRDONETS(USRDONETS)  // 1-bit input: User DONE 3-state enable output
);

// End of STARTUPE2_inst instantiation

 

原语中属性部分的描述如表1所示:

表1

管脚名称 输入/输出类型 描述
CLK 输入 用户启动时钟引脚。 驱动器件启动序列时钟的 FPGA输入。 为启动序列提供用户定义的 CCLK。
GSR 输入  GSR引脚是FPGA的有效高电平输入,声明异步设置/复位,可用于重新初始化 CLB 触发器。这里不推荐将GSR拉高(应将GSR拉低以禁用)。 GSR 信号跨越整个器件并与用户时钟异步释放。 由于器件上的异步释放和偏移,触发器很可能不会在同一时钟周期内释放,并且可能产生亚稳态。 使用 GSR 的应用程序应在 GSR拉高之前停止所有时钟,和/或在 GSR 拉高之后重新配置器件。 相同的触发器初始化(设置/复位)在启动之前的配置期间安全地执行。
GTS 输入 全局三态引脚。 FPGA的高电平有效输入,将所有用户 I/O管脚(配置 bank 除外)置于高阻态(High-Z)。 GTS在配置期间总是被拉高。 对于大多数应用,该引脚应拉低。
KEYCLEARB 输入 从电池供电的 RAM 中清除 AES 解密密钥。FPGA低电平有效输入。 该引脚的 TPROGRAM (FPGA器件datasheet中上电编程的时间)延迟期间保持低电平时,会从电池供电的 RAM (BBRAM) 中擦除解密密钥的内容。(相关内容参考文档Xilinx FPGA 上电配置官方文档)
PACK 输入 PROGRAM_B 或 JPROGRAM(JTAG相关管脚和指令)信号的确认。 作为FPGA 输入来确认PROGRAM_B 信号的拉高并允许 PROGRAM_B 状态机的其余部分继续重置 FPGA。 此引脚仅在设置了 PROG_USR 属性时启用。
PREQ 输出 PROGRAM_B 脉冲或 JPROGRAM REQuest 到 FPGA 逻辑。 该引脚是 PROGRAM_B 状态机复位器件的请求,允许对 PROGRAM_B 请求进行门控,直到处于可以完成复位的状态。 此引脚仅在设置了 PROG_USR 属性时启用。
USRCCLKO 输入 CCLK 引脚。 在FPGA配置之后,FPGA 输入来驱动自定义逻辑生成的时钟频率到 FPGA CCLK 引脚。 用于外部 SPI FLASH设备的配置后访问。
USRCCLKTS 输入 用户 CCLK 三态使能到 CCLK 引脚。FPGA的高电平有效输入,在FPGA配置之后使用时将 FPGA CCLK 引脚置于高阻态。 对于大多数应用,该引脚应被拉低。
USRDONEO 输入 DONE(JTAG相关管脚) 引脚输出值。 连接到 FPGA DONE 引脚的 FPGA输入。
USRDONETS 输入 用户 DONE 三态使能 DONE 引脚。 FPGA 高电平有效输入,使 DONE 进入高阻态。 通常被拉低来启用 DONE。
CFGCLK 输出 配置逻辑主时钟输出。 FPGA输出信号。 从专用内部环形振荡器(ring oscillator)输出时钟信号,典型频率由比特流 ConfigRate 选项定义。 输出仅在配置期间有效,并且在启用 Persist (一种配置和回读的模式) 的主模式下有效。
CFGMCLK 输出 配置内部振荡器时钟输出。 FPGA 输出的信号。 从具有典型 65 MHz 频率的专用内部环形振荡器输出的时钟信号。
EOS 输出 End of Startup。高电平有效输出将 EOS 标志回显到 FPGA中。 可用作指示 FPGA 准备运行的复位信号。

 

关于USRCCLKO的补充说明:

STARTUPE2 原语上的 USRCCLKO 输入允许用户在FPGA配置后驱动 CCLK 引脚。 当两者(FPGA配置和用户配置)都使用时,USRCCLKO 还可以为 POST_CRC 回读逻辑提供时钟。 从内部 USRCCLKO 到 CCLK 引脚的延迟在datasheet中定义为 TUSRCCLKO。 在设置完成后(End of Startup)后USRCCLKO 上的前三个时钟周期用于切换时钟源,不会在外部 CCLK 引脚上输出,这样有助于防止在从内部振荡器到用户时钟的转换中出现 CCLK 毛刺。 但是如果使用外部主控 CCLK 管脚EMCCLK(外部时钟) 来配置FPGA,它将继续在 CCLK 上输出,直到 USRCCLKO 的三个时钟周期允许转换到新的用户时钟。

Posted in FPGA, FPGA 教材教案, FPGA硬件资源, Verilog, Verilog, Vivado, Vivado, 开发工具, 开发工具, 开发语言, 教材与教案, 文章, 编程语言

发表回复

相关链接