版主: 51FPGA

分享到:
共1条 1/1 1   

关于构建延迟线的请教

    [您是本帖的第1714位阅读者]
himalaya0604
我是MM
高级会员

最后登陆时间:2015-01-13 22:04:08

直达楼层
1# 发表于 2015-07-16 23:09:14

 各位大神,请教你们一个问题。现在在做GPS与恒温晶振协同授时系统。这个系统有一个技术关键点,就是如何构建一条延迟线,然后对时间间隔进行精确测量。研一的时候,在Spartan3 xc3s400中通过设计加法器和添加约束相结合的方法构造出一条进位链,从而完成了整个系统的设计。现在想对硬件进行升级,就是在Spartan6 xc6slx9构造一条延迟线对时间间隔进行测量。我的设计思路是直接条用carry4这个模块来构造一条128位的延迟线。后来发现carry4似乎存在问题,就是对carry4进行仿真发现它的行为仿真得到的结果与布局布线后仿真得到的结果完全相反。

Carry4内部结构图

carry4.png

       上图是carry4的内部电路结构图。通过芯片资料可以知道,CI是进位信号输入口,CYINIT是初始化端口,当CYINIT为1时,则输出信号全被初始化为1,当CYINIT为0时,则输出信号全被初始化为0。S(3:0)为配置信号的传输路径,当为“1111”时,表明信号沿MUXCY的端口1传输。当为”0000”时,信号沿着MUXCY的端口0传输。D(3:0)是连接到MUXCY的端口0的信号。CO(3:0)是MUXCY的输出信号,O(3:0)为S与进位信号的异或。以下是我通过布局布线后仿真得到的表格。

 

引脚名称

配置值

CYINIT

0

CI

0

S(3:0)

“1111”

D(3:0)

“0000”

CO(3:0)

“0000”

O(3:0)

“1111”

引脚名称

配置值

CYINIT

0

CI

1

S(3:0)

“1111”

D(3:0)

“0000”

CO(3:0)

“0000”

O(3:0)

“1111”

 

引脚名称

配置值

CYINIT

1

CI

0

S(3:0)

“1111”

D(3:0)

“0000”

CO(3:0)

“1111”

O(3:0)

“0000”

引脚名称

配置值

CYINIT

1

CI

1

S(3:0)

“1111”

D(3:0)

“0000”

CO(3:0)

“1111”

O(3:0)

“0000”

       当CYINIT=’0’,CI=’1’时,结合carry4的内部结构分析,得到的结果应该是CO(3:0)=”1111”, O(3:0)=”0000”,用行为仿真得到的结果也是这个值。但布局布线后仿真刚好相反,它的结果是CO(3:0)=”0000”,O(3:0)=”1111”。通过上述四个表的规律还可以发现,CO和O的输出值与CI无关,反而好像与CYINIT有,CYINIT就好像进位信号一样。

       一开始我也不相信这个结果,后用chipscop对carry4的功能进行测试,发现得到的数值与布局布线后的完全一样。所以想问一下这到底是怎么回事,是我设计的有问题,还是xilinx 公司开始设计这个原语的时候本来就有问题?这个问题已经折磨我好久了,延迟线建不起来,这个授时系统就做不出来啊。所以请您帮我看看,帮我分析一下,谢谢啊。

共1条 1/1 1   
快速回复主题
  • 匿名不能发帖!请先 [ 登陆 注册 ]