tag 标签: GX

相关博文
  • 热度 2
    2024-11-16 13:54
    309 次阅读|
    0 个评论
    不同ADC采样同一前端模拟信号时转换用时差异分析
    概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。 系统数字化简介 项目前端的模拟信号是由PMT或者SiPM加上LYSO探测器产生的整形脉冲波,同时随路产生时间脉冲,这个两个脉冲到达数字化板的时间保持不变,所以可以以时间脉冲为参考检测数字化后的整形模拟脉冲。即数字化脉冲上升沿触发后,固定周期后就可以得到对应的整形脉冲位置。如图1所示,在逻辑上,t1与t2之间的时间间隔在硬件确定后,即已确定,宏观上的差异不会存在纳秒级以上。 图1:模拟信号数字化框图及逻辑时序关系 数字化转换时差展示 这里需要首先明确一个前提,即大转换时差仅存在于AD采样电路中使用了不同型号的ADC。如果使用相同的AD采样电路,虽然存在采样时差,但是差异很小,这时候讨论的不是宏观的时差,而应该是通道之间的skew。 另外,本系统早期使用了AD9288 ADC,中期修改为AD9218,当前升级为AD9633。这里比较的是AD9218与AD9633之间的转换时间差异。如图2所示,即为早期AD9218采集PMT整形脉冲的实际时序关系。 图2:AD9218采集PMT产生的整形脉冲结果 如图2所示,SignalTapII的触发脉冲是时间脉冲信号,时间脉冲触动后,大概10个系统时钟后,整形脉冲被数字化完成并送到了FPGA。SiPM系统的时间关系大致如此,这个时间关系与硬件电路上的布线延时以及线缆连接造成的延时关系不大,因为这里关注的是基于系统时钟(100MHz)周期上的差异。硬件布线、连接等造成的延时基本上达不到时钟周期级别,故可忽略。图3则展示了AD9633采集SiPM后得到的时间脉冲与整形之间的时序关系。 图3:AD9633采集SiPM产生的整形脉冲结果 如上图所示及之前分析,PMT与SiPM硬件电路上产生的时间脉冲与整形脉冲之间时间间隔差异并不大,这个也使用AD9218采样后验证过。而上图使用AD9633采集后得到的这个时间间隔在30个时钟周期,大于图2中的10个时钟周期,差异在20个时钟周期。 数字化转换时差原因分析 通过查看两个ADC的数据手册,发现在流水延迟这个参数上,二者有着很大的不同。AD9218给出的数字输出流水延迟是5个时钟周期,如图3所示中箭头所指。 图3:AD9218正常工作的通道时序 而同样的参数,AD9633给出的是16个时钟周期,所以这里的差异在11个时钟周期。但是,还有9个左右的时钟差异在哪儿呢? 剩下的9个时钟差异应该来自于FPGA内部,因为AD9218是并行输出,FPGA直接获取AD的输出数字码,而AD9633是LVDS串行输出,FPGA收到后首先需要进行解串,解串LVDS逻辑模块运行周期目前还不明确,需要查看资料确认。 参考 LVDS SERDES Intel FPGA IP User Guide: Intel Arria 10 and Intel Cyclone 10 Devvices. AD9218手册 AD9633手册
  • 热度 1
    2024-11-10 13:04
    344 次阅读|
    0 个评论
    ALTERA Cyclone 10器件的使用-7:FPGA片内RAM资源利用率思考
    概述 项目使用的FPGA目标器件为Cyclone 10 GX系列规模最大一颗料,由于功能升级增加了功能模块更多,发现器件片内RAM不够使用了。为了探索片内RAM使用的利用率问题,从代码RTL级与编译软件的优化选项方面进行了思考。表1是器件手册中给出的C10GX器件片内RAM颗粒,即M20K,可配置模式。 表1:Intel Cyclone 10 GX器件单端口片内存储器配置 对于MLAB来说,一个MLAB大小是640bit,是由双功能逻辑阵列模块(LAB)配置而成。MLAB是宽而浅型存储阵列的最佳选择,每个MLAB由10个自适应逻辑模块(ALM)组成,在Intel Cyclone 10 GX器件中,这些ALM可配置成10个32x2模块,这样的每个MLAB可实现32x20的简单双端口SRAM模块,Cyclone 10 GX系列器件中片内存储器性能及分布如表2所示。 表2:Intel Cyclone 10 GX器件中片内存储器性能及分布 项目遭遇片内RAM不够问题 升级的项目,在之前逻辑设计的基础上增加了两个模块,理论上存储器消耗要增加一倍。逻辑修改后,工程全编译时,在Fit阶段报错,提示目标器件无法提供足够的RAM来完成布局,如图1所示。 图1:因RAM不足,导致布局失败 Info ( 170034 ) : Selected device has 587 memory locations of type M20K block. The current design requires 626 memory locations of type M20K block to successfully fit. Info ( 170033 ) : Memory usage required for the design in the current device: 107 % M20K block memory block locations required Info ( 170043 ) : The Fitter setting for Equivalent RAM and MLAB Paused Read Capabilities is currently set to Care. More RAMs may be placed in MLAB locations if a different paused read behavior is allowed. 从编译消息列表中摘出上述3条有关出错的消息,第一条提示器件总共587个M20K颗粒,当前设计需要626个来完成布局。第二条给出当前设计完成布局需要消耗器件片内RAM颗粒数量是目标器件能提供的107%。第三条消息提示Fitter的关于“Equivalent RAM and MLAB Paused Read Capabilities”当前设置是“Care”,如果允许更改该设置,则可以将更多的RAM消耗替换为MLAB消耗。 在Quartus的Settings设置中,找到编译器设置页面,并在该页面中找到属于Fitter的Settings高级设置按钮,如图2所示,并点击此按钮进入高级Fitter设置页面。 图2:编译器设置页面 如图3所示,为Fitter的高级设置页面,找到“Equivalent RAM and MLAB Paused Read Capabilities”设置选项,可以将默认设置“Care”修改为“Don’t Care”,如此再重新编译后则可以解决上述报错问题,如图4。 如图4所示,虽然经过上述修改解决该报错问题,但是整个RAM消耗已经达到了100%。100%的RAM消耗率,如果设计功能已经达到目标要求,则是可以作为最终设计提交,但是这仅仅这是项目的预先编译评估,所以并不能就此停止。比如,在后期调试时需要添加SignalTap功能的时候,就可能面临无RAM可用的情况。同时,还需要了解上述设置修改对逻辑设计是否产生负面影响进行评估,即需要对该设置进行深入了解,否则不要轻易修改默认设置。 如果需要进一步减小RAM消耗,那么就需要针对当前设计进行深度优化,这是下一节的内容。 图3:高级Fitter设置页面 片内RAM耗尽后,优化思考 Cyclone 10 GX最大型号器件,总共有587颗片内M20K颗粒,如图4所示,按照图3所示对Fitter高级设置进行修改后,对工程再编译,全编译无报错通过,编译报告提示所有M20K颗粒已经100%耗尽。 图4:M20K颗粒耗尽统计报告信息 如果查看Fitter给出的各个M20K颗粒使用详尽信息,可以发现,各个颗粒容量的使用率不尽相同,有些颗粒甚至使用了不到1%,如图5所示,这些颗粒有12个。 图5:Cyclone 10 GX系列最大器件中M20K颗粒使用情况信息 上述不到1%利用率的M20K颗粒很大可能是为了与其它颗粒“凑整”过程中被消耗的,一旦被占据,该M20K颗粒空余空间就无法开放给其它逻辑使用了。如此大大降低了RAM颗粒的利用率,在进行逻辑设计的初始阶段就应该核算RAM、FIFO或ROM的大小与实际片内RAM颗粒的尺寸来进行规划,提高资源的利用效率。 举个简单的例子说明RAM被“奢侈”利用,AD9633分解为8个LVDS接收器通道,解串后得到了48-bit的并行数据,这时创建了一个FIFO来缓冲该数字转换数据,所以FIFO的位宽48-bit,深度选择为8。所以一个FIFO实际消耗384-bit的RAM,但是经过编译,该FIFO必须要使用2个M20K颗粒(共40960-bit)来实现,RAM利用率不到1%。是不是很奢侈,很浪费?! 这个FIFO的读写时钟不一样,所以属于异步FIFO,修改图3所示的高级设置选项也无法将FIFO转换为MLAB来实现。在例化FIFO的时候倒是可以强制指定使用MLAB来实现它。 参考 Intel Cyclone 10 Devvices Overview.
  • 热度 4
    2024-7-14 12:25
    903 次阅读|
    0 个评论
    概述 SiPM测试系统的信号处理板使用了ADI的单片4通道的高速差分ADC信号,所以FPGA需要通过LVDS接口来收取差分高速ADC送出的差分串行数据。 本文讨论FPGA如何例化LVDS模块,以及几种用来收取外部ADC采样后送来的高速差分串行数据。 10代器件LVDS实例化界面 在Intel的10代器件中有Arria、Cyclone、MAX以及Stratix几种,我们使用的是Cyclone系列10代GX产品。 图1:LVDS模块例化界面 如图1所示为LVDS例化界面,具体使用方法可以参考1“LVDS SERDES Intel FPGA IP User Guide”。这里给出LVDS SERDES通道结构框图,如图2所示。图2下半部分展示的RX通道是本文着重要关注的部分。 图2:Cyclone 10 GX系列器件LVDS Serdes通道结构框图 高速差分ADC数据引入FPGA的方法 高速差分ADC采样后串行数据、时钟以及帧同步总线接入FPGA的方法大致分为以下几种,不同的方法使用的场合有些微差别。 方法一:每个ADC单独将DCO和FRAME接入FPGA,此时不需要RX PLL,DCO必须使用专用时钟引脚。 方法二:每个ADC的FRAME接入FPGA,FRAME必须接专用时钟引脚,使用PLL通过FRAME在内部产生串行高速时钟。 方法三:如果预期到每个ADC之间布线延时差异足够小,此时所有ADC芯片可以使用同一组DCO和FRAME。 方法四:如果无法预估各ADC之间延时差异,又不想使用方法一和方法二,此时可以使用软CDR在初始阶段生成训练码。需要将ADC的SPI接口连接到FPGA。 根据不同的使用场景,又存在下述几种划分: 场景1:类似上述方法一 举个最简单的例子,当FPGA仅处理一个ADC时,FPGA单个bank就可以处理,ADC的所有必要和非必要的信号都可以连接到FPGA。如此,就可以确保安全可靠地接收ADC的采样数据。 此场景的其它例子,比如FPGA需要处理多个ADC的时候,此时可能分为不同情况,属于本场景的情况是FPGA有足够的bank来处理所有ADC,即每个BANK仅处理一个ADC。此时可以按照单个ADC的方法处理。单个bank如果LVDS端口足够,也可以处理多个ADC,但是单个bank仅接一路DCO到时钟引脚。 场景2:多个ADC需要处理,LVDS端口不足 此时为了省略出足够的LVDS端口给串行数据,可以多个ADC共享同一个DCO时钟,此时也省时钟引脚与PLL,有时候可能是时钟引脚或内部PLL不够。 场景3:多个ADC需要处理,时钟引脚不足 此时FPGA没有足够的时钟引脚接收来自ADC的DCO或FRAME,此时可以将DCO接入到普通的LVDS差分对端口,用本地时钟作为LVDS参考时钟,DCO当普通数据,然后根据DCO跳变去取ADC数据。 场景4:多个ADC需要处理,时钟引脚不足的同时,LVDS端口也不足 此时,DCO完全可以连接到FPGA,当异步处理,通过过采样,本地恢复DCO。 以上四种使用场景,风险从场景1到场景4依次递增。 参考 LVDS SERDES Intel FPGA IP User Guide: Intel Arria 10 and Intel Cyclone 10 Devvices.
  • 热度 5
    2024-5-12 09:19
    586 次阅读|
    0 个评论
    ALTERA Cyclone 10器件的使用-4:模块复用及当前使用所遇到的问题 概述 之前学习了基于Arria10的模块复用教程,并依据该教程在基于Cyclone10GX的测试板上将之前的项目更改为单核模块,并进行了导出和导入操作。通过上述过程,模块复用得到验证,可以应用于我们的项目。本文记录在此过程中遇到的一些问题,作为最近一段时间设计于测试的总结。 设计输入 一直以来笔者习惯于ALTERA的原理图输入方式,至少在顶层均采用模块输入,这样有利于本人对应整个工程的掌控。自从转入Quartus Prime Pro以后,发现QPP无法进行原理图的操作,但是还是可以对以前的原理图文件进行识别,而且能够对其进行编译。 再次之前我们的QPP版本升级到22.4,不过团队中合作伙伴在开发Cyclone10GX使用其PLL于Tranceiver模块的时候遇到问题,在升级到23.4的时候,问题解决,所以团队中不同的人使用了不同的版本。这次在使用模块复用功能后,通过之前发布的教程我们知道,双方需要统一器件、统一Quartus软件版本,否则无法完成QDB文件的导入。 而在升级到QPP23.4后发现Intel进一步对原理图使用进行了限制,这个版本是彻底限死的原理图,因为QPP23.4根本不支持识别原理图,Quartus在编译的时候,如果发现原理图,都会出现如图1所示的错误。 图1:Quartus编译遇到原理图输入时给出的错误提示 QDB文件导出问题 笔者作为单核开发者,之前使用QPP22.4的时候,导出QDB文件时可以选择导出综合后网表文件,也可以选择导出最终网表文件。更新到QPP23.4后,发现选择导出综合后网表时会导致Quartus软件莫名其妙停止操作,并弹出图2所示的错误提示窗口。 图2:QPP23.4导出综合后网表文件时遇到的问题 JTAG识别Cyclone 10GX器件问题 首先一个问题(之前有博文介绍此问题)是JTAG下载电缆(USB Blaster与USB Blaster II)都有此问题,即电缆无法识别JTAG链路,原因是C10GX的JTAG电压(VCCPGM)为1.8V,而手上老旧下载电缆最低支持的I/O电压是3.3V。从市场上购买支持低压的下载电缆后,解决此问题。(需要注意的是,所谓支持的低压,最好是低至1.5V。因为买的两种号称支持到1.8V也无法解决问题,我们分析是由于板子的1.8V实际量出来的是1.78V左右。) 图3:支持低压JTAG口下载电缆 2.解决问题1后,JTAG自动探测的时候偶发识别C10GX器件为UNKNOWN(如图4所示),此时似乎能下载程序,但是无法进行SignalTap调试。 图4:遇到探测到UNKNOWN器件问题 经过排查,上述UNKNOWN事件,一种情况是使用了电脑上低版本Quartus的下载软件,另一种情况是电脑里的JTAGSever指定的可执行路径为低版本,图5为正确的JTAGSever可执行路径指定,即指定为QPP23.4版本。 图5:电脑中有多版本Quartus安装时,确认JTAG Sever可执行路径 延时线锁定问题 延时线与寄存器锁定在同一个ALM的时候,Fit中的Place出现下述错误,如图6所示。 图6:Quartus在place过程当中给出的错误信息 上述第一条错误信息,详列如下: Error( 170208 ): Cannot place 4 nodes into a single ALM Info( 170017 ): Cannot place nodes in a single ALM -- the ALM would be illegal because ALM pins can not be routed Info( 170072 ): List of 4 nodes in the ALM Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|mycarry_in|cout" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102 came from < none Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|gen .mycarry|s" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102 came from < none Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|gen .myffa|myff" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102; Sublocation: 4 came from User Location Constraints Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|gen .myffb|myff" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102; Sublocation: 5 came from User Location Constraints 上述第二条错误信息,详列如下: Error( 170208 ): Cannot place 6 nodes into a single ALM Info( 170017 ): Cannot place nodes in a single ALM -- the ALM would be illegal because ALM pins can not be routed Info( 170072 ): List of 6 nodes in the ALM Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|gen .mycarry|s" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102 came from < none Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|gen .myffa|myff" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102; Sublocation: 7 came from User Location Constraints Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|gen .myffb|myff" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102; Sublocation: 8 came from User Location Constraints Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|gen .mycarry|s" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102 came from < none Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|gen .myffa|myff" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102; Sublocation: 10 came from User Location Constraints Info( 170000 ): Node "u_SEP_2BLK_CORE|u_TDC_3Chs_Core|u1_tdc1ch_cc_dualregdualtdl|u_TDL_CC_DualReg_Topa|u_CarryChainDualRegInC10GX|gen .myffb|myff" Info( 170031 ): LE location constraint : Region lower - left corner: X25_Y102; Region upper - right corner: X25_Y102; Sublocation: 11 came from User Location Constraints 经过验证,出现上述锁定报错,是因为单延迟线使用了双寄存器阵列锁存,如果单寄存器阵列锁存就没问题。但是在建立这个工程之前,一个简单测试工程已经验证过了可以使用双寄存器阵列锁存延时线的TAP输出。为何现在出现上述错误信息呢? 经过回头查看原来工程,首先原来测试工程是QPP22.4版本建立,当前工程是QPP23.4,是否版本原因?经过分析,应该不是。随后在QPP22.4原始测试工程上做了一个简单测试,如下图所示,之前测试工程中将2选1选择器的选择型号固定为“低”,当前工程SEL端口是可控的,如图7右侧所示,修改测试工程如图7右侧所示,那么编译原测试工程后,会出现一样的报错问题。 图7:TDC输入HIT经过2选1的MUX模块 备注1:QDB导出问题解决方法 图2所示问题,笔者在Intel可编程论坛进行了提交,迅速得到了回应,如图8所示。根据他提供的方法,确实将此问题解决了。 图8:Intel论坛对QPP23.4导出综合网表QDB出现问题的解决方法 备注2:模块复用下逻辑约束转移 所谓逻辑约束,在这里特指TDL延迟线的物理位置约束。在项目设计时使用逻辑模块复用功能,那么设计者一侧施加的物理位置约束,是否能够同样导出并传递给使用者一侧呢?事实验证,这是可以的,如图9、图10所示。 图9:设计者一侧6通道TDL位置进行了约束 图10:在使用者一侧导入后,6通道TDL物理位置经过锁定后未发生变化
  • 热度 3
    2024-5-2 09:51
    848 次阅读|
    0 个评论
    可重用模块设计教程 概述 SiPM读出测试系统后端硬件重新规划了一块测试板,读出系统送出的信号在该测试板上进行处理,该测试板将替换之前的信号处理系统。测试板使用了Intel的Cyclone 10 GX器件,具体型号为10CGX220。 之前信号处理系统用于上一代整机处理,信号处理分为数字和数据处理两大块,新设计的测试板将之前的数字与数据处理合并为一块,所以之前的两个不同的模块逻辑设计需要合并一起,而当初两个模块分别由不同的逻辑工程师编写,为了合并一起,需要用到Intel的增量编译,这里仅借用可重用模块设计来对子模块进行导出和导入。 可重用模块设计方法及概览 Intel的an839以Arria 10开发板为基础进行了简单介绍,并形成了一个可重用模块设计教程。该教程介绍了两种可重用方法,一种是子核分区重用,另外一种是根分区重用技术。我们更关注与子核分区重用技术,所以这里主要讨论子核分区重用技术在CYCLONE10 GX器件上的应用。 An839教程以开发人者和使用者两种角色来介绍子核心和根分区重用流程。从更高顶层来看,子核心分区和根分区的重用流程是相似的。这两个流程都将设计分区转换为.qdb文件导出导入,进行保留和重用。开发人员在开发人员项目中定义、编译和保留可重用模块,使用者在一个或多个使用者项目中复用可重用块及其自己的逻辑。 子核分区重用技术-开发者教程 本教程基于可重用模块是之前已经开发完成并得到验证并使用过的模块,开发者教程通过介绍子核分区设计的几个流程,这些流程类似IP开发一样,可复用模块完成前期代码规划、并完成逻辑布局布线、划分成单个分区,最后将该可复用模块导出到.qdb文件,这样使用者就可以拿来重复使用。 如图1所示,展示了子核分区重用设计流程框图。 图1:子核分区重用流程框图 子核分区重用还需要向使用者提供一个黑匣子文件。黑匣子件只是定义了使用者项目中用于综合的模块信号端口以及这些端口使用的接口类型。编译器会忽略黑匣子文件中包含的任何其他RTL。将黑匣子文件作为源文件添加到使用者项目中。同时将导出的.qdb文件分配给使用者设计中对应的分区。.qdb文件包含开发者编译快照中的所有信息。然后,使用者可以在其项目中重新使用这些编译结果。综合快照仅包括综合结果。最终快照包括综合、布局和布线结果。具体,可以根据实际情况进行选择和设置。 该教程具体可以包含下述步骤: 步骤1:给重用模块定义一个子核分区 步骤2:编译和导出子核分区 步骤3:为重用模块创建黑匣子文件 步骤4:将上述2个步骤创建的文件复制并传导到使用者工程 步骤5:硬件验证(可选) 实际我们关注的仅为前3个步骤,后续步骤还需要与使用者进行协同,另外需要注意的是重用模块对外端口定义需要双方进行协调一致。下面着重介绍前3个步骤。 步骤1:给重用模块定义子核分区 首先打开开发者工程,该工程可以只包含重用子模块,也可以包含其它众多逻辑子模块,但是需要注意将重用子模块单独定义,有利于给其进行分区。 其次,将打开的工程进行综合,如图2所示,在编译面板重,可以双击“Analysis&Synthesis”对工程进行综合,其实也可以单击综合按钮,这里不再赘述。 图2:编译面板(Compilation Dashboard) 如图2所示,综合完成后,编译面板重,综合对应的项目前出现绿色的勾选图标,表示综合成功完成,如果综合出错,则会出现红叉标识。 综合成功完成后,找到工程导航器(Project Navigator)页面,在“层次”选项卡中找到重用模块,并在该模块上单击鼠标右键(如图3所示),指向“设计分区”,然后选择“默认分区类型”。之后会在用户指定的重用模块实例旁边会显示一个设计分区图标,如图3所示,目标模块是u_blinding_led。 图3:给重用模块创建分区(左侧为an839实例,右侧为C10GX实例) 如果要查看和编辑工程项目中的所有设计分区,可以从Assign菜单项中找到并打开 设计分区窗口,如图4所示。您也可以在此窗口中定义新分区,或者指定编译后自动导出分区。 图4:打开的设计分区窗口 而在QPP22.4版本中打开的设计分区窗口,如图4-1所示,窗口默认条目与图4产生了些微差别(这个其实是可以通过Quartus软件对其进行个性化配置的),根据an839介绍,工程全编译后保留的是Final网表,而在图4-1中,可以指定保留的网表类型,比如是保留综合网表,还是Final网表等。 图4-1:QPP22.4打开的设计分区窗口 步骤2:编译和导出子核分区 这一步不复杂,完成分区划分后,可以对工程进行全编译,这样每个分区可以依据分配约束定义得到其相应的编译快照。需要注意的是只有分区才会在编译后获得快照,未分配的模块其“快照”按钮都是灰色的。然后,就是分区编译后的导出,用户在熟悉以后可以通过约束在每次编译自动导出,这里关注的是教程学习,所以仅介绍手动导出分区。 在图2所示的编译面板中找到全编译项(Compile Design),双击即可完成全编译。全编译后的编译面板如图5所示,编译完成后,设计者必须要关注各个编译步骤的标识,确认工程编译是否存在任何问题。 图5:全编译完成后的编译面板 完成全编译后,确认编译没有问题,找到Project菜单,选择导出设计分区命令(Export Design Partition),弹出图6所示的窗口。在分区名称中选择目标分区,编译快照选择最终快照(Final)。在文件名称区域指定导出的.qdb文件名称。 图6:导出设计分区窗口 步骤3:为分区产生黑匣子文件 当使用者要使用可重用模块的时候,需要在自己的工程中加入一个黑匣子文件,该黑匣子文件定义了重用模块的输入输出端口。这有点象我们在进行HDL逻辑设计的时候,首先需要定义个实体(Entity),并未实体定义输入输出端口,一个黑匣子文件就是一个空的实体定义。Intel在an839中有关模块重用技术使用了System Verilog语言,这样子核模块逻辑源文件文件就是*.sv,而不是通常使用VHDL的*.vhd或使用Verilog的时候的*.v文件。在实际使用中,我们更多的使用这两种语言,所以在产生的黑匣子文件要做出对应调整。 创建黑匣子文件的具体步骤是,首先从File菜单或工程工具按钮中找到“新建”命令(new),从弹出的窗口的设计文件中选择新建SystemVerilog HDL File,单机OK生成一个只包含对应子核分区端口定义的空文件,代码如下所示。 module blinking_led ( output value, input clock ); endmodule 将上述黑匣子文件保存到*_bb.sv文件当中,需要注意的是,在保存该文件的时候禁用“将该文件加入当前工程”选项,大家知道Quartus每次有新文件产生的时候都会进行这类提示,由于黑匣子文件不会在开发者工程中使用,所以不需要选择这个选项,如图7所示。 图7:禁止加入文件到当前工程 子核分区重用技术-使用者教程 将上述产生的.qdb文件和黑匣子文件拷贝到使用者工程目录下,使用者就是在自己的工程中使用该子核分区模块了。作为一个子核分区使用者,当其收到由开发者提供的子核分区可重用模块对应的上述文件后,首先需要将黑匣子文件加入工程,并为子核模块对应的分区指定由开发者提供的对应.qdb文件。由于.qdb文件包含了网表信息,所以双方需要使用相同器件型号和同样的QPP开发软件版本。这个要求对应用户来说还是比较难受的,至少对应我们来说是这样的,比如我们现在双方就在使用不同的QPP版本,一边使用的是22.4,一边使用的是23.2版本。还有我从Cyclone器件导出的.qdb文件难道就无法用于Stratix或Arria器件?后期找时间可以对此进行验证一下。图8显示了双方文件交互情况。 图8:重用模块设计开发者和使用者之间的文件交互 该教程具体可以包含下述步骤: 步骤1:使用者给工程加入重用模块文件并对工程进行综合 步骤2:给对应重用模块创建分区 步骤3:设计全编译 步骤4:硬件验证(可选) 可以使用脚本和命令方式自动执行上述第一和第二个步骤,具体脚本命令如下所示: #Create the partition set_instance_assignment -name PARTITION blinking_led - to u_blinking_led -entity top #Assign the .qdb file to the partition set_instance_assignment -name QDB_FILE_PARTITION blinking_led .qdb \ - to u_blinking_led -entity top #Add the BB file to the file list set_global_assignment -name SYSTEMVERILOG_FILE blinking_led_bb .sv 这里不再对上述步骤进行赘述,只是对分区的QDB文件指定进行简单介绍。加入文件综合后,可以参考上述开发者流程,给目标模块创建分区,然后打开类似图4那样的设计分区窗口,给刚刚创建的重用模块指定.qdb文件,如9所示。未指定QDB文件之前图中粉色虚线框中应该是空白的,可以双击该区域,然后单击浏览图标“(…)”找到从开发者传导过来的QDB文件。 图9:在设计分区窗口中分配QDB文件 参考 an839 Design Block Resue Tutorial for Intel Arria 10 FPGA Dev Board
