1、草鱼 草鱼 草鱼 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 题目名称 : pork基于 FPGA 的正弦信号发生器 草鱼 班 草鱼 草鱼 草鱼 草鱼级 : pork 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草 鱼草鱼 姓 草鱼 草鱼 草鱼 草鱼名 : pork 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草 鱼草鱼 学 草鱼 草鱼 草 鱼 草鱼号 : pork 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼
2、 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草 鱼草鱼 日 草鱼 草鱼 草鱼 草鱼期 : pork 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼2012/07/06 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草 鱼草鱼 草鱼 草鱼 基于 FPGA 的正弦信号发生器设计 草鱼 1.1 草鱼 引言 草鱼 草鱼 直接数字频率合成 (Digital 草鱼 Direct 草鱼 Frequency 草鱼 Synthesis)是一种比较新颖的频率合 成方法 。 草鱼 这个理论早在 20 世纪 70 年代就被提出 , 鲤鱼 它的基本原理就是利用采样定理 , 鲤鱼 通过查表法产生
3、波形 。 草鱼草鱼 草鱼 1.2 草鱼 方案比较与确定 草鱼 设计要求 : pork利用 EDA 技术 , 鲤鱼 建立正弦信号 DDS 产生模型 , 鲤鱼 编写源程序 , 鲤鱼 达到频率输出范围1KHz-10MHz、 pork频率步进 100Hz、 pork频率稳定度优于 104 、 pork带 50负载输出电压峰峰值大于 1V等要求 , 鲤鱼 完成硬件实现与测试 。 草鱼草鱼 【方案一】 草鱼 采用分立元件模拟直接合成法 。 草 鱼 这种方法转换速度快 , 鲤鱼 频率分辨率高 , 鲤鱼 但其转换量程靠手动来实现 , 鲤鱼 不仅体积大难以集成 , 鲤鱼 而且可靠性和准确度很难进一步提高 。 草
4、鱼草鱼 【方案二】 草鱼 采用 MAX038 芯片来产生正弦波信号 。 草鱼 该集成块的输出波形种类多 , 鲤鱼 频率覆盖范围广 。 草鱼 它采用的是 RC 充放电振荡结构 。 草鱼 第一 , 鲤鱼 由于模拟器件元件分散性太大 , 鲤鱼 外接的电阻 、pork电容对参数的影响很大 , 鲤鱼 因而产生的频率稳定度差 , 鲤鱼 只能达到 43 1010 。 草鱼 第二 , 鲤鱼 它的频率控制是通过充放电流的大小来实现 。 草 鱼 因而要达到步进 100HZ, 鲤鱼 所需的电流变化量非常小 ,鲤鱼 精度要求很高 。 草鱼 所以采用 MAX038芯片难以实现设计要求 。 草鱼草鱼 【方案三】 草鱼 采
5、用锁相环合成方法 。 草鱼 采用该方案设计输出信号的频率可达到超高频甚至微波段 , 鲤鱼 且输出信号频谱纯度较高 。 草鱼 由于锁相环技术是一个不间断的负反馈控制过程 , 鲤鱼 所以该系统输出的正弦信号频率可以维持在一个稳定状态 , 鲤鱼 频率稳定度高 。 草鱼 但 由于它是采取闭环控制的 , 鲤鱼 系统的输出频率改变后 , 鲤鱼 重新达到稳定的时间也比较长 。 草鱼 所以锁相环频率合成器要想同时得到较高的频率分辨率 和转换率非常困难 , 鲤鱼 频率转换一般要几毫秒的时间 1, 鲤鱼 同时频率间隔也不可能做得很小 。 草鱼 草鱼 【方案四】 草鱼 采用直接数字合成器( DDS) , 鲤鱼 可用
6、硬件或软件实现 。 草鱼 即用累加器按频率要求对相应的相位增量进行累加 , 鲤鱼 再以累加相位值作为地址码 , 鲤鱼 取存放于 ROM 中的波形数据 , 鲤鱼 经D/A 转换 , 鲤鱼 滤波即得到所需波形 。 草鱼草鱼 以 EDA 技术为基础 , 鲤鱼 用 FPGA 实现 DDS 模型的设计 。 草鱼 电路的规模大小和总线宽度可以由设计者根据自己的需要而设定可将波形数据存入 FPGA 的 ROM 中 。 草鱼 同时外部控制逻辑单元也 可在FPGA 中实现 。 草鱼 方法简单 , 鲤鱼 易于程控 , 鲤鱼 便于集成 。 草鱼 用该方法设计产生的信号频率范围广 , 鲤鱼 频率稳定度高 , 鲤鱼 精
7、度高 , 鲤鱼 频率转换速度快 。 草鱼草鱼 分析以上四种方案 , 鲤鱼 显然第四种方案具有更大的优越性 、 pork灵活性 。 草鱼 所以采用方案四进行设计 。草鱼草鱼 草鱼 2、 p ork直接数字频率合成技术( DDS) 草鱼 草鱼 2.1 草鱼 直接数字频率合成的基本结构 草鱼 草鱼 图 2.1 草鱼 草鱼 直接数字频率合成的基本结构 草鱼 如图 2.1DDS 的基本结构图 , 鲤鱼 从图中可以看出 DDS 主要由四个基本部分组 : pork(1)相位累加器 ;p ork(2)波形 ROM; pork(3)D/A转换器 ; pork(4)低通滤波器 。 草鱼草鱼 相位累加器的结构如图
8、2.2 所示 草鱼 草鱼 图 2.2 草鱼 草鱼 相位累加器原理框图 草鱼 相位累加器是 DDS 的核心部分 , 鲤鱼 它由一个 N 位的加法器和 N 位的寄存器构成 , 鲤鱼 通过把上一个时钟的累加结果反馈回加法器的输入端实现累加功能 。 草鱼 这里的 N 是相位累加器的字长 , 鲤鱼 K叫做频率控制字 。 草鱼 每经过一个时钟周期 , 鲤鱼 相位累加器的值递增 K。 草鱼草鱼 波形 ROM 示意图如图 2.3 所示 草鱼 草鱼草鱼 草鱼 图 2.3 草鱼 草鱼 波形 草鱼 ROM示意图 草鱼 当 草鱼 ROM 草鱼 地址线上的地址 (相位 )改变时 , 鲤鱼 数据线上输出相应的量化值 (幅
9、度量化序列 )。 草鱼 因为波形 ROM 的存储容量有限 , 鲤鱼 相位累加器的字长一般不等于 ROM 地址线的位数 ,因此在这个过程当中也又会引入相位截断误差 。 草鱼草鱼 D/A 草鱼 转换器将波形 ROM 输出的幅度量化序列转化成对应的电平输出 , 鲤鱼 将数字信号转换成模拟信号 。 草鱼 但输出波形是一个阶梯波形 , 鲤鱼 必须经过抗镜像滤波 , 鲤鱼 滤除输出波形中的镜像才能得到一个平滑的波形 。 草鱼 抗镜像滤波器是一个低通滤波器 , 鲤鱼 要求在输出信号的带宽内有较平坦的幅频特性 , 鲤鱼 在输出镜像频率处有足够的抑止 。 草鱼 草鱼 根据 草鱼 DDS 的基本结构 , 鲤鱼 可
10、以推出以下一些结论 :草鱼 频率控制字 K 唯一地确定一个单频模拟余弦信号 )2cos()( 0tftS 的频率 0f , 鲤鱼Ncfkf 2/0 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 2.1) 草鱼 当 K 草鱼 =1的时候 DDS输出最低频率为 f , 鲤鱼 草鱼 f = Ncf 2/ 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 2.2) 草鱼 这就是 D
11、DS 的频率分辨率 , 鲤鱼 所以 , 鲤鱼 当 N不断增加的时候 DDS 的频率分辨率可以不断的提高 。草鱼 D/A 转换器的输出波形相当于是一个连续平滑波形的采 样 , 鲤鱼 根据奈奎斯特采样定律 , 鲤鱼 采样率必需要大于信号频率的两倍 。 草鱼 也就是说 D/A 转化器的输出如果要完全恢复的话 , 鲤鱼 输出波形的频率必须小于 Ncf 2/ 。 草鱼 一般来说 , 鲤鱼 由于低通滤波器的设计不可能达到理想情况 , 鲤鱼 即低通滤波器总是有一定的过渡带的 , 鲤鱼 所以输出频率还要有一定的余量 , 鲤鱼 一般来说在实际应用当中DDS 的输出频率不能超过 0.4 cf 。 草鱼 草鱼草鱼
12、草鱼 3、 p ork基于 FPGA 的正弦信号发生器 草鱼 草鱼 3.1 草鱼 总 体设计框图 草鱼 草鱼 草鱼 图 3.1 草鱼 信号发生器结构框图 草鱼 图 3.1为本次设计总体结构框图 , 鲤鱼 其中相位累加器和波形存储器构成信号发生器核 草鱼 心部分 。 草鱼 该部分又与频率字控制模块共同构成信号发生器主模块 。 草鱼 而显示模块 , 鲤鱼 D/A 转换器和滤波电路则作为信号发生器外围硬件设计 。 草鱼 下面就分主模块软件设计和外围硬件设计两大部分来说明信号发生器的设计 。 草鱼草鱼 草鱼 3.2 草鱼 主模块软件设计 草鱼 草鱼 3.2.1 草鱼 相位累加器的设计 草鱼 草鱼 图
13、3.2 草鱼 相位累加器 草鱼 图 3.2 为相位累加器内 部结构图 , 鲤鱼 它有一个 N 位的全加器和一个寄存器构成 。 草鱼当系统时钟上升沿到来的时候 , 鲤鱼 上一个时钟周期的相位值与频率字的相加值被送入累加寄存器 , 鲤鱼 并输出高 W 位至波形存储器的地址线 , 鲤鱼 同时相位值又被送回全加器进行相位累加 。 草鱼草鱼 相位累加器流程图如图 3.3 所示 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼草鱼 草鱼 草鱼 草鱼 草鱼
14、 草鱼 草 鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 开 草鱼 始 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼草鱼 HzHzM H zff Nc lk 50384.22402 24m i n 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼
15、 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 时钟上升沿到 ? pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 NO草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼
16、 草鱼 草鱼 草鱼 草鱼 草鱼 YES 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 相位累加 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 累加值寄存 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼
17、 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 高 W 位输出 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 结 草鱼 束 草鱼草 鱼 图 3.3 草鱼 相位累加器流程图 草鱼 设计要求输出频率范围为 50HZ 200HZ, 鲤鱼 频率步进为 50HZ。 草鱼 根据 前面 介绍最高输出一般是系统时钟的 40%。 草鱼 经过计算 , 鲤鱼 设计选用系统时钟为 40MHZ 时
18、能实现设计要求 。 草鱼草鱼 HzM HzM Hzf 2 0 016%4040 草鱼 确定相位累加字长时 , 鲤鱼 考虑到频率分辨率要等于或小于频率步进值 , 鲤鱼 而且累加器字长一般为 8 的整数倍 。 草鱼 由第二章公式 2.2 计算后得出符合设计要求的累加器字长为 N=24。 草鱼草鱼 草鱼 草鱼 草鱼 3.2.2 草鱼 波 形 ROM 的设计 草鱼 草鱼 这个模块是一个相对简单的模块 。 草鱼 首先要确定波形 ROM 的地址线位数和数据的字长 , 鲤鱼 根据噪声功率的角度看波形 ROM 的地址线位数应该等于或略大于字长 。草鱼 由于设计选择的 DAC 位数为 8, 鲤鱼 这样 ROM
19、的字长很明显该和 DAC 的字长相一致 。草鱼 而地址线的位数同样确定为 8 位 。 草鱼草鱼 波形存储器利用相位累加器输出的高 8位作为地址线来对其进行寻址 , 鲤鱼 最后输出该相位对应的二进制正弦幅值 。 草鱼 将得出的结果转化为 8位的二进制数据 , 鲤鱼 起幅值对应在 00000000-11111111 区间内 。 草鱼 最后 利用得到的二进制数据用 VHDL 编写程序实现正弦 ROM 的设计 。 草鱼 草鱼 图 3.4 为正弦波形 ROM 模块 。 草鱼草鱼 草鱼 草鱼 草鱼 图 3.4 草鱼 正弦波形 ROM 草鱼 3.2.3 草鱼 频率控制模块的设计 草鱼 草鱼 设计要求频率步进
20、为 50HZ, 鲤鱼 在 频率控制模块中 , 鲤鱼 增加了 4 个附加的频率步进按钮 。 草鱼 分别为最小步进( 50HZ)的 1倍 、 pork2 倍 、 pork3倍和 4倍即 50HZ、 pork100HZ、 pork150HZ和 200HZ。 草鱼 这样从大到小地利用频率步进值便可很快地调到所需要的频点 。 草鱼草鱼 由于设计 要求频率输出范围为 50HZ-200HZ, 鲤鱼 则 K 值的最小值为 21, 鲤鱼 最大值为 84。 草鱼 设系统其始和复位时 K 的初值为 21, 鲤鱼 即初始化频率为 50HZ。 草鱼 然后再根据所要输出的频率调整相应的步进量 。 草鱼 图 3.5 为 V
21、HDL 设计的频率控制模块 。 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 图 3.5 为 VHDL 设计的频率控制模块 草鱼 草鱼 3.3 草鱼 外围硬件设计 草鱼 3.3.1 草鱼 D/A 转换器 草鱼 草鱼 实现数字量转化为模拟信号的转换电路称为 D/A 转换器( DAC) 。 草鱼草鱼 D/A 转换器是把数字量转
22、换成模拟量的线性电路器件 , 鲤鱼 已做成集成芯片 。 草鱼 由于实现这种转换的原理和电路结构及工艺技术有所不同 , 鲤鱼 因而出现各种各样的 D/A转换器 。 草鱼 目前 , 鲤鱼 国外市场已有上百种产品出售 , 鲤鱼 他们在转换速度 、 pork转换精度 、 pork分辨率以及使用价值上 都各具特色 。 草鱼 草鱼 草鱼 衡量一个 D/A 转换器的性能的主要参数有 : p ork 草鱼 草鱼 ( 1)分辨率 : pork是指 D/A 转换器能够转换的二进制数的位数 , 鲤鱼 位数多分辨率也就越高 。 草鱼 草鱼 草鱼 ( 2)转换时间 : pork指数字量输入到完成转换 , 鲤鱼 输出达到
23、最终值并稳定为止所需的时间 。 草鱼 电流型 D/A 转换较快 , 鲤鱼 一般在几 ns 到几百 ns 之间 。 草鱼 电压型 D/A 转换较慢 , 鲤鱼 取决于运算放大器的响应时间 。 草鱼 草鱼 草鱼 ( 3)精度 : pork指 D/A 转换器实际输出电压与理论值之间的误差 , 鲤鱼 一般采用数字量的最低有效位 作为衡量单位 。 草鱼 草鱼 草鱼 ( 4)线性度 : pork当数字量变化时 , 鲤鱼 D/A 转换器输出的模拟量按比例关系变化的程度 。 草鱼 理想的 D/A 转换器是线性的 , 鲤鱼 但是实际上是有误差的 , 鲤鱼 模拟输出偏离理想输出的最大值称为线性误差 。 草鱼 草鱼
24、目前 , 鲤鱼 D/A 转换器芯片种类较多 , 鲤鱼 对于一般的使用者而言 , 鲤鱼 只需掌握 DAC 芯片性能及其与计算机之间接口的基本要求 , 鲤鱼 就可根据应用系统的要求合理选用DAC 芯片 , 鲤鱼 并配置适当的接口电路 。 草鱼草鱼 3.3.2 草鱼 滤波及放大电路 草鱼 草鱼 在由数字信号至模拟信号这一过程转换 好以后 , 鲤鱼 得出的信号仍然是在时间上离散的点 , 鲤鱼 需要将其用低通滤波器进行平滑处理 , 鲤鱼 滤除高次频率的杂波 , 鲤鱼 得到平滑标准的正弦波 。 草鱼草鱼 草鱼 结束语 草鱼 草鱼 随着信息技术高速发展 , 鲤鱼 集成电路的大规模使用 , 鲤鱼 电子系统已经
25、进入了一个高速发展的全新时段 。 草鱼 特别是 EDA 技术的日趋成熟的今天 , 鲤鱼 通过计算机辅助设计 , 鲤鱼可以很好地完成电子设计的自动化 。 草鱼 在设计过程中 , 鲤鱼 可根据需要随时改变器件的内部逻辑功能和管脚的信号方式 , 鲤鱼 EDA 技术 借助于大规模集成的 FPGA/CPLD 和高效的设计软件 , 鲤鱼 用户 不仅可通过直接对芯片结构的设计实行多种数字逻辑系统功能 , 鲤鱼 而且由于管脚定义的灵活性 , 鲤鱼 大大减轻了电路图设计和电路板设计的工作量及难度 , 鲤鱼 同时 , 鲤鱼 这种基于可编程芯片的设计大大减少了系统芯片的数量 , 鲤鱼 缩小了系统的体积 , 鲤鱼 提
26、高了系统的可靠性 。 草鱼 草鱼 基于 DDS 的信号发生器是最为理想的信号产生模型 , 鲤鱼 DDS 系统有着其他信号发生器所无法比拟的优势 。 草鱼 今天 DDS 广泛用于接受机本振 、 pork信号发生器 、 pork仪器 、 pork通信系统 、 p ork雷达系统等 , 鲤鱼 尤其适合跳频无线电通信系统 。 草鱼草鱼 基于 FPGA的正弦信号发生器结合了的 EDA 技术和 DDS 理论 , 鲤鱼 在 EDA 技术高速 、 pork高效 、 pork高可靠性的前提下得到了更优的设计效果 。 草鱼 但是系统的功能还没有得到完全利用 , 鲤鱼 由于 DDS 技术是利用查表法来产生波形的 ,
27、 鲤鱼 则在基于 FPGA 设计时只要把 ROM 改成 RAM 变可实现任意波形的产生 。 草鱼草鱼 草鱼 草鱼 参考文献 草鱼 草鱼 1 草鱼 张玉兴 . 草鱼 DDS 高稳高纯频谱频率源技术 J. 草鱼 系统工程与电子技术 . 草鱼 1997( 2) 24-28 草鱼 2 草鱼 冯 草鱼 程 . 草鱼 用直接数字频率合成器产生正弦 波 J. 草鱼 华中科技大学本科生论文 . 草鱼 草鱼 2003. 草鱼 7-27草鱼 3 草鱼 周国富 . 草鱼 利用 FPGA实现 DDS专用集成电路 J. 草鱼 电子技术应用 . 草鱼 No.2.1998. 草鱼 18-20草鱼 草鱼 草鱼 波形截图 :
28、p ork50Hz100Hz 草鱼 8 150Hz 草鱼 200Hz 草鱼 程序 vhdl 代码 : p ork草鱼 -顶层模块 草鱼 library 草鱼 IEEE;pork草鱼 use 草鱼 IEEE.STD_LOGIC_1164.ALL;pork草鱼 use 草鱼 IEEE.STD_LOGIC_ARITH.ALL;pork草鱼 use 草鱼 IEEE.STD_LOGIC_UNSIGNED.ALL;pork草鱼 entity 草鱼 sin256 草鱼 is 草鱼 port(clk 草鱼 : 草鱼 in 草鱼 std_logic;pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 rst 草鱼 :
29、草鱼 in 草鱼 std_logic;pork草鱼 草鱼 set 草鱼 : 草鱼 in 草鱼 std_logic_vector(1 草鱼 downto 草鱼 0);pork-设置频率 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 q 草鱼 草鱼 草鱼 : 草鱼 out 草鱼 std_logic_vector(7 草鱼 downto 草鱼 0) 草鱼 );pork草鱼 end 草鱼 sin256;pork草鱼 architecture 草鱼 Behavioral 草鱼 of 草鱼 sin256 草鱼 is草鱼 草鱼 component 草鱼 adder 草鱼 草鱼 port(a,b 草鱼 : 草鱼 in
30、草鱼 std_logic_vector(23 草鱼 downto 草鱼 0);pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 c 草鱼 : 草鱼 out 草鱼 std_logic_vector(23 草鱼 downto 草鱼 0) 草鱼 );pork草鱼 草鱼 end 草鱼 component;pork草鱼 草鱼 component 草鱼 D草鱼 草鱼 port(clk 草鱼 : 草鱼 in 草鱼 std_logic;pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 rst 草鱼 : 草鱼 in 草鱼 std_logic;pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 d 草鱼 :
31、草鱼 in 草鱼 std_logic_vector(23 草鱼 downto 草鱼 0);pork草鱼 草鱼 草鱼 草鱼 草 鱼 草鱼 草鱼 草鱼 草鱼 草鱼 q 草鱼 : 草鱼 out 草鱼 std_logic_vector(23 草鱼 downto 草鱼 0) 草鱼 );pork草鱼 草鱼 end 草鱼 component;pork草鱼 草鱼 component 草鱼 sin_rom8_8 草鱼 草鱼 PORT(ADDER:IN 草鱼 STD_LOGIC_VECTOR(7 草鱼 DOWNTO 草鱼 0);pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 DAOUT:OUT 草鱼 ST
32、D_LOGIC_VECTOR(7 草鱼 DOWNTO 草鱼 0);pork草鱼 草鱼 end 草鱼 component;pork草鱼 草鱼 component 草鱼 setkp 草鱼 草鱼 port(set 草鱼 : 草鱼 in 草鱼 std_logic_vector(1 草鱼 downto 草鱼 0);pork草鱼 9 草鱼 草鱼 草鱼 草鱼 草鱼 k 草鱼 草鱼 草鱼 : 草鱼 out 草鱼 std_logic_vector(23 草鱼 downto 草鱼 0);pork草鱼 草鱼 草鱼 p 草鱼 草鱼 草鱼 : 草鱼 out 草鱼 std_logic_vector(23 草鱼 downt
33、o 草鱼 0) 草 鱼);pork草鱼 草鱼 end 草鱼 component;pork草鱼 草鱼草鱼 草鱼 signal 草鱼 k,p 草鱼 : 草鱼 std_logic_vector(23 草鱼 downto 草鱼 0);pork草鱼 草鱼 signal 草鱼 tmp1,tmp2,tmp3 草鱼 : 草鱼 std_logic_vector(23 草鱼 downto 草鱼 0);pork草鱼 begin 草鱼 草鱼 setk 草鱼 : 草鱼 setkp 草鱼 port 草鱼 map(set,k,p);pork草鱼 草鱼 add1: 草鱼 adder 草鱼 port 草鱼 map(k,tmp2
34、,tmp1);pork草鱼 草鱼 d1 草鱼 草鱼 : 草鱼 D 草鱼 port 草鱼 map(clk,rst,tmp1,tmp2);pork草鱼 草鱼 add2: 草鱼 adder 草鱼 port 草鱼 map(tmp2,p,tmp3);pork草鱼 草鱼 sin_rom: 草鱼 sin_rom8_8 草鱼 port 草鱼 map(tmp3(23 草鱼 downto 草鱼 16),q);pork草鱼 end 草鱼 Behavioral;pork草鱼 草鱼 草鱼 -频率控制模块 草鱼 library 草鱼 IEEE;pork草鱼 use 草鱼 IEEE.STD_LOGIC_1164.ALL;p
35、ork草鱼 use 草鱼 IEEE.STD_LOGIC_ARITH.ALL;pork草鱼 use 草鱼 IEEE.STD_LOGIC_UNSIGNED.ALL;pork草鱼 entity 草鱼 setkp 草鱼 is 草鱼 port(set 草鱼 : 草鱼 in 草鱼 std_logic_vector(1 草鱼 downto 草鱼 0);pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 k 草鱼 草鱼 草鱼 : 草鱼 out 草鱼 std_logic_vector(23 草鱼 downto 草鱼 0);pork草鱼 草鱼 草鱼 p 草鱼 草鱼 草鱼 : 草鱼 out 草鱼 std_logic_vec
36、tor(23 草鱼 downto 草鱼 0) 草鱼 );pork草鱼 end 草鱼 setkp;pork草鱼 architecture 草鱼 Behavioral 草鱼 of 草鱼 setkp 草鱼 is草鱼 begin 草鱼 草鱼 process(set)草鱼 草鱼 begin 草鱼 草鱼 草鱼 case 草鱼 set 草鱼 is草鱼 草鱼 草鱼 草鱼 when 草鱼 “00“=kkkkk=“000000000000000000010101“;pork草鱼 草鱼 草鱼 end 草鱼 case;pork草鱼 end 草鱼 process;pork草鱼 草鱼 草鱼 p=“000000000000
37、000000000000“;pork草鱼 end 草鱼 Behavioral;pork草鱼 -相位累加模块 , 鲤鱼 由加法器和 D触发器组成 草鱼 -加法器 草鱼 library 草鱼 IEEE;pork草鱼 use 草鱼 IEEE.STD_LOGIC_1164.ALL;pork草鱼 use 草鱼 IEEE.STD_LOGIC_ARITH.ALL;pork草鱼 use 草鱼 IEEE.STD_LOGIC_UNSIGNED.ALL;pork草鱼 entity 草鱼 adder 草鱼 is 草鱼 port(a,b 草鱼 : 草鱼 in 草鱼 std_logic_vector(23 草鱼 down
38、to 草鱼 0);pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 c 草鱼 : 草鱼 out 草鱼 std_logic_vector(23 草鱼 downto 草鱼 0) 草鱼 );pork草鱼 end 草鱼 adder;pork草鱼 architecture 草鱼 Behavioral 草鱼 of 草鱼 adder 草鱼 is草鱼 begin 草鱼 草鱼 c=a+b;pork草鱼 end 草鱼 Behavioral;pork草鱼 -D 触发器 草鱼 library 草鱼 IEEE;pork草鱼 use 草鱼 IEEE.STD_LOGIC_1164.ALL;por k草鱼 use 草鱼 IEEE.STD_LOGIC_ARITH.ALL;por k草鱼 use 草鱼 IEEE.STD_LOGIC_UNSIGNED.ALL;por k草鱼 entity 草鱼 D 草鱼 is 草鱼 port(clk 草鱼 : 草鱼 in 草鱼 std_logic;pork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 rst 草鱼 : 草鱼 in 草鱼 std_logic;pork 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 d 草鱼 : 草鱼 in 草鱼 std_logic_vector(23 草鱼 downto 草鱼 0);pork草鱼