基于FPGA的直接数字

更新时间:2024-06-25 09:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科毕业论文(设计)

题 目: 基于FPGA的直接数字

频率合成器设计

学 院: 自动化工程学院 专 业: 电子信息科学与技术 班 级: 2004级2班 姓 名: ########## 指导教师: ###########

2008年 6 月 2 日

基于FPGA的直接数字频率合成器设计

The Design of Direct Digital Frequency Synthesizer Based on FPGA

摘 要

设计由可编程逻辑阵列FPGA(Field Programmable Gate Array)器件实现直接数字频率的合成器。直接数字频率合成器(Direct Digital Synthesizer)是从相位概念出发直接合成所需波形的一种频率合成技术。由于FPGA的自身特点,能够很容易在FPGA内部生成多个基本模块,从而开发出功能更强大的芯片。本文在对现有DDS技术的学习基础上,在FPGA器件上实现了基于DDS技术的信号源,并通过键盘控制其波形输出所需的控制字。方案利用QuartusⅡ开发工具在ALTERA公司的ACEX1K系列器件上进行了实现。 关键词 信号源 可编程逻辑阵列 直接数字频率合成器(DDS) 控制字

Abstract

The Design is based on FPGA (Field Programmable Gate Array) device to achieve direct digital frequency Synthesis. Direct Digital Synthesizer from the concept of phase synthesis necessary waveform. As the FPGA its own characteristics, can be easily generated in a number of basic internal FPGA module, which developed the more powerful chips. On a large number of investigation of existing research literature,the papers involves the proposed structure of the direct digital frequency synthesizer FPGA design. The Programmer uses the Quartus II development tool for designing the Altera ACEX1K series devices.

Keywords signal generator field programmable gate array(FPGA) DDS control words

青岛大学本科生毕业论文(设计) 目录

目 录

第1章 绪论 ........................................................................................................... 2

1.1 1.2

频率合成技术简介........................................................................................................... 2 课题研究意义 ................................................................................................................... 3

1.3 设计任务 ............................................................................................................................ 4 1.4 设计原理及思路 ................................................................................................................ 4 1.4.1 DDS工作过程 ............................................................................................................ 5 1.4.2 原理框图 ...................................................................................................................... 5

第2章 DDS系统电路的原理及设计 ................................................................... 6

2.1 系统框图 ............................................................................................................................ 6 2.2 具体实现原理分析和说明................................................................................................ 6 2.2.1 核心模块----相位累加器 ............................................................................................ 6 2.2.2 基于FPGA的 ROM查找表 ................................................................................... 12 2.2.3 模数转换 .................................................................................................................... 15 2.2.4 低通滤波输出电路 ................................................................................................... 16 2.3 2.4

软件验证及仿真 ............................................................................................................. 17 其他功能的设计 ............................................................................................................. 18

2.4.1 调频、调幅及调相 ................................................................................................... 18 2.4.2 其余波形的产生 ....................................................................................................... 18

第3章 器件选择及具体硬件电路 .................................................................... 19

3.1 芯片的选择与使用 .......................................................................................................... 19 3.2 设计硬件连接电路图 ...................................................................................................... 20

第4章

4.1 4.2

实验及开发系统 ................................................................................... 21

实验开发系统的选择 .................................................................................................... 21 演示程序及软件仿真 .................................................................................................... 23

4.3 实验过程与结果分析 ...................................................................................................... 25

总 结 ..................................................................................................................... 28 谢 辞 ..................................................................................................................... 29 参考文献 ................................................................................................................. 30

1

青岛大学本科生毕业论文(设计) 绪论

第1章 绪论

1.1 频率合成技术简介

频率合成(Frequeney Synthesis)是指以一个或数个参考频率为基准,在某一频段内,综合产生并输出多个工作频率点的过程。基于这个原理制成的频率源称为频率合成器(Frequeney Synthesizer)。频率合成器被人们喻为众多电子系统的“心脏”,在空间通信、雷达测量、遥测遥控、射电天文、无线电定位、卫星导航和数字通信等先进的电子系统中都需要有一个频率高度稳定的频率合成器。一个性能优良的频率合成器应同时具备输出相位噪声低、频率捷变速度快、输出频率范围宽和捷变频率点数多等特点。频率合成器一般可分为直接式、间接式(锁相式)、直接数字式。

直接式频率合成器是最早出现最先使用的一种频率合成器。它是由一个或多个晶体振荡器经过开关转换、分频、倍频、混频、滤波得到所需要的频率。虽然提出的时间早,最初的方案也显得十分落后,但由于直接模拟合成具有频率捷变速度快,相位噪声低的主要优点而使之在频率合成领域占有重要的地位。这种方法的主要优点是频率转换时间短,理论上可产生任意小的频率间隔。主要缺点有频率范围有限、频率间隔不能太多、采用的大量倍频器、分频器和混频器等,增大了输出信号的噪声以及设备庞大,造价较高等。而且直接模拟频率合成器容易产生过多的杂散分量。随着集成技术和数字技术的发展,直接频率合成器的发展受到了限制。

间接式(锁相式)频率合成器有模拟和数字两种,分别为模拟间接式频率合器和数字间接式频率合成器。模拟间接式频率合成具有多种技术途径,如注入锁相振荡源,它是将一个外来基准信号源注入到被锁振荡器时,被锁振荡器所产生振荡的相位和外来基准信号的相位之差保持恒定,称为注入锁相。注入锁相振荡源,实质上是用频率稳定度高的小功率晶振倍频参考源去稳定高频大功率振荡器的频率。注入锁相的方案在很大程度上受到直接频率合成方案的影响,噪声抑制性能差及不能可靠入锁是其缺点。模拟间接式频率合成还有模拟环路锁相源,取样锁相振荡源等。锁频环频率合成器提供了另一种间接频率合成方法。与PLL不同,FLL频率稳定度取决于鉴频器中的无源色散元件如谐振子或延迟线的相位稳定度。同模拟PLL类似,FLL的频率切换也是靠VCO的粗调电压使频率落入相位的捕捉带内来实现。

