tag 标签: Zynq

相关帖子
相关博文
  • 热度 10
    2021-7-1 11:12
    1991 次阅读|
    0 个评论
    疫情的爆发,导致众多半导体工厂产线运作能力下降,甚至是停工停产,从而造成处理器的产能下降,进一步加剧“缺芯潮”,而伴随着产品性能的提升,对处理器的性能要求也越来越高,单一核心处理器已无法满足,异构多核处理器逐渐成为工业市场新宠。随着异构多核逐步成为行业主流架构,作为行业霸主的xilinx,其推出的 ZYNQ系列处理器出货量出现剧增情况,不少嵌入式厂商也纷纷闻声而来,例如创龙科技给出的官方报告,Zynq-7010/7020核心板在2021年上半年出货量就远超2020年一整年,达到了接近200%。 据了解,目前嵌入式行业还是比较吃香的,特别是专注工业级别领域。创龙科技SOM-TLZ7x大家在平时工业环境下开发应用,这一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业级核心板,处理器集成PS端双核ARM Cortex-A9 + PL端Artix-7架构28nm可编程逻辑资源,通过工业级B2B连接器引出千兆网口、USB、CAN、UART等通信接口,可通过PS端加载PL端程序,且PS端和PL端可独立开发。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,满足各种工业应用环境。 面对日益剧增的缺芯潮,只有进一步满足部分客户降成本需求,才能在这一时代潮流下站稳脚跟。对此,邮票孔版本的Zynq-7010/7020核心板也可以成为一大开发好助手。 很多朋友都谈起想要低成本ARM+FPGA方案,但是又难以满足工业级别开发环境应用,在开发技术上也遇到不少问题,对此我也更推荐大家找那些售后服务更好的嵌入式厂商,下面给大家推荐两款低成本的ARM+FPGA核心板,可以做一体式解决方案,价格还算可以,让项目快速选型。大家做个参考,有想要更详细的资料可以下方留言,我发给大家评估。在缺芯潮下,此两款工业核心板相关芯片有大量库存,核心板库存充足,项目顺利量产以及大批量供应。 TI AM437x + Xilinx Spartan-6和TI OMAP-L138 + Xilinx Spartan-6 FPGA这两款异构多核工业级核心板是不错选择。第一个核心板内部AM437x与Spartan-6通过GPMC、I2C通信总线连接。通过工业级B2B连接器引出LCD、CAMERA、GPMC、CAN等接口;第二款核心板内部OMAP-L138与Spartan-6通过uPP、EMIFA、I2C通信总线连接,并通过工业级B2B连接器引出网口、EMIFA、SATA、USB、LCD等接口。
  • 热度 11
    2021-4-5 15:16
    2847 次阅读|
    0 个评论
    Xilinx推出低功耗-小容量-小封装ZYNQ Ultrascale+ MPSoC,特别适合用于ZYNQ-7000升级换代
    作者:Hello,panda Xilinx 推出低功耗 - 小容量 - 小封装 ZYNQ Ultrascale+ MPSoC, 特别适合用于 ZYNQ-7000 升级换代 前段时间看到 Xilinx 发布了新的差异化 ZYNQ Ultrascale+ MPSoC ZU1 和 Artix Ultrascale+ FPGA ,熊猫君趁着国家假日有点时间,随便瞎聊一下。本次发布的新产品均采用 16nm 的工艺,可选封装有 0.5mm 焊盘间距紧凑型的 InFo ,最小封装尺寸只有 16mm*9.5mm ,这种封装类型可以缩短信号互联,有利于提高信号完整性。据 Xilinx 介绍,由于采用了台积电 16nm 工艺,相对之前版本的 ZU2 器件,静态功耗可以降低 50% ,可编程逻辑相对动态功耗可下降 40% 。因此,这个系列产品是小尺寸、低功耗、高性能应用产品的福音。 熊猫君在下面列一个比较详细的表,简单对比一下 ZYNQ-7000 系列和 ZYNQ Ultrascale+ MPSoC ZU1 的性能和资源比较。 备注:( 1 ) ZU1 系列器件均最高支持 -2 速率等级;( 2 )仅 C784 封装的器件 PS 端支持 64bit DDR4 ,其它封装均只能支持 32bit ;( 3 ) ZU1 系列器件均可支持 2.5Gbps MIPI 直接接入(使用 Vivado2019.2 及以上版本)。 从图中可以看出, ZU1 实际上逻辑量和 ZYNQ-7020 是相当,但是性能几乎翻倍;并且 ARM 处理器的性能 ZU1 是 ZYNQ-7000 的 4~8 倍,还有实时处理性能较高的 Cortex-R5F 双核,因此,一些对 ARM 处理性能要求较高的场合,这应该算是一个较为完美的解决方案,可以直接从 ZYNQ-7000 进行升级,逻辑性能和 ARM 处理性能都有大幅提升,应用面和灵活度更高; 从图中可以看出, ZU1 最高支持 64bit 的 DDR4-2400 (小封装的位宽只有 32bit 且速率有所降低),相对 ZYNQ-7000 只能支持 32bit 的 DDR3-1066 而言,带宽有了较大的提升,这对大吞吐量的视频图像处理而言,无疑优势很大。且 ZU1EG 还可以支持 Mali-400 的 GPU ,虽然只是入门级的,但是通用场合的刷屏还是够了的,比如手持式示波器、手持式超声仪、汽车高级影音娱乐系统等。 从图中可以看出, ZU1 支持 USB3.0 、 PCIe2.0 、 SATA3.1 和 DP1.2 等高速通信、存储和显示接口,这在 ZYNQ-7000 系列里面是没有的,这也是 ZYNQ-7000 系列器件的一大短板,对高速接口的支持不足; ZU1 全部用硬核支持,大大减少逻辑开发的复杂度,在工业信号和图像采集、工业控制卡、高端采集和存储设备应用上应该可以玩儿得风声水起了。 从图中可以看出, ZU1 系列器件最小封装尺寸只有 9.5mm*15mm ,也就是说只有 ZYNQ-7020 CLG400 封装尺寸的一半,再配套一片 32bit 的 LPDDR4( 或 MCP) 和小尺寸的 Flash ,使用内置电感的小封装电源方案,整个板子可以做得很紧凑,对一些尺寸敏感的应用,如无人机视觉处理和图传系统、无人机控制系统、小型工业机器人、小型工业图像识别系统前端等应用,有较高的性能 / 面积比指标和效能比指标。 从 ZYNQ Ultrascale+ MPSoC 的数据手册中可以看到,其 HP IO 可以直接支持低电压 SLVS MIPI 电平输出,通过优化了的 IP 核可以支持到 2.5Gbps/Lane 的速率,这算是对 ZYNQ-7000 器件的一个补齐,因为 ZYNQ-7000 不可直接支持 MIPI 信号的输入,在一些 Camera 应用中显得十分的难受,同时呢,熊猫君还是希望有一款低端 ZU+ 器件可以支持 Video Codec ,可以性能不那么高,在一些常规应用中有编解码的支持是很有必要的,能够拓展一大片的应用覆盖面。 最后,大家关注的一个重点就是成本问题,这颗芯片卖多少钱,当然,这颗料要到 2021 年的 Q3 季度才会量产,据 Xilinx 方面吹风说,价格应该和 ZYNQ-7020 差不多或稍微贵几个 $, 不会贵太多;面向的主要对象也是对 ZYNQ 的升级或是以前一些 ZYNQ 干起来吃力或不够干活,通过使用 ZU1 可以轻松的给干了且不增加多少成本。就这样,最后使用一张 Xilinx 官微的图片聊做结尾。 最后,熊猫君欢迎大家一起讨论、分享技术问题和技术方案, QQ 群的微信公众号的二维码贴在下面了,大家可以放心扫描加入,共同进步。
  • 热度 3
    2020-1-12 23:29
    3841 次阅读|
    0 个评论
    Zynq高速串行CMOS接口的设计与实现
    Zynq 高速串行 CMOS 接口的设计与实现 作者: hello,panda 现在 CMOS 传感器的分辨率越来越大,对应的,对数据传输接口的要求也越来越高。根据熊猫君有限的实现和调试经验,基本上遇到了: ①多通道 HiSPi 接口:主要是 Aptina (现已经被安森美收购),常用的有 1080P60 的 AR0331 ( 3.1M ), 3664 × 2748P15 的 MT9J003 , 3984 × 2712P80 (开窗输出最高可达 1200fps )的 AR1011 等; ②多通道 LVDS 接口:主要有索尼系列、安森美的 Python 系列、国产如长光辰芯和德国 viimagic 系列等,至少熊猫君用过的 IMX172/IMX122/IMX185/ IMX236 、安森美 Python 全系列和 VII9222 等都是 LVDS 输出; ③ MIPI 接口:多用于手机,一些监控用的 CMOS 如 Sony IMX185 、 OV14810 等也带; ④ CCIR656 :一般低分辨率的会带 CCIR656 接口,也有一些厂家的高分摄像头也带,比如 OV14810 ; ⑤并行接口:较早设计的 CMOS 许多都是直接并口输出,比如 Aptina 的 MT9M031 、 MT9J003 都带有并口输出; 熊猫君在这里想讨论的是前三种接口的实现,它们是业界应用最广泛而且对 FPGA 资源有着共性要求。 无论是 HiSPi 、 LVDS 还是 MIPI ,其核心思想就是要实现将高速串行信号恢复成并行数据。这将会用到 Xilinx FPGA IOB 上的一个重要的资源—— ISERDES 。 实现串行信号的并行化,光有 ISERDES 还不行,还需要用到 IO BANK 上的延时模块 IDELAYCTRL 和 IOB 上的 IODELAYE 以及相关的相位训练算法。 1 Xilinx 的 IO 资源 本节对用到的 IO 资源作简要的介绍。 1.1 IDELAYCTRL 资源 在电压、温度等因素变化时,可能会影响到系统的时序,此时 IDELAYCTRL 模块就可以连续补偿时钟域内所有个体的 delay taps (IDELAY/ODELAY) 。如果使用了 IOB 上的 IDELAY 或 ODELAY 资源,那么就必须使用 IDELAYCTRL 资源。请注意,整个 IO BANK 里面只有一个 IDELAYCTRL 。 IDELAYCTRL 很重要的一个输入项就是参考时钟 REFCLK ,补偿时钟域内所有模块的时序参考,这个时钟必须由 BUFG 或 BUFH 驱动。 REFCLK 必须保证在 FIDELAYCTRL_REF+IDELAYCTRL_REF_PRECISION ( MHz ) ppm 才能保证 IDELAY/ODELAY 的延时分辨率: ( TIDELAYRESOLUTION=1/(32 x 2 x FREF )) 1.2 IDELAYE2 逻辑 IDELAYE2 逻辑是一个 31 抽头的循环延时补偿模块,对输入的信号进行指定分辨率的延时, FPGA 可以直接访问。 Tap 延时分辨率由 IDELAYCTRL 的参考时钟提供持续补偿。图( 1 )是 IDELAYE2 接口示意图,表( 1 )是对这些接口的描述,表( 2 )是对逻辑参数的描述。 ( 1 ) IDELAYE2 接口示意图。 表( 1 ) IDELAYE2 接口描述 端口名 方向 位宽 描述 C I 1 当使用 VARIABLE, VAR_LOAD 或 VAR_LOAD_PIPE 模式下的时钟输入,必须是由 BUFG 或 BUFR 驱动,当使用 SelectIO 资源时,必须和它的时钟源相同。 REGRST I 1 复位 pipeline 寄存器,仅在 VAR_LOAD_PIPE 模式下有效 LD I 1 VARIABLE 模式:加载预编程值; VAR_LOAD 模式:加载 CNTVALUEIN 值; VAR_LOAD_PIPE 模式:加载当前 pipeline 寄存器的值。 INC I 1 INC/DEC 增加,减少的 Tap 数 CE I 1 使能 INC 和 DEC 功能,只在 VARIABLE, VAR_LOAD 或 VAR_LOAD_PIPE 模式下有效;当 CE 保持为高的时候,每一个 C 周期都增加或减少一个 TIDELAYRESOLUTION 的时延。 CINVCTRL I 1 动态翻转 C 的极性,当使用该功能时,需禁止 IDELAY control 引脚 2 个 cycle 。 CNTVALUEIN I 5 来自 FPGA 逻辑的动态 Tap 值 IDATAIN I 1 来自 IBUF 的数据输入,输出可驱动 FPGA 逻辑、 ILOGICE 和 ISERDESE DATAIN I 1 来自 FPGA 逻辑的数据输入,输出不可驱动 IOB LDPIPEEN I 1 使能 pipeline 寄存器加载数据 DATAOUT O 1 延时输出的数据 CNTVALUEOUT O 5 Tap 值输出,用于 FPGA 监测 表( 2 ) IDELAYE2 逻辑参数描述 参数名 值域 默认值 描述 IDELAY_TYPE String: FIXED, VARIABLE, VAR_LOAD 或 VAR_LOAD_PIPE FIXED 定义延时类型 DELAY_SRC String: IDATAIN, DATAIN IDATAIN 选择延时源 IDELAY_VALUE Integer: 0 to 31 0 固定延时值和其他模式的初值 HIGH_PERFORMANCE_MODE Boolean: FALSE 或 TRUE TRUE 为 TRUE 的时候减少输出 jitter ,否则减少功耗 SIGNAL_PATTERN String:DATA, CLOCK DATA 指定时序分析工具按时钟还是数据路径进行分析 REFCLK_FREQUENCY Real: 190 to 210 或 290 to 310 200 设置静态时序分析的 Tap 值 CINVCTRL_SEL Boolean: FALSE or TRUE FALSE 设置是否动态转换 C 的极性 PIPE_SEL Boolean: FALSE or TRUE FALSE 选择是否使用 Pipline 模式 以下以 VAR_LOAD 模式为例说明延时的时序动作,如图( 2 )所示。 图( 2 )延时时序动作模型 a ) Clock Event 0 : 在 LD 有效前, CNTVALUEOUT 输出为未知值; b ) Clock Event 1 : 在 C 的上升沿采样到 LD 有效,此时 DATAOUT 延时 CNTVALUEIN 指定的延时 Taps ,改变 tap Setting 到 Tap2 , CNTVALUEOUT 更新到新的 Tap 值; c ) Clock Event 2 : INC 和 CE 有效,此时指定了增量操作, Tap 值加 1 , DATAOUT 输出从 Tap2 更新到 Tap3 , CNTVALUEOUT 更新到新的 Tap 值; d ) Clock Event 3 LD 有效, DATAOUT 输出延时更新到 Tap10 , CNTVALUEOUT 更新到新的 Tap 值。 1.3 ISERDESE2 逻辑 输入串转并逻辑可以看做是 OSERDESE2 的逆过程,在 SDR 模式下可支持 2- 、 3- 、 4- 、 5- 、 6- 和 7- 的串并转换,在 DDR 模式下可支持 2- 、 4- 、 6- 、 8- 的串并转换,级联 DDR 模式下还可扩展到 10- 和 14- 。每一个 ISERDESE2 包括: a )专门的串并转换器; b ) Bitslip 子模块用于源同步接口; c )专用的可支持 strobe-based 的存储接口。 图( 3 )是 ISERDESE2 的结构示意图。表( 3 )是 ISERDESE2 接口描述,表( 4 )示 ISERDESE2 的参数描述。 图( 3 ) ISERDESE2 结构示意图 表( 3 ) ISERDESE2 端口名 方向 位宽 描述 Q O 8 并行寄存器数据输出,最先进入的串行数据出现在 Q8 O O 1 组合数据输出, DDLY 或 D 未通过寄存器直接输出。 SHIFTOUT1 O 1 级联输出,连接到 IOB 或 Slave 的 SHIFTIN1 SHIFTOUT2 O 1 级联输出,连接到 IOB 或 Slave 的 SHIFTIN2 D I 1 来自 IOB 的串行数据输入 DDLY I 1 来自 IDELAYE2 的串行数据输入 CLK I 1 高速时钟输入,用于采样高速串行数据流 CLKB I 1 第二高速时钟输入,仅用于 MEMORY_QDR 模式 CE1, CE2 I 1/1 时钟输入使能, NUM_CE=1 时, CE2 不使用;当 NUM_CE=2 时, CE1 使能 ISERDESE2 的前 1/2 的 CLKDIV 周期, CE2 使能 ISERDESE2 的后 1/2 的 CLKDIV 周期 RST I 1 高有效复位 CLKDIV I 1 分频时钟输入,用于同步并行数据输出和控制信号 OCLK I 1 高速时钟输入,用于高速存储器,只有在 INTERFACE_TYPE 为 MEMORY 时才有效 OCLKB I 1 反相的高速数据输入,用于高速存储器,只有在 INTERFACE_TYPE 为 MEMORY 时才有效 BITSLIP I 1 BitSlip 调节脉冲 SHIFTIN1 I 1 级联模式下连接到 Master 的 SHIFTOUT1 SHIFTIN2 I 1 级联模式下连接到 Master 的 SHIFTOUT2 OFB I 1 反馈输入, OLOGICE 或 OSERDESE 的输出反馈 DYNCLKDIVSEL I 1 动态选择 CLKDIV 的相位使能位 DYNCLKSEL I 1 动态选择 CLK/CLKB 的相位使能位 表( 4 ) ISERDESE2 的参数描述 参数名 阈值 默认值 描述 DATA_RATE String: SDRor DDR DDR 定义输入的数据类型 DATA_WIDTH DDR : 4,6,8,10,14 SDR : 2,3,4,5,6,7,8 4 定义转换位宽 DYN_CLKDIV_INV_EN Boolean: TRUE 或 FALSE FALSE 为真时使能 DYNCLKDIVSEL 反相和禁止 CLKDIV 的 HDL 反相 DYN_CLK_INV_EN Boolean: TRUE 或 FALSE FALSE 为真时使能 DYNCLKDIVSEL 反相和禁止 CLK/CLKB 的 HDL 反相 INTERFACE_TYPE String: MEMORY, MEMORY_DDR3, MEMORY_QDR, OVERSAMPLE 或 NETWORKING MEMORY 选择 ISERDESE2 的工作模型 NUM_CE Integer: 1 或 2 2 定义使用时钟使能信号的个数 OFB_USED Boolean: TRUE 或 FALSE FALSE 定义是否使用 OFB 功能 SERDES_MODE String: MASTER 或 SLAVE MASTER 定义主从模式 INIT_Q1~Q4 Binary: 0 或 1 0 设置采样寄存器的初始值 SRVAL_Q1~Q4 Binary: 0 或 1 1 设置采样寄存器的复位值 (1) 时钟方案 CLK 和 CLK_DIV 必须是严格对齐的时钟,虽然允许使用 BUFIO/BUFR ,但任然有可能存在相位问题。图( 5 )时采用 BUFIO/BUFR 的方案。 图( 5 )采用 BUFIO/BUFR 的时钟方案 一般的,根据接口类型的差异,时钟必须满足以下的约束: ① networking interface a ) CLK → BUFIO ; CLKDIV → BUFR ; b ) CLK → MMCM/PLL ; CLKDIV →和 CLK 相同的 MMCM/PLL 的 CLKOUT 的输出,使用 MMCM 时 CLK 和 CLKDIV 必须使用相同的驱动 BUF ; c ) CLK → BUFG ; CLKDIV → BUFG 。 ② MEMORY Interface Type a ) CLK → BUFIO, OCLK → BUFIO ,或 CLKDIV → BUFR ; b ) CLK → MMCM 或 PLL, OCLK → MMCM, 或 CLKDIV 由同一个 MMCM/PLL 的 CLKOUT 驱动; c ) CLK → BUFG , CLKDIV →不同的 BUFG 。 OCLK 和 CLKDIV 的输入相位必须是严格对齐的, CLK 和 OCLK 之间不要求相位关系。 From CLK to OCLK 的时钟域必须进行补偿。 其他接口类型的时钟方案参考文档 UG471 。 (2) BitSlip 子模块 BitSlip 用于调整并行寄存器输出串行数据的位置。在 SDR 模式下,每一个 BitSlip 脉冲让输出 pattern 的数据左移 1bit ;在 DDR 模式下,第一个 BitSlip 右移 1bit ,第二个 BitSlip 左移 3bit ,依次进行,移动规律如图( 6 )所示。 BitSlip 一定是和 CLKDIV 同步的一个脉冲。 图( 6 ) BitSlip 训练移位规律 在上面所介绍的资源中, IDELAYE2 是动态相位对其训练的神器, ISERDESE2 实现串并转换,其 Bitslip 功能是实现并行化数据对齐的关键。 2 LVDS 高速接口实现实例 因为 MIPI 接口有其完整的物理层协议,因此不在这里讲具体实现,本文以 Sony 的 IMX122 CMOS 为例,聊一聊高速 LVDS ( HiSPi 类似,只是电平标准有一点区别)接口在 Xilinx 7 系列 FPGA 和 Zynq SoC 上的实现。 2.1 需求分析 以 Sony IMX122 CMOS 为例,配置在 1080P 分辨率可输出 30fps 。 CMOS 在初始化完成后输出两通道稳定的 LVDS 数据, LVDS 接收模块在收到配置完成信号后开始工作。因此,这个 LVDS 接收模块需要实现: ① CMOS 工作在 Slave 模式下,向 CMOS 发出参考时钟( INCK )、行同步( XHS )、帧同步( XVS )信号; ② 接收 LVDS 数据并将它恢复成为指定的图像数据格式; ③ 提供测试信息接口。 2.2 IMX122 CMOS 输出特性 本小节简介 IMX122 CMOS 的一些特性。 2.2.1 同步时序要求 在 Slave 模式下需要向 CMOS 提供周期稳定的 XHS 和 XVS 信号,两者的时序要求如图 7 所示。在产生同步时序时需要注意以下要点: ① XVS 和 XHS 必须是稳定的周期性信号; ② XVS 和 XHS 信号的低电平保持时间为 4~100 个 INCK ; ③ XHS 可以和 XVS 同时拉低,也可延时一个时钟周期拉低。 图 7 Slave 模式下同步时序 2.2.2 输出数据率 在串行 SDR LVDS 模式下以 12bit 模式输出,数据率为 891Mbps ,每个通道的数据率为 445.5Mbps 。 2.2.3 Sync Code 格式 在串行输出模式下, CMOS 通过输出固定的 Sync Code 来指示图像的有效帧、行信息,接收器需通过查找这些 Sync Code 来恢复图像。 IMX122 可提供两种模式的 Sync Code ,这里配置为 Sync Code1 ,其具体定义如图 8 所示。 图 8 IMX122 Sync Code 定义 2.2.4 输出图像组织形式 IMX122 在 1080P 读出模式下,输入参考时钟 INCK 是 37.125MHz 。一帧图像输出固定为 1125 行,每行 1100 INCK ( 29.63 μ s ),有效输出为 1984 × 1105 。图像输出的时序如图 9 所示,图 10 是输出数据编码规则。 图 9 IMX122 LVDS 模式输出时序 图 10 IMX122 12-bit 2 通道输出编码格式 2.3 设计思路和模块结构 Slave 模式下工作的 CMOS 在 XVS 和 XHS 的同步下按照固定时序稳定输出 LVDS 图像数据。 LVDS 串行数据按照一定的方式进行编码,接收模块应先将串行数据解码恢复成为并行数据,再根据数据的排列方式格式化输出。因此,整个模块可以划分为时序同步、 LVDS 接收解码(串转并)和数据格式化输出三个部分。整个 LVDS 接收模块的结构如图 11 所示。 图 11 LVDS 接收模块顶层图 ① CMOS 输入参考时钟( INCK )为 37.125MHz ; ② CMOS 输出 LVDS 数据为 445.5MHz SDR 型; ③ 时序发生器由 74.25MHz 发生 30fps 的 XVS 、 XHS 信号; ④ LVDS 数据接收解码模块将数据恢复为 8bit@55.6875MHz 并行格式( DATA ); ⑤ 格式化输出模块通过搜索同步头的状态确定是否发出 bit_slip, 并根据 CMOS 的数据格式和同步信号格式化输出 12bit@74.25MHz 像素数据( PIX_DATA ); ⑥ IDELAYCTRL 以 Ref_clk 为基准对整个 IO BANK 进行输入延时控制。 2.3.1 时序同步 同步时序由内部 74.25MHz 计数产生。按照图 7 所示时序即可。 2.3.2 LVDS 接收解码 LVDS 接收的主要工作是将串行的数据转为并行数据并进行自动相位调节 , 移位寄存器抽头调整( Bitslip )。 Xilinx Artix7 系列 FPGA 提供串转并模块 ISERDES 和 IO 延时模块 IODELAYE2 , ISERDES 性能可在 415Mb/s~1200Mb/s 之间, IODELAYE2 的延时参考时钟可以是 200MHz ( 1tap ≈ 78ps )或 300MHz ( 1tap ≈ 52ps )。 ( 1 ) Artix7 FPGA 时钟特性 在 Artix7 系列器件里, MMCM 可驱动 BUFIO 、 BUFR 、 BUFH 和 BUFG , PLL 只能驱动 BUFH 和 BUFG 。 ZYNQ-7020 采用 Artix7 Speed-1 器件,时钟网络的最高性能如下表 5 所示。 表 5 Artix7 Speed-1 器件时钟性能 FPGA BUFG BUFH BUFR BUFIO Artix7 Speed-1 464MHz 464MHz 315MHz 600MHz ( 2 ) LVDS 接收时钟选择 ① LVDS 解码串行参考时钟选择 从表 1 可以知道,采用 BUFG 最高时钟性能为 464MHz 。 IMX122 1080P 串行模式下两通道 LVDS 每通道的输出数据率为 445.5Mbps ( SDR ) , 接近 BUFG 的极限值,因此这里作一个变通处理, 使用 222.75MHz 时钟按照 DDR 方式对串行数据进行采样。 ② IODELAYE2 延时参考时钟选择 延时参考时钟选择的原则是在 LVDS 数据时钟周期内,可调节的 Tap 数尽量的多。 IMX122 输出的数据周期为 2.245ns ,调节一个周期采用 200MHz 参考时钟需要 28taps ,采用 300MHz 参考时钟需要 43 个 Taps ,而 IODELAYE2 的调节 Tap 数为 0~31 ,故只能 选择 200MHz 的参考时钟 。 ( 3 ) LVDS 数据接收模块时钟 因 CMOS IMX122 不输出 LVDS bit 时钟, FPGA 使用内部时钟来接收解码 LVDS 数据。如图 12 所示,与 LVDS 相关的时钟由同一个 MMCM 产生以保证其相位的一致性。其中: ① 37.125MHz ,为 CMOS 工作参考时钟; ② 55.6875MHz ,提供给 IODELAYE2.C 、 ISERDES2.CLKDIV 、补偿状态机及解码后的字节数据参考时钟; ③ 74.25MHz ,产生 30fps 的 CMOS 同步参考时序和 12bit 像素参考时钟; ④ 222.75MHz ,以 DDR 模式接收的 DDR 位参考时钟; 图 12 LVDS 数据接收模块结构 IMX122 输出两路 LVDS 数据,每个通道的接收逻辑相同,对每一通道而言,数据流路径如下: a)LVDS 差分对通过 IBUFDS_DIFF_OUT, 得到位数据(记为 Master )及与其反相的数据(记为 Slave ); b)Master 和 Slave 分别进入各自的 IODELAYE2 和 ISERDES2 得到各自的并行数据送到补偿算法状态机进行动态相位调整并反馈各自的延时值到 IODELAYE2 。根据 IMX122 的 LVDS 编码特点, ISERDES2 按照 1:8 作串并转换最为合适; c) 数据格式化输出模块根据查找 Sync Code 的情况调整 bitslip ; d) 补偿模块根据数据调整的情况输出解码后的 8-bit 并行数据。 2.3.3 动态相位补偿 动态相位补偿原理如下: ① 初始化时, Master 数据延时假定设为数据眼图的中间位置, Slave 和 Master 的延时相隔半个数据周期。 ② 在 Master 和 Slave 的数据不全为零或不全为壹时启动动态相位补偿算法。相位补偿的基本原理是:如果 Master 和 Slave 采样到的数据相同,则说明采样太靠后,延时减少一个 Tap (如图 13 );如果 Master 和 Slave 采样到的数据不同,则说明采样点太靠前,延时增加一个 Tap( 如图 13 ) 。 图 13 采样点延时示意图 ③如果延时 Tap 值为最小或最大位置时,则交换 Master 和 Slave 的的参考关系,同时输出数据作相应调整; 2.3.4 数据格式化输出 该模块的工作是将收到的串转并数据的基础上搜索 Sync Code 、并组织成 12-bit 的像素数据按照给定时序格式化输出。 ( 1 ) Sync Code 搜索 Sync Code 搜索采用的策略是,逻辑在不停的查找在一帧数据里是否存在图 3-2 所示的的特定数据,如果这些同步码都能找到,则表示接收逻辑串转并的输出位顺序正常,不再需要 bitslip ;若没有找到全部的同步码,则在下一帧开始的时候( XVS 上升沿)给出一个 bitslip 脉冲调整输出,直到找到完整的 Sync Code 。 两路 LVDS 通道分别单独进行 Sync Code 搜索, 若 32 次 bitslip 后任然没有找到 Sync Code ,则报告 CMOS 输出错误 。 ( 2 )格式化输出 格式化输出模块完成将 CMOS 输出的数据解码成 12-bit Pixel 数据并按照视频格式时序输出,结构如图 14 所示。 图 14 格式化输出逻辑结构 对格式化输出的详细实现过程这里不赘述。 2.3.5 接收模块顶层文件描述 IMX122-LVDS 接收模块由 4 个文件构成,分别是 imx122_lvds_rev_v1_0 、 lvds_data_rx 、 rev_data_format_v1_0 和 imx122_slvsyn_timing_v1_0 构成,它们的层析结构如图 15 所示。 图 15 LVDS 接收模块文件结构 注 1 :蓝色的 imx122_slvsyn_timing_v1_0 不属于 LVDS 接收内容,但 CMOS 在 SLAVE 模式下必须由它提供同步信号后才能正常输出。 注 2 :以上基于 IMX112 的代码可关注微信公众号回复 “ CMOS 解串源码” 免费获取,欢迎加入 QQ 群 300148644 或 关注微信公众号讨论交流。 注 3 :楼主有少量自用评估板可提供验证,扫描下方二维码即可获取。
  • 热度 2
    2019-10-10 11:01
    2252 次阅读|
    1 个评论
    MPSOC学习之HELLO WORLD
    XILINX 新一代 SOC,Zynq UltraScale+ MPSOC 系列性能强悍无比,相比ZYNQ 7000系列每瓦性能提升5倍,作为一名电子发烧友,都想体验一把这高性能的MPSOC开发板。现在用米尔MPSOC开发板来一个hello world。MPSOC学习之HELLO WORLD,分享给大家。 米尔MPSOC开发板采用Zynq UltraScale+ MPSOC系列处理器设计(具体型号XCZU3EG-1SFVC784,未来可选用XCZU2CG,XCZU3CG.XCZU4EV,XCZU5EV) ,且单芯片融合4核心Cortex-A53(Up to 1.5GHZ),2核心Cortex-R5, GPU和154KLE的FPGA(包含DSP模块)。配备4GB DDR4(64bit ,2400MHZ), 4GB eMMC,128MB QSPI flash 且板载千兆以太网/USB PHY的情况下仍将尺寸控制在62*50mm。米尔MPSOC开发板非常适合人工智能,工业控制,嵌入式视觉,ADAS,算法加速,云计算,有线/无线通信等广泛领域。米尔的板子向来追求做工精致,这款新推出的MPSOC开发板也是如此: 下面是MPSOC之HELLO WORLD学习笔记: 开发环境:vivado 2017.4,开发板型号:米尔MYD-CZU3EG, 主芯片XCZU3EG-1SFVC784。(这个系列板子还有4EV,5EV等版本,手里的3EG版本不支持SFP,因此板上相应接口(白色部分)是空贴的。) Step1 新建vivado工程 New Project, 点击Next进入下一步,填写工程名和选择工程保存路径,点击Next。继续往下,按照截图的配置选择开发板型号为 xczu3eg-sfvc784-1-e ,点击Next,点击Finish。新建的vivado工程,如下图所示 tep2 新建Block Design 点击导航栏的Create Block Design,出现Create Block Design对话框。这里可以自己填写名称,我这里直接用默认的名称,点击OK。新建的Block设计区如下图: Step3 调用ZYNQ IP核并配置 点击Add IP,在导航栏输入ZYNQ,然后双击ZYNQ UltraScale+MPSoC。添加的ZYNQ核,如下图所示: 双击ZYNQ IP核导入配置文件 Apply Configuration 添加配置文件 导入 hello_world.tcl配置文件,点击OK 点击OK,完成ZYNQ 核配置。 Step4 综合 Generate Output Products 点击Generate Step 5 生成顶层文件 Create HDL Wrapper 点击OK,完成生成顶层文件步骤。 Step6 生成bit文件 点击快捷工具栏上的Generate Bitstream 连续点击OK,bit生成成功,点击Cancel关闭对话框。 Step7 导出硬件配置文件 Export Hardware 勾选Include bitstream,点击OK Step8 打开SDK Launch SDK,点击OK Step9 新建fsbl Application Project,添加工程名fsbl,点击Next 选择Zynq MP FSBL,点击Finis Step10 新建hello_world工程 Application Project。填写工程名 hello_world, 点击Next 选择Hello_World模板,点击Finish Step11 生成BOOT.bin文件 Create Boot Image,点击Create Image。生成的BOOT.bin文件,如下图所示,然后将这个生成的BOOT.bin文件拷贝到SD卡上 MPSOC开发板模式设置,这里我们设置为SD卡启动模式 MPSOC开发板连接12V电源、连接uart串口、插入SD卡 MPSOC开发板上电运行 串口打印输出 Hello World 好啦,用MPSOC上输出HELLO WORLD已经完成。其实也不难,关键是要多看开发手册、光盘资料,在配置细节上留意(因为篇幅太长,这里缩减了许多步骤图片)。另外,有不明白的地方可以找米尔技术支持。
  • 热度 2
    2019-10-10 10:37
    3970 次阅读|
    1 个评论
    米尔UltraScale+ MPSoC平台开发板评测
    来源:电路城 米尔科技推出的MYD-CZU3EG开发套件搭载的就是UltraScale+ MPSoC平台器件 — XCZU3EG,它集成了四核Cortex™-A53 处理器,双核 Cortex™-R5 实时处理单元以及Mali-400 MP2 图形处理单元及 16nm FinFET+ 可编程逻辑相结合的异构处理系统,具有高性能,低功耗,高扩展等特性,除了这款异构SOC之外,板子还搭载了丰富的接口和完善的开发资料,可以帮助开发人员降低产品开发周期,实现产品快速上市,下面我们来一探究竟。 开箱 暖色调的简洁外包装上印有一行“Make Your idea Real”,不免给人一种立马开箱动手躁起来的冲动。 开箱之后就是摆放在内衬中的板卡和配套设备。除了板卡之外,配套的电源、数据线、SD卡和光盘等等,可谓考虑齐全。 板卡资源介绍 笔者迫不及待的拆开板卡的防静电袋,下面来看一下这块性能小怪兽的样子。MYD-CZU3EG 开发板由MYC-CZU3EG 核心板加MYB-CZU3EG 底板组成。散热器下面是核心板,这是一个CPU最小系统模块,集成了主处理器和存储。底板是一块外设接口板,集成了电源和多种接口,方便评估或集成。 下面我们详细的了解一下板卡详细的组成结构,首先,核心板基于Xilinx XCZU3EG全可编程处理器,4核Cortex-A53(Up to 1.5GHZ)+FPGA(154K LE),具体型号:XCZU3EG-1SFVC784,(未来可选配XCZU2CG, XCZU3CG,XCZU4EV,XCZU5EV),性能强大;板载4GB DDR4 SDRAM(64bit,2400MHZ) 及丰富的存储资源,从容应对复杂运算;板载千兆以太网PHY 和USB PHY , 轻松实现高速互联,如此奢华的配置,板子尺寸只有62*50mm,紧凑程度令人赞叹。 另外,板子选材和用料讲究,据称使用了Intel电源模块,松下的M6 PCB板材,Micron存储,村田电容,还是非常良心的。 底板的外设接口丰富,板载了串口,网口,HDMI,DP,SATA,PCIE,USB3.0 Type-C,LCD,PMOD,Arduino,FMC-LPC,TF 卡接口,SFP,ADC,CAN等多种接口,方便用户评估或集成。这些接口根据SOC的结构,有的接在PS端,有的接在PL端。 MPSoC开发板配置 PS 单元: 1 路千兆以太网 1 路USB3.0 typeC 接口 1 路DisplayPort 接口 1 路PCIE2.1 x1 接口 1 路SATA3.1 接口 1 路CAN 接口 1 路RS232 串口 1 路TF 卡接口 1 路I2C 接口 1 个复位按键,2 个用户按键, 1 路JTAG 内置实时时钟 PL 单元: XADC 接口 1 路Xilinx 标准LPFMC 接口 1 路HDMI 接口,RGB 24bit,不支持音频 1 路LCD DIP/LPC 接口,RGB 24bit,与HDMI 复用显示信号 电阻式电容式触摸屏接口,集成在LCD 触摸屏接口 2 路PMoD 5 个电源指示灯 4 路SFP 模块接口 1 路Arduino 接口 除了板卡之外,套件内的光盘提供了包括用户手册,使用示例、PDF底板原理图,外扩接口驱动,BSP 源码包,开发工具等,为开发者提供了完善的软件开发环境,帮助降低产品开发周期,实现产品快速上市。 Zynq UltraScale+ MPSoC介绍 1.真正的全可编程异构多处理SOC 在使用板子之前,我们先来了解一下这款板卡的核心芯片——XCZU3EG,这是Xilinx继ZYNQ-7000系列之后推出的真正的全可编程异构平台,Zynq® UltraScale+ MPSoC 器件不仅提供 64 位处理器可扩展性,同时还将实时控制与软硬件引擎相结合,支持图形、视频、波形与数据包处理。置于包含通用实时处理器和可编程逻辑的平台上,三个不同变体包括双应用处理器 (CG) 器件、四核应用处理器和 GPU (EG) 器件、以及视频编解码器 (EV) 器件, 为 5G 无线、下一代 ADAS 和工业物联网创造了无限可能性。 MYD-CZU3EG开发套件目前搭载的是EG器件,后期还可以选配CG或EV器件。EG 器件采用运行速率高达 1.5GHz 的四核 ARM® Cortex-A53 平台与双核 Cortex-R5 实时处理器、Mali-400 MP2 图形处理单元及 16nm FinFET+ 可编程逻辑相结合。 该器件有着无与伦比的集成度、高性能和低功耗特点,与 Zynq-7000 SoC 相比,系统级性能功耗比提升5 倍,为交付最低系统功耗而精心设计,官方给出的典型应用包括基带 L1 加速、公共安全与移动无线电和8x8 100 MHz TD-LTE 远端射频单元等场景。 2. 多媒体的理想系统 说到应用,不得不提Zynq UltraScale+ MPSoC最最擅长的领域——面向视频编解码器和图形引擎的前沿多媒体解决方案。赛灵思SoC为多媒体解决方案提供了多种支持,包括: 集成型视频编解码器单元 (VCU) 集成型图形处理单元 (GPU) 含集成式 DisplayPort 接口模块 集成型可编程逻辑 (PL) EV 器件带有集成型 GPU 和H.264 / H.265视频编解码器,专为超高清 (UHD) 视频而设计带有集成型 H.264 / H.265 视频编解码器,能够同时编解码达 4Kx2K (60fps) 的视频,可实现单芯片4K视频处理,当然MYD-CZU3EG开发板使用的是EG器件,没有视频编解码器,但是有Mali-400 MP2 GPU。 Mali-400 MP2 GPU与 APU 直接绑定,还可在帧缓存中加速视频图形渲染,从而实现显示器输出。GPU 可通过独立的并行引擎进行像素渲染,速度远高于依靠 CPU 来处理图形,而且与需要设计人员添加片外 GPU 引擎的解决方案相比,成本与功耗均更低。GPU 通过全面可编程的架构加速 2D 和 3D 图形,该架构既支持基于着色器的图形 API ,也支持固定功能图形 API 。GPU 具有抗锯齿功能,能实现最佳图像质量,且几乎不会造成额外的性能损耗。Xilinx配套提供经实践检验的全套 Linux 驱动程序,能自动将图形命令从 APU 转到 CPU 处理。 另外,Zynq UltraScale+ MPSoC 提供高速互联外设,后者包含集成式 DisplayPort 接口模块。DisplayPort接口位于 PS 端,可多路复用至四个专用高速串行收发器中的两个,工作速率高达 6 Gb/s。该架构摆脱了对于额外显示芯片的需求,进一步降低了系统 BOM 成本。 DisplayPort 接口基于 VESA DisplayPort Standard Version 1 和 Revision 2a 开发,其提供的多个接口能处理来自 PS 或 PL 的实时音视频流,也能存储来自存储器帧缓存的音视频。它同时支持两个音视频流水线,支持 alpha 混合、chroma 复采样、色彩空间转换和音频混合等功能的动态渲染。DisplayPort 既可使用一个 PS PLL,也能使用 PL 的时钟生成像素时钟。 除视频编解码器和图形处理之外,多媒体应用还需要其他重要组件,如视频数据的输入输出管理 , 以及处理高速视频数据的功能。在 PL 内可设计定制化逻辑,用于捕获来自直播源的视频。例如,SDI RX、HDMI RX、MIPI CSI IP 等协议均可用于捕获不同来源的原始视频。视觉算法可用于采集来自原始数据的重要信息,如路标识别和针对驾驶员辅助技术的动作检测、视频监控面部识别、高级拍摄应用的物体与动作识别等。除收集数据外,算法还可用于音视频广播和视频会议等用例中处理与操控原始数据。考虑到今后几年视频分辨率不可避免的攀升态势,有关算法需要具备极高的工作速度。PL 为此类算法提供了所需的硬件加速功能,便于大幅提高性能,满足下一代技术需求。 Zynq UltraScale+ MPSoC 的灵活性能加速计算密集型应用程序,在 GPU、CPU 和 PL 之间共享工作负载,在 PL 中可卸载复杂的算数计算以实现硬件加速,并且在 APU 上可预先计算 OpenGL 着色语言 (GLSL) 一致变量。GPU 着色器核心上的计算仅适用于顶点和片断之间不同的值。整批顶点中所有保持常量的值在 CPU 上处理最为有效。 3. 无与伦比的系统性能功耗比 Zynq UltraScale+ MPSoC 在设计之初就考虑了高效电源管理问题,该器件被分为四个电源域: 处理系统 (PS) 中的电池电源域包含实时时钟和电池供电的 RAM。 PS 中的低电源域包含 RPU、通用外设、片上存储器 (OCM)、平台管理单元,以及配置安全单元。 PS 中的全电源域包含 APU、高速外设、系统存储器管理器和 DDR 控制器 可编程逻辑 (PL) 位于自身的电源域中 Zynq UltraScale+ MPSoC 含有可控制电源域的创新型平台管理单元 (PMU),。PMU 负责器件的安全管理,并监管电源域内的电源。不用的电源域可在启动时关闭,然后智能地通过中断或事件唤醒,实现精细的电源管理。 我们已经知道Zynq UltraScale+ MPSoC 内部分了多个处理核心,四核ARM Cortex-A53是应用处理单元,具有高效的基线性能,适合Linux应用处理;双核 ARM Cortex-R5是实时处理单元理想适用于低时延确定性应用,诸如安全模块和 APU 任务分担等,另外图形引擎,高速外设等针对特定应用做了优化,各个模块各司其职,系统性能明显提升。该器件采用了台积电 (TSMC) 的 16nm FinFET 工艺节点,。该工艺节点采用更高效的晶体管实现方案,具备最佳的开关速度以及比平面工艺更低的漏电流,因此能实现更高性能和更低功耗。从 28nm 的 Zynq-7000 到 16nm 的 Zynq UltraScale+ MPSoC,性能提升了 60%,功耗降低 20%,使原始处理器性能提升 2.7 倍。 示例 板 子QSPI闪存预先烧录了Linux镜像,默认也是从QSPI闪存启动的,使用数据线连接板子串口和PC,连接电源,板子上电,打开putty,可以看到系统启动信息。通过命令行可以登录,默认密码是root。 光盘中也提供了系统的镜像文件,用户如果不熟悉Linux系统编译,可以直接使用。 另外,MYD-CZU3EG 光盘中提供了常用外设的演示程序,例如: 使用Linux API 操作开发板上的LED 使用Linux API 操作开发板上的按键 使用Linux API 操作开发板上的CAN 使用Linux API 进行网络通讯 程序以及源码都位于“/Examples/”,用户可以根据目录内的Makefile 进行编译。 这里我们使用Xilinx Vivado新建一个HelloWorld工程,生成启动镜像,从TF卡启动。整个过程分为: 生成开发板的硬件平台 将硬件平台导出到SDK 创建一个“HelloWorld”工程 产生Boot Loader(fsbl) 生成SD 卡启动映像,从microSD启动 尔科技作为国内首款Zynq UltraScale+ MPSoC平台开发板,MYD-CZU3EG核心板性能配置强大且设计紧凑可靠,外设底板接口资源丰富,厂家为开发者提供的软件开发环境也比较完善,非常适合人工智能,工业控制,嵌入式视觉,ADAS,算法加速,云计算,有线/无线通信等应用领域做原型开发。
相关资源