论文部分内容阅读
摘要:DDS技术具有极高的频率分辨率、极快的变频速度,变频相位连续、相位噪声低,易于功能扩展和全数字化便于集成,容易实现对输出信号的多种调制等优点,满足了现代电子系统的许多要求。本文采用直接数字频率合成技术(DDS),将DDS集成芯片AD9850的控制字用可编程逻辑器件来控制,使DDS集成芯片输出的正弦波频率可变。由于采用先進的集成芯片,电路设计简单,系统可靠性高,且DDS集成芯片输出频率的精确度和稳定度也高。
关键词:DDS Quartus;Ⅱ编译器;CPLD/FPGA
正弦信号发生器的结构由4部分组成,即数据计数器或地址发生器、波形数据ROM、VHDL顶层设计和D/A输出。顶层文件sing~.VHD在FPGA中实现,包含两个部分,即ROM的地址信号发生器和正弦数据ROM。ROM必须进行初始化文件设计及定制。ROM地址信号发生器为5位计数器,它以时钟信号为输入脉冲,对其计数,输出的计数值作为ROM的地址;正弦数据ROM存放着正弦波一个完整周期64点的数值,它接受ROM地址信号发生器的地址信号后,将从数据线输出正弦波波形数据,经D/A转换后即可输出正弦波。输出波形数据的频率由发出的地址信号的速度决定,进而由输入时钟信号的频率决定。当以固定频率扫描输出地址时,模拟输出波形是固定频率;当以周期行时变方式扫描输出地址时,则模拟输出波形为扫频信号。
基于CPLD/FPGA设计的DDS实现过程一般步骤如下:
一、新建工程,新建源文,輸入VHDL源程序
如图1输入程序,然后保存文件,(点击保存文件按钮或选择File->Save命令),并将VHDL程序添加进工程,即将Add t0 Project选项选中。
二、工程编译
选择Processing菜单中的Start Compilation选项,启动全程编译,或者直接单击工具栏上的编译按钮。如果编译成功,将可以见到如图2所示的界面。此界面的左上角是工程管理窗,表示了工程mega_1pm的结构,Flow Summary栏显示了该模块所用的逻辑单元数。编辑处理流程窗口显示包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析在内的各种信息。界面最下方是编译处理信息窗口,显示各种编译警告、错误和提示信息。
三、引脚锁定和下载
1、引脚锁定。打开了singt工程,在Assignments菜单中,选择Pins选择,如图3所示,弹出的对话框如图4所示,在下方已经排列好各管脚的自行选择相应管脚即可,例如CLK,在Location中下拉选择PIN-D13,以此类推,锁定所有9个管脚(见图4),最后存盘,关闭对话框。引脚锁定后,必须再编译一次(选择Processing->StartCompilation命令),将引脚锁定信息编译到下载文件中。
2、选择编程模式和配置。连接好系统,上电,然后在Tools菜单中,选择Programmer选项,将弹出如图5所示的编程窗,在Mode下拉列表中有3中模式可以选择,即JTAG、Passive Serial和ActiveSerial。选JTAG,以及在底部的处理栏中出现Configuration Succeeded时,表示下载成功,此时可以在开发板上观察输出信号。
四、测试
在实验检测中,SignalTap 2将测得的样本信号暂存于目标器件中的嵌入式RAM(ESB、M4K)中,然后通过器件的JTAG端口将采集的信息传出,送入计算机进行显示和分析。
嵌入式逻辑分析仪SignalTap 2允许对设计中的所有层次模块的信号节点进行测试,可以使用多时钟驱动,而且还能通过设置以确定前后出发捕捉信号信息的比例。
1、打开SignalTap 2编辑窗口
选择菜单File中的New项,在New窗口中选择Other Files中的Si~alTap 2File,单击OK按钮,即出现SignalTap 2编辑窗口(图6)。
2、调入待测信号
单击上图的In~ance栏内的auto_signaltap_0,更改此名为singt,这是其中一组待测信号名。为了调入待测信号名,在下栏(cns栏)的空白处双击,即弹出Node Finder窗口,单击List按钮,即在左栏出现与此工程相关的所有信号,包括内部信号。选择需要观察的信号名:dout。单击OK按钮后即可将这些信号调入SignalTap 2信号观察窗口。
3、SignalTap 2参数设置
单击全屏按钮和窗口左下角的Setup页,即出现全屏编辑窗口(图7)。首先要输入逻辑分析仪的工作时钟信号Clock,单击Clock栏右侧“…”按钮,即出现Node Finder窗口,选择CLK信号,接着在Data框的Sample栏选择采样深度为1K位。最后是触发信号和触发方式选择。这可以根据具体需求来选定。在Trigger框的Triggerlevels栏选择1;打勾选中Triggerin框;并在Source栏选择出发信号,在此选择singt工程中的EN作为触发信号;在Pattern栏选择上升沿触发方式。即当测得EN的上升沿后,SignalTap 2在CLK的驱动下根据设置dout的信号进行连续或单次采样。
4、文件存盘
选择菜单File中的Save As项,输入此SignalTap 2文件名为singt.stpl。单击保存按钮后,将出现如下提示:“D0 you want t0 enableSignalTap 2…”,应该单击“是”按钮。表示统一再次编译时将此SignalTap 2文件与工程(singt)捆绑在一起综合/适配,以便一同被下载进FPGA芯片中去完成实时测试任务。
5、编译下载
首先选择Processing菜单中的Start Compilation项,启动全程编译。编译结束后,SignalTap 2的观察窗口通常会自动打开,但若没有打开,可选择菜单Tools中的SignalTap 2Analyzer,打开SignalTap 2,或按Open按钮打开。
打开实验开发系统的电源,连接JTAG口,设置通信模式为ByteBlaster 2或ByteBlasterMV。然后单击下方的Device栏的ScanChain按钮,对实验板进行扫描。如果在栏中出现板上FPGA的型号名,表示系统JTAG通信情况正常,可以进行下载。
最后是在File栏选中下载文件(singt.sof)。单击左侧的下载信号,观察左下角下载信息。下载成功后,设定实验板上的模式(模式5)和恰当的控制信号(en=1)。
6、启动SignalTap 2进行采样和分析
如图7所示,单击Instance名为singt,再单击Autorun Analysis按钮,启动SignalTap 2。单击左下角的Data页和“全屏控制”按钮,然后按键SWl5(en),由低到高,产生一个上升沿,作为SignalTap 2的采样触发信号,这时就能在SignalTap 2窗口通过JTAG口观察到来自实验板上FPGA内部的实时信号(图8)。
此结果完全符合实验预期,通过改变分频器中的CNT6初始数值便可改变此波形的周期。该表romd.mif中的数值可以改变正弦波的幅度。
关键词:DDS Quartus;Ⅱ编译器;CPLD/FPGA
正弦信号发生器的结构由4部分组成,即数据计数器或地址发生器、波形数据ROM、VHDL顶层设计和D/A输出。顶层文件sing~.VHD在FPGA中实现,包含两个部分,即ROM的地址信号发生器和正弦数据ROM。ROM必须进行初始化文件设计及定制。ROM地址信号发生器为5位计数器,它以时钟信号为输入脉冲,对其计数,输出的计数值作为ROM的地址;正弦数据ROM存放着正弦波一个完整周期64点的数值,它接受ROM地址信号发生器的地址信号后,将从数据线输出正弦波波形数据,经D/A转换后即可输出正弦波。输出波形数据的频率由发出的地址信号的速度决定,进而由输入时钟信号的频率决定。当以固定频率扫描输出地址时,模拟输出波形是固定频率;当以周期行时变方式扫描输出地址时,则模拟输出波形为扫频信号。
基于CPLD/FPGA设计的DDS实现过程一般步骤如下:
一、新建工程,新建源文,輸入VHDL源程序
如图1输入程序,然后保存文件,(点击保存文件按钮或选择File->Save命令),并将VHDL程序添加进工程,即将Add t0 Project选项选中。
二、工程编译
选择Processing菜单中的Start Compilation选项,启动全程编译,或者直接单击工具栏上的编译按钮。如果编译成功,将可以见到如图2所示的界面。此界面的左上角是工程管理窗,表示了工程mega_1pm的结构,Flow Summary栏显示了该模块所用的逻辑单元数。编辑处理流程窗口显示包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析在内的各种信息。界面最下方是编译处理信息窗口,显示各种编译警告、错误和提示信息。
三、引脚锁定和下载
1、引脚锁定。打开了singt工程,在Assignments菜单中,选择Pins选择,如图3所示,弹出的对话框如图4所示,在下方已经排列好各管脚的自行选择相应管脚即可,例如CLK,在Location中下拉选择PIN-D13,以此类推,锁定所有9个管脚(见图4),最后存盘,关闭对话框。引脚锁定后,必须再编译一次(选择Processing->StartCompilation命令),将引脚锁定信息编译到下载文件中。
2、选择编程模式和配置。连接好系统,上电,然后在Tools菜单中,选择Programmer选项,将弹出如图5所示的编程窗,在Mode下拉列表中有3中模式可以选择,即JTAG、Passive Serial和ActiveSerial。选JTAG,以及在底部的处理栏中出现Configuration Succeeded时,表示下载成功,此时可以在开发板上观察输出信号。
四、测试
在实验检测中,SignalTap 2将测得的样本信号暂存于目标器件中的嵌入式RAM(ESB、M4K)中,然后通过器件的JTAG端口将采集的信息传出,送入计算机进行显示和分析。
嵌入式逻辑分析仪SignalTap 2允许对设计中的所有层次模块的信号节点进行测试,可以使用多时钟驱动,而且还能通过设置以确定前后出发捕捉信号信息的比例。
1、打开SignalTap 2编辑窗口
选择菜单File中的New项,在New窗口中选择Other Files中的Si~alTap 2File,单击OK按钮,即出现SignalTap 2编辑窗口(图6)。
2、调入待测信号
单击上图的In~ance栏内的auto_signaltap_0,更改此名为singt,这是其中一组待测信号名。为了调入待测信号名,在下栏(cns栏)的空白处双击,即弹出Node Finder窗口,单击List按钮,即在左栏出现与此工程相关的所有信号,包括内部信号。选择需要观察的信号名:dout。单击OK按钮后即可将这些信号调入SignalTap 2信号观察窗口。
3、SignalTap 2参数设置
单击全屏按钮和窗口左下角的Setup页,即出现全屏编辑窗口(图7)。首先要输入逻辑分析仪的工作时钟信号Clock,单击Clock栏右侧“…”按钮,即出现Node Finder窗口,选择CLK信号,接着在Data框的Sample栏选择采样深度为1K位。最后是触发信号和触发方式选择。这可以根据具体需求来选定。在Trigger框的Triggerlevels栏选择1;打勾选中Triggerin框;并在Source栏选择出发信号,在此选择singt工程中的EN作为触发信号;在Pattern栏选择上升沿触发方式。即当测得EN的上升沿后,SignalTap 2在CLK的驱动下根据设置dout的信号进行连续或单次采样。
4、文件存盘
选择菜单File中的Save As项,输入此SignalTap 2文件名为singt.stpl。单击保存按钮后,将出现如下提示:“D0 you want t0 enableSignalTap 2…”,应该单击“是”按钮。表示统一再次编译时将此SignalTap 2文件与工程(singt)捆绑在一起综合/适配,以便一同被下载进FPGA芯片中去完成实时测试任务。
5、编译下载
首先选择Processing菜单中的Start Compilation项,启动全程编译。编译结束后,SignalTap 2的观察窗口通常会自动打开,但若没有打开,可选择菜单Tools中的SignalTap 2Analyzer,打开SignalTap 2,或按Open按钮打开。
打开实验开发系统的电源,连接JTAG口,设置通信模式为ByteBlaster 2或ByteBlasterMV。然后单击下方的Device栏的ScanChain按钮,对实验板进行扫描。如果在栏中出现板上FPGA的型号名,表示系统JTAG通信情况正常,可以进行下载。
最后是在File栏选中下载文件(singt.sof)。单击左侧的下载信号,观察左下角下载信息。下载成功后,设定实验板上的模式(模式5)和恰当的控制信号(en=1)。
6、启动SignalTap 2进行采样和分析
如图7所示,单击Instance名为singt,再单击Autorun Analysis按钮,启动SignalTap 2。单击左下角的Data页和“全屏控制”按钮,然后按键SWl5(en),由低到高,产生一个上升沿,作为SignalTap 2的采样触发信号,这时就能在SignalTap 2窗口通过JTAG口观察到来自实验板上FPGA内部的实时信号(图8)。
此结果完全符合实验预期,通过改变分频器中的CNT6初始数值便可改变此波形的周期。该表romd.mif中的数值可以改变正弦波的幅度。