DDS电路设计
DDS信号发生器电路设计

1. 信号产生部分1.1 频率控制字输入模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ddsinput isport(a,b,c,clk,clr:in std_logic;q1,q2,q3,q4,q5:buffer unsigned(3 downto 0));end ddsinput;architecture a of ddsinput issignal q:std_logic_vector(2 downto 0);beginq<=c&b&a;process(cp,q,clr)beginif clr='1'then q1<="0000";q2<="0000";q3<="0000";q4<="0000";q5<="0000"; elsif clk 'event and clk='1'thenDDS信号信号发生器电路设计case q iswhen"001"=>q1<=q1+1;when"010"=>q2<=q2+1;when"011"=>q3<=q3+1;when"100"=>q4<=q4+1;when"101"=>q5<=q5+1;when others=>NULL;end case;end if;end process;end a;1.2 相位累加器模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity xiangwei isport(m:in std_logic_vector(19 downto 0);clk,clr:in std_logic;data:out std_logic_vector(23 downto 0)); end xiangwei;architecture a of xiangwei issignal q:std_logic_vector(23 downto 0);beginprocess(clr,clk,m,q)beginif clr='1'then q<="000000000000000000000000"; elsif (clk'event and clk='1')thenq<=q+m;end if;data<=q;end process;end a;向学壮2013083540202. ROM数据存储器3. 数码管显示部分3.1 七段数码管显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY led7seg_1 ISPORT ( A : IN STD_LOGIC_VECTOR(1 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(12 DOWNTO 0) ) ; END ;DDS信号信号发生器电路设计ARCHITECTURE one OF led7seg_1 ISBEGINPROCESS( A )BEGINCASE A ISWHEN "00" => LED7S <= "0000000011111";WHEN "01" => LED7S <= "0100100011111";WHEN "10" => LED7S <= "1111001011111";WHEN "11" => LED7S <= "0010010011111";WHEN OTHERS => NULL ;END CASE ;END PROCESS ;END ;4. 总电路图a,b,c是改变波形频率key_1选择波形,有锯齿波、三角波、方波、正弦波。
详细设计方案_DDS

DDS详细设计方案1.DDS简介:DDS同DSP(数字信号处理)一样,是一项关键的数字化技术。
DDS 是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写。
与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。
一块DDS芯片中主要包括频率控制寄存器、高速相位累加器和正弦计算器三个部分(如Q2220)。
频率控制寄存器可以串行或并行的方式装载并寄存用户输入的频率控制码;而相位累加器根据频率控制码在每个时钟周期内进行相位累加,得到一个相位值;正弦计算器则对该相位值计算数字化正弦波幅度(芯片一般通过查表得到)。
DDS芯片输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号。
2.DDS规格:Xxx3.实现原理DDS的核心部分是相位累加器,相位累加器有一个累加器和相位寄存器组成,它的作用是再基准时钟源的作用下进行线性累加,当产生溢出时便完成一个周期,即DDS的一个频率周期。
其中频率字的位宽为K位,作为累加器的一个输入,累加器的另一个输入端位宽为N位(N>K),每来一个时钟,频率字与累加器的另一个输入相加的结果存入相位寄存器,再反馈给累加器,这相当于每来一个时钟,相位寄存器的输出就累加一次,累加的时间间隔为频率字的时间,输入加法器的位宽为(N-K)位,它与同样宽度的相位控制字相加形成新的相位,并以此作为查找表的地址。
每当累加器的值溢出一次,输入加法器的值就加一,相应的,作为查找表的地址就加一,而查找表的地址中保存波形的幅度值,这些离散的幅度值经DAC和PLF便课还原为模拟波形。
4.Verilog HDL源代码Verilog HDL代码为:module DDS (//inputsys_clk,sys_rst_n,fword,pword,//outputda_clk,da_data);//input portsinput sys_clk ; //system clock;input sys_rst_n ; //system reset, low is active; input [WIDTH1-1:0] fword ; //输入频率字input [WIDTH2-1:0] pword ; //输入相位字//output portsoutput [SIZE-1:0] da_data ; //DA 数据output da_clk ; //DA 时钟//reg definereg [WIDTH1-1:0] fword_r ;reg [WIDTH2-1:0] pword_r ;reg [WIDTH1-1:0] freq_count ;reg [WIDTH2-1:0] rom_addr ;//wire define//parameter defineparameter WIDTH1 = 32;parameter WIDTH2 = 12;parameter SIZE = 10;/******************************************************************** ************************************* Main Program*********************************************************************** ***********************************/assign da_clk = sys_clk ;always @(posedge sys_clk or negedge sys_rst_n) beginif (sys_rst_n ==1'b0) beginfword_r <= 32'h0000;endelsefword_r <= fword;endalways @(posedge sys_clk or negedge sys_rst_n) beginif (sys_rst_n ==1'b0) beginpword_r <= 12'h0000;endelsepword_r <= pword;endalways @(posedge sys_clk or negedge sys_rst_n) beginif (sys_rst_n ==1'b0) beginfreq_count <= 32'h0000;endelsefreq_count <= freq_count + fword_r; //频率控制器endalways @(posedge sys_clk or negedge sys_rst_n) beginif (sys_rst_n ==1'b0) beginrom_addr <= 32'h0000;endelserom_addr <= freq_count[31:20] + pword_r; //相位控制器endROM DDS_ROM_U0 (.address (rom_addr) ,.clock (sys_clk) ,.q (da_data));endmodule//end of RTL code5.日积月累Xxx6.综合出的电路DDS代码综合出的电路如下:注意:波形文件存在Project\DDS\wave_file下面。
基于dds技术的模拟频率调制电路设计及fpga实现

基于dds技术的模拟频率调制电路设计及fpga实现DDS技术是一种数字信号处理技术,它可以实现高精度、高速度的频率合成和调制。
基于DDS技术的模拟频率调制电路设计及FPGA实现,可以实现高精度、高速度的模拟信号调制,具有广泛的应用前景。
一、基于DDS技术的模拟频率调制电路设计1. DDS技术原理DDS技术是一种数字信号处理技术,它通过数字信号处理器(DSP)或FPGA实现对数字信号的频率合成和调制。
DDS技术的核心是相位累加器和数字控制振荡器(NCO),相位累加器用于累加相位,NCO 用于产生数字信号。
DDS技术的优点是可以实现高精度、高速度的频率合成和调制,同时可以实现频率和相位的任意调制。
2. 模拟频率调制电路设计基于DDS技术的模拟频率调制电路设计,需要实现以下几个模块:(1)数字控制振荡器(NCO)模块:用于产生数字信号,可以通过改变NCO的频率和相位实现数字信号的频率和相位调制。
(2)数字信号处理器(DSP)模块:用于对输入信号进行数字信号处理,包括滤波、采样、量化等。
(3)模拟信号输出模块:用于将数字信号转换为模拟信号输出。
3. 模拟频率调制电路设计流程(1)确定调制信号的频率范围和精度要求。
(2)设计数字控制振荡器(NCO)模块,确定NCO的频率和相位控制方式。
(3)设计数字信号处理器(DSP)模块,包括滤波、采样、量化等。
(4)设计模拟信号输出模块,将数字信号转换为模拟信号输出。
(5)进行电路仿真和调试,优化电路性能。
二、基于DDS技术的模拟频率调制电路FPGA实现1. FPGA技术原理FPGA是一种可编程逻辑器件,可以实现数字电路的设计和实现。
FPGA的核心是可编程逻辑单元(PLU)和可编程互连网络(PCN),PLU用于实现逻辑功能,PCN用于实现逻辑单元之间的连接。
2. 模拟频率调制电路FPGA实现基于DDS技术的模拟频率调制电路FPGA实现,需要实现以下几个模块:(1)数字控制振荡器(NCO)模块:用于产生数字信号,可以通过FPGA实现NCO的频率和相位控制。
DDS原理及AD9851电路设计、测试2

DDS原理及AD9851电路设计、测试鼎峰电子一.DDS(Direct Digital Synthesis)直接频率合成技术概况 在频率合成(FS, Frequency Synthesis)领域中,常用的频率合成技术有模拟锁相环、数字锁相环、小数分频锁相环(fractional-N PLL Synthesis)等,直接数字合成(Direct Digital Synthesis-DDS)是近年来新的FS技术。
单片集成的DDS产品是一种可代替锁相环的快速频率合成器件。
DDS是产生高精度、快速变换频率、输出波形失真小的优先选用技术。
DDS以稳定度高的参考时钟为参考源,通过精密的相位累加器和数字信号处理,通过高速D/A变换器产生所需的数字波形(通常是正弦波形),这个数字波经过一个模拟滤波器后,得到最终的模拟信号波形。
如图2所示,通过高速DAC产生数字正弦数字波形,通过带通滤波器后得到一个对应的模拟正弦波信号,最后该模拟正弦波与一门限进行比较得到方波时钟信号。
DDS系统一个显著的特点就是在数字处理器的控制下能够精确而快速地处理频率和相位。
除此之外,DDS的固有特性还包括:相当好的频率和相位分辨率(频率的可控范围达μHz级,相位控制小于0.09°),能够进行快速的信号变换(输出DAC的转换速率300百万次/秒)。
这些特性使DDS在军事雷达和通信系统中应用日益广泛。
其实,以前DDS价格昂贵、功耗大(以前的功耗达Watt级)、DAC器件转换速率不高,应用受到限制,因此只用于高端设备和军事上。
随着数字技术和半导体工业的发展,DDS芯片能集成包括高速DAC器件在内的部件,其功耗降低到mW级(AD9851在3.3v 时功耗为650mW),功能增加了,价格便宜。
因此,DDS也获得广泛的应用:现代电子器件、通信技术、医学成像、无线、PCS/PCN系统、雷达、卫星通信。
二.DDS工作原理:图1图1是一个DDS的基本内部结构。
基于DSP的DDS信号发生器硬件设计电路图

---------------------------------------------------------------范文最新推荐------------------------------------------------------ 基于DSP的DDS信号发生器硬件设计+电路图摘要在21世纪的今天,基于DSP的信号发生器以其编程的高度灵活性,波形的高精度与高稳定性等特点而脱颖而出,具有极大的应用价值和广泛的应用前景。
本文利用高性能DSP芯片加上合理的外围控制电路构成基于DSP的DDS信号发生器,完成电压监测电路的硬件设计工作。
通过对DDS的相应介绍采用查表法实现正弦波的产生,采用高速微处理器实现DDS。
然后完成硬件芯片的选型(TMS320LF2407)和硬件电路的设计工作。
硬件设计主要有核心控制模块电路、片选电路、串行通信电路、AD转换电路及信号采集电路,以此实现硬件电路完成接收上位机的控制信号,采集外部电压信号处理后送给上位机,实现对电压的监控。
关键词:信号发生器,DDS,电压监控,硬件设计11870毕业设计说明书(论文)外文摘要1 / 10TitleDDS signal generator hardware design based on DSPAbstractIn the 21st century,the DSP signal generator stand out for its high degree of flexibility of the programming waveforms, high precision and high stability characteristics, shows great value and broad application prospects.This article takes use of high performance DSP chip with peripheral control circuit DSP-based DDS signal generator,complete the hardware design of the voltage monitoring circuit.Achieve the generation of sine wave with look-up table method corresponding introduction of DDS.Then complete selection of hardware chip(TMS320LF2407)and hardware design.The hardware design mainly consists of core control module circuit, chip select circuit, the serial communication circuit, AD converter circuit and the signal acquisition circuit,In order to achieve the hardware circuit to complete the PC to receive the control signal.The acquisition of an external---------------------------------------------------------------范文最新推荐------------------------------------------------------voltage signal processing to give the host computer,in order to monitoring the voltage.Key words: signal generator,DDS,voltage monitoring,hardware design4.4 PC机与DSP的点对点的串行通信接口244.5 输入输出接口254.5.1A/D的接口254.5.2电压信号采样电路265电路设计中注意的问题28致谢30参考文献313 / 10附录硬件电路原理图321 绪论1.1 信号发生器简介信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。
基于DDS的正弦信号发生电路设计

摘 要
重庆
4 12 ) 0 10
针 对 某 检 测设 备 的信 号 源 需 要 , Mi oLna 公 司 的 单 片 正 弦信 号 发 生 芯 片 ML 0 5为 核 心 , 用 计 数 器 与 逻 辑 门 电 路 完 以 c ier r 23 利
成了一种简易正弦信号发生电路的设计 。采用四变量卡洛图方法完成 了电路的逻辑设计 , 使用 7 HC 0 、 4 4 6 4 A0 2 7 HC 0 0和外围元件 完成 控制 字电路的具体 实现 。结论表明使用 MI 0 5和简单逻辑电路构成的特定频率正弦信号发生电路具有简单可靠 的特点 , 3 2 设计方法对 于特定场
W ANG a i M nl n ( hi S  ̄Bo n n M i t r pr s nt tv fc fNa y,Ch n q ng 4 1 0) r e Gu l a y Re e e a i e Ofie o v i o g i 01 2
Ab t a t Ai d a h e n f i n ls u c ors me e u p n .t e M L2 5m a e b i r n a r o a i n wa s d t e i n s rc me tt ed ma d o g a o r e f o q i me t h s 03 d y M c o Ii e rCo p r t s u e o d sg o a sm p e sn i n l e r t rwi o o n e n o ia a ec r u t i l i e sg a ne a o t s me c u t ra d l g c l t ic i.Ka na g ig a i a p id i h o ia u c i n ta s o ma i n o g h g r u h d a r m p l n t e l g c l n to r n f r to f s e f t e c n r lcr u t h s c lcr u twa a fc u t r7 HC 6 n o a e7 H C4 0 .Th o cuso a em a h tt e snes g a h o t o ic i ,p y i a ic i sm keo o n e 4 A0 0 a d n rg t 4 02 e c n l i n c n b det a h i i n l g n r to ic t ma eby M I2 3 n i l o ia a e cr u ts o i e e a i n cr ui d 0 5 a d smp e l g c l t ic i h wssmpl n e i b e,a h sg t o s c n b s f o t e s e g ea d r l l a nd t ede i n me h d a e u e ul h p — t ca p l a in fed o i i n l o r e i la p i to il fsne sg a u c . c s Ke or sne sg a e e a o ,DDS,M L2 3 yW ds i in l n rt r g 05 Cl s m b r TN7 a s Nu e 9
基于DDS的本振扫描电路设计

测试测量技术
基 于 DDS的 本 振 扫 描 电路 设 计
T eDe in Of o a—Os i a o ( h sg c l L cl tr LO) S e s n DDS l we p Ba eo
陈仁北 ,陈爽 ( 中国电子科技集团公司第 4 研究所 ,安徽 蚌埠 2 3 0 ) 1 30 6
OU t nof O w e p Spa t er L s e
KeyW or s:L d O;Au o we p;DDS;F t —S e PGA
O Cn mbr T 7 L u e: N4
Do u n c d :A c me t o e
Ar c D:1 0 — 1 7 2 O )0 0 0 — 3 tl i el 0 3 0 0 (0 8 1 - 0 1 0
3 利用 D S实现扫描 本振的设计方案 D
DS( D 直接数 字合成器 )技术 的出现是频率 合成 的一次
革 新 ,采 用 D S 动 P L ( 相环 ) 的 方式 构 造 频 率 合 成 器 D 驱 L 锁
描 。这种技 术虽然 在窄带扫描时具有极 高的频率分辨率 和优 良的相位 噪声性 能 ,但存在宽带扫描 的扫频精度不高 ( 本振 频率扫描精度为扫宽的 2 ,电路 复杂 ,成本较 高等缺陷。 %)
振 荡 频 率 范 围 影 响 ,这 种 结 构 只 能 在 小 扫 宽 ( 扫 宽 如 < MH ) 下 全 程 锁 定 。 在 宽 带 扫 描 时 ,则 采 用 锁 滚 技 术 实 2 z 现 ,即锁 定 本 振 扫 描 起 始 点 ,然 后 在 开 环 状 态 下 进 行 模 拟 扫
7.2__DDS(直接数字式频率合成器)电路

7.2.1 基于AD9834的50MHz DDS电路
AD9834是一个将相位累加器、正弦只读存储器(SIN ROM) 和一个10位D/A转换器集成在一个CMOS芯片上的、一个完 全集成的DDS(Direct Digital Synthesis)芯片,频率精确性 能被控制在0.25billion(十亿分之一),时钟频率为50MHz, 具有低抖动的时钟输出和正弦波输出/三角波输出,窄带 SFDR>72dB。控制字采用串行装载方式,通过串行接口装 载控制字到寄存器,可以实现相位和频率调制。 AD9834为用户提供了多种输出波形。利用SIN ROM将产生 一个正弦曲线输出。SIN ROM可以被旁路,可以直接从DAC 输出线性向上斜坡电压或者向下斜坡电压。另外,如果需要 时钟输出,可以将DAC 数据的MSB位作为时钟输出,或者利 用芯片上的比较器。
数字部分电源电压由在芯片上的一个稳压器提供,当 DVDD输入电压超过2.7V时,稳压器使芯片内部数字部 分电源电压下降到2.5V。 模拟和数字部分电源是独立的,并且可以由不同的电 源驱动,例如,在AVDD输入电压等于5V时,DVDD输 入电压可以等于3V。AD9834电源电压为2.3~5.5V, 在3V电源电压时仅消耗功率20mW。AD9834有一个低 功耗模式控制引脚端(SLEEP),可以利用外部控制器 控制芯片的低功耗模式。AD9834采用TSSOP20封装。
⑤ 稳压器(Regulator) 对于芯片内部的模拟电路和数字电路,AD9834提供独立的 电源。AVDD提供了模拟电路部分所需要的电源,而DVDD则 提供了数字电路部分所需要的电源。这两个电源的取值范围 均为2.3~5.5V,而且每个都是独立的,例如,模拟电路部 分能够工作在5V电压下,而同时数字电路部分工作在3V,或 者是其他值。 AD9834内部的数字电路部分通常工作在2.5V。在芯片上的 稳压器将在DVDD输入的电源电压降至2.5V。AD9834的数字 接口(串行端口)工作电压也来自DVDD。这些数字信号在 AD9834内进行调整,使它们与2.5V一致。 当AD9834的DVDD引脚的电源电压等于或小于2.7V时,引脚 端CAP/2.5V和DVDD将同时被约束,从而将芯片上的稳压器 旁路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DDS 电路设计摘要本文介绍了DDS的原理,给出了用Altera Cyclone 1 EP1CQ240C8 FPGA芯片实现直接数字频率合成器的工作原理、设计思路、电路结构和仿真结果以及频谱纯度分析。
关键词:直接数字频率合成(DDS);现场可编程门阵列(FPGA);相位累加器一、DDS原理概述1、DDS在基本原理框图如图所示。
它主要由标准参考频率源、相位累加器、波形存储器、数/模转换器、低通平滑滤波器等构成。
其中,参考频率源一般是一个高稳定度的晶体振荡器,其输出信号用于DDS中各部件同步工作。
DDS的实质是对相位进行可控等间隔的采样。
为实现全数字化的频率可调的频率合成器,本系统基于FPGA采用Verilog HDL设计而成直接数字频率合成器(DDS)。
系统由加法器、累加寄存器、波形存储器、D/A转换器、低通滤波器构成。
在FPGA里面做到的是D/A转换器之前的部分。
图一DDS原理图DDS 系统的核心是相位累加器,它由一个N 位累加器与N 位相位寄存器构成。
时钟脉冲每触发一次,累加器便将频率控制数据与相位寄存器输出的累加相位数据相加,然后把相加后的结果送至相位寄存器的数据输入端。
相位寄存器将累加器在上一个时钟作用后所产生的新相位数据反馈到累加器的输入端,以使加法器在下一个时钟的作用下继续与频率控制数据相加。
这样,相位累加器在参考时钟的作用下将进行线性相位累加,当相位累加器累加满时,就会产生一次溢出,以完成一个周期性的动作,这个周期就是DDS 合成信号的一个频率周期,相位累加器的溢出频率就是DDS 输出的信号频率。
2、DDS 参数计算相位寄存器每经过2N/M 个f c 时钟后回到初始状态,相应地正弦查询表经过一个循环回到初始位置,整个DDS 系统输出一个正弦波。
输出正弦波频率:2NC outf fM ∙=本设计中,N=10,M 为位宽为32的频率控制字,fc=20Mhz二、DDS 电路结构设计1、电路描述接口信号名称 位宽 方向 描述 备注 freq 32 输入 输入频率字reset 1 输入 复位 高电平异步复位 clock 1 输入 时钟 上升沿有效 sinout 8输出输出波形2补码格式2、电路结构DDS模块RTL Viewer累加器ACC模块RTL ViewerROM模块 RTL Viewer三、DDS电路仿真结果1、Quartus时序仿真设定时序分析工具为 Class timing analyzer tool,观察电路最大运行频率 fMAX用二补码格式观察2、Modelsim时序仿真参考时钟fc=20Mhz(1)当freq = 32'b0000_0001_0000_0000_0000_0000_0000_0000;Modelsim仿真波形如图 fo = 78KhzModelsim仿真波形如图 fo = 156Khz(3)当freq = 32'b0000_0100_0000_0000_0000_0000_0000_0000; Modelsim仿真波形如图fo = 312.5Khz(4)当freq = 32'b0000_1000_0000_0000_0000_0000_0000_0000; Modelsim仿真波形如图 fo = 625Khz四、频谱纯度分析20040060080010001200-200-1000100200(原始信号)频率控制字为32'h08000000时间012345678910x 10650100X: 6.25e+005Y: 89.17(幅度-频率曲线)频率控制字为32'h08000000频率/Hz幅度/d B20040060080010001200-200-1000100200(原始信号)频率控制字为32'h04000000时间012345678910x 10650100X: 3.125e+005Y: 89.17(幅度-频率曲线)频率控制字为32'h04000000频率/Hz幅度/d B20040060080010001200-200-1000100200(原始信号)频率控制字为32'h02000000时间012345678910x 106-50050100X: 1.563e+005Y: 89.17(幅度-频率曲线)频率控制字为32'h02000000频率/Hz幅度/d B20040060080010001200-200-1000100200(原始信号)频率控制字为32'h01000000时间012345678910x 106-50050100X: 7.813e+004Y: 89.2(幅度-频率曲线)频率控制字为32'h01000000频率/Hz幅度/d B可见,随着频率控制字的减小,频谱的杂散现象越来越严重。
这是由相位截断所造成的。
五、代码附录1、dds模块(顶层模块)module dds(reset,clk20,freq,sinout);input reset,clk20;input[31:0] freq;output[7:0] sinout;wire[31:0] A;wire[9:0] address;assign address = A[31:22];acc u0(.reset(reset),.clock(clk20),.dataa(freq),.sum(A)); rom u1(.clock(clk20),.address(address),.RD(sinout)); endmodule2、acc模块module acc (reset,clock,dataa,sum);input reset,clock;input[31:0] dataa;reg[31:0] datar;output[31:0] sum;reg[31:0] sum;always @ (posedge clock or posedge reset) beginif(reset) beginsum <= 0;datar <= 0;endelse beginsum <= sum + datar;datar <= dataa;endendendmodule3、Rom模块// module rom, a synchronized rommodule rom(clock , // clockaddress , // read addressRD ); // read datainput clock;input [9 :0] address;output [7 :0] RD;reg [7 :0] RD;always @ (posedge clock)case(address)10'd0 : RD = #1 8'd0 ;//010'd1 : RD = #1 8'd1 ;//110'd2 : RD = #1 8'd2 ;//210'd3 : RD = #1 8'd2 ;//2。
10'd1020 : RD = #1 -8'd3 ;//-310'd1021 : RD = #1 -8'd2 ;//-210'd1022 : RD = #1 -8'd2 ;//-210'd1023 : RD = #1 -8'd1 ;//-1endcaseendmodule其中,rom表的数据用matlab脚本自动生成,代码如下cleardepth=1024; %存储单元数2^10;widths=8; %数据宽度为8位;fidc=fopen('rom.txt','wt'); %以"wt"的形式打开,\n为换行for(x=1:depth)y=round(127*sin(2*pi*(x-1)/1024));if y>=0fprintf(fidc,'10''d%d : RD = #1 8''d%d ;//%d\n',x-1,y,y);elsefprintf(fidc,'10''d%d : RD = #1 -8''d%d ;//%d\n',x-1,-y,y);endendfclose(fidc);*另外,为了做频谱分析,避免数据制式转换带来的麻烦,写ROM的时候,我又在原来的正弦波基础上加了个直流分量。
cleardepth=1024; %存储单元数2^10;widths=8; %数据宽度为8位;fidc=fopen('rom2.txt','wt'); %以"wt"的形式打开,\n为换行for(x=1:depth)y=round(127*sin(2*pi*(x-1)/1024)+128);%加上一个直流分量fprintf(fidc,'10''d%d : RD = #1 8''d%d ;\n',x-1,y);endfclose(fidc);等到要从Modelsim中读取数据再导入到matlab的时候,我又把这个直流分量减去。
clearfs=20000000;W=2048;fid = fopen('data_out.txt','r');for i = 1 :1024;num(i) = fscanf(fid, '%d', 1)-128;endfclose(fid);plot(num);grid ontitle('原始信号')xlabel('时间')N=length(num); %计算波形数据的长度Hamming=window(@hamming,N)'; %加窗函数Hanning窗dataout=num.*Hamming;H=fft(dataout,W); %傅立叶变换magH=abs(H);dBH=20*log10(magH); %幅度换算成dB值f=fs*(1:W)/W;figure%画图xlabel('Frequency of the wave/Hz');ylabel('Amplitude of the wave/V');plot(f(1:W/8),dBH(1:W/8));grid onxlabel(' Hz');ylabel('dB');因为没有找到很好的解决数据制式问题的办法,所以我就用这个办法也能从matlab中再把波形还原出来。