1、- 1 -D甲 函数信号发生器制作鲁东大学 王 震 崔振萍 高 洁专家点评:该项目运用了基于 Nios嵌入式处理器的 SOPC 技术,由 NIOS 处理器来控制 FPGA 内部的信号发生部分实现各项功能,设计了函数信号发生器。理论分析完整,测试方案正确,测试数据充分。其特点是充分利用了 EDA 开发工具与 FPGA 内部资源,提高了系统的稳定性和抗干扰能力,得到很好的结果。山东大学(威海) 郑亚民副教授2008/9/24摘要:本设计运用了基于 Nios嵌入式处理器的 SOPC 技术,设计完成了函数信号发生器系统。本系统的 DDS 信号发生部分由 FPGA 最小系统加 DAC904 构成,控制与
2、信息显示部分由单片机最小系统加键盘,液晶显示器构成。单片机接受键盘指令通过串口将控制字,发送到 FPGA 内部的 NIOSII 处理器,由 NIOS 处理器来控制 FPGA 内部的信号发生部分实现各项功能。本系统充分利用了 EDA 开发工具与 FPGA 内部资源,提高了系统的稳定性和抗干扰能力,得到很好的输出效果。 关键字:Nios;SOPC;FPGA; DAC904;EDA;LCD。- 2 -The production of the function signal generatorAbstract:The system uses the SOPC technology based on
3、Embedded Prosesser of Niosas a control on topics designed to function signal generator system , the DDS signal of the system is consisted of the FPGA smallest system and DAC904. the control and information display system include MCU smallest system , keyboard, LCD display. MCU accepts keyword comman
4、ds and send the control word through the serial port to the internal NIOSII processor in FPGA. NIOSII controls the internal signal of FPGA to realize each function. This system has used the EDA development kit and the FPGA interior resources fully, enhanced systems stability and antijamming ability,
5、 obtains good output effect.Keywords: Nios;SOPC;FPGA; DAC904;EDA;LCD。目 录一 整体方案论证与确定4二 理论分析与计算5三 主要功能电路设计6四 系统软件设计12五 测试结果与分析13六 结论15附录16参考文献22一 整体方案论证与确定方案一:采用单片机控制合成各种波形此方案硬件电路简单,所用器件少。波形的选择,生成及频率的控制均由单片机编程实现。此法产生的波形的频率范围,步进值取决于所采用的每个周期的输出点数及单片机执行指令的时间。此方案实现各种波形相对容易,在低频区基本上能实现要求的功能,但是,控制较复杂,精度不易满足,
6、生成波形频率范围小,特别是难以生成高频波形。方案二:采用 DDS 技术直接合成各种波形此方案基于单片机的方式,以单片机为控制中心,通过对专用的 DDS 芯片如 AD9854 编程,产生所需要的各种波形(原理框图见 A-1).该方案简单,易于实现。- 3 -LCD 显示4*4 键盘MCU AD985X晶振LPF(A-1)方案三:采用基于单片机和 FPGA 的片上可编程系统方案此方案将相应的正弦波的波形数据及三角波、方波的函数表格存储在存储器 EPROM 中,通过单片机控制选择波形,频率及幅度等参数,从存储器中读取相应的函数表格中的数据或正弦波的波形数据,若要显示锯齿波可直接从累加器的输出端取出波
7、形数据,将数据经过处理再送至 DAC904,再经过 DAC904 进行数模转化,从而可以得到所要求的各种波形(系统整体框图见 A-2)。此方法利用了单片机在软件控制设计方面的通用性和 FPGA 在逻辑设计上的优势,能够得到较高的频率分辨率,产生信号的频率和幅度的稳定性高,可以得到较宽频率范围内的波形,很方便的与计算机接口,且调试方便,简化了控制机及接口,有利于提高集成度,可靠性和灵活性。(A-2)综合考虑以上三种方案的优缺点以及题目的基本要求和发挥部分要求,我们选用第三种方案,即采用基于单片机和 FPGA 的片上可编程系统方案。这种设计充分利用了 FPGA的资源,减少了 CPU 与外设的的接口
8、,在很大程度上提高了系统的速度、可靠性。二 理论分析与计算1. 数字频率合成技术原理数字频率合成由相位累加器、存储在 ROM 中的相关波形数据及函数表格、DAC904和低通滤波器所组成的部分实现。参考时钟是一个稳定的晶振,相位累加器类似于计数器,在每个时钟脉冲输入时,它就输出一个相位增量(框图如 B-1),即把频率控制字 FTW 的数据变成相位抽样来确定输出频率。LCD 显示4*4 键盘MCUDAC904FPGA 运放、LPF- 4 -(B-1) 相位累加器相位增量随指令 FTW 的不同而不同,用在数据寻址时,查表就把存储的抽样值转换成为要产生波形幅度的数字量。DAC 把数字量变为模拟量,低通
9、滤波器平滑栟榈吊带外杂散后,得到所需波形。2分析计算根据题目的基本要求,频率范围为 100HZ100KHZ,为使其频率范围扩展为1HZ1MHZ。在 1HZ1KHZ 范围内步进间隔为 1HZ;在 1KHZ1MHZ 范围内步进间隔为100HZ。根据:输出频率: FTWmclkoutf2最小频率分辨率: minclkf其中 m 为相位累加器的位数,FTW 为频率控制字, 为时钟频率,输出信号频率主要fclk取决于频率控制字 FTW.当 N 增大时, 可以不断增加,综合考虑 Nquist 采样定理,fout最高输出频率应小于 .根据实验所得,实际工作频率应小于 。2fout 3fclk的取值受 D/A
10、 转换速率的限制,由于数模转换部分采用的是高速 DAC904,其转换fclk速率约为 160MHZ。综合考虑后,选取基准频率为 160MHZ,。选取相位累加器位数为 m 为 32,频率分辨率为037259.*6.12328inclkf这样可以经过键盘输入实现 1HZ 步进和 100HZ 步进。三 主要功能电路设计- 5 -1 单片机控制模块本设计中,采用的是 ADUC845 最小系统板,其基本电路如图 C-1-1 所示。中心部分是单片机 ADUC845,它有五个扩展的 I/O 口,外部 RAM 存储空间是 00007FFF。自带 A/D,D/A,功能强大。1 2 3 4 5 6ABCD6543
11、21DCBATitle Number RevisionSizeCDate: 14-Sep-208 Shet of File: E:208串207串串串aduc845串串串aduc845.dbDrawn By:Y132768HZR11KR21K VC+C1020uF C1104Vin1 GND2Vout 3U27805AVDGN GNDVCGND 12J3P1.0/AIN11 P1./I22 P1.2/AIN3/REFIN2+3 P1.3/I4/EFI2-4 AVD5GN6 REFI-7 EFIN+8 P1.4/AI59 P1.5/IN610P1.6/AI7/IEXC11 P1.7/IN8/IE
12、212AINCOM/DAC13DAC14RESET15P3.0/RXD16P3.1/T17P3.2/INT018P3./IT119DVD20P3.4/T02P3.6/WR24SCLOCK26P2.0/SCLOCK(SPI) 28GN21P3.5/T123P3.7/D25 SDAT 27P2.1/MOSI 29P2./IS 30P2.3/S.T2 31XTAL1 32TL23DVD34GN35P2.4/T2EX36P2.5/PWM0 37P2.6/P1 38P2.7/PWMCLK39EA40PSEN41ALE42P0./D043P0.1/A14P0.2/D245P0.3/A346DGND47V4
13、8P0.4/AD449P0.5/550P0.6/AD651P0.7/752 A1*D2IN407 Vin1GND2Vout 3U17809+12V +9V+C120UF/35V C3104/35V +C220UF/35V C4104/35V R3470 11 2 2LED1GREN11 2 2L1BEAD C12104P0P01P02P03P04P05P06P07P20P21P2P23P24P25P26P27SDATSCLKWRDT10GNDVCINT1I0TXDRESETDACALEPSNAGNDP10P1P12P13P14P15P16P17AINCOMREFIN-FI+1122S1REST
14、VCC18104 C19104C7104C8104C5104C9104C20104321 84U10ALM358567U10BLM358+9V C6104L2BEADV+V-VOR651 C21104DACDACOUTA02 13 A24 35 A4657 A68 79B0 181 17B2 163 15B4 145 13B6 127 1E19DIR1U174LS245C1+1 1-3 C2+4 2-5 V+2V- 6T1IN1 T2I10R1OUT12 2T9 T1OUT14T2T7R1IN132I 8C16GND15U14MAX232TXDRTXERE123456789J14232 POR
15、TC2104 C14104C13104 C16104VCC15104X12 X2 3VC21GND4RST5 IO6SCLK7 18 U18DS1302BT1BATERY 3.6VX1Y232768HZC2410PFC2510PFX1X2VCD5IN407D4IN407SCLK-1302RST-1302 SDAT-1302X2123J151302 INTERFACERST-1302SCLK-1302SDAT-1302P0P01P02P03P04P05P06P07RDD01D23D45D67D01D23D45D67ALE OC11 1D2 233D4 45 5D6 67 7D8891Q192 1
16、83Q174 165Q156 147Q138 12U1274HC573A01A23A45A67A01A23A45A67 D01D23D45D67A010 19 A28 37A46 55 A64 73 A825924A1021 123A122 1326A141 CS20WE27OE2D0 11 12D2 133 15D4 165 17D6 187 19VC28GND14U136256VCWRD6256 RAM:00H7FHY01Y23Y45Y67P27A12A3ADRES: 800HADRES: 802HES: 803ES: 801ADRES: 804HES: 805ADRES: 806HES:
17、 807A23B2 C21D20G118 2190 11 22 33 44 55 66 77 88 99 101011 131214131514161517U474LS154123U3A74HC020 Y89Y101Y1213Y1415808H80980AH80B80CH80D80EH80F12345678910112J4Y5-Y151G1 A12 1Y11824 1216A36 1Y31448 14122G19B11 2Y19213 227B315 2Y35417 243U874ls2412345678J5Y0INPUT PORT:800HOC1 LK1 1D3 1Q224 2 53D7 3
18、Q648 4 95D13 5Q12614 6 157D17 7Q16818 8 19U574ls374D01D23D45D67OC1 LK1 1D3 1Q224 2 53D7 3Q648 4 95D13 5Q12614 6 157D17 7Q16818 8 19U674ls374D01D23D45D6712345678J6 12345678J8OUTPUT PORT:802H OUTPUT PORT:803H8910U3C74HC02456U3B74HC02D01D23D45D67WRWRY2 Y3 1G1A12 1Y11824 1216A36 1Y31448 14122G19B11 2Y19
19、213 227B315 2Y35417 243U974ls2412345678J7Y1INPUT PORT:801HD01D23D45D671 2U15A7404 R7470 1 122LED2GRENVC3 4U15B7404 R8470 LED3GREN5 6U15C7404 R9470 LED4GREN89U15D7404 R10470 LED5GREN101U15E7404 R1470 LED6GREN1213U15F7404 R12470 LED7GREN1 2U16A7404 11 2 2R13470 LED8GREN3 4U16B7404 R14470 LED9GRENLED0L
20、ED1LED2LED3LED4LED5LED6LED712345678J16LEDLED01LED23LED45LED671243J13SW1 23 45 67 89 101 121314151617181920212232425262728293031323 34353637383940J17MCU PINVCP0P01P02P03P04P05P06P07ALEPSNP20P21P2P23P24P25P26P27GNDXTAL12XTAL12RDWT10INT0I1RXDESTP10P1P12P13P14P15P16P17 1 23 45 67 89 101 1213141516171819
21、20212232425262728293031323 34353637383940J18AD/A PORTAVDGNREFIN+FI-AINCOMDACOUTV-V+O+ANODE2 -CATHODE3 REF1U17TL431C2610UF C17104AVD C23104VREF-2.5V12J21VREF2.5VVREF-2.5VAGNDOC1 LK1 1D3 1Q224 2 53D7 3Q648 4 95D13 5Q12614 6 157D17 7Q16818 8 19U774ls374D01D23D45D6712345678J9OUTPUT PORT:804H11213U3D74HC
22、02WRY412345678910112J1DAT BUS1WRDVCGNDAVD12J29v12J112V11 2 2D1IN407 +9VD3IN407AVDGNREFIN+FI-AINCOMDACOUTV-V+ODGNDDVDVCDVDGNP30P31P32P3 P34P35P36P37AIN1I2AIN3I4AIN5I6AIN7I8P10P1P12P13P14P15P16P17AIN1I2AIN3I4AIN5I6AIN7I8P10P1P12P13P14P15P16P17AIN1I2AIN3I4AIN5I6AIN7I8A89A101A1213A1415P20P21P2P23P24P25P
23、26P27A89A101A1213A14A15A15D01D23D45D67123J19I2C SCLKSDATGND123J20SERIAL PORTRXDTGNDVC 12345678910112J12DAT BUS2WRDD01D23D45D67VCGN GNOC11 1D2 233D4 45 5D6 67 7D8891Q192 183Q174 165Q156 147Q138 12U1974HC573P20P21P2P23P24P25P26P27A1617A1819A2021A223ALEGND1 23 45 67 89 101 12131415161718192021223242526
24、J10ADRES BUS :MAX 16MVC GNDA01A23A45A67A89A101 A1213A1415P20P21P2P23 P24P25P26P27A1617A1819A2021A223123U20A74HC02 456U20B74HC02 89 10U20C74HC02 112 13U20D74HC02RD GND RD GNDR4470RXD(C-1-1)单片机最小系统本次设计中用单片机控制 CH451 驱动键盘,通过软件编程控制按键实现波形的切换,频率以及幅度的步进并用 LCD 显示,而且本次设计中,还通过 CH451 驱动 8 位 LED 显示DS1302 的初始化时间并
25、进行计数显示,还可以通过按键对时间进行设置。键盘的控制电路如图 C-1-2 所示:- 6 -1 2 3 4 5 6ABCD654321DCBA TitleNumber RevisionSizeBDate: 14-Sep-208 Shet of File: E:ch451串207串串.DB Drawn By:R12KE1D2DP3C4G5M46B7M3829F10A1M112 LED4P1E1D2DP3C4G5M46B7M3829F10A1M112 LED4P211 2 2LED1 K1 K5 K9 K13K2 K6 K10 K14K3 K7 K1 K15K4 K8 K12 K16R92K R1
26、32KR82KR72KSE71 VC2 OUT3LOD4 DIN5 CLK6DG77 DG68 DG59DG410 DG31 DG212DG113 DG0 14GND15RST16NC 17SE0 18SE1 19SE2 20SE3 21SE4 2SE5 23SE6 24U1CH451L DG0DG1DG2DG3DG0 DG1 DG2 DG3SEG0SEG1SEG2SEG3R320R420R520R620R1020R120R1220R220SEG0SEG1SEG2SEG3SEG4SEG5SEG6SEG7SEG0 SEG1SEG2SEG3SEG4SEG5SEG6SEG7DG0DG1DG2DG3D
27、G4DG5DG6DG7DG0 DG1DG2DG3SEG0 SEG1SEG2SEG3SEG4SEG5SEG6SEG7DG4 DG5DG6DG7123456789101121314151617181920J2LCD ScrenW1 30KR/WRSECS1CS2C3104VoutVC1 23 45 67 89 101 1213 1415 1617 1819 2021 223 2425 2627 2829 3031 323 3435 3637 3839 4041 4243 445 4647 4849 5051 5253 545 5657 5859 6061 6263 6465 667 6869 70
28、71 7273 7475 767 7879 80J1HEADER 40*2VCP0P01P02P03P04P05P06P07Y10Y1VC/RST/RSTVCRSTINT0P17P16P15RSTY8Y9Y10P15 P16P17INT0VC VCGND GNDA0/Q0A1/Q156GND891011213VCU274F04Y1Y12 VCGNDY8Y9Y12P0P01P02P03P04P05P06P07(C-1-2)键盘控制电路2 FPGA 控制模块(1)基本构成图 C-2 是将各功能模块集成到一个 FPGA 器件上的原理图,它由波形选择器(图 c-2-1),相位累加器(freadd)(图
29、 B-1) ,波形发生器,幅度调制器(图 c-2-2)构成。(c-2-1) 波形选择器波选择器用来进行波形选择,控制输出波形的形状,其中 data1-4 分别是正弦、方波,三角波,锯齿波的数据输入,en1-en4 分别位它们的使能端,通过使能端的值,控制输出那种波形。(c-2-2) 幅度调制器- 7 -幅度调节器如上图所示用来实现对输出信号的幅度进行调节,通过控制信号 fudu_in 的值的不同来对波形选择器输出的波形的幅度进行调节,fudu_in 的输入范围为 0-50,可以实现 0.1V 步进的幅度调节。(2)各波形的产生原理针对不同的波形,采用不同的方法进行生成。针对正弦波对幅度为 1
30、的正弦波的一个周期进行 4096 点采样,结合 DAC904 的 AD 编码特点,利用 Matlab 计算得到每一点对应的幅度值,根据图 c-2-3 得其基本计算公式为:32nFy)((c-2-3)并将其转化为符合 DAC904 的 AD 编码规则的 14 位数字信号存入 ROM 中,将相位累加器输出的高 12 位作为查询地址, (图 c-2-4)(c-2-4)将查询结果输出到波形选择器的 data1 端。该数据经 DA 转换后可生成连续的正弦波。方波的产生原理与正弦波类似,同样可以通过查表的方式产生,由于方波只有两个幅度值所以表中只存放 2 个 14 位的数据,直接利用相位累加器的最高位作为
31、查询地址即可。(图 c-2-5) 。- 8 -(c-2-5)由于锯齿波的波形是一个单调递增的循环累加过程,相位累加器的输出同样也是单调递增循环累加的过程,因此不用查表可以直接将相位累加器的高 14 位作为锯齿波的幅度值输出到波形选择器的 data4 端。三角波在半周期内单调递增,在半周期内单调递减,因此可以将相位累加器的最高位作为方向标志位,当最高位为 0 是可以将相位累加器的 3017 位(记为 xiangwei30:17)作为三角波的半个周期内的幅度输出,当最高位为 1,用 3fff-xiangwei30:17作为三角波的幅度输出。整个过程可以用简单的 Verilog 语言描述(图 c-2
32、-6) 。(c-2-6)3 D/A 转换模块本次设计中选用的是 BB 公司生产的 DAC904,该 DAC 为互补电流输出型 DAC,具有 14 bit 分辨率 , 165MSBS 的转换速率 ,含有内部基准 ,具有满量程输出调节功能。如图 C-3-1 所示 ,数据线上的数据在时钟的下降沿打入 DAC 的输出电流寄存器 ,输出电流在 1ns 后变化为给定值。R 为满量程调节电阻。定义 FSB 总输出电流 ,根据 IIouttoutfs21DAC904 器件手册 。RIFSBoutfs24.13, 。Code 为 DAC 的输出电流寄存器的值。16841CdeIoutfst)634(2Codeo
33、utfst- 9 -(C-3-1)DAC904由于 DAC904 是电流型输出的 DA 芯片因此需要接入负载将电流转化为电压,Iout1 与Iout2 的最大输出电流为 20mA,通过两个 25 欧姆的负载电阻 R14,R15 后,V1 与 V2 之间最大会产生 1v 的电压输出。由于 DAC904 的参考电压位 1.24V 所以不能加过高的电阻。为了满足题目要求的峰峰值 5V 的输出需要加入后级放大电路。4 放大滤波模块放大滤波的电路如图 C-4-1 所示,电阻 R14,R15 把 DAC 输出的电流信号转化为电压信号,并作为放大器的差分输入,经差分放大器放大 A 倍后输出需要的幅值,其中A
34、=R11/R12。再经过 型低通滤波(LPF)即可得到所需要的信号波形。(C-4-1)在本次设计中,采用的运放是 OPA690,差分输入,R12=200 ,R11=1K ,所以理论上,运放的放大倍数应为:A=R11/R12=5。当 DAC904 输入全为 1 的时候,它的正端输出 20mA 电流,经 R14 后转化为 0.5V 电压作为运放的负端输入,此时运放的正端输入为零,所经差分放大后输出-2.5V 电压,当 DAC904 输入为 10000000000000 的时候,它的正端和负端均输出 10mA,所以此时运放的差分输入为 0V,输出也为零,当 DAC904 输入全为 0 的时候,它的负
35、端输出 20mA,正端输出为零,经 R15 后,转化为 0.5V 电压,作为差分放大器的输入,经五倍的放大后输出+2.5V 的电压,经过滤波后,可以实现峰峰值电压为 05V 的各波形输出。OPA690 的最大输出电流为 190mA,而当负载 R16=1K 时,输出电流 - 10 -当 R16=50 时,输出电流为 ,两者均小于mAKVIout5.21.mAVIout50.2190mA,即可以实现要求的两种负载的各波形输出。5.直流稳压电源本设计采用的是自制的稳压电源,原理图如图 C-5-1,该电源可以实现两种电压的输出,其基本原理是将输入的交流电通过整流桥后转化为直流电, (上部分电路图)通过
36、稳压管使电压稳定在 V 和(下部分电路图)5V。51 2 3 4 5 6ABCD654321DCBA TitleNumber RevisionSizeBDate: 14-Sep-208 Shet of File: E:串串串串.DB Drawn By:12345J5CON5AC1V+ 2AC3V-4D25BRIDGE1AC1V+ 2AC3V-4D26BRIDGE11122W3 R151KD16IN407D15IN407R620C2020uFC120uF C140.1uFC2104 C23104C1320uF C2120uFD21IN407D19IN407123J6+-515VVin3 ADJ1Vout 2U4LM317Vin1 Gnd3Vout 2U6LM78H05KC1220uF C150.1uF R161KVin2 ADJ1Vout 3U5 LM3711 2 2D17IN4071122D20IN407R1320C1920uF12J1+5VR191kR172KR181KR1420R1220 D2LEDD23LEDD24LEDC160.1uFC170.1uF(C-5-1)