相关资源
  • 所需E币: 1
    时间: 2022-4-3 11:59
    大小: 10.54KB
    上传者: Argent
    PLC技术在工业控制领域应用广泛,分享一些有关实用的三菱PLC参考程序,希望能够帮助到有需要的网友。
  • 所需E币: 1
    时间: 2022-4-3 10:28
    大小: 168.24KB
    上传者: Argent
    PLC技术在工业控制领域应用广泛,分享一些有关实用的三菱PLC参考程序,希望能够帮助到有需要的网友。
  • 所需E币: 3
    时间: 2021-4-14 22:04
    大小: 21.06MB
    上传者: xgp416
    GXDeveloper~simulator操作手册.pdf
  • 所需E币: 3
    时间: 2021-4-14 22:04
    大小: 31.38MB
    上传者: xgp416
    GXDeveloperVer8操作手册.pdf
  • 所需E币: 0
    时间: 2021-4-8 20:59
    大小: 7.72MB
    上传者: LGWU1995
    GXWorks2入门指南(结构体工程篇).PDF
  • 所需E币: 0
    时间: 2021-4-8 20:58
    大小: 6.79MB
    上传者: LGWU1995
    GXWorks2入门指南(简易工程篇).PDF
  • 所需E币: 0
    时间: 2021-4-8 20:58
    大小: 6.8MB
    上传者: LGWU1995
    GXWorks2version1操作手册(智能功能模块操作篇).PDF
  • 所需E币: 0
    时间: 2020-9-23 00:19
    大小: 10.5MB
    上传者: bwj312
    ALTERA_CYCLONEVGXSTARTERKIT用户手册
  • 所需E币: 5
    时间: 2019-12-28 19:25
    大小: 2.79MB
    上传者: 2iot
    本应用手册为您提供了设计铁氧体磁珠滤波器网络来为Stratix®IVFPGA隔离共用电源层面的一些指南。FPGA技术的发展使数据速率提高到了10Gbps以上。为了达到这种数据速率,FPGA厂商一般要求提供多个隔离的数字和模拟电源层,以单独为FPGA的内核,I/O,敏感的锁相环(PLL)和千兆收发器模块供电。因此,电路板上电源分配系统的复杂性大大增加。由于电路板空间、层数以及成本预算均有限,电路板设计人员发现在这些系统限制内设计其FPGA电路板越来越困难。对于StratixIVGX和GT系列千兆位收发器FPGA系列,一种简化电源设计的方法是,在电源共用层面之间保持充分高频隔离的同时,要能够共用类似的电压。常用的策略是使用铁氧体磁珠。本应用手册介绍了如何正确选择磁珠以及一些设计方面的考虑,例如:反谐振、避免电感-电容(LC)谐振振荡、传输阻抗分析和直流IR压降最小化,同时还要满足去耦的目标阻抗要求。另外,还介绍了某些情况下使用PCB布局结构来替代作为电感滤波器元件的铁氧体磁珠的另一种方法。PCB结构与铁氧体磁珠的性能对比仿真结果,可用于评估验证PCB结构滤波器网络的效果,同时可以了解其诸多局限性。AN583:利用铁氧体磁珠为AlteraFPGA设计电源隔离滤波器本应用手册为您提供了设计铁氧体磁珠滤波器网络来为StratixIVFPGA隔离共用电源层面的一些指南。FPGA技术的发展使数据速率提高到了10Gbps以上。为了达到这种数据速率,FPGA厂商一般要求提供多个隔离的数字和模拟电源层,以单独为FPGA的内核,I/O,敏感的锁相环(PLL)和千兆收发器模块供电。因此,电路板上电源分配系统的复杂性大大增加。由于电路板空间、层数以及成本预算均有限,电路板设计人员发现在这些系统限制内设计其FPGA电路板越来越困难。对于StratixIVGX和GT系列千兆位收发器FPGA系列,一种简化电源设计的方法是,在电源共用层面之间保持充分高频隔离的同时,要能够共用类似的电压。常用的策略是使用铁氧体磁珠。本应用手册介绍了如何正确选择磁珠以及一些设计方面的考虑,例如:反谐振、避免电感-电容(LC)谐振振荡、传输阻抗分析和直流IR压降最小化,同时还要满足去耦的目标阻抗要求。另外,还介绍了某些情况下使用PCB布局结构来替代作为电感滤波器元件的铁氧体磁珠的另一种方法。PCB结构与铁氧体磁珠的性能对比仿真结果,可用于评估验证PCB结构滤波器网络的效果,同时可以了解其诸多局限性。铁氧体磁珠的选择一般而言,铁氧体磁珠分为两类:高Q铁氧体磁珠――一般用作谐振器,不得用于电源隔离电路中。低Q铁氧体磁珠――也称作吸收铁氧体磁珠,损耗较大,可构成较好的电源滤波器网络,因为设计它们的目的是吸收高频……
  • 所需E币: 4
    时间: 2019-12-25 17:31
    大小: 953.43KB
    上传者: quw431979_163.com
    UsingStratixGXTransceiversforCPRI……
  • 所需E币: 4
    时间: 2019-12-25 17:32
    大小: 544.2KB
    上传者: quw431979_163.com
    StratixGXDevelopmentBoardDataSheet……
  • 所需E币: 4
    时间: 2019-12-25 17:30
    大小: 287.59KB
    上传者: givh79_163.com
    StratixIIGX&StratixGXBrochure……
  • 所需E币: 3
    时间: 2019-12-25 17:31
    大小: 591.52KB
    上传者: 16245458_qq.com
    PowerPlayEarlyPowerEstimatorUserGuideforStratix,StratixGX&CycloneFPGAs……
  • 所需E币: 3
    时间: 2019-12-25 17:23
    大小: 261.24KB
    上传者: 二不过三
    IEEE1149.1(JTAG)BoundaryScanTestingforArriaGX……
  • 所需E币: 4
    时间: 2019-12-25 17:24
    大小: 959.14KB
    上传者: 2iot
    ConfiguringArriaGXDevices……
  • 所需E币: 5
    时间: 2019-12-25 16:46
    大小: 356.98KB
    上传者: rdg1993
    Virtex-4FX与StratixIIGX性能对比……
  • 所需E币: 4
    时间: 2020-1-6 12:32
    大小: 1.3MB
    上传者: 二不过三
    ArriaGXALT2GXBMegafunctionUserGuide……
  • 所需E币: 3
    时间: 2020-1-6 12:32
    大小: 655.24KB
    上传者: 16245458_qq.com
    ArriaGXTransceiverProtocolSupportandAdditionalFeatures……
  • 所需E币: 5
    时间: 2020-1-6 12:32
    大小: 307.17KB
    上传者: 978461154_qq
    DSPBlocksinArriaGXDevices……
  • 所需E币: 3
    时间: 2020-1-6 12:33
    大小: 3.23MB
    上传者: 978461154_qq
    ArriaGXDeviceFamilyDataSheet……