DTC数字时间测量系统部分设计.docx
《DTC数字时间测量系统部分设计.docx》由会员分享,可在线阅读,更多相关《DTC数字时间测量系统部分设计.docx(14页珍藏版)》请在冰豆网上搜索。
DTC数字时间测量系统部分设计
摘要
1.经历和实践时间/数字转换器(TDC)专用集成电路设计的完整开发过程;
2.初步具备专用集成电路设计项目的开发能力;
3.培养初步的系统工程思想和合理的硬件开发的风格。
Abstract
One.Experienceandpracticetime/digitalconverter(TDC)completedevelopmentoftheASICdesignprocess;
Two.InitiallyhavethedevelopmentcapabilitiesoftheASICdesignprojects;
Three.Developinitialsystemsengineeringideasandstyleofthehardwaredevelopment.
第一章开发计划
1.1背景介绍
1.1.1几种主要的TDC电路介绍
❑AnalogTDC(TAC+ADC)
❑Counter-basedTDC
❑DLL-basedTDC
⏹Voltage-controlleddelayline
⏹Vernierdelayline
⏹ArrayofDLLs
⏹RCdelayline+DLL
❑CyclicTDC
❑GROTDC
❑Timeamplifier
1.1.2两级粗细TDC技术
⏹生物医学成像的时间测量需求
❑测量范围10μs
❑最小测时单位<1ns
❑通道数64
HybridTDCarchitecture
1.1.3粗细粒度转换
⏹采用计数器计数的方式来测时间双计数器结构亚稳态
1.1.4细粒度转换
⏹多相时钟生成
❑时钟采用延迟锁相环在一个时钟内锁定
❑测时单位:
Tbin=Tclk/2n
⏹由于器件失配造成的延时限制
~150ps(0.35µm)
1.2TDC电路介绍
1.2.1TDC概念
TDC(Time-to-DigitalConverter)时间数字转换器是在电子仪器仪表或信号处理当中将模拟信号转换成以时间表示的数字信号的仪器。
时间数字转换器输出了每一个脉冲与所设起始点相比被记录下来的时间。
时间数字转换器一般用于测量时间间隔在1纳秒到皮秒的范围时的应用。
❑用来测量和量化两个信号之间的时间差,提供这个时间差的数字信号;
❑混合信号电路,行为和特性与ADC类似
1.2.2TDC电路结构
16位格雷码计数器的设计模块
第二章概要设计
2.1设计要求:
采用Verilog硬件描述语言对16位格雷码计数器电路进行行为级建模,通过ModelSim仿真环境进行仿真,保证功能正确。
采用CMOS0.18μm工艺标准数字电路单元搭建16位格雷码计数器,并用Hspice进行仿真。
2.2开发环境
2.2.1开发工具
ModelsimSE,HSpice等
2.2.2VerilogHDL介绍
VerilogHDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。
被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。
数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
VerilogHDL语言具有下述描述能力:
设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。
所有这些都使用同一种建模语言。
此外,VerilogHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
VerilogHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。
因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。
语言从C编程语言中继承了多种操作符和结构。
VerilogHDL提供了扩展的建模能力,其中许多扩展最初很难理解。
但是,VerilogHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。
当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
第三章系统分析与结构设计
3.1格雷码(GrayCode)
在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。
格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。
而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。
它在任意两个相邻的数之间转换时,只有一个数位发生变化。
它大大地减少了由一个状态到下一个状态时逻辑的混淆。
另外由于最大数与最小数之间也仅一个数不同,故通常又叫格雷反射码或循环码。
3.2组合逻辑电路中的竞争-冒险现象
在组合逻辑电路的设计分析中,经常将高低电的变化看成理想化的。
但在实验中,当信号经过电路时,由于门电路传输延迟时间
的不同,可能使电路输出端出现尖峰脉冲的现象,这种尖峰脉冲将使负载产生误动作,为此应当识别电路是否有竞争冒险现象,并采
取措施加以解决。
3.2.1竞争的产生
在没有考虑信号通过导线和逻辑门的传输延迟时间的理想情况下,门电路的输入与输出为稳定状态。
但实际情况是信号通过导
线和门电路时,都存在时间延迟;信号发生变化时也有一定的上升时间或下降时间。
我们将门电路两个输入信号同时向相反的逻辑
电平跳变(一个从1变为0,另一个从0变为1)的现象称为竞争。
由于竞争而在电路输出端可能产生尖峰脉冲的现象就称为竞争—
冒险。
这些尖峰信号又称为“毛刺”。
3.2.2竞争现象的影响
由于FPGA以及其它的CPLD器件内部的分布电容和电感对电路中的毛刺基本没有什么过滤作用,因此这些毛刺信号就会被“保留”并传递到后一级,从而使得毛刺问题更加突出。
可见,即使是在最简单的逻辑运算中,如果出现多路信号同时跳变的情况,在通过内部走线之后,就可能会产生毛刺。
而现在使用在数字电路设计以及数字信号处理中的信号往往是由时钟控制的,多数据输入的复杂运算系统,甚至每个数据都由相当多的位数组成。
这时,每一级的毛刺都会对结果有严重的影响,如果是多级的设计,那么毛刺累加后甚至会影响整个设计的可靠性和精确性。
通过对格雷码的特点分析可知,使用格雷码计数(每次计数只有一位发生变化)可以消除组合逻辑电路中可能存在的竞争—冒险现象。
3.3模块架构
第四章详细设计
4.1算法设计
二进制转化算法数学描述:
原码:
p[0~n];格雷码:
c[0~n](n∈N);编码:
c=G(p);解码:
p=F(c);书写时从左向右标号依次减小.
编码:
c=pXORp[i+1](i∈N,0≤i≤n-1),c[n]=p[n];
解码:
p[n]=c[n],p=cXORp[i+1](i∈N,0≤i≤n-1).
4.2实现举例
4.2.14位二进制计数器转换的格雷码计数器
假设这4位二进制码为
,输出格雷码为
,则我们可以得到
,
,
,
。
其表示表格如表一。
十进制
二进制
格雷码
十进制
二进制
格雷码
0
0000
0000
8
1000
1100
1
0001
0001
9
1001
1101
2
0010
0011
10
1010
1111
3
0011
0010
11
1011
1110
4
0100
0110
12
1100
1010
5
0101
0111
13
1101
1011
6
0110
0101
14
1110
1100
7
0111
0100
15
1111
1000
表一
设计电路图见图一
4.2.28位纯格雷码计数器
第五章程序编码
5.1伪格雷码计数器Verilog描述
5.1.1仿真模块
moduleCrayCnt(Clk,nRst,CntOut);
inputClk;
input[15:
0]nRst;
output[15:
0]CntOut;
integerk;
reg[15:
0]CntOut;
initial
begin
CntOut=0;
end
always@(nRst)
begin
CntOut[15]=nRst[15];
for(k=0;k<=14;k=k+1)
CntOut[k]=nRst[k]^nRst[k+1];
end
endmodule
5.1.2测试模块
timescale1ns/1ns
moduleCrayCnt_tb;
wire[15:
0]CntOut;
regClk;
reg[15:
0]nRst;
initial
begin
nRst[15:
0]=16'b0000_0000_0000_0000;
Clk=0;
#200$finish;
end
always#10Clk=~Clk;
always@(posedgeClk)
begin
nRst=nRst+1;
end
CrayCnt
DUT(
.CntOut(CntOut),
.Clk(Clk),
.nRst(nRst));
endmodule
5.2纯格雷码计数器Verilog描述
modulegraycnt(clk,nclr,q);
inputclk,nclr;
output[15:
0]q;
reg[15:
0]q;
reg[15:
0]next;
reg[15:
0]temp;
integerk;
always@(posedgeclkornegedgenclr)
begin
if(!
nclr)q<=15'b0000_0000_0000_0000;
elseq<=next;
end
always@(q)
begin
temp[15]=q[15];
for(k=14;k>=0;k=k-1)temp[k]=q[k]^temp[k+1];
if(temp[0]==1'b0)
begin
next[0]=~q[0];next[15:
1]=q[15:
1];
end
elseif(temp[1]==1'b0)
begin
next[0]=q[0];next[1]=~q[1];next[15:
2]=q[15:
2];
end
elseif(temp[2]==1'b0)
begin
next[1:
0]=q[1:
0];next[2]=~q[2];next[15:
3]=q[15:
3];
end
elseif(temp[3]==1'b0)
begin
next[2:
0]=q[2:
0];next[3]=~q[3];next[15:
4]=q[15:
4];
end
elseif(temp[4]==1'b0)
begin
next[3:
0]=q[3:
0];next[4]=~q[4];next[15:
5]=q[15:
5];
end
elseif(temp[5]==1'b0)
begin
next[4:
0]=q[4:
0];next[5]=~q[5];next[15:
6]=q[15:
6];
end
elseif(temp[6]==1'b0)
begin
next[5:
0]=q[5:
0];next[6]=~q[6];next[15:
7]=q[15:
7];
end
elseif(temp[7]==1'b0)
begin
next[6:
0]=q[6:
0];next[7]=~q[7];next[15:
8]=q[15:
8];
end
elseif(temp[8]==1'b0)
begin
next[7:
0]=q[7:
0];next[8]=~q[8];next[15:
9]=q[15:
9];
end
elseif(temp[9]==1'b0)
begin
next[8:
0]=q[8:
0];next[9]=~q[9];next[15:
10]=q[15:
10];
end
elseif(temp[10]==1'b0)
begin
next[9:
0]=q[9:
0];next[10]=~q[10];next[15:
11]=q[15:
11];
end
elseif(temp[11]==1'b0)
begin
next[10:
0]=q[10:
0];next[11]=~q[11];next[15:
12]=q[15:
12];
end
elseif(temp[12]==1'b0)
begin
next[11:
0]=q[11:
0];next[12]=~q[12];next[15:
13]=q[15:
13];
end
elseif(temp[13]==1'b0)
begin
next[12:
0]=q[12:
0];next[13]=~q[13];next[15:
14]=q[15:
14];
end
elseif(temp[14]==1'b0)
begin
next[13:
0]=q[13:
0];next[14]=~q[14];next[15]=q[15];
end
else
begin
next[14:
0]=q[14:
0];next[15]=~q[15];
end
end
endmodule
第六章测试与运行
仿真结果如下:
第七章开发技术总结
硬件设计与软件设计既有相同的地方也有很多独特的方法与技巧,通过本次实习得以锻炼一些硬件开发能力和技能:
第一、由需求分析至总体方案、详细设计的设计创造能力;
第二、熟练运用设计工具、设计原理图和Modelsim调试程序的能力;
第三、运用仿真工具测试硬件的能力;
第四、掌握常用的标准电路的设计能力;
第五、故障定位、解决问题的能力;
第六、文档写作技能;
附录:
关键技术准备与推荐参考资料
1.夏闻宇,《Verilog数字系统设计教程》第二版,北京航空航天大学出版社。
2.StephenHenzler,《Time-to-DigitalConverter》,Springer.