原创 【博客大赛】ECO那些事之属性编辑器

2013-4-3 09:39 3139 26 30 分类: FPGA/CPLD 文集: QuartusII

ECO那些事之属性编辑器

王敏志

概述

进行ECOs有两种方法,一种是直接在Chip Planner里进行,另外一种是在属性编辑器里进行ECOs。本文试图结合笔者在TDC设计中使用的功能尽量详细地描述一下属性编辑器,毕竟属性编辑器可以编辑的属性较多,笔者并未对每一种属性进行过编辑,只是给出三两个例子希望能抛砖引玉。

什么属性编辑器?

在文章《基于FPGA的TDC设计那些事之利用ECOs手动修改设计》和《PLL那些事之core输出抖动》都有涉及ECOs,且都是通过属性编辑器来完成的。那么什么是属性编辑器呢,属性编辑器即Resource Properties Editor,QuartusII在工程的任何地方都可以通过“locate”命令进入属性编辑器,当我进行ECOs时,我习惯先打开Chip Planner再通过双击其中需要编辑的单元进入属性编辑器,因为ECOs最终还是需要在Chip Planner中完成。

在属性编辑器里可以编辑的单元有LE、ALM、PLL、I/O Element、RAM以及DSP模块。在进行TDC设计的时候我们仅需要修改LE或者ALM和PLL,所以本文只以这两者为例来详细说明如何使用属性编辑器。

逻辑单元(LE)的属性

通过翻阅QuartusII手册的第17章,可以查到本节的详细介绍,手册详细介绍了LE而简单介绍了ALM属性,这里按照手册的内容尽量详细描述,另外试图比较LE和ALM属性的异同。下面先介绍LE可修改的属性。

1、 工作模式

逻辑单元LE可以工作在正常模式和算术模式两种模式。当LE配置工作在正常模式时,四输入查找表LUT能实现四输入变量的所有功能。当LE配置工作在算术模式时,LUT可以理解为两个三输入子LUT。第一个三输入子LUT产生相加“和”信号输出,第二个子LUT用于产生进位输出信号,该信号仅仅能驱动另一个LE的进位输入信号。

2、 LUT方程式(EQUATION)

用户可以通过修改逻辑方程式而更改当前LUT实现的功能。当LE配置为正常模式时,用户仅仅能修改SUM加法方程式。当LE配置为算术模式时,用户不仅能更改SUM方程式,还可以修改CARRY进位方程式。

当LUT方程式被更改了后,QuartusII软件就自动更改了LUT的掩码。

为了更改由LUT实现的功能,首先用户必须了解LUT如何工作。一个LUT实际上是由内部的存储单元来实现逻辑功能的,而这个逻辑功能是其输入变量的函数。每一个存储单元能保存一个逻辑值,0或1。ALTERA比较老的器件族最小逻辑单元是LE,里面的四输入LUT有16个存储单元。LUT在其存储单元中保存了16个输出值,而LUT的输出又由此LUT的驱动输入端口的信号所决定。

3、 LUT掩码(MASK)

LUT实现什么功能、输出什么值都是由LUT掩码决定的。为了产生LUT掩码,必须算出要实现功能的方程式的真值表。

当LUT掩码改变了以后,QuartusII软件将自动更新LUT方程式,反之亦然。表1是LUT掩码真值表,表的最后一列输出要根据不同的LUT方程式才能得到,后面我会给出几个例子来说明。

表1:LUT掩码真值表(由上到下依次从LSB –> MSB)

1.jpg

 

4、 同步模式

每个LE的寄存器都包含同步加载(sload)和同步清除(sclr)信号。用户可以将它们进行取反修改。如果某个LE使用了sload或者它的取反值,那么该LE所在的LAB里所有LE只能使用此sload及其取反值。例如某个LAB里的两个LE用到sload,那么这两个LE的sload值必须一样。同样规则也适用于sclr。

5、 寄存器级联模式

如果用户使能了寄存器级联模式,那么Cascade-in端口连到寄存器的数据输入端。寄存器级联模式大部分是用于设计需要实现一系列移位寄存器的时候。用户可以通过更改Cascade-in端口的连接或不连接而更改寄存器级联模式。如果用户需要产生这个端口,那么源端寄存器必须在目的端寄存器的正上方,这样才可以级联起来。

6、 单元延时表

单元延时表(Cell Delay Table)描述了从LE的输入到输出的传输延时。图1是从QII12.1的手册里摘录下来的图示,不知道这是否是Cell Delay Table,但是我实际使用的QII11.1用属性编辑器查看LE的属性时候并没有看到所谓的单元延时表。如果能查看到这个属性,对于TDC的设计参考意义还是非常大的,可惜本人并没有找到。笔者获得类似图1所示的延时信息,是通过TimeQuest才察看到的,后面我会给出例子。

20130403093149946001.jpg

图1:逻辑延时信息

PLL的属性

属性编辑器允许用户修改PLL的配置参数,例如输出时钟的相移、占空比等等,下面所列都是可以更改的属性。