数字锁相频率合成器是以数字锁相环为基础构成的锁相频率合成器。应用数字鉴相器和可编程数字分频器是数字锁相频率合成器有别于模拟锁相频率合成器的主要特征。利用可编程分频器,使被合成的频率都有合适的分频比,可得到频率间隔相等的频率。除了鉴相是在参考频率及VCO的分谐波频率下完成外,这一锁相环的工作原理与模拟环路锁相振荡源的工作原理类似。用数字指令改变分频比以完成频率切换。具有鉴频功能的数字鉴相

2

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

Quartus II软件是Altera公司新一代PLD开发软件,适合大规模FPGA的开发,支持Altera最新的FPGA和CPLD,其向导界面如图2.2所示,Quartus II软件用来进行所有新的设计。MAX+PLUS II 软件适用于已经做过的设计,对于新设计不推荐使用。Quartus II软件目前包括一个MAX+PLUS II用户界面设置,用户能够轻松的从MAX+PLUS II软件转换到Quartus II。

Quartus II是本设计所应用的核心工具,提供从设计输入到器件编程的全部功能,用来完成DDS的核心部分的设计与仿真,支持Altera最新的FPGA和CPLD和几乎所有老的器件系列[5]。Quartus II可以产生并识别EDIF网表文件、VHDL网表文件和Verilog HDL网表文件,为其他EDA工具提供了方便的接口;可以在Quartus II集成环境中自动运行其他EDA工具。

利用Quartus II软件的开发流程可概括为以下几步,如图2.3所示: ① 设计输入

设计输入包括使用硬件描述语言HDL、状态图与原理图输入三种方式。HDL设计方式是现今设计大规模数字集成电路的良好形式,除IEEE标准中VHDL与Verilog HDL两种形式外,尚有各自FPGA厂家推出的专用语言,如Quartus下的AHDL。

通常,FPGA厂商软件与第三方软件设有接口,可以把第三方设计文件导入进行处理。如Quartus与Foundation都可以把EDIF网表作为输入网表而直接进行布局布线,布局布线后,可再将生成的相应文件交给第三方进行后续处理。

② 设计综合

综合,就是针对给定的电路实现功能和实现此电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理,获得一个能满足上述要求的电路设计方案。也就是是说,被综合的文件是HDL文件(或相应文件等),综合的依据是逻辑设计的描述和各种约束条件,综合的结果则是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件。对于综合来说,满足要求的方案可能有多个,综合器将产生一个最优的或接近最优的结果。因此,综合的过程也就是设计目标的优化过程,最后获得的结构与综合器的工作性能有关。

③ 仿真验证

从广义上讲,设计验证包括功能与时序仿真和电路验证。仿真是指使用设计软件包对

输入原理图/VHDL代码 设计综合 行为仿真 验证 功能仿真及 波形分析 编程下载/配置 和硬件测试 时序分析 FPGA配置 转换映射

图2.3 Quartus II软件设计开发流程图

8

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

已实现的设计进行完整测试,模拟实际物理环境下的工作情况。前仿真是指仅对逻辑功能进行测试模拟,以了解其实现的功能否满足原设计的要求,仿真过程没有加入时序信息,不涉及具体器件的硬件特性,如延时特性;而在布局布线后,提取有关的器件延迟、连线延时等时序参数,并在此基础上进行的仿真称为后仿真,它是接近真实器件运行的仿真。

④ 设计实现

实现可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能连接的布线通道进行连线,并产生相应文件(如配置文件与相关报告)。

在实现过程中可以进行选项设置。因其支持增量设计,可以使其重复多次布线,且每次布线利用上一次布线信息以使布线更优或达到设计目标。在实现过程中应设置默认配置的下载形式,以使后续位流下载正常。

⑤ 时序分析

在设计实现过程中,在映射后需要对一个设计的实际功能块的延时和估计的布线延时进行时序分析;而在布局布线后,也要对实际布局布线的功能块延时和实际布线延时进行静态时序分析。从某种程序来讲,静态时序分析可以说是整个FPGA设计中最重要的步骤,它允许设计者详尽地分析所有关键路径并得出一个有次序的报告,而且报告中含有其它调试信息,比如每个网络节点的扇出或容性负载等。静态时序分析器可以用来检查设计的逻辑和时序,以便计算各性能,识别可靠的踪迹,检测建立和保持时间的配合,时序分析器不要求用户产生输入激励或测试矢量。

⑥ 下载验证

下载是在功能仿真与时序仿真正确的前提下,将综合后形成的位流下载到具体的FPGA芯片中,也叫芯片配置。FPGA设计有两种配置形式:直接由计算机经过专用下载电缆进行配置;由外围配置芯片进行上电时自动配置。[6]

将位流文件下载到FPGA器件内部后进行实际器件的物理测试即为电路验证,当得到正确的验证结果后就证明了设计的正确性。电路验证对FPGA投片生产具有较大意义。

基本DDS结构的VHDL描述如下:

-- DDSC: DDS主模块 library IEEE;

use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; use ieee.std_logic_arith.all;

entity ddsc is -- DDS主模块

generic( freq_width : integer := 8; -- 输入频率字位宽

adder_width : integer := 8; -- 累加器位宽

romad_width : integer := 8; -- 正弦ROM表地址位宽 rom_d_width : integer := 8); -- 正弦ROM表数据位宽 port( clk: in std_logic; -- DDS合成时钟

9

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

freqin: in std_logic_vector (freq_width-1 downto 0);

-- 频率字输入

ddsout: out std_logic_vector(rom_d_width-1 downto 0));

-- DDS输出

end entity ddsc;

architecture behave of ddsc is

signal acc : std_logic_vector(adder_width-1 downto 0); signal romaddr : std_logic_vector(romad_width-1 downto 0); signal freqw : std_logic_vector(freq_width-1 downto 0); begin process (clk) begin

