《基于FPGA的直接数字频率合成器的设计本科毕业设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的直接数字频率合成器的设计本科毕业设计.docx(54页珍藏版)》请在三一办公上搜索。
1、毕业设计论文基于FPGA的直接数字频率合成器的设计摘要 在频率合成领域,经常使用的频率合成技术有直接模拟合成、模拟锁相环、小数分频锁相环等,直接数字频率合成(Direct Digital Frequency Synthesis ,DDFS,简称DDS)是最近几年来的新的频率合成技术。本文介绍了直接数字频率合成器的大体组成及设计原理,给出了基于FPGA的具体设计方案及编程实现方式。仿真结果说明,该设计简单合理,利用灵活方便,通用性好,可写入各类FPGA芯片,最高可将频率提高100万倍。具有良好的性价比。关键词 直接数字频率合成器(DDS) FPGA Design of direct digita
2、l frequency synthesizer based on FPGAAbstract In Frequency domain, the common Synthesis technology has Direct simulation, phase lock loop simulation, decimal Frequency and phase lock loop, Direct Digital Frequency Synthesis (as some DDFS, Digital, referred to as spurious bio-synthesis) in recent yea
3、rs is the new Frequency Synthesis technology. The structure and principles of Direct Digital Frequency Synthesizer is introduced. Also a detailed design and the method of program realization based on FPGA are introduced. The result of simulation shows that the design is simple and feasible, convenie
4、nt and flexible, high universality, writeable various FPGA chip, the highest frequency can be 100 million times. Ratiofor quality to price.Keywords Direct Digital frequency Synthesizer(DDS) FPGA前言在频率合成领域,经常使用的频率合成技术有直接模拟合成、模拟锁相环、小数分频锁相环等,直接数字频率合成(DDS)是最近几年来的新的频率合成技术。DDS以稳固度高的参考时钟为参考源,通过周密的相位累加器和数字信号
5、处置,再通太高速D/A变换器产生所需的数字波形,那个数字滤波通过一个模拟滤波器后,取得最终的模拟信号波形。DDS是产生高精度、快速频率变换、输出波形失真小的优先选用技术。随着可编程逻辑器件的飞速进展,利用FPGA(FieldProgrammable Gate Array)设计DDS系统成为一种专门好的选择,由于FPGA现场可编程,设计复杂或简单系统完全从实际需要动身,通过重写RAM/ROM数据,能够做到任意波形输出和动态波形输出,这是其他方式所无法比拟的。本章提出了一种基于FPGA的直接数字频率合成设计方式,并利用比例乘法器,将频率分辨率提高到惊人的程度。目录1 DDS原理1 直接模拟(DAS
6、)1 间接式频率合成(PLL)1 直接数字频率合成(DDS)22 系统设计6微操纵器接口模块8 相位累加寄放器8双端口RAM83模块设计与实现15 微操纵器接口模块15分频寄放器(FWORD1-FWORD4)16操纵寄放器(DDSCR)16数据输入寄放器(DATA)17 比例乘法器模块31 相位累加器模块37 双端口RAM模块39致 谢48参考文献491 DDS原理 顾名思义频率合成技术,确实是能从一个高稳固和准确度的标准频率中产生千百万个同一高稳固度和准确度的频率。频率合成技术普遍地应用于通信、导航、雷达、仪器仪表、军事装备等领域、现代的电子系统对频率合成器提出愈来愈高的要求,要紧表此刻:转
7、换速度快、频段宽、步进距离小、杂散小、体积小、重量轻、功耗低等。随着大规模集成电路的进展,频率合成技术日趋完善,目前,要紧有以下几种方式。 直接模拟(DAS)直接模拟合成技术是通过对标准参考频率进行加、减、乘、除运算而合成一系列相干频率,其换频率速度要紧由电路部件响应速度决定,相位噪声指标也还不错。要紧技术问题是杂波干扰,由于直接模拟合成引入了大量的混频器、倍频器、分频器,这些非线性的部件使得杂波抑制相当困难、在实际应用中,这种技术的电路结构比较复杂,体积、重量、本钱等方面缺点大大限制其应用、 间接式频率合成(PLL)间接式频率合成技术重要有鉴频器、环路滤波器、压控振荡器、分频器等4个大体部件
8、组成,如以下图1-1所示。锁相环是一个相位误差反馈操纵系统,它比较输入信号和压控振荡器经分频后输出信号之间的相位差,从而产生误差操纵电压来调整压操纵振荡器的输出频率,以达到与输入信号倍频的关系。锁相环的频率转换速度与环路滤波器的带宽有关,环路带宽越宽,转换速度越快,而环路带宽又取决于鉴相器频率。才用这种技术产生的频谱较纯,系统体积小、重量轻、本钱低、易集成,具有普遍的应用前景。可是,它也有一个致命的缺点,确实是在高分辨率情形下,换频速度较慢。分频器鉴相器压控振荡器低通滤波器合成频率参考频率图 1-1 锁相环电路大体结构为了解决高分辨率于高鉴相频率之间的矛盾,能够采纳多环技术或小数分频技术。若是
9、要求分辨率很高,那么采纳多环PLL就显得电路结构复杂、本钱高、调试困难;而采纳小数分频技术,能够轻易解决高分辨率问题,可是小数分频的要紧问题是“尾数难抑”,国内外对这方面的研究很多,可是尚未完全解决。 直接数字频率合成(DDS) DDS的概念最初是有美国学者, 和 提出的,它是以全数字技术,从相位概念动身直接合成所需波形的一种新的频率合成技术,典型的DDS系统由相位累加器,波形查找表(ROM/RAM),D/A,低通滤波器(Low Pass Filter简称LPF)组成,如图 1-2所示。低通滤波器m相位累加器波形查找表D/A图 1-2 DDS原理框图图中,m为相位累加器步长,也有资料称为频率操
10、纵字,是参考频率,是合成频率。其系统的核心是相位累加器,它由一个累加器和一个n位相位寄放器组成(也可用带有输出锁存的累加器代替),如图1-3所示。每来一个时钟脉冲,相位累加器以步长m累加,其结果作为波形查找表地址。当相位累加器加满量程,就会产生一次溢出,完成一个周期性的动作,那个周期是合成信号的一个周期,换句话说,累加器的溢出频率也确实是DDS的合成信号频率。相位累加器的输出数据作为波形查找表地址,进行波形的相位幅值的转换,即可在给定的时刻上确信输出波形的抽样幅值,如图1-4所示。n位的寻址RAM/ROM相当于把正弦信号离散成具有个样值的序列,以二进制数值形式存储在个地址单元,依照地址不同输出
11、相应的信号幅值。D/A转换器的作用是把合成的数字波形转换成模拟波形。离散量化幅度序列S(n)经D/A转换后变成了阶梯波S(t),值得注意的是,频率合成系统对D/A转换器的分辨率有必然要求,D/A转换器的分辨率越高,合成的阶梯波S(t)台阶数越多,输出的波形的精度也就越高,减少了量化失真。寄存器累加器步长m参考时钟相位码序列图 1-3 相位累加器波形存储器(ROM/RAM)幅度量化序列数据相位吗序列地址图 1-4 相位幅度变换原理图 低通滤波器的作用不容轻忽。对D/A输出的阶梯波S(t)进行频谱分析,可知S(t)中除主频外,还存在散布在,2两边处的非谐波分量。因此,为了掏出主频,必需在D/A转换
12、器的输出端接入截止频率为的低通滤波器。DDS具有以下特点:(1) 频率分辨率高。DDS的频率分辨率在固按时,取决于相位累加器的位数n,只要n足够大,理论上就能够够取得相应的分辨率精度,这是传统方式难以实现的。(2) 频率变换速度快。在DDS中,一个频率的成立时刻通常取决于滤波器的带宽。阻碍因素为相位累加器,ROM/RAM的工艺结构,D/A转换器及它信号处置进程中可能产生的时延。其中,信号处置的时延与时钟周期相关。由于DDS中不要相位反馈操纵,频率成立及切换快,与频率分辨率,频谱纯度彼此独立,明显优于PLL。(3) DDS中相位改变是线性进程。数字相位累加器是优良的线性数字增值发生器。因此,DD
13、S的相位误差要紧依托于时钟的相位特性,相位误差小。另外,DDS的相位是持续转变的,形成的信号具有良好的频谱特性,这是传统的直接频率合成法所无法实现的。(4)输出频率范围宽。 理论上,DDS输出的频率范围在,事实上,考虑到低通滤波器的设计,为,而FPGA的时钟频率可达到100MHz,因此,利用FPGA,能够实现输出频率范围很宽的信号。依照前面的讲述,能够取得一下公式: 其中,是输出波形的周期,n是相位累加器位数,m是相位累加器步长,是输入波形周期。是参考频率,是输出波形频率,是最小分辨率,是最高合成频率。依照奈奎斯特(Nyquist)定理,即采样频率必需不小于被采样信号的最高频率,不然原信号不能
14、被恢复,因此当时,取得最高合成频率,固然,这仅是理论值,事实上与D/A精度、转换速度,滤波网络性能紧密相关,一样取,例如,晶振时钟为100MHz时,可知输出合成波频率将出此刻较宽频段上。2 系统设计 本章所需要设计的直接数字频率合成系统与前面介绍的DDS原理完全一致。从实现方式上看,有如下特色:(1) 引入8级级联的BCD比例乘法器,将频率分辨率提高100万倍!(2) 利用FPGA内部嵌入式存储单元,在FPGA内部集成了2Kbit容量双端口RAM,降低了硬件难度,提高了系统靠得住性。之前面的介绍中能够明白,增加相位累加器的位数n,能够提高频率分辨率,最低输出频率可达Hz、mHz乃至是Hz,即D
15、DS的最低合成频率接近零频。有人计算过,若是为50MHz,那么当n为48位时,其分辨率可达179nHz。可是,增加相位累加器的位数n将使加法算法过于庞大,消耗惊人的FPGA资源。何不从入手,对实现任意可分频,利用降低来换取高分辨率呢?事实证明,利用比例乘法器是可行的,通过8级BCD比例乘法器的分频,分频比达到,例如,晶振频率为100MHz,通过度频能够是Hz任意整数频率,整个分频模块仅消耗65个宏单元。现代FPGA内部集成了存储单元,这些是宝贵的存储资源,通常只有通过利用开发商提供的知识产权核(IP CORE)才能利用,这些知识产权核通过严格的测试和优化,能够在特定器件上发挥最大效能,利用这些
16、模块,确实是将优秀EDA开发人员的硬件功效嵌入到自己设计中,缩短了开发时刻,提高了效率。本章设计的参数选取如下。由相位累加器位数n=8,存储容量2568=2048 bit,晶振频率为100MHz,可知:(1) 频率分辨率 Hz(2) 最高合成频率MHZ前面讲过,这仅是理论值,实际中与具体电路(D/A,滤波器)有关。(3) 相位步进 本设计依照模块化层次化设计方式,依照结构功能,能够划分出3个功能模块,即微操纵器接口模块、相位累加器模块、双端口RAM模块,其连接关系如图2-1所示。图 2-12.1 微操纵器接口模块微操纵器接口模块向微操纵器提供友好,方便的操作接口,MCU可通过片选(CS)、地址
17、选通(AS)、数据选通(DS)、数据总线和地址总线来操作其内部寄放器。微操纵器接口模块内部实现了6个寄放器,其中,4个位分频寄放器,1个位操纵寄放器,1个位数据输入寄放器。另外,8级比例乘法器组成的分频模块以端口映射的方式例化在操纵器接口模块中,对外输出参考时钟频率fclk。 相位累加寄放器相位累加寄放器是系统的核心模块,利用通过度频器分频后的时钟,范围相当宽广。相位累加器输出相位码序列,作为查寻地址送入双端口RAM,相应地,还有读使能和读时钟信号。相位累加步长m可取,n=0,1,2, ,7那个地址,为了减小失真,一样m取值不超过322.3 双端口RAM 利用ALtera提供的Mega Wiz
18、ard Plug-In Manager定制了数据线和地址线宽度均为8位,存储容量为2048bit的双端口RAM,独立的两套读/写接口,有爱好的读者不妨利用Mega Wizard Plug-In Manager定制其他的存储器,看看哪一种存储器利用起来最方便。接口信号说明如下:RESET,系统复位,低电平有效;CS,片选信号,低电平有效;AS,地址选通信号,低电平有效;DS,数据选通信号,低电平有效;DATABUS,数据总线;宽度为8位;ADDRBUS,地址总线,宽度为3位。顶层实体的VHDL程序如下:- LIBRARY IEEE;USE dds ISPORT(- 与微操纵器接口信号- 全局复位
19、reset: INSTD_LOGIC;- 全局时钟clk: INSTD_LOGIC;- 地址总线addrbus: INSTD_LOGIC_VECTOR(2 DOWNTO 0);- 数据总线databus: INSTD_lOGIC_VECTOR(7 DOWNTO 0);- 片选cs: INSTD_LOGIC;- 地址选通as: INSTD_LOGIC;- 数据选通ds: INSTD_LOGIC;- 数据输出,送至D/A转换器q: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END dds;ARCHITECTURE rtl of dds IS- 元件说明- 接口模块COMPON
20、ENT interfaceport(- 与微操纵器接口信号- 全局复位reset: INSTD_LOGIC;- 全局时钟clk: INSTD_LOGIC;- 地址总线addrbus: INSTD_LOGIC_VECTOR(2 DOWNTO 0);- 数据总线databus: INSTD_lOGIC_VECTOR(7 DOWNTO 0);- 片选cs: INSTD_LOGIC;- 地址选通as: INSTD_LOGIC;- 数据选通ds: INSTD_LOGIC;- 与内部模块接口信号- DDS扫频使能ddsen: OUTSTD_LOGIC;- 经比例乘法器分频后的时钟fclk: OUT STD
21、_LOGIC;- 步长m: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 数据输出,送至双端口RAMdataout: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 地址输出,送至双端口RAMaddrout: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 双端口RAM写使能wren: OUTSTD_LOGIC;- 双端口RAM写时钟wrclock: OUTSTD_LOGIC);END COMPONENT;- 双端口RAMCOMPONENT ramdpPORT(wren: IN STD_LOGIC;wrclock: INSTD_LO
22、GIC;rden: IN STD_LOGIC;rdclock: INSTD_LOGIC;data: INSTD_LOGIC_VECTOR(7 DOWNTO 0);wraddress:INSTD_LOGIC_VECTOR(7 DOWNTO 0);rdaddress:INSTD_LOGIC_VECTOR(7 DOWNTO 0);q: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;- 相位累加器COMPONENT phasesumPORT(- 全局复位reset: INSTD_LOGIC;- 分频时钟fclk: INSTD_LOGIC;- 扫频使能dds
23、en: INSTD_LOGIC;- 相位累加步长m: INSTD_LOGIC_VECTOR(7 DOWNTO 0);- 读RAM时钟rdclock: OUTSTD_LOGIC;- 读RAM使能rden: OUTSTD_LOGIC;- 读RAM地址rdaddress:OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;- 信号说明SIGNAL ddsen: STD_LOGIC;SIGNAL fclk: STD_LOGIC;SIGNAL wren: STD_LOGIC;SIGNAL wrclock: STD_LOGIC;SIGNAL rdclock: STD
24、_LOGIC;SIGNAL rden: STD_LOGIC;SIGNAL dataout: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL addrout: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL m: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL rdaddress: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN- 元件例化 -INTER_CONTROL: interfacePORT MAP(- 与微操纵器接口信号- 全局复位reset= reset,- 全局时钟clk= clk,- 地
25、址总线addrbus= addrbus,- 数据总线databus= databus,- 片选cs= cs,- 地址选通as= as,- 数据选通ds= ds,- 与内部模块接口信号- DDS扫频使能ddsen= ddsen,- 经比例乘法器分频后的时钟fclk= fclk,- 步长m= m,- 数据输出,送至双端口RAMdataout= dataout,- 地址输出,送至双端口RAMaddrout= addrout,- 双端口RAM写使能wren= wren,- 双端口RAM写时钟wrclock= wrclock);- 双端口RAMDP_RAM: ramdpPORT MAP(wren= wr
26、en, wrclock= wrclock,rden= rden,rdclock= rdclock,data= dataout,wraddress=addrout,rdaddress=rdaddress,q= q);- 相位累加器PHASE_ADDER: phasesumPORT MAP(- 全局复位reset= reset,- 分频时钟fclk= fclk,- 扫频使能ddsen= ddsen,- 相位累加步长m= m,- 读RAM时钟rdclock= rdclock,- 读RAM使能rden= rden,- 读RAM地址rdaddress=rdaddress);END rtl; 图 2-2是
27、顶层实体仿真波形,由图中能够看到,第一,向地址为000的寄放器写数据00010000,表示将晶振频率10分频,然后向地址为100的寄放器写数据,表示相位累加器使能,随后,输出波形。读者可能临时还不能明白得整个系统的工作原理,那个地址只需了解系统的轮廓即可,后面会详细介绍各模块的设计与实现。3 模块设计与实现如前面所述,顶层实体由3个模块组成:微操纵器接口模块、相位累加器模块及双端口RAM模块。由8个比例乘法器级联组成的分频器模块以端口概念的形式例化在微操纵器模块中,属于后者的子模块,可是由于比例乘法器的本设计中所发挥的作用专门大,加上相关资料少之又少,为了加深读者的领会,决定单独作为一节。 微
28、操纵器接口模块微操纵器接口向8位、16位、32位微处置器级微操纵器提供友好的操作接口,如图3-1所示。其输入引脚前面已经介绍过,那个地址再也不重复。此刻,介绍一下输出引脚。图 3-1ddsen:相位累加器使能,有效时为高电平;fclk:分频时钟,作为相位累加器的输入时钟;m:相位累加步长,m=,n=0,1,2, ,7;dataout:数据输出,作为RAM输入数据;addrout:地址输出,作为RAM输入地址;wern:RAM写使能信号;wrclock:RAM写时钟信号。前面已经提到,DDS内部实现了6个寄放器,其中,4个位分频寄放器,1个位操纵寄放器,1个位数据输入寄放器,这些寄放器的地址在表
29、3-1中。表 3-1 寄放器地址名称访问属性地址FWORD1Write000FWORD2Write001FWORD3Write010FWORD4Write011DDSCRWrite100DATAWrite1013.1.1 分频寄放器(FWORD1-FWORD4)以FWORD1为例,如表3-2所示。分频寄放器用于存储分频系数,分频模块由8个BCD比例乘法器组成。每一个比例乘法器需要4位二进制码来确信分频系数,48=32 bit,也确实是4 byte。FWORD1对应第一级和第二级比例乘法器,FWORD2对应第三级和第四级比例乘法器,以此类推,FWORD4对应第七级和第八级比例乘法器。表3-2 分
30、频寄放器FWORD1BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT03.1.2 操纵寄放器(DDSCR)如表3-3所示,操纵寄放器只有4位是成心义的,ddsen为相位累加器使能,当其为有效时(逻辑1),相位累加器工作,输出波形。m二、m一、m0是相位累加步长操纵字,由于系统设计中规定相位累加步长m=,n=0,1,2, ,7,因此利用3位表示他们足够了,对应的累加步长值如表3-4所示。表 3-3 操纵寄放器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0DDSEN0000M2M1M0表 3-4 m2m1m0与相位累加步长m对照表m2m1m0m00010012010
31、401181001610132110641111283.1.3 数据输入寄放器(DATA)如表3-5所示,微操纵器通过数据输入寄放器缓冲,将数据写入双端口RAM中。复位时,地址为0,每向DATA寄放器写一次数据,地址自动加1,直到地址写满,自动清零,预备下一次写入进程。这意味着能够重复多次写波形数据,从而实现任意波形输出和动态波形输出的功能。表 3-5 操纵寄放器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0DATA7DATA6DATA5DATA4DATA3DATA2DATA1DATA0本模块通过片选信号、地址选通信号、数据选通信号来锁定地址和数据,当片选信号CS和地址选通信
32、号AS有效时,依照地址总线内容使能对应寄放器。在检测到数据选通信号DS下降沿后,在系统时钟的上升沿将数据写入选中的寄放器中。微操纵器接口模块的状态机如图3-2所示:(1) IDLE。当系统上电或复位后,微操纵器接口处于此状态。此状态等待片选信号有效和AS信号的下降沿,当条件知足时,状态机切换到STROBE状态。(2) STROBE。当片选信号有效时,状态机在此状态等待,直到DS信号显现下降时沿,切换到DATA_LAUNCH状态;当片选信号无效时,状态机切换到IDLE状态。(3) DATA_LAUNCH。 此状态只持续1个时钟周期,在时钟上升沿写入数据,返回IDLE状态。图 3-2 微操纵器接口
33、状态机文件interface内部的各进程说明:第一个进程延迟信号,目的是检测信号跳变。第二个进程是状态寄放器,同步状态。第三个进程是主状态机。第四个进程是写RAM状态机。第五个进程依照地址译码,使能对应寄放器。第六个进程依照使能,写对应寄放器。描述微操纵器接口模块的VHDL程序如下:- LIBRARY IEEE;USE interface ISport(- 与微操纵器接口信号- 全局复位reset: INSTD_LOGIC;- 全局时钟clk: INSTD_LOGIC;- 地址总线addrbus: INSTD_LOGIC_VECTOR(2 DOWNTO 0);- 数据总线databus: IN
34、STD_lOGIC_VECTOR(7 DOWNTO 0);- 片选cs: INSTD_LOGIC;- 地址选通as: INSTD_LOGIC;- 数据选通ds: INSTD_LOGIC;- 与内部模块接口信号- DDS扫频使能ddsen: OUTSTD_LOGIC;- 经比例乘法器分频后的时钟fclk: OUT STD_LOGIC;- 步长m: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 数据输出,送至双端口RAMdataout: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 地址输出,送至双端口RAMaddrout: OUTSTD_LOGIC_V
35、ECTOR(7 DOWNTO 0);- 双端口RAM写使能wren: OUTSTD_LOGIC;- 双端口RAM写时钟wrclock: OUTSTD_LOGIC);END interface;ARCHITECTURE rtl of interface IS- 元件说明- 8个比例乘法器级联COMPONENT fre_divPORT(- 输入时钟FIN: IN STD_LOGIC;- 分频系数BCD1: INSTD_LOGIC_VECTOR(3 DOWNTO 0); BCD2: INSTD_LOGIC_VECTOR(3 DOWNTO 0);BCD3: INSTD_LOGIC_VECTOR(3 D
36、OWNTO 0); BCD4: INSTD_LOGIC_VECTOR(3 DOWNTO 0);BCD5: INSTD_LOGIC_VECTOR(3 DOWNTO 0); BCD6: INSTD_LOGIC_VECTOR(3 DOWNTO 0);BCD7: INSTD_LOGIC_VECTOR(3 DOWNTO 0); BCD8: INSTD_LOGIC_VECTOR(3 DOWNTO 0);- 分频时钟FOUT: OUTSTD_LOGIC);END COMPONENT;- 常数声明CONSTANT RESET_ACTIVE : STD_LOGIC := 0;CONSTANT FWORD1_AD
37、DR : STD_LOGIC_VECTOR(2 downto 0) := 000; CONSTANT FWORD2_ADDR : STD_LOGIC_VECTOR(2 downto 0) := 001; CONSTANT FWORD3_ADDR : STD_LOGIC_VECTOR(2 downto 0) := 010; CONSTANT FWORD4_ADDR : STD_LOGIC_VECTOR(2 downto 0) := 011;CONSTANT DDSCR_ADDR: STD_LOGIC_VECTOR(2 downto 0) := 100;CONSTANT DATA_ADDR: ST
38、D_LOGIC_VECTOR(2 downto 0) := 101;- 信号声明SIGNAL as_delay: STD_LOGIC; SIGNAL ds_delay: STD_LOGIC;SIGNAL bcd8: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd7: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd6: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd5: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd4: STD_LOGIC_VECTOR(3 downt
39、o 0);SIGNAL bcd3: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd2: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd1: STD_LOGIC_VECTOR(3 downto 0);- 状态机概念TYPE STATE_TYPE IS (IDLE,STROBE,DATA_LAUNCH); - 状态机信号SIGNAL prs_state, next_state : STATE_TYPE;- 状态机概念TYPE WR_STATE_TYPE IS (wr_idle,wr_high,wr_low); - 状态机信号SIGNA
40、L wr_state : WR_STATE_TYPE;SIGNAL DDSCR_reg: STD_LOGIC_VECTOR(7 downto 0);SIGNAL wrclock_reg: STD_LOGIC;SIGNAL wren_reg: STD_LOGIC;SIGNAL ramaddress: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ramdata: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL fout: STD_LOGIC;- FWORD1寄放器使能SIGNAL f1_en : STD_LOGIC;- FWORD2寄放器使能SI
41、GNAL f2_en: STD_LOGIC;- FWORD3寄放器使能SIGNAL f3_en: STD_LOGIC;- FWORD4寄放器使能SIGNAL f4_en: STD_LOGIC;- DDSCR 寄放器使能SIGNAL cr_en: STD_LOGIC;- DDSDATA寄放器使能SIGNAL data_en: STD_LOGIC;BEGIN- Delayed Signals Detection Process- 检测延迟信号 Delay_Signals_Proc:PROCESS(reset,clk)BEGINIF(reset = RESET_ACTIVE) THEN as_delay = 1;