l  输入频率

l  M VCO tap

l  M初始值

l  M值

l  N值

l  M计数器延时

l  N计数器延时

l  M2值

l  N2值

l  SS计数器

l  Charge pump current

l  环路滤波器阻抗(Loop filter resistance)

l  环路滤波器容抗(Loop filtercapacitance)

l  计数器延时

l  计数器上限(Counter high)

l  计数器下限(Counter low)

l  计数器模式

l  计数器初始值

l  VCO tap

1、调整占空比

利用下面公式可以单独为某个输出时钟调整占空比。

20130403093154114002.png

2、调整相移

利用下面公式可以单独为PLL的输出时钟调整相移。

Phase Shift = (Period VCO*0.125*Tap VCO) + (Initial VCO*Period VCO)

PLL工作在正常模式下时,Tap VCO ,Initial VCO,和Period VCO都由下列公式得到:

Tap VCO = Counter Delay – M Tap VCO

Initial VCO = Counter Initial- M Initial

Period VCO = In Clock Period * N + M

当PLL工作在外部反馈模式的时候,Tap VCO ,Initial VCO,和Period VCO都由下列公式得到:

Tap VCO = Counter Delay – M Tap VCO

Initial VCO = Counter Initial- M Initial

Period VCO = 20130403093158135003.png

当然还有通过其它公式去修改PLL的输出时钟的频率,以及频谱扩展等等,这里不一一描述,详细可以查看QuartusII手册,对于TDC设计最重要的是要调整时钟的相移,在文章开始提到的文章中就有此应用。

属性编辑器应用举例

首先我们举一个通过属性编辑器修改PLL的属性的例子,根据上述调整相移的部分,我们知道通过修改对应输出时钟的VCO Tap或者Counter Initial来修改此时钟的相移,如图2所示。

20130403093203748004.jpg

图2:利用ECO手动修改PLL输出的相位

这个例子在TDC设计中的应用,主要是在没有Random HITs之前利用PLL的输出来测试TDC的性能。通过属性编辑器,我们可以通过皮秒级别的相移完全可以达到测试TDC的目的。另外,设计调试过程中发现在测试ADC的时候也可以用得到,由于ADC的采样时钟和FPGA的系统时钟异步,所以FPGA采集ADC输出数字信号可能没有对齐其安全窗口,从而导致数据错误,可以通过属性编辑器逐步调整时钟的相位找到合适采样窗口,这个SDRAM有点类似。

下面回到本文的重点,即通过属性编辑器来对LE或ALM的属性进行编辑。图3是CycloneIII里某个LE,Carry方程式是“!C#!B”,Carry LUT掩码为“3F3F”。那么根据表1可以得出符合“#”是逻辑或。

20130403093208391005.jpg

图3:LUT方程式和掩码

图3是为我搞清楚#在ALTERA的属性编辑器到底表示什么逻辑功能,最新的所有资料上我都没有查到,也许以前老版本的QII手册上有,可惜找不到了。如果不搞清楚这些符号的功能,根本看不懂方程式。类似的符合还有一个“美刀”符合 - $,继续找找例子反推(图3中有符号$,但是方程式太复杂很难推导)。找个简单点的方程式,如图4所示是在ArriaGX的某个ALM中的方程式和掩码。

20130403093213823006.jpg

图4:推导异或符合

图4中F1 LUT方程式是“a$c”,而其掩码是“5A5A”,根据表1可以推导符号$是逻辑异或符号。

只有搞清楚上述ALTERA专用的逻辑符号,才能放心去修改掩码或者方程式。在TDC设计中,一般只需要修改LE或者ALM的数据输入端口,需要注意的是,这些修改会导致QuartusII自动更新掩码或者方程式,需要确认更新后的内容是否符合设计需求。例如,TDC设计如果将数据端口DATAA的信号更改到DATAF,这时候虽然方程式虽然自动更新,但是它自动更新的是DATAA端口信号到方程式里,而实际我们需要使用的是端口DATAF上的信号,所有还需要更改方程式。文章《基于FPGA的TDC设计那些事之利用ECOs手动修改设计》给出了一个例子,即外部HIT从ALM不同的数据端口输入到ALM输出的延时有很大差异。

分析及结论

本文详细介绍了什么属性编辑器,如何在属性编辑器中进行ECOs。介绍了LE以及PLL的可编辑属性。通过实例推导了ALTERA的QuartusII中表示逻辑或和逻辑异或地专用符号。

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户1867027 2016-2-25 11:08

公司网看不了视频....

coyoo 2016-2-25 10:36

具体可以看我的视频课程: http://www.moore8.com/courses/119#/course/119

用户1867027 2016-2-25 10:06

楼主,这个属性编辑,具体怎么操作的?还有,怎么修改才算优化并且不改变原有功能?刚学这个,不敢随便乱来。

royalark_912907664 2013-4-3 13:05

虽然我看不懂,还是支持下。
相关推荐阅读
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
EE直播间
更多
我要评论
4
26
关闭 站长推荐上一条 /1 下一条