if(clk'event and clk = '1') then

freqw <= freqin;

-- 频率字输入同步

acc <= acc + freqw;

-- 相位累加器

end if; end process;

romaddr <=acc(adder_width-1 downto 0); -- sinrom

sim_rom : lpm_rom -- LPM_rom调用 generic map (lpm_width => rom_d_width,

lpm_widthad => romad_width,

lpm_address_control => \lpm_outdate => \

lpm_file => \ ) --指向rom文件 PORT MAP ( outclock => clk,address => romaddr,q => ddsout ); end architecture behave;

这段程序中的正弦ROM查找表是采用了Altera的LPM_ROM模块,所以该程序必须在Altera含有EAB(嵌入式阵列块)的器件上使用,如FLEX10K系列,也可以经过适当的转化,在其他FPGA上实现时,使用其他FPGA厂家的ROM模块。

“sin_rom.mif”是正弦ROM中的值,放置幅度-相位的查表值。

在上面的程序中大量使用了generic语句,是为了便于在DDS主模块调用时更改设计,并放大使VHDL程序便于阅读。

在Quartus II 编译环境中,设计的累加器模块如图2.4所示。

10

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

Parameteradder_widthromad_widthrom_d_widthddscclksel[3..0]ddsout[rom_d_width-1..0]ledout[3..0]Value888inst 图2.4 相位累加器模块

下面给出一个实际的正弦信号发生器的源程序,调用了DDS主模块。

-- 简易频率合成器

-- DDS(10bit频率字,1024 points 10bit out) library ieee;

use ieee.std_logic_1164.all; entity ddsall is

port( sysclk : in std_logic; -- 系统时钟

ddsout : out std_logic_vector(9 downto 0);-- DDS输出 fpin : in std_logic_vector(9 downto 0)); end ddsall;

architecture behave of ddsall is

component ddsc is

generic( freq_width : integer := 10; -- 输入频率字位宽

adder_width : integer := 10; -- 累加器位宽

romad_width : integer := 10; -- 正弦ROM表地址位宽 port(clk:in std_logic; -- DDS合成时钟 freqin:in std_logic_vector(freq_width-1 downto 0); -- 频率字输入 ddsout:out std_logic_vector(rom_d_width-1 downto 0));-- DDS输出

end component ddsc;

signal clk : std_logic;

signal freqind : std_logic_vector(9 downto 0); -- 频率字 begin

i_ddsc : ddsc -- 例化DDSC

port map(clk => clk,ddsout => ddsout,freqin => freqind); clk <= sysclk;

process(sysclk)

begin

if(sysclk'event and sysclk = '1') then

freqind(9 downto 0) <= fpin;

11

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

end if; end process; end behave;

2.2.2 基于FPGA的 ROM查找表

FPGA的结构是由基于半定制门陈列的设计思想而得到的。从本质上讲, FPGA是一种比半定制还方便的ASIC 设计技术。FPGA的结构主要分为三部分: 可编程逻辑块、可编程IO 模块、可编程内部连线。

查找表型FPGA的可编程逻辑单元是由功能为查找表的SRAM构成逻辑函数发生器, 实现与其它功能块的可编程连接。在此,选用ACEX1K系列EP1K30TC-144的FPGA作为目标芯片。EP1K30芯片属于Altera公司的ACEX系列,采用0.18微米混合工艺,密度达100 000门,兼容64bit,66MHz的PCI,并支持锁相环电路。ACEX1K采用查找表(LUT)和嵌入式阵列块(EAB)想结合的结合的结构,可用来实现存储器、专用逻辑功能和通用逻辑功能,每个EAB能提供4 096比特的存储空间,每个LE包含四个输入LUT、一个可编程的触发器、进位链和一个层叠链。合理运用进位链能够提高系统运行速度。EP1K30TC-144的最大系统门数为119 000,它有1 728个逻辑宏单元和五个嵌入式阵列块,最大可提供2Kbde ROM/RAM位,因而可完全满足DDS的设计要求。另外Altera还在它们公司的VHDL设计平台Quartus II上提供了LPM ROM核,利用MAX+PLUS综合可以自动编译包含LPM ROM元件的文件, 在ACEX1K的EAB上产生ROM功能。本设计利用LPM ROM核预置正弦查找表在FPGA上[4]。

在Quartus II中自定义ROM模块,如下图2.5所示

图2.5 自定义ROM查找表模块

设定ROM的输入宽度,输出宽度,本设计均为8位。 配置查找表文件sin_rom.mif,如下图2.6所示

12

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

图2.6 ROM查找表mif文件配置 “sin_rom.mif”是正弦ROM中的值,放置幅度-相位的查表值,可由文本形式生成,也可由高级语言如C语言生成[11]。ROM查找表在整个设计中是一个比较重要的部分,为了保证波形的平滑,设计时可将一个周期分为1024个点。但是,点数太多时,用文本方式输入可能有很多困难。因此,应当用C语言描述正弦方程式,最后再将其转化为所需的mif文件。下面是用Turbo C在“sin_rom.mif”文件里产生1024个点的正弦波数据的源程序:

#include #include \main( ) {int i;float s; for(i=0;i<1024;i++)

{

s = sin(atan(1)*8*i/1024);

printf(\} }

把上述C程序编译成程序后,在DOS命令行下执行:

sin > sin_rom.mif;

生成sin_rom.mif文件,再加上下面的头部说明即可,其中sin为产生的DOS下可执行文件名。

具体参数:LPM_WIDTH:输出数据的宽度(1~64任选);LPM_WIDTHAD:输入地址的宽度(1~12任选);LPM_FILE:存储器初始化文件名(.mif或.hex)。本设计中各参数设置如下:

LPM_WIDTH =>8;

13

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

LPM_WIDTHAD=>8;

LPM_OUTDATA=>”UNREGISTERED”;

LPM_ADDRESS_CONTROL=>\;

LPM_FILE=>”sim_rom.mif\

如果位宽为10位,则产生的sin_rom.mif文件如下:

width=10; ---文件中头部说明 depth=1024;

address_radix=dec; data_radix=dec; content begin 0:511; 1:514; 2:517; 3:520; 4:524; 5:527; …… …… ……

1019:495; 1020:498; 1021:502; 1022:505; 1023:508; end;

在Quartus II 编译环境中,产生的ROM查找表模块如图2.7所示

i_romaddress[7..0]clockq[7..0]inst2

图2.7 ROM查找表模块

实际上,DDS还可以产生任意频率的正弦信号发生器,可用来作任意波形发生器,只要改变ROM查找表中的数据就可以实现,程序中介绍了正弦波形实现,直接频率合成技术还有一个很重要的为了让频率发生器产生任意波形,从上面直接数字频率合成的原理可知,其输出波形取决于波形存储器的数据。因此,产生任意波形的方法取决于向该存储器(RAM)提供数据的方法,只需要改变查找表中的数据。目前有以下几种方法[7]。

(1) 表格法

将波形画在小方格纸上,纵坐标按幅度相对值进行二进制量化,横坐标按时间间隔编制地址,然后制成对应的数据表格,按序放入RAM。对经常使用的定了“形”的数据,可将数据固化于ROM或存入非易失性RAM中,以便反复使用。

14

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

(2) 数学方程法

对能用数学方程描述的波形,先将其方程(算法)存入计算机,在使用时输入方程中的有关参数,计算机经过运算,提供波形数据。

(3) 折线法

对于任意波形可以用若干线段来逼近,只要知道每一段的起点和终点的坐标位置(X1Y1和X2Y2)就可以按照下式计算波形各点的数据

Yi=Y1+

(4) 作图法

在计算机显示器上移动光标作图,生成所需波形数据,将次数据送入RAM。 (5) 复制法

将其他仪器(如数字存储示波器,X-Y绘图仪)获得的波形数据通过微机系统总线传输给波形数据存储器。

在自然界有很多无规律的现象,例如,雷电、地震及机器运转时产生的震动等现象都是无规律的,甚至不能再现。为了研究这些问题,就要模拟这些现象的产生。过去只能采用很复杂的方法实现,现在采用任意波形发生器则方便的多。

Y2?Y1(Xi-X1)

X2-X12.2.3 模数转换

输出处理子系统是一模拟系统,用来完成数字频率到模拟频率的转换,通过DAC可将数字量形式的波形幅值转换成所要求的合成频率模拟量形式信号[12]。

考虑到DDS的输出为8位数字量,工程要求的最高输出频率为256KHz,因此可以直接利用DAC0832完成转换。

DAC0832是双列直插式8位D/A转换器。能完成数字量输入到模拟量(电流)输出的转换。图1-1和图1-2分别为DAC0832的引脚图和内部结构图。其主要参数如下:分辨率为8位,转换时间为1μs,满量程误差为±1LSB,参考电压为(+10?/span>-10)V,供电电源为(+5~+15)V,逻辑电平输入与TTL兼容。从图1-1中可见,在DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号 /XFER。

图2.8中,当ILE为高电平,片选信号 /CS 和写信号 /WR1为低电平时,输入寄存器控制信号为1,这种情况下,输入寄存器的输出随输入而变化。此后,当 /WR1由低电平变高时,控制信号成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据DB的变化而变化

对第二级锁存来说,传送控制信号 /XFER 和写信号 /WR2同时为低电平时,二级锁存控制信号为高电平,8位的DAC寄存器的输出随输入而变化,此后,当 /WR2由低电平变高时,控制信号变为低电平,于是将输入寄存器的信息锁存到DAC寄存器中。 图2.8中其余各引脚的功能定义如下:

15

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

(1)、DI7~DI0 :8位的数据输入端,DI7为最高位。 (2)、IOUT1 :模拟电流输出端1,当DAC寄存器中数 据全为1时,输出电流最大,当 DAC寄存器中数据全 为0时,输出电流为0。

(3)、IOUT2 :模拟电流输出端2, IOUT2与IOUT1的和为 一个常数,即IOUT1+IOUT2=常数。

(4)、RFB :反馈电阻引出端,DAC0832内部已经有 反馈电阻,所以 RFB端可以直接接到外部运算放大器 的输出端,这样相当于将一个反馈电阻接在运算放大 器的输出端和输入端之间。

(5)、VREF :参考电压输入端,此端可接一个正电 压,也可接一个负电压,它决定0至255的数字量转 VREF端与D/A内部T形电阻网络相连。

(6)、Vcc :芯片供电电压,范围为(+5~ 15)V。 (7)、AGND :模拟量地,即模拟电路接地端。

(8)、DGND :数字量地。

化出来的模拟量电压值的幅度,VREF范围为(+10~-10)V。 图2.8 DAC0832

2.2.4 低通滤波输出电路

D/A输出后,低通滤波器用于衰减和滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。

滤波器在通带内的平坦程度对我们而言,比其衰减更为重要,而且,巴特沃斯滤波器的元件值也较合乎实际情况,不像绝大多数其他类型滤波器对元件值要求那么苛刻。在截止频率附近,频率响应钝化可能使这些滤波器在要求锐截止的地方不合要求。

二阶巴特沃斯有源低通滤波器设计(图2.9)

正弦波的输出频率小于10KHz,为保证10KHz频带内输出幅度平坦,又要尽可能抑制谐波和高频噪声,综合考虑取

R1 = 1 KΩ,R2 = 1 KΩ,C1 = 100 pF,C = 100pF

图2.9 有源低通滤波器设计图

16

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

2.3 软件验证及仿真

FPGA部分电路是整个电路设计系统中最主要的部分,所以其能否正常工作对整个系统的工作起关键作用。FPGA部分仿真主要是观察波形数据的值的输出是否正确和值输出

图2.10 DDS仿真结果窗口 的频率是否和预置的频率控制字相对应,仿真部分波形如图2.10所示。

在Quartus II的仿真文件.scf里对FPGA部分的电路进行了验证。由于外部有源晶振的频率为4.096MHz,故将.scf的option里的Grid size设置为244.1ns,即周期差不多是4.096MHz,当频率输入字为“0000000001”时,输出二进制数据应该按照“sin_rom.mif”正弦查找表中的数据变化。

仿真在这里是由Quartus II开发工具直接提供(当然也可以使用第三方的专业仿真工具),运行仿真,得到的结果跟理论的结果几乎一样,因此,可以确定整个FPGA部分电路可以正常运行。

Quartus II的设计软件中的.tbl文件是纯文本文件,它包含了.scf文件中的所有信息。.tbl文件的生成很简单,在Quartus II波形仿真结束后,打开.scf文件,然后从“File”菜单中选择“Create Table File”选项,就可产生.tbl文件。.tbl文件的基本结构可分为四大部分,其中第三部分和第四部分是最关键的,可从中获取仿真波形数据,并利用计算机高级语言处理这些数据,将其转换为直观的波形曲线。需要注意的是,每做一次Quartus II波形仿真,都要重新生成一次.tbl文件,以更新.tbl文件内的数据。

从图2.11的波形仿真结果中很难直观地看出DDS输出正弦波的情况。为了便于调试设计电路,我们可以利用计算机高级语言将Quartus II波形仿真结果转换为波形曲线,其中需要借助于Quartus II的表格文件(.tbl文件)。

17

青岛大学本科生毕业论文(设计) 系统电路的原理及设计

2.4 其他功能的设计

2.4.1 调频、调幅及调相

调频是根据调制信号,不断地改变频率控制字,使相位累加器的输入数据中包含有调制信号的信息,并将其准确地反应到DDS输出频率上;调相则是根据调制信号改变相位/幅值查找表的查询地址,使输出波形的相位发生相应的变化;而调幅是直接根据调制信号的大小,改变从ROM中输出的幅值,使得输出信号的包络随调制信号改变。因此,在频率控制字寄存器与相位累加器之间插入一个加法器调频,在相位寄存器与相位/幅值查找表之间插入一个加法器实现调相,而在相位/幅值查找表之后插入一个乘法器实现调幅,如图2.11所示。

频率控制寄存器 调频输入 fclk DAC 相位累加器 相位寄存器 调相输入 相位 幅值查 找表 调幅输入 fout LPF

图2.11 调频、调相及调幅框图 2.4.2 其余波形的产生

相位累加器中的相位累加值随着时间呈线性变化,包络的形状为锯齿波,而频率与设定的频率控制字相对应。因此,把累加器的累加结果直接送往ADC,再经过LPF后即可直接获得锯齿波;把象限求补器的输出送往ADC可得到三角波,频率是频率控制字设定的两倍;把相码的最高位送往ADC,即可得到矩形波,频率也与设定的频率控制字相对应,如图2.12所示。

图2.12 根据DDS特性构建其他波形

18 青岛大学本科生毕业论文(设计) 器件选择及具体硬件电路

第3章 器件选择及具体硬件电路

3.1 芯片的选择与使用

FPGA芯片使用了Altera公司的EP1K30,EP1K30芯片属于Altera公司的ACEX系列,采用0.18微米混合工艺,密度达100 000门,兼容64bit,66MHz的PCI,并支持锁相环电路。ACEX1K采用查找表(LUT)和嵌入式阵列块(EAB)相结合的结合的结构,可用来实现存储器、专用逻辑功能和通用逻辑功能,每个EAB能提供4 096比特的存储空间,每个LE包含四个输入LUT、一个可编程的触发器、进位链和一个层叠链。合理运用进位链能够提高系统运行速度。EP1K30TC-144的最大系统门数为119 000,它有1 728个逻辑宏单元和五个嵌入式阵列块,最大可提供2Kbde ROM/RAM位,是Altera专门为通信、音频处理及其他一些场合应用而推出的专门芯片。

在Quartus II中EP1K30芯片使用报告如图3.1所示。

图3.1 Quartus II中EP1K30芯片使用报告 因为ACEX1K芯片是嵌入式的可编程逻辑器件,与标准门阵列相比,嵌入式门阵列通过在硅片中嵌入逻辑块的方法来减少死区,提高速度。然而,典型的嵌入式宏功能模块通

19

青岛大学本科生毕业论文(设计) 器件选择及具体硬件电路 常是不能改变的,这就限制了设计人员的选择。相反,ACEX1K器件是可编程的,在调试时它允许设计人员全面控制嵌入式宏功能模块和一般的逻辑,可以方便地反复修改设计。 嵌入式阵列和逻辑阵列结合而成的嵌入式门阵列的高性能和高密度特性,使得设计人员可在单个器件中实现一个完整的系统。 ACEX1K器件的配置通常是在系统上电时,通过存储于一个串行PROM中的配置数据或者由系统控制器提供的配置数据来完成。Altera提供EPC1、EPC2、EPC16和EPC1441等配置用的PROM器件,配置数据也能从系统RAM和BitBlaster串行下载电缆或ByteBlasterMV并行下载电缆获得。对于配置过的器件,可以通过重新复位器件、加载新数据的方法实现在线可配置(ICR,In-Circuit Reconfigurability)。由于重新配置要求少于320ms,因此可在系统工作时实时改变配置。 3.2 设计硬件连接电路图 硬件连接系统主要基于杭州康芯电子的GW48-CK型EDA实验开发实验箱,该EDA系统设有通用在系统编程下载ASIC器件,可对各大PLD供应商各种现场配置的CPLD/FPGA器件进行识别、实验或开发。采用的FPGA芯片为ALTERA公司的 EP1K30TC 144-3。 图3.2为模式5下的具体连接电路图: 87654321扬声器滤波1译码器译码器译码器译码器译码器译码器译码器译码器PIO19-PIO16PIO23-PIO20PIO27-PIO24PIO31-PIO28PIO35-PIO32PIO39-PIO36PIO43-PIO40PIO47-PIO44D8D7D6D5D4D3D2D1PIO8SPEAKERGND(拨码8:“滤波1 ON”即连接滤波电容)COMM103657.2K7TL082/2AOUTR725.1K2WR1DAC08329EU2FBIOUT1IOUT2PIO24PIO25PIO26PIO27PIO28PIO29PIO30PIO31765416151413D0D1D2D3D4D5D6D7/CSWR2XFERA GNDD GND111211817310+1251pFC27234TL082/181AIN0VCCPIO15PIO14PIO13PIO12PIO11PIO10PIO9CLOCK0CLOCK2CLOCK5CLOCK9PIO15-PIO8PIO7PIO6PIO5PIO4PIO3PIO2PIO1PIO0FPGA/CPLD目标芯片10K+12238D16D15D14D13D12D11D10D9键8键7键6键5键4键3键2键1实验电路结构图NO.58VREF20VCCVCC-12PIO37LM3114-12+5COMP(拨码5:“比较器ON”即连接PIO37与COMP) 图3.2 DDS连接电路图 20 青岛大学本科生毕业论文(设计) 实验及开发系统

第4章 实验及开发系统

4.1 实验开发系统的选择

为了对设计的整个系统进行验证,需要将VHDL程序与查找表下载到实际的FPGA芯片进行验证,并通过示波器观察波形,以进一步的查看设计能否达到理论要求。

仿真系统主要采用了杭州康芯电子的GW48-CK型EDA实验开发系统,该EDA系统设有通用在系统编程下载ASIC器件,可对各大PLD供应商各种现场配置的CPLD/FPGA器件进行识别、实验或开发。采用的FPGA芯片为ALTERA公司的 EP1K30TC 144-3。

该实验系统具有多种工作模式,选用带有D/A转换和低通滤波电路模式5,此电路结构有较强的功能,主要用于目标器件与外界电路的接口设计实验。主要含以9大模块[13]:

1.普通内部逻辑设计模块。在图的左下角。8个键控信号以高低电平方式向目标芯片输入。此电路结构可完成许多常规的实验项目。

2.RAM/ROM接口。在图左上角,此接口对应于主板上,有1个32脚的DIP座,在上面可以插RAM,也可插ROM(仅GW48-GK/PK系统包含此接口)例如:RAM:628128;ROM:27C020、27C040、29C040等。此32脚座的各引脚与目标器件的连接方式示于图上,是用标准引脚名标注的,如PIO48(第1脚)、PIO10(第2脚)、OE控制为PIO62等等。注意,RAM/ROM的使能CS1由主系统左边的拨码开关“1”控制。但对于不同的RAM或ROM,其各引脚的功能定义不尽一致。

3.VGA视频接口。

4.两个PS/2键盘接口。注意,对于GW48-CK系统,只有1个,连接方式是下方的PS/2口。

5.A/D转换接口。 6.D/A转换接口。 7.LM311接口。 8.单片机接口。 9.RS232通信接口。

注意,结构图NO.5中并不是所有电路模块都可以同时使用,这是因为各模块与目标器件的IO接口有重合。

1.当使用RAM/ROM时,数码管3、4、5、6、7、8共6各数码管不能同时使用,这时,如果有必要使用更多的显示,必须使用以下介绍的扫描显示电路。但RAM/ROM可以与D/A转换同时使用,尽管他们的数据口(PIO24、25、26、27、28、29、30、31)是重合的。这时如果希望将RAM/ROM中的数据输入D/A中,可设定目标器件的PIO24、25、26、27、28、29、30、31端口为高阻态;而如果希望用目标器件FPGA直接控制D/A

21

VCC10KVR1(拨码1:“ROM使能 ON”即将CS1接地)滤波1A/D使能转换结束比较器DS8使能5th使能ROM使能实验及开发系统 628128(PIN30->VCC,PIN3->A14,PIN29->WE,1A18/A19PIN31->A15 )器件,可通过拨码开关禁止。 32VCCPIO48VCC29C040(PIN31->WE,PIN1->A18,PIO102A16A18/A15/WE31PIO92. RAM/ROM数据口 PIN30->A17,PIN3->A15,PIN29->A14)PIO473A14(A15)A17/VCC30PIO494A1229PIO4627040(PIN31->A18,PIN30->A17,PIO14RAM/ROM能与VGAWR/A14同时使用,但不能与PS/2同时使用,这时可以使用以下介绍528PIN3->A15,PIN29->A14)6264PIO39A7A13PIO456A662256的PS/2接口。 PIO38A827PIO1127020(PIN30->A17,PIN3->A15,PIN29->A14)726628128PIO37A5A9PIO1227010(PIN30->VCC,PIN3->A15,P29->A14)3. A/D不能与RAM/ROM同时使用,由于他们有部分端口重合,若使用RAM/ROM,8252764PIO36A4A11PIO139A324PIO62注意,PIO62 同时是键11的信号线27256PIO35OEADC0809必须禁止ADC0809,而当使用时,应该禁止RAM/ROM,如果希望A/D和27512PIO3410A2A1023PIO15VCC11A1同时使用以实现诸如高速采样方面的功能,必须使用含有高速27010RAM/ROMA/D器件的适PIO33CS122RAM/ROM使能27020PIO3212A0D721PIO31GND配板,GWAK30+等型号的适配板。不能与311同时使用,因为在端口PIO3713如27040PIO24D0D620RAM/ROMPIO3014D12708087654321PIO25D519PIO29上,两者重合。 1518拨码开关PIO26D2D4PIO2817所示。ONGND16GNDD34.1PIO27 该模式下的电路连接图如图RAM/ROM青岛大学本科生毕业论文(设计) msb2-12-2EU1750KHZACLOCK2-310ADC08092-42-52-6AIN02-726lsb2-8IN-027EOCIN-1AIN1ADD-A1ADD-B(24)0ADD-C(23)2ALE+5V12ENABLEref(+)16ref(-)STARTVCC4PIO765PIO7713拨码1:ROM/RAM使能,即它们的CS1接地拨码2:默认关闭 向上拨,由厂家通知升级拨码4:8数码管显示开关,默认打开拨码5:应用LM311使能,见下图拨码6:ADC0809转换结束使能,见左图拨码7:ADC0809使能,默认关闭,见左图拨码8:DAC0832输出滤波使能6J6178VGA24 视频接口35101314R76 200R77 200R78 200R(PIO60)G(PIO61)B(PIO63)PS/2上接口GND2120191881514177925226VCC4PIO465PIO4513J7PS/2下接口拨码6PIO33PIO35拨码7PIO34PIO23PIO22PIO21PIO20PIO19PIO18PIO17PIO16PIO32PIO8HS(PIO64)VS(PIO65)GND87654321扬声器(拨码8:“滤波1 ON”即连接滤波电容)滤波1译码器译码器译码器译码器译码器译码器译码器译码器PIO19-PIO16PIO23-PIO20PIO27-PIO24PIO31-PIO28PIO35-PIO32PIO39-PIO36PIO43-PIO40PIO47-PIO44D8D7D6D5D4D3D2D1PIO8SPEAKERCOMM103657.2K7TL082/2AOUTR725.1K2WR1DAC08329EU2FBIOUT1IOUT2PIO24PIO25PIO26PIO27PIO28PIO29PIO30PIO31765416151413D0D1D2D3D4D5D6D7/CSWR2XFERA GNDD GND111211817310+1251pFC27234TL082/181AIN0VCCPIO15PIO14PIO13PIO12PIO11PIO10PIO9CLOCK0CLOCK2CLOCK5CLOCK9PIO15-PIO8PIO7PIO6PIO5PIO4PIO3PIO2PIO1PIO010K+12238D16D15D14D13D12D11D10D9FPGA/CPLD目标芯片键8键7键6键5键4键3键2键1实验电路结构图NO.58VREF20VCCVCC-12PIO37LM3114-12+5COMP(拨码5:“比较器ON”即连接PIO37与COMP) 图 4.1 实验电路结构图NO.5 22

青岛大学本科生毕业论文(设计) 实验及开发系统

4.2 演示程序及软件仿真

演示程序为4位频率字输入,采样点256个,8位输出通过D/A转换和低通滤波之后采用示波器观察正弦波形,4位频率字通过键4、3、2、1以16进制的形式输入,由于DAC0832以及低通滤波电路已经在实验开发系统的内部连线,只需要打开D/A转化的电源,将示波器输入端接在D/A转换器的输出端即可。

下面为演示程序的VHDL描述代码:

library IEEE; -- DDSC: DDS主模块 use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; use ieee.std_logic_arith.all;

entity ddsc is -- DDS主模块 generic(adder_width : integer := 8; -- 累加器位宽

romad_width : integer := 8; -- 正弦ROM表地址位宽 rom_d_width : integer := 8); -- 正弦ROM表数据位宽 port( clk : in std_logic;

sel : in std_logic_vector(3 downto 0);

ddsout : out std_logic_vector(rom_d_width-1 downto 0); ledout:out std_logic_vector(3 downto 0) ); end entity ddsc;

architecture behave of ddsc is component i_rom PORT

( address

clock q

: in std_logic_vector (7 downto 0); : in std_logic ;

: out std_logic_vector (7 downto 0));

end component i_rom;

signal acc : std_logic_vector(adder_width-1 downto 0); signal romaddr : std_logic_vector(romad_width-1 downto 0); signal selout:std_logic_vector(3 downto 0); begin selout<=sel; process (clk) begin

if(clk'event and clk = '1') then acc <= acc + sel; -- 相位累加器

23

青岛大学本科生毕业论文(设计) 实验及开发系统

end if; end process;

u1:i_rom port map ( clock => clk,address => romaddr,q => ddsout ); ledout<=selout; end architecture behave;

其中正弦查找表i_rom.mif按照2.2.2节介绍的方法制作,源代码如下: width=8; depth=256; address_radix=dec; data_radix=dec; content begin

0:127;1:130;2:133;3:136;4:139;5:143;6:146;7:149;8:152;9:155;10:158;11:161;12:164; 13:167;14:170;15:173;16:176;17:179;18:182;19:184;20:187;21:190;22:193;23:195; 24:198;25:200;26:203;27:205;28:208;29:210;30:213;31:215;32:217;33:219;34:221; 35:224;36:226;37:228;38:229;39:231;40:233;41:235;42:236;43:238;44:239;45:241; 46:242;47:244;48:245;49:246;50:247;51:248;52:249;53:250;54:251;55:251;56:252; 57:253;58:253;59:254;60:254;61:254;62:254;63:254;64:255;65:254;66:254;67:254; 68:254;69:254;70:253;71:253;72:252;73:251;74:251;75:250;76:249;77:248;78:247; 79:246;80:245;81:244;82:242;83:241;84:239;85:238;86:236;87:235;88:233;89:231; 90:229;91:228;92:226;93:224;94:221;95:219;96:217;97:215;98:213;99:210;100:208; 101:205;102:203;103:200;104:198;105:195;106:193;107:190;108:187;109:184; 110:182;111:179;112:176;113:173;114:170;115:167;116:164;117:161;118:158; 119:155;120:152;121:149;122:146;123:143;124:139;125:136;126:133;127:130; 128:127;129:124;130:121;131:118;132:115;133:111;134:108;135:105;136:102; 137:99;138:96;139:93;140:90;141:87;142:84;143:81;144:78;145:75;146:72;147:70; 148:67;149:64;150:61;151:59;152:56;153:54;154:51;155:49;156:46;157:44;158:41; 159:39;160:37;161:35;162:33;163:30;164:28;165:26;166:25;167:23;168:21;169:19; 170:18;171:16;172:15;173:13;174:12;175:10;176:9;177:8;178:7;179:6;180:5;181:4; 182:3;183:3;184:2;185:1;186:1;187:0;188:0;189:0;190:0;191:0;192:0;193:0;194:0; 195:0;196:0;197:0;198:1;199:1;200:2;201:3;202:3;203:4;204:5;205:6;206:7;207:8; 208:9;209:10;210:12;211:13;212:15;213:16;214:18;215:19;216:21;217:23;218:25; 219:26;220:28;221:30;222:33;223:35;224:37;225:39;226:41;227:44;228:46;229:49; 230:51;231:54;232:56;233:59;234:61;235:64;236:67;237:70;238:72;239:75;240:78; 241:81;242:84;243:87;244:90;245:93;246:96;247:99;248:102;249:105;250:108; 251:111;252:115;253:118;254:121;255:124; end;

romaddr <=acc(adder_width-1 downto 0); -- sinrom

24

青岛大学本科生毕业论文(设计) 实验及开发系统

程序中关键词width表示ROM数据位宽,depth设置ROM数据的深度,即8位数据的数量。程序中设置的256等效于8位地址线宽度,address_radix=dec和data_radix=dec表示设置地址的数据表达格式都是十进制。注意,程序中“content begin”下所示的数据格式是为了节省篇幅,实用中应该使每一数据组(如0:127;)占一行。

4.3 实验过程与结果分析

按照2.2.1节介绍的设计流程,首先建立一个工程文件,然后将上面的原理程序输入,在Quartus II软件中进行编译以及综合。

然后为在实验系统上验证设计的正确性,完成硬件测试,首先将引脚锁定,目标器件是EP1K30,选择实验电路模式5,用键1~4控制频率字输入4位sel ,数码管8显示输入的频率控制字;clk接clock0;输出数字频率信号ddsout接8位D/A转换器。通过短路帽选择clock0接16384Hz信号。

现在根据以上确定的实验模式锁定多路选择器在目标芯片中的具体引脚(见表4.1)及在Quartus II中锁定(图4.2)

管脚 clk ddsout0 ddsout1 ddsout2 ddsout3 ddsout4 ddsout5 ddsout6 ddsout7 sel0 sel1 sel2 sel3 Ledout3 Ledout2 Ledout1 Ledout0 表4.1 芯片EP1K30引脚锁定表 引脚名 clock0 PIO24 PIO25 PIO26 PIO27 PIO28 PIO29 PIO30 PIO31 PIO0 PIO1 PIO2 PIO3 PIO47 PIO46 PIO45 PIO44 引脚号 126 41 42 65 67 68 69 70 72 8 9 10 12 96 95 92 91

25

青岛大学本科生毕业论文(设计) 实验及开发系统

图4.2 quartus中锁定引脚 特别需要注意,将引脚锁定之后,还需要对文件运行一次编译器,以便将引脚信息写入下载文件中。

在将程序下载器件之前,为了测试项目的正确性,要进行逻辑仿真,即首先用Quartus II软件模拟硬件的工作过程,建立波形文件之后,运行仿真器,观察波形图。

图4.3 数字频率输出的仿真结果 26

青岛大学本科生毕业论文(设计) 实验及开发系统

从波形仿真图4.3中看到,当输入频率字为0001(二进制)时,输出数字频率是按照正弦查找表i_rom.mif中的数字“FF-FE-FC-??”变化,验证频率合成器的理论设计是正确的,下面将程序下载到器件中,通过实际电路进行验证。

选择菜单中的“Programmer”选项,在菜单的“Hardware Setup”选项选择计算机的并口下载方式ByteBlaster(MV),“MV”是混合电压的意思,主要是对ALTERA的各类芯片电压(如5V、2.5V、1.8V)的FPGA/CPLD都能由此下载。

完成下载配置后,单击“Start”按钮,向EP1K30芯片下载配置文件,如果连线无误,出现如图4.4的提示窗口,表明下载成功。

图4.4 EP1K30芯片编程下载窗口 下载后,打开系统左上侧的+/-12V开关(D/A输出需要),将示波器的探头接于系统左下角的两个挂钩处,最右侧的时钟选择,用短路帽接插16384Hz处,选择模式5。

由输出与频率控制字K关系fout=K·fclk /2N ,调整时钟频率及频率控制字理论上即可输出任意频率的波形。本次设计频率控制字最大可为15,当时钟频率为5Mhz时,最大即可产生频率为300KHz的输出,且不失真。当输入时钟频率小至256Hz时,可从示波器中观察到相位累加时变换的台阶。因此,设计是符合要求的。

本仿真实验过程中,由于采用了256个采样点,及实验开发系统上的D/A转换芯片DAC0832的输入只有8位,且最高转换速度只有1MHz,为了避免波形失真及根据实际 需要,可采用1024个采样点或更高,D/A转换芯片可采用更高位数(如MAXIM公司的MAX507), 能够产生失真较小及频率更高的输出波形。

27

总 结

总 结

本设计研究了有关利用FPGA实现DDS的方法,综合运用了电子领域的多方面知识主要内容如下:

(1)进一步熟悉了硬件描述语言VHDL的语句与语法规则及应用, 掌握了宏函数的自定义及编辑。利用Quartus II软件在Altera ACEX1K芯片上进行了逻辑综合、仿真和硬件实现,证实了设计的正确性和可行性。

(2)通过对有关DDS现有技术的大量文献的学习,打下了设计DDS的理论基础,根据理论研究,确定了DDS的设计目标,以Altera Quartus II上的宏函数LPM_ROM进行了累加器的VHDL设计,得到了预期的结果。

(3)掌握低通滤波器的实现方法和模拟低通电路器件参数的计算, 根据工程需要选择合适的D/A转换器件并了解到了其具体使用方法。

(4)进一步锻炼了对实验数据进行分析及解决实际问题的能力。 本设计的不足之处及以后的研究方向:

本设计中没有深入地分析输出频率和幅度的关系,所以本设计还不完整,有关DDS的理论研究和工程技术可以说已经成熟了,但是正确地去理解现有的理论和技术而且导入到实践上也是个大的课题,这些都是需要进一步完成的工作。

28

谢 辞

谢 辞

首先衷心感谢我的指导教师章平副教授。章老师以其严谨的治学态度深深地影响着我。他深厚的理论功底和丰富的实践经验对我课题的完成起到了至关重要的作用,同时对我今后进一步地学习和工作来说,这也是一笔难得的财富。在此,特向章老师致以深深的敬意和由衷的感谢!

感谢学院的老师和领导,正是你们的辛勤耕耘,使我们的基础知识又一次得到了巩固,使理论能与实践相结合,不仅完成了学业,充实了自己,也更有利于我以后工作的发展!

感谢逄金波同学,在硬件调试中给予很大帮助。

感谢我远在家乡的父母与亲人,他们给予作者的支持、鼓励和期待将永远伴随着我满怀信心地去迎接生命中的每一次挑战!

最后,感谢参与论文评审和答辩的各位老师,能在繁忙的工作中抽出宝贵的时间对作者的论文进行评阅和审议。再一次感谢所有关心、支持和帮助过作者学习和生活的老师、亲人和朋友!

29

参考文献

参考文献

1.周立功,SOPC嵌入式系统基础教程,北京,北京航空航天大学出版社,2006 2.王建和、段传华、洪海丽,采用DDS技术实现的频率合成信号发生器,1997 3.赵国勋、徐安,基于直接数字频率合成的正弦波发生器,自动化与仪表,2000,15页 4.潘松、黄继业,EDA实用技术教程,北京,科学出版社,2002 5.徐志军,CPLD/FPGA的开发与应用,北京,电子工业出版社,2002 6.潘松、黄继业,SOPC技术实用教程,北京,清华大学出版社,2005 7.陈尚松、雷加,郭庆,电子测量与仪器,北京,电子工业出版社,2005 8.褚振勇,FPGA设计及使用,西安,西安电子科技大学出版社,2002 9.周惠潮,常用电子元件及典型应用,北京,电子工业出版社,2005 10.何希才,新型集成电路及其应用实践,北京,科学出版社,2002

11.李光飞,单片机C程序设计实例指导,北京,北京航空航天大学出版社,2005 12.马明建,数据采集与处理技术,西安,西安交通大学出版社,1998 13.黄智伟,FPGA系统设计与实践,北京,电子工业出版社,2005

14.杨恒,零起点学单片机与CPLD/FPGA,北京,北京航空航天大学出版社,2007 15.黄智伟,全国大学生电子设计竞赛训练教程,北京,电子工业出版社,2005

16.余勇,郑小林,基于FPGA的DDS正弦信号发生器的设计,电子器件,2005(9):596-599

30

本文来源:https://www.bwwdw.com/article/37x3.html

Top