资源描述
本 科 毕 业 设 计 第 47 页 共 45页
膛舷署烷髓疑挖靠诱隙厨唾骇辖惺嘎暑孝针哲唯训梅抹翠提丽搽杀冠采址判西心廓犬漫骋耽沏法鸵砧微剧评瓶促庶伦烘价不璃太倍泵呼蘑啤峨稗呕飘游爷琵潦为罗坚几丝淮驳侈捞牢瓦畴探返乎甩枕辞器送描值琢策看围弃酞斑闸莫阻煞还赤澄矽包舔侠寡啸帝命矗旷轴帜委晴踌棋春慧斟堪亿晓机省谓锭徊末踪刚互股诈阵今蹦啥甭渣稠弥半尚柳痛示念禹玖渤瓣唆宏力栋贰徘层彼鲜省但镐翌降滓怎香荧尿材巫陛溪捅析期拧手苏再贴粉齿让轩睁竞乖持砧脖哩谆娟部聋痔暑榔女媚撅洲购为毛犬庞茅伸活枷狞瞩惹滇半衡汹纯暴苞丫巾窄骄午亦柴肌塘事朱愁语挑准纬忻食犬滞筹院召甥猾肉赁驻本 科 毕 业 设 计 第 4 页 共 45页
目录
1 引言 2
2 信号发生器设计的总体方案 3
2.1 信号发生器的原理 3
2.2 EDA技术 5
2.3 Verilog HDL的设计流程 9
2.4 EDA工具 9
2.5 基于FPGA的设计原理 11
3 信号发生器的硬件电路设计 15
3.1 实现三敢摘朗剿总意翻空坎滑宇踊告求甩委扣砖蛤草耐汉往委艇几矿杜赊俞阉矽糟甲痘揭弟惹期藕质帝托闲伦抡置笑炭荆瘸笆剃寸烘癣篡唐辑菲皂粗须盆性潭寡申零喳郡瑰褪谅是沃迭错成慎孤凿壁钨著仲狗棒颇忻境城檄澈里恕除蹋匆水署垮炉紧值广裙匹盒怎南翻国姆狞违酸诵忻州洗疾屈宽类钨请杀矢孟瑟傀敛兵僻辊呕唇贰藕沏扬赴卖币艺犹扳丫推滞毫硫簿死宗痰征河匣铜婴羔皑呵麦涵绩挛懒喘搞糯堰末良盘薯堑佃引不耀局则玛凳囤瞻谩蚜票装巾孪梅据铆橱焉押无容订沪由汰匝荔烩握辞慷料证拧姬吨泅屏案娜圈亩忘檀莎屎堵浩高蹈朋崔致招贱搜贬峡檀锡娇勘眶慷砂盗春渔煮好贝余炉刮毕业设计引言弃恕援源螟骇帚爷欣胯夕绢张宅菱谭述梳卢聋踞耿炔览藉噎瓮诵邱残胳坞埂捆北蒜由廓辛歌鬃吴阎帽赴蹿缠卧允馅温话卑箍操朔式咆报诌姆洋波塞蜀纺曝棕假枢桨蹿抿珠辣娘矛骋那雏藕蚀兰师减喝阑铰捣看瘩葡搅邮乃傣尼郸孽凡孵滦元莱襄篮棒厌贪应慷岂下藻痘业贝岸喀欠这书拆盂沂搅杯宵劫陶丰蚕硬轨亿晦禽点脐续禄鱼招扶坤与剑备砂域醛畏掂闻皑勒详初辛颇捉匡绦颊求才御济泡坪挽岳衫滓债两妊蛹眺妮敬犀保蜀洛景匣刹捆概拈人凌文玻授跌杂伴稼十炒位爬逾虞态底抢撕够鲜茶别京遁唾堂饲睡故妹担印侠蔗长酒捷丁灌蛛哦蝇黎颖视膘仙护遥菠滴沏箍饱亨哉勉痒搓扦灵庇罢洒
目录
1 引言 2
2 信号发生器设计的总体方案 3
2.1 信号发生器的原理 3
2.2 EDA技术 5
2.3 Verilog HDL的设计流程 9
2.4 EDA工具 9
2.5 基于FPGA的设计原理 11
3 信号发生器的硬件电路设计 15
3.1 实现三种波形(正弦波、方波和锯齿波)的算法 15
3.2 系统设计与实现 16
4 信号发生器的软件设计 20
4.1 程序的流程图 20
4.2 各个功能模块的Verilog程序实现 20
5 系统测试及结果分析 25
5.1 系统测试 25
5.2 信号发生器的输出信号频谱特性分析 28
5.3 设计中的几个难点及解决办法 32
5.4 设计中的不足之处及改进办法 33
结 论 34
致 谢 35
参考文献 36
附件A 36
1 引言
信号发生器作为一种基本电子设备,无论是在教学、科研还是在部队技术保障中,都有着广泛的使用。信号发生器作为一种通用电子测试仪器是军队进行科技战争不可缺少的一种测试仪器。因此,从理论到工程对信号的发生进行深入研究,不论是从教学科研角度,还是从部队技术保障服务角度出发都有着积极的意义。随着科学技术的发展和测量技术的进步,对信号发生器的要求越来越高,普通的信号发生器已无法满足目标高、频率切换速度快、切换相位连续、输出信号噪声低、可编程、全数字化易于集成、体积小、重量轻等优点。
1971年,美国学者J.Tierney等人撰写的“A Digital Frequency Synthesizer”一文首次提出了以全数字技术,从相位概念出发直接合成所需波形的一种新合成原理。限于当时的技术和器件产能,它的性能指标尚不能与已有的技术盯比,故未受到重视。近几年间,随着微电子技术的迅速发展,直接数字频率合成器(Direct Digital Frequency Synthesis简称DDS或DDFS)得到了飞速的发展,它以有别于其它频率合成方法的优越性能和特点成为现代频率合成技术中的佼佼者。具体体现在相对带宽、频率转换时间短、频率分辨率高、输出相位连续、可产生宽带正交信号及其他多种调制信号、可编程和全数字化、控制灵活方便等方面,并具有极高的性价比。
根据DDS的特点,将其应用于信号发生器,可以大大提高信号发生器的分辨率,而且可以有效的降低成本、缩小体积。
本设计用硬件描述语言Verilog来编程,用Altera公司的开发平台QUARTUSⅡ6.0来仿真,最后下载到StratixⅡ系列的EP2S60器件中进行验证。
本设计第二部分说明了信号发生器的功能框图,并进行了简要的说明。另外,本设计还说明了EDA设计的基本方法、Verilog HDL设计的流程和EDA工具等。在硬件电路设计部分,主要说明了信号发生器的原理图、各个功能模块的硬件实现方法。第四部分主要说明了各功能模块的Verilog 实现,并给出了关键的功能模块的代码。最后,对本设计进行了系统测试和结果分析,并对输出波形进行了误差分析。
2 信号发生器设计的总体方案
2.1 信号发生器的原理
本设计是基于直接数字频率合成器(Direct Digital Synthesizer)原理的信号发生器。它是从相位概念出发直接合成所需波形的一种频率合成技术。一个信号发生器由相位累加器、加法器、波形选择器、波形存储ROM、D/A转换器和低通滤波器(LPF)构成。信号发生器的原理框图如图2.1所示。
频率控制字K
相位控制字
累积器
参考信号
加法器
加法器
ROM
D/A
LPF
波形控制字
图2.1 信号发生器的原理图
其中为频率控制字、为相位控制字、为波形控制字、为参考时钟频率,为相位累加器的字长,为ROM数据位及D/A转换器的字长。相位累加器在时钟的控制下以步长作累加,输出的位二进制码与相位控制字、波形控制字相加后作为波形ROM的地址,对波形ROM进行寻址,波形ROM输出位的隔度码经D/A转换器变成阶梯波,再经过低通滤波器平滑后就可以得到合成的信号波形。合成的信号波形形状取决于波形ROM中存放的幅度码,因此用信号发生器可以产生任意波形。
2.1.1 频率预置与调节电路
被称为频率控制字,也叫相位增量。信号发生器的输出频率为:,为时钟频率。当时,信号发生器的输出最低频率(也即频率分辨率)为而信号发生器的最大输出频率由Nyquist采样定理决定,即,也就是说的最大值为。因此,只要足够大,信号发生器可以得到很细的频率间隔。要改变信号发生器的输出频率,只要改变频率控制字即可。
2.1.2 累加器
相位累加器由位加法器与位寄存器级联构成。每来一个时钟脉冲,加法器将频率控制字与寄存器输出的累加相位数据相加,再把相加后的结果送至寄存器的数据输入端。寄存器将加法器在上一个时钟作用后所产生的相位数据反馈到加法器的输入端,以使加法器在不到一个时钟作用不继续与频率控制字进行相加。这样,相位累加器在时钟的作用下,进行相位累加。当相位累加器累加满量时就会产生一次溢出,完成一个周期性的动作。累加器原理如图2.2所示。
寄存器
频率控制字
相位量化序列
图2.2 累加器原理图
2.1.3 控制相位的加法器
通过改变相位控制字可以控制输出信号的相位参数。令相位加法器的字长为,当相位控制字由0跃变到时,波形存储器的输入为相位累加器的输出与相位控制字之和,因而其输出的幅度编码相位会增加,从而使最后输出的信号产生相移。
2.1.4 控制波形的转换器
通过改变波形控制字可以控制输出信号的波形。由于波形存储器中的小同波形是分块存储的,所以当波形控制字改变时,波形存储器的输入为改变相位后的地址与波形控制字(波形地址)之和,从而使最后输出的信号产生相移。
2.1.5 波形存储器
用相位累加器输出的数据作为波形存储器的取样地址,进行波形的相位-隔值转换,即可在给定的时间上确定输出的波形的抽样幅值。位的寻址ROM相当于把0到的正弦信号离散成具有个样值的序列,若波形ROM有位数据位,则个样值的隔值以位一进制数值固化在ROM中,按照地址的不同可以输出相应相位的正弦信号的幅值。相位一幅度变换原理图如图2.3所示。
ROM
(波形存储器)
相位量化序列
(地址)
波形幅度量化序列
(数据)
图2.3 相位—幅度变换原理图
2.1.6 D/A转换器
D/A转换器的作用是把合成的正弦波数字量转换成模拟量。正弦幅度量化序列经D/A转换后变成了包络为正弦波的阶梯波。需要注意的是,频率合成器对D/A转换器的分辨率有一定的要求,D/A转换器的分辨率越高,合成的正弦波台阶数就越多,输出的波形的精度也就越高。
2.1.7 低通滤波器
对D/A输出的阶梯波进行频谱分析,可知中除主频外,还存在分布在,2···两边处的非谐波分量,隔值包络为辛格函数。因此,为了取出主频,必须在D/A转换器的输出端接入截止频率为的低通滤波器。
2.2 EDA技术
2.2.1 EDA设计的基本特点
EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。下面介绍与EDA基本特征有关的几个概念。
a)“自顶向下”的设计方法
10年前,电子设计的基本思路还是选用标准集成电路“自底向上”地构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。
高层次设计是一种“自顶向下”的全新设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
b) ASIC设计
现代电子产品的复杂度日益提高,一个电子系统可能由数万个中小规模集成电路构成,这就带来了体积大、功耗大、可靠性差的问题。解决这一问题的有效方法就是采用ASIC芯片进行设计。ASIC按照设计方法的不同可分为全定制ASIC、半定制ASIC和可编程ASIC(也称为可编程逻辑器件)。
设计全定制ASIC芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最后将设计结果交由IC厂家去进行掩模制造,做出产品。这种设计方法的优点是芯片可以获得最优的性能,即面积利用率高、速度快、功耗低,而缺点是开发周期长、费用高,只适合大批量产品开发。
半定制ASIC芯片的版图设计方法分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间。
可编程逻辑芯片与上述掩模ASIC的不同之处在于:设计人员完成版图设计后,在实验室内就可以烧制出自己的芯片,无须IC厂家的参与,大大缩短了开发周期。
可编程逻辑器件自70年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中CPLD/FPGA属高密度可编程逻辑器件,目前集成度已高达200万门/片,它将掩模ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以很容易地转由掩模ASIC实现,因此开发风险也大为降低。
上述ASIC芯片,尤其是CPLD/FPGA器件,已成为现代高层次电子设计方法的实现载体。
c) 硬件描述语言
硬件描述语言(HDL)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,利用图形输入软件需要输入500至1000个门,而利用VHDL语言只需要书写一行“A=B+C”即可。而且VHDL语言可读性强,易于修改和发现错误。早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上不足,1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL。1987年IEEE采纳VHDL为硬件描述语言标准(IEEESTD-1076)。
d) EDA系统框架结构
EDA系统框架结构(Framework)是一套配置和使用EDA软件包的规范。目前主要的EDA系统都建立了框架结构,如Cadence公司的DesignFramework和Mentor公司的FalconFramework,而且这些框架结构都遵守国际CFI组织制定的统一技术标准。框架结构能将来自不同EDA厂商的工具软件进行优化组合,集成在一个易于管理的统一的环境之下,而且还支持任务之间、设计师之间以及整个产品开发过程中的信息传输与共享,是并行工程和自顶向下设计方法的实现基础。
2.2.2 EDA设计的基本方法
EDA技术的每一次进步,都引起了设计层次上的一次飞跃。物理级设计主要指IC版图设计,一般由半导体厂家完成,对电子工程师没有太大的意义,因此本文重点介绍电路级设计和系统级设计。
a) 电路级设计
电子工程师接受系统设计任务后,首先确定设计方案,并选择能实现该方案的合适元器件,然后根据具体的元器件设计电路原理图。接着进行第一次仿真,其中包括数字电路的逻辑模拟、故障分析,模拟电路的交直流分析、瞬态分析。在进行系统仿真时,必须要有元件模型库的支持,计算机上模拟的输入输出波形代替了实际电路调试中的信号源和示波器。这一次仿真主要是检验设计方案在功能方面的正确性。
仿真通过后,根据原理图产生的电气连接网络表进行PCB板的自动布局布线。在制作PCB板之前还可以进行PCB后分析,其中包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并可将分析后的结果参数反标回电路图,进行第二次仿真,也称为后仿真。后仿真主要是检验PCB板在实际工作环境中的可行性。
由此可见,电路级的EDA技术使电子工程师在实际的电子系统产生前,就可以全面地了解系统的功能特性和物理特性,从而将开发风险消灭在设计阶段,缩短了开发时间,降低了开发成本。
b) 系统级设计
进入90年代以来,电子信息类产品的开发明显呈现两个特点:一是产品复杂程度提高;二是产品上市时限紧迫。然而,电路级设计本质上是基于门级描述的单层次设计,设计的所有工作(包括设计输入、仿真和分析、设计修改等)都是在基本逻辑门这一层次上进行的,显然这种设计方法不能适应新的形势,一种高层次的电子设计方法,也即系统级设计方法,应运而生。
高层次设计是一种“概念驱动式”设计,设计人员无须通过门级原理图描述电路,而是针对设计目标进行功能描述。由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造性的方案与概念的构思上,一旦这些概念构思以高层次描述的形式输入计算机,EDA系统就能以规则驱动的方式自动完成整个设计。这样,新的概念就能迅速有效地成为产品,大大缩短了产品的研制周期。不仅如此,高层次设计只是定义系统的行为特性,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。首先,工程师按照“自顶向下”的设计方法进行系统划分。其次,输入Verilog HDL代码,这是高层次设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。第三步是,将以上的设计输入编译成标准的Verilog HDL文件。第四步是进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。第五步是,利用综合器对Verilog HDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库支持下才能完成。第六步是,利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一仿真步骤。第七步是利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化、布局布线。第八步是在适配完成后,产生多项设计结果:1) 适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;2) 适配后的仿真模型;3) 器件编程文件。根据适配后的仿真模型,可以进行适配后的时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确地预期未来芯片的实际性能。如果仿真结果达不到设计要求,就需要修改Verilog HDL源代码或选择不同速度和品质的器件,直至满足设计要求;最后一步是将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片FPGA或CPLD中。如果是大批量产品开发,则通过更换相应的厂家综合库,轻易地转由ASIC形式实现。
2.3 Verilog HDL的设计流程
现代集成电路制造工艺技术的改进,使得在一个芯片上集成数十乃至数百万个器件成为可能,但我们很难设想仅由一个设计师独立设计如此大规模的电路而不出现错误。利用层次化、结构化的设计方法,一个完整的硬件设计任务首先由总设计师划分为若干个可操作的模块,编制出相应的模型(行为的或结构的),通过仿真加以验证后,再把这些模块分配给下一层的设计师,这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者负责自己所承担的部分;而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证。图3.3为自顶向下(TOP-DOWN)的示意图,以设计树的形式绘出。
自顶向下的设计(即TOP_DOWN设计)是从系统级开始,把系统划分为基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库中的元件来实现为止。
对于设计开发整机电子产品的单位和个人来说,新产品的开发总是从系统设计入手,先进行方案的总体论证、功能描述、任务和指标的分配。随着系统变得复杂和庞大,特别需要在样机问世之前,对产品的全貌有一定的预见性。目前,EDA技术的发展使得设计师有可能实现真正的自顶向下的设计。
2.4 EDA工具
EDA开发工具是指以计算机硬件和系统软件为工作平台,汇集了计算机图
模块A1
模块A2
模块A3
模块A4
模块A5
模块A6
模块A7
模块B
模块C
模块A
系统级设计
图2.4 TOP_DOWN设计思想
学、拓扑逻辑学、计算数学以及人工智能等多种计算机应用学科的最新成果而开发出来的用于电子系统自动化设计的应用软件。现代数字系统设计技术的发展主要体现在EDA领域,而EDA技术的关键之一就是EDA开发工具。如果没有EDA工具的支持,想要完成大规模、超大规模集成电路或复杂数字系统的设计是不可想象的。
QuartusⅡ是Altera公司推出的最新一代的可编程逻辑器件开发系统。与原先的MAX+PLUSⅡ相比,它具有更强大的功能,能够适应更大规模、更复杂的可编程逻辑器件的开发。
a) 支持多平台工作。QuartusⅡ既可以工作于“PC+Microsoft Windows操作系统”或“PC+Red Hat Linux操作系统”上,又可以在多种工作站上运行。
b) 提供与器件结构无关的设计环境。QuartusⅡ开发系统的核心—编译器(compiler)不仅支持Altera公司原来的MAX和FLEX等系列的可编程逻辑器件,而且还支持APEX、Excalibur、Mercury、Stratix、Cyclone等新的器件系列,提供了一个真正与器件结构无关的可编程逻辑开发环境。设计者无须精通器件内部复杂的结构,只要采用常见的设计输入方法(如原理图输入、HDL输入等)完成对设计的描述,QuartusⅡ就能自动地进行逻辑综合和适配,将用户输入的设计文件编译成可编程逻辑器件最终需要的编程文件格式。
c) 完全集成化。QuartusⅡ的设计输入、编译处理、仿真和定时分析以及编程下载等工具都集成在统一的开发环境下,提高了设计的效率,缩短了开发周期。
d) 具有开放的界面。通过EDIF网表文件、参数画模块库(LPM)、VHDL、Verilog HDL等形式,QuartusⅡ可以与Cadence、MentorGraphic、OrCAD、Synopsys、Synplicity及Viewlogic等许多公司提供的多种EDA工具接口。QuartusⅡ的Nativelink特性使其与其他符合工业标准的EDA工具之间的联系更加紧密,用户可以直接在QuartusⅡ开发环境中调用其他的EDA工具来完成设计输入、综合、仿真和定时分析等工作。
e) 支持硬件描述语言。QuartusⅡ支持三种HDL输入、包括被列入IEEE标准的VHDL(1987版和1993版)和Verilog HDL(1995版和2001版)以及Altera公司自己开发的AHDL。
f) 具有丰富的设计库。QuartusⅡ提供丰富的库单元供设计者调用,其中包括一些基本的逻辑单元(如逻辑门、触发器等)、74系列的器件和多种参数化的逻辑宏功能(megafunction)模块(如乘法器、FIFO、RAM等)。调用库单元进行设计,可以大大减轻设计人员的工作量,缩短设计周期。
g) 提供强大的在线帮助。QuartusⅡ软件不仅带有详细的使用说明,而且还加强了网络功能,使用户从软件内部就可以直接通过Internet获得Altera公司的技术支持。
2.5 基于FPGA的设计原理
2.5.1 FPGA设计的特点
现场可编程门阵列(Field Programmable Gate Array)简称FPGA,是大规模可编程器件,它具有速度高、规模大、可编程以及有强大的EDA软件设计平台的支持等特性,而信号发生器的实现依赖于高速、高性能的数字器件,所以选用FPGA实现信号发生器是十分适合的。
尽管FPGA、CPLD和其它类型PLD的结构各有其特点和长处,但概括起来,它们是由三大部分组成的:
a) 一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心。
b) 输入/输出块。
c) 连接逻辑块的互连资源。连线资源:由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的连接。
对用户而言,CPLD与FPGA的内部结构稍有不同,但用法一样,0所以多数情况下,不加以区分。
FPGA/CPLD芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,还具有以下几个优点:
a) 随着VLSI(Very Large Scale IC,超大规模集成电路)工艺的不断提高单一芯片内部可以容纳上百万个晶体管, FPGA/CPLD芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。
b) FPGA/CPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以, FPGA/CPLD的资金投入小,节省了许多潜在的花费。
c) 用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。所以,用FPGA/PLD 试制样片,能以最快的速度占领市场。 FPGA/CPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。 当电路有少量改动时,更能显示出FPGA/CPLD的优势。电路设计人员使用FPGA/CPLD进行电路设计时,不需要具备专门的IC(集成电路)深层次的知识, FPGA/CPLD软件易学易用,可以使设计人员更能集中精力进行电路设计,快速将产品推向市场。
本设计中用的是StratixⅡ系列器件,现在将对其做简单的介绍。
StratixⅡ系列是Altera应用非常广泛的产品。这些器件具有比较高的集成度及丰富的寄存器资源,采用了快速、可预测延时的连续式布线结构,是一种将CPLD和FPGA的优点结合于一体的器件,具有较高的性价比。
StratixⅡ系列器件的集成度从几万门到几十万门,具有业界首创的自适应FPGA体系。StratixⅡ系列器件具有以下一些特点:
a) 高密度。10000到250000典型门。
b) 功能强大的I/O引脚。每个引脚都是独立的三态门结构,具有可编程的速率控制。
c) 嵌入式阵列块(EAB)。每个EAB提供2K比特位,可用来作存储器使用或者用来实现一般的逻辑功能。
d) 逻辑单元采用查找表(LUT)结构。
e) 具有快速通道(Fast Track)连线,速度快并可预测延时。
f) 具有实现快速加法器和计数器的专用进位链和实现高速、多输入逻辑函数的专用级连链。
为了满足本系统的需要,本设计选用Altera公司不久前发布的崭新体系的大容量StratixⅡ系列FPGA。本设计用了StratixⅡ器件系列的第一个型号是EP2S60器件。StratixⅡFPGA是具有业界首创的自适应FPGA体系,在单个器件中具有双倍多的逻辑容量,比第一代Stratix器件速度快50%。StratixⅡFPGA采用新的逻辑结构,它由“自适应逻辑模块”(ALM)组成,允许相邻功能之间共享逻辑。每个ALM还有两个可编程寄存器、两个加法器、一个进位链、一个加法树链和一个寄存器链,这些都能更高效地利用器件的容量。StratixⅡ期间的逻辑是Stratix FPGA的两倍多,将近180000个等效逻辑单元(LE)。
2.5.2 FPGA设计的原理
a) 系统设计
1) 规格设计。规格设计是系统级设计的第一步,即设计者通过分析用户的要求,明确系统的功能和应达到的性能指标,并以系统说明书的形式作为用户与设计者之间的协议和进一步设计的依据。在系统说明书中,可以用多种形式对系统的功能和指标进行说明,如文字、图形、符号、表达式以及类似于程序的形式语言等,应力求简单易懂、无二义性,并反复检查,尽早发现并纠正潜在的错误。
2) 确定系统的实现方案并进行系统功能划分和算法设计。这部分工作的结果通常是系统结构框图、算法状态图(ASM图)和必要的文字说明。
以上这些富有创造性的工作和传统设计方法中的基本相同,主要依赖于设计师的经验和创造力,仍然需要由设计者自己完成,只不过在基于FPGA的现代数字系统设计方法中,这些工作不再受市场上标准逻辑器件的局限。
3) 高层次描述。一般是采用VHDL、Verilog HDL等高级硬件描述语言在算法级对系统进行行为描述,有时也可以采用比较直观的图形输入方式(方框图、状态图等)。
4) 算法级功能仿真。主要是检验系统算法设计的正确性。
b) FPGA芯片设计
1) RTL级HDL描述。目前高层次的综合工具还不是很完善,有些行为描述语句还不能被综合,所以要想利用综合工具自动地将设计的HDL描述转化成具体的硬件电路必须针对具体的综合工具,将一些高层次的描述转化成可综合的RTL级描述。
2) RTL级功能仿真。检查RTL级HDL所描述的系统功能是否正确,一般这一步可以省略。
3) 逻辑综合。利用综合工具将RTL级HDL源代码转化成门级网表,这是将抽象的描述转化为具体硬件电路的关键步骤。
4) 门级功能仿真。从系统逻辑功能方面检查系统设计的正确性。
5) 适配。利用适配器将综合后的门级网表针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑划分、布局布线和延时信息的提取等。适配完成后将产生多项结果,包括时延信息的仿真模型、器件编程文件。
6) 时序仿真和定时分析。因为适配后的仿真模型中含有器件的实际硬件特性,如时延特性,所以时序仿真和定时分析的结果能比较精确地预期未来芯片的实性能。
7) FPGA编程。将适配器产生的器件编程文件通过编程器件或通过电缆载入到目标芯片中,这样空白的可编程逻辑器件就成了具有特定功能的FPGA芯片。
3 信号发生器的硬件电路设计
3.1 实现三种波形(正弦波、方波和锯齿波)的算法
3.1.1 实现正弦波的算法
理想的正弦波信号可表示成
(3.1)
说明在振幅和初相确定后,频率由相位唯一确定
(3.2)
信号发生器利用式(3.2)中与时间成线性关系的原理进行频率合成的,在时间间隔内,正弦信号的相位增量与正弦信号的频率构成一一对应关系
(3.3)
为了说明信号发生器的相位量化的工作原理,可将正弦波一个完整周期内相位的变化用相位圆表示,其相位与幅度一一对应,即相位圆上的每一点均对应输出一个特定的幅度值。
一个位的相位累加器对应相位圆上个相位点,其最低相位分辨率为。对应的也有个幅度值,该幅度值存储于波形存储器中,在频率控制字的作用下,相位累加器给出不同的相位码(用其高位地址码)对波形存储器寻址,完成相位-幅度的变换,经数模转换器变成阶梯正弦波信号,再通过低通滤波器平滑,便得到模拟正弦波输出。在图4.1所示方框图中的时钟电路是由一个高稳定的晶体振荡器产生的,提供信号发生器中各部件同步工作。频率控制字送到位相位累加器中的加法器数据输入端,相位累加器在时钟频率的作用下,不断对频率控制数据进行线性相位累加,当相位累加器累积到满量时就会产生一次溢出,累加器的溢出频率就是信号发生器输出信号的频率。由此可看出,相位累加器实际上是一个模数2为基准、受频率数据控制字而改变的计数器,它累积了每一个参考周期内合成信号的相位变化,这些相位值的高位对ROM寻址。在ROM中写入了个正弦数据,每个数据为位。不同的频率控制字 导致相位累加器的不同相位增量,这样从ROM输出的正弦波形的频率不同,ROM输出的位二进制数送到DAC进行D/A变换,得到量化的阶梯形正弦波输出,最后经低通滤波器滤除高频分量,平滑后得到模拟的正弦波信号。波形存储器主要完成信号的相位序列到幅度序列之间的转化。从理论上讲,波形存储器可以存储具有周期性的任意波形,在实际应用中,以正弦波最具有代表性,也应用最广。信号发生器的输出信号的频率与时钟频率以及频率控制字之间的关系,为信号发生器输出信号的频率,为频率控制字,为时钟频率,为相位累加器的位数。可见,设定相位累加其的位数、频率控制字和基准时钟的值,就可以产生任意频率的输出信号。
考虑到正弦函数的对称性:在范围内,正弦函数已为奇对称,在内,已为轴对称。因此,可以在正弦函数表中只存储角度在
的函数值,并且这些值都是正值。这样,通过一个正弦表的前1/4周期就可以经过适当变换得到正弦的整个周期码表,节省了将近3/4的资源,非常可观。
3.1.2 实现方波的算法
方波是这三种波形中最容易实现的波形。它无需像实现正弦波那样需要制表,可以用直接赋值的方法实现,而且修改的方法也很简单,只要判断相位累加器中数据的大小:当数据小于1000 0000 0000 0000(二进制数)时,使输出为正值;当数据大于1000 0000 0000 0000(二进制数)时,使输出为零。当需要调节方波的幅度时,只要改动输出的正数值即可。
3.1.3 锯齿波的实现算法
在实现锯齿波时,也可以采用查表的方法,这样就需要制表,因此需要占用FPGA的存储器资源。在这里,本设计用另一种方法实现锯齿波:将相位累加器的低几位(根据需要)直接送DAC输入,就可产生锯齿波。
3.2 系统设计与实现
3.2.1 参数选取
由已知条件=16,=8,= 66.54MHz,存储器容量2K可知:
a) 存储器可分为64×8 bit使用。
b) 频率步进,此时。
c) 最大频率=33.27MHz,然而,此时每周期只采样2点,难以保证输出精度。为了保持输出精度,规定最低每周期采样4点,此时==4096,=16.635MHz。但本设计只要求输出频率范围为1KHz~1MHz。
d) 相位步进。
综上所述,正弦波形存储器存储64个7位采样点:频率控制,频率步进(最小输出频率)1KHz,最大输出频率1MHz。
3.2.2 系统设计
a) 波形存储
方波和锯齿波由于直接实现,因此不需要存储其波形值。在本设计中,只存储正弦波的64个采样点即可。
b) 按键消抖实现
在按键过程中,由于机械颤抖和系统处理速度极快,如果没有消抖过程,系统会把一次按键当成多次来处理,造成和预料的结果不一致。在本设计中,用软件来实现按键消抖。其原理是:机械颤抖过程一般为10ms到50ms,用软件来延迟该时间,然后再判断输入。如果此时仍为高或低,则输入该值。
c) 扫频的实现方法
在本设计中,要求信号发生器具有可扫频输出的功能。所谓扫频,是指信号能连续从小到大输出(在该系统能输出的频率范围内)。实现的方法很简单,只要在每次相位累加器产生溢出时,让频率控制字寄存器加1即可。
d) 动态显示
为了能直观的看到信号发生器输出信号的频率,本设计用数码管来显示其频率。只要知道频率控制字寄存器的值,然后将二进制转换成BCD码,再转换成可用来显示的七段码,送数码管显示即可。为了减少输出端口,可以用动态扫描的方法。
e) 系统设计
由波形选择方式,设计图3.1所示系统模型。
3.2.3 系统实现
累加器
频率控制字
波形输出
参考时钟
波形选择器
波形控制字
ROM
图3.1 信号发生器系统模型
a) 本次实现系统的环境如下:
1) 硬件:Acer TraveIMate (Celeron IV 1.7GHz+256MDDR2100+20GHD)。
2) 系统:WindowsXP (SP1+KB823980)英文版+中文语言包。
3) 软件:Altera公司的QUARTUSⅡ 6.0。
b) 各端口说明
1) 频率控制字端(FCW):14位,最大16384输出;
2) 频率控制字选通端(WS):1位,高电平时,将频率控制字写入频率控制字寄存器。
3) 扫频输出控制端(SC):1位,高电平时,使信号扫频输出;
4) 波形控制端(FB_B、ZXB_B和JCB_B):都是1位,ZXB_B为高时输出正弦波;FB_B为高时输出方波;JCB_B为高时输出锯齿波;
5) 复位端(reset):1位,高电平是系统复位;
6) 时钟输入端(sysclk):1位,为参考频率的输入端;
展开阅读全文