社区导航

 
查看: 164377|回复: 13

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

[复制链接]

22

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-6-24 23:35:18 | 显示全部楼层 |阅读模式
上接帖子:

http://bbs.eeworld.com.cn/thread-465441-1-1.html



http://bbs.eeworld.com.cn/thread-465443-1-1.html



http://bbs.eeworld.com.cn/thread-465444-1-1.html






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位的延时链输出信号即使是在没有任何测试信号输入的情况下,延时链的输出信号也夹杂01。造成这种现象的根本原因是:
1. 延时链长度大于一个时钟周期,说明亚稳态在延时链输出中一直存在;
2. 当延时链长度很长时,FPGA中延时链锁存的寄存器组的时钟走线必然不能完全一致,导致寄存器的输出状态不一致;
3. 如图 31所示,在5CSEMA5F31C6的LCELL中的全加器结构出现更短的超前进位时间时间后,受限于FPGA的最大工作频率,要求延时链长度高达1000,时钟频率330MHz以上,这样的限制,一方面造成了上述12现象,另一方面还带来了预处理电路的处理算法复杂和解码器电路规模增大、最大路径延时不可控的现象出现。
图片6.png

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

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

图片8.png
图 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

评分

1

查看全部评分



回复

使用道具 举报

57

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-7-3 10:47:56 | 显示全部楼层
好贴怎么没人顶,为什么用cycloneV是错的呢?

点评

楼主已经说的很清楚了,即进位链延时过短,已经“过犹不及”了;CV无法在逻辑运行更高的TDC时钟,否则就像楼主那样,必须实现一个1000级的延时链,过长的延时链又会导致很烦人的亚稳态问题,很多不可控的情况都会出  详情 回复 发表于 2015-9-6 15:36


回复

使用道具 举报

338

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-9-6 15:36:24 | 显示全部楼层
tdatd 发表于 2015-7-3 10:47
好贴怎么没人顶,为什么用cycloneV是错的呢?

楼主已经说的很清楚了,即进位链延时过短,已经“过犹不及”了;CV无法在逻辑运行更高的TDC时钟,否则就像楼主那样,必须实现一个1000级的延时链,过长的延时链又会导致很烦人的亚稳态问题,很多不可控的情况都会出现。

不过CV的进位延时这么小,确实对做TDC的是一种诱惑啊!!!!


回复

使用道具 举报

11

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-12-17 11:28:51 | 显示全部楼层
coyoo 发表于 2015-9-6 15:36
楼主已经说的很清楚了,即进位链延时过短,已经“过犹不及”了;CV无法在逻辑运行更高的TDC时钟,否则就 ...

求大神指导


回复

使用道具 举报

11

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-12-17 11:30:54 | 显示全部楼层
coyoo 发表于 2015-9-6 15:36
楼主已经说的很清楚了,即进位链延时过短,已经“过犹不及”了;CV无法在逻辑运行更高的TDC时钟,否则就 ...

王老师?

点评

你是那个?  详情 回复 发表于 2015-12-19 11:34


回复

使用道具 举报

338

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-12-19 11:34:36 | 显示全部楼层

你是那个?


回复

使用道具 举报

11

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-12-23 17:09:45 | 显示全部楼层

你的铁杆粉 哈哈


回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-4-30 22:20:32 | 显示全部楼层
好帖子,支持一下!期望有机会可以和作者交流一下!


回复

使用道具 举报

5

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-7-20 17:48:45 | 显示全部楼层
先mark一下


回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-5-4 14:51:23 | 显示全部楼层
楼主的3有没有出来


回复

使用道具 举报

57

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-6-13 16:49:57 | 显示全部楼层
不知道楼主最终的精度做到了多少?


回复

使用道具 举报

57

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-6-15 13:27:26 | 显示全部楼层
楼主附件的工程里,device选择的是 cv5.无法综合,有一个报错。。。如何解决呢?


回复

使用道具 举报

27

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-7-17 04:14:52 来自手机 | 显示全部楼层
何处有内心非常“善良”的。。。。但是行为非常恶劣的“人”


回复

使用道具 举报

45

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-10-8 23:43:19 | 显示全部楼层
延时链过长,可以采用循环的方式解决,  但基于此原理的TDC是没有实用价值的,  温漂太大, 即使在恒温条件下延时单元的线性度也太差,  每8个LEN会有一个大的延迟量波动.  布局布线根本解决不了这个问题.  仅仅只能纯学习.


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-12-10 09:34 , Processed in 0.370465 second(s), 17 queries , Gzip On, MemCache On.

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