MyFPGA Forum

 找回密码
 注册
搜索
查看: 3015|回复: 0
打印 上一主题 下一主题

[系统相关] 【Altera SoC】基于SOPC的单通道TDC设计(4)

[复制链接]
跳转到指定楼层
1#
发表于 2015-8-6 09:32:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 BOB_Sun 于 2015-8-6 09:35 编辑

本文转自 http://bbs.eeworld.com.cn/thread-465445-1-1.html

上接帖子:

http://www.myfpga.org/discuz/for ... mp;extra=#pid270244

http://www.myfpga.org/discuz/for ... &extra=page%3D1                              

http://www.myfpga.org/discuz/for ... &extra=page%3D1

3系统测试方法



3.1 第一次测试
基本原理如下:
利用外部按键模拟输入的待测信号的正脉冲,理想状态是,在按键次数充满fifo以后,fifo发出满信号。Fifo每次写满之后会有一个上升沿的跳变信号,故采用这一信号作为中断源,读取fifo中的测量数据。
中断初始化程序和中断服务程序如下:
void TDC_monitor_isr(void* context, alt_u32 id);
bool TDC_monitor_start(volatile alt_u32 *pPressedMask);

另外为了实时查看fifo的状态信息,故又设置了一个按钮中断用于查询各管脚信号。中断初始化和服务程序如下:
void button_monitor_isr(void* context, alt_u32 id);
bool button_monitor_start(volatile alt_u32 *pPressedMask);
这两个程序可以实时的查看写满信号wr和空信号empty。

测试的结果,在第一次是32字长长度的fifo的情况下,读fifo中断没有执行,查询满和空信号均为0。
然后,修改fifo的长度为4字长后,没按几十次按键,fifo会发一次满中断。但此时读出的数据不对。
3.2 第二次测试
本次测试的目标是延时链的亚稳态情况。方法是关闭消除亚稳态的1-out-of-n码转换电路,直接把延时链的输出送入解码器电路。当抑制按下按键或者抑制松开按键的情况下,延时链的输出应该是全1和全0,解码器的输出应该是0。故在对系统复位后的fifo的输出空信号有效,满信号永远无效。
测试,结果是fifo满信号一直有效。这说明,长达1000位的延时链输出信号即使是在没有任何测试信号输入的情况下,延时链的输出信号也夹杂0和1的。造成这种现象的根本原因是:
1. 延时链长度大于一个时钟周期,说明亚稳态在延时链输出中一直存在;
2. 当延时链长度很长时,FPGA中延时链锁存的寄存器组的时钟走线必然不能完全一致,导致寄存器的输出状态不一致;
3. 如图 31所示,在5CSEMA5F31C6的LCELL中的全加器结构出现更短的超前进位时间时间后,受限于FPGA的最大工作频率,要求延时链长度高达1000位,时钟频率330MHz以上,这样的限制,一方面造成了上述1和2的现象,另一方面还带来了预处理电路的处理算法复杂和解码器电路规模增大、最大路径延时不可控的现象出现。

图 31一个LABCELL原理图
4 结论
首先,不得不承认使用5CSEMA5F31C6来实现TDC这一设计思路是错的。但是,这不代表使用FPGA来实现TDC是不可行的。下一步的设想是使用自己设计并制作的EP3C10E144C7这一低端的芯片来实现。选择它的原因有:

图 41 延时链静态时序分析结果

图 42 一个LE的内部结构

命令:
report_path -from [get_pins {inst|result[0]~64|dataa}] -npaths 256 -panel_name {Report Path}
从分析结果来看,一水的66ps延时,只有第一级是466ps,故延时链可以从第二级开始。其余各级都在66ps。这样在选取250MHz的时钟情况下,延时链长度只要大于4000/66=60位即可。60位的延时链有利于FPGA的时钟走线一致性;有利于缩减一个通道TDC的规模,为单片FPGA容纳更多通道的TDC带来可能;有利于亚稳态预处理电路的算法实现;有利于降低解码器的规模,减小解码器的最大路径延时,为TDC的单周期测量带来可能。
对比图 31和图 42可见,CycloneV的超前进位加法链完全不同于CycloneIII。尽管CycloneV的超前进位时间更短,而且每个LCELL内两个全加器的进位延时是0,这些优点会让Cyclone V的加法器工作于更高的时钟频率,但是这些在应用于对时钟信号敏感的TDC中时,Quartus II软件的综合适配结果总是不能很好的满足要求;而Cyclone III尽管单位延时变长了,TDC的测量精度降低了,但是保证了TDC在FPGA内部实现的可能。
减小延时链的单位时间延时,尽管可以极大的提升TDC的测量精度,但这些在全定制的IC设计中或许是一种很好的思路,但是在FPGA内,当设计选择延时时间更短的FPGA时,要求FPGA的最大工作频率要很高才能达到缩减延时链长度的目的。
所以,使用FPGA来实现高精度的TDC,需要使用更高档的FPGA,这样就有些得不偿失了,因为现在的成品的TDC IC一片才几十元,但高档的FPGA一片动辄要几千元了。这样昂贵的成本把FPGA实现TDC很灵活这一优点也比下去了。
重新回到CycloneIII后,继续使用SignalTap II测试延时链的亚稳态,继续在FPGA内构建SOPC测试系统的正确工作与否,然后使用基准的信号测量TDC的测量精度。
最后不得不说,做一个设计,如果不在一开始就估计好它的复杂度还有可行性,最终的后果就是和我一样,做了大量的工作只是得到一个失败的结果。另外,不得不说使用CycloneV来进行SOPC设计,电脑的配置要很高才行,我一个AMD 4核的CPU+8G DDR3 1333内存条的配置,每次编译一次系统时间都长达15分钟,这实在是不能忍受的。每次设计稍微改动一点就得消耗好长时间。针对这一现象,解决办法是,保证外围电路的正确性后,然后使用输出分区的方法,直接导入适配结果到顶层工程中来,因为Qsys搭建的系统一般不会有什么问题,这样就免除了每次超长的编译等待。
可,FPGA的设计的测试用仿真的方法在TDC中又不能使用,因为TDC必然有亚稳态,有亚稳态仿真输出就是高阻的红线。Quartus II提升自身的综合适配速度才能更好的推动SOPC的市场应用。

工程文件见附件见下载中心地址:http://download.eeworld.com.cn/detail/phantom7/556040


您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-4-19 23:42 , Processed in 0.040838 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表