2021-10-31 07:47:44 索炜达电子 1002
项目编号:E2020
文件大小:6M
源码说明:带中文注释
开发环境: ISE 14.7
简要概述
信号发生器用于产生稳定的频率及幅度信号。直接数字频率合成(DDS)技术由于其结构简单,精度高等特点,被广泛应用于信号发生电路中。本次实验利用搭载Xilinx公司的xc3s200a-4ft256芯片开发板及DAC电路设计一个简易的信号发生器,该信号发生器操作简单、频率可调节范围广。经测试表明,该信号发生器低频输出稳定、幅值高,可以作为频率信号源应用于各种电路中。
本次项目系统采用分模块设计,除 DAC、有源滤波为实际电路外,其余功能均在 FPGA 开发板上实现。 主要模块:分频模块、按键消抖模块、按键控制模块、码制转换模块、数码管动态显示模块、相位累加模块、波形产生模块、波形调整模块、数模转换及滤波模块。
设计报告:
Xilinx 公司硬件设计工具 ISE 14.7(Integrated Software Environment);基于超高速集成电路硬件描述语言(VHDL)实现。
电子科技大学 xc3s200a-4ft256 开发板
RIGOL DS1102E 双通道示波器
绿扬 YB1732A 3A 直流稳压电源
8 位的 D/A 转换集成芯片 DAC0832
德州仪器集成运算放大器芯片 LM324N
项目设计过程的重点与难点
本次实验重点在于对DDS原理的理解以及模块化编程思维,深入理解每一个模块,并将其用硬件描述语言表述出来,同时要有全局观,如何连接每一个模块,确保其能共同工作而不发生冲突。
难点在于对VHDL语言及ISE工具的熟练程度,事实上ISE是一款比较老的设计软件,在综合的过程中对于一些逻辑正确但表述略为复杂的语句无法正常完成综合,这些都要化为重复的简单语句来完成,因此需要操作者对语言及软件工具有比较深入的了解。
项目设计过程中遇到的主要问题及处理方法
模块的连接:通过原理图进行连接是一种直观且快捷的连接方法,但连接错误后较难发现,因此我采用申明和例化的方式,通过port map准确地连接信号和各个模块。
语句重构:由于ISE不支持在复杂语句下进行复杂语句的嵌套,对于按键控制模块,例程给出的语句针对单个按键是正确的,但对于多个按键的嵌套判断控制就无法完成综合,因此需要将复杂语句重构为简单语句的结合。
目录│文件列表:
└ fpga_dds-main
│ TOP.ucf
├ DDS
│ └ DDS
│ │ clk_div_sim_isim_beh.exe
│ │ DDS.gise
│ │ DDS.xise
│ │ dynamic_led_sim_isim_beh.exe
│ │ encoder_sim_isim_beh.exe
│ │ fuse.log
│ │ fuse.xmsgs
│ │ fuseRelaunch.cmd
│ │ isim.cmd
│ │ isim.log
│ │ key_ctrl_sim_isim_beh.exe
│ │ key_debounce_sim_isim_beh.exe
│ │ pa.fromHdl.tcl
│ │ pepExtractor.prj
│ │ scan_phase_sim_isim_beh.exe
│ │ sin_wave_sim_isim_beh.exe
│ │ top.bgn
│ │ top.bit
│ │ TOP.bld
│ │ TOP.cmd_log
│ │ top.drc
│ │ TOP.lso
│ │ TOP.ncd
│ │ TOP.ngc
│ │ TOP.ngd
│ │ TOP.ngr
│ │ TOP.pad
│ │ TOP.par
│ │ TOP.pcf
│ │ TOP.prj
│ │ TOP.ptwx
│ │ TOP.stx
│ │ TOP.syr
│ │ TOP.twr
│ │ TOP.twx
│ │ TOP.ucf
│ │ TOP.unroutes
│ │ TOP.ut
│ │ TOP.xpi
│ │ TOP.xst
│ │ TOP_bitgen.xwbt
│ │ TOP_envsettings.html
│ │ TOP_guide.ncd
│ │ TOP_map.map
│ │ TOP_map.mrp
│ │ TOP_map.ncd
│ │ TOP_map.ngm
│ │ TOP_map.xrpt
│ │ TOP_ngdbuild.xrpt
│ │ TOP_pad.csv
│ │ TOP_pad.txt
│ │ TOP_par.xrpt
│ │ top_sim_beh.prj
│ │ top_sim_isim_beh.exe
│ │ top_sim_isim_beh.wdb
│ │ TOP_summary.html
│ │ TOP_summary.xml
│ │ TOP_usage.xml
│ │ TOP_vhdl.prj
│ │ TOP_xst.xrpt
│ │ usage_statistics_webtalk.html
│ │ wave_adopt_sim_isim_beh.exe
│ │ webtalk.log
│ │ webtalk_pn.xml
│ │ xilinxsim.ini
│ ├ ipcore_dir
│ │ │ coregen.cgp
│ │ │ coregen.log
│ │ │ create_SIN_WAVE.tcl
│ │ │ SIN_WAVE.asy
│ │ │ SIN_WAVE.gise
│ │ │ SIN_WAVE.ncf
│ │ │ SIN_WAVE.ngc
│ │ │ SIN_WAVE.sym
│ │ │ SIN_WAVE.vhd
│ │ │ SIN_WAVE.vho
│ │ │ SIN_WAVE.xco
│ │ │ SIN_WAVE.xise
│ │ │ SIN_WAVE_flist.txt
│ │ │ SIN_WAVE_readme.txt
│ │ │ SIN_WAVE_xmdf.tcl
│ │ ├ SIN_WAVE
│ │ │ └ doc
│ │ │ │ dds_compiler_v4_0_vinfo.html
│ │ │ └ dds_ds558.pdf
│ │ ├ tmp
│ │ │ └ _xmsgs
│ │ │ │ pn_parser.xmsgs
│ │ │ └ xst.xmsgs
│ │ └ _xmsgs
│ │ │ cg.xmsgs
│ │ └ pn_parser.xmsgs
│ ├ iseconfig
│ │ │ DDS.projectmgr
│ │ └ TOP.xreport
│ ├ isim
│ │ │ isim_usage_statistics.html
│ │ │ pn_info
│ │ ├ precompiled.exe.sim
│ │ │ ├ ieee
│ │ │ │ │ p_0774719531.c
│ │ │ │ │ p_0774719531.didat
│ │ │ │ │ p_0774719531.nt64.obj
│ │ │ │ │ p_1242562249.c
│ │ │ │ │ p_1242562249.didat
│ │ │ │ │ p_1242562249.nt64.obj
│ │ │ │ │ p_2592010699.c
│ │ │ │ │ p_2592010699.didat
│ │ │ │ │ p_2592010699.nt64.obj
│ │ │ │ │ p_3499444699.c
│ │ │ │ │ p_3499444699.didat
│ │ │ │ │ p_3499444699.nt64.obj
│ │ │ │ │ p_3620187407.c
│ │ │ │ │ p_3620187407.didat
│ │ │ │ │ p_3620187407.nt64.obj
│ │ │ │ │ p_3972351953.c
│ │ │ │ │ p_3972351953.didat
│ │ │ │ └ p_3972351953.nt64.obj
│ │ │ └ std
│ │ │ │ textio.c
│ │ │ │ textio.didat
│ │ │ └ textio.nt64.obj
│ │ ├ sin_wave_sim_isim_beh.exe.sim
│ │ │ │ isimcrash.log
│ │ │ │ ISimEngine-DesignHierarchy.dbg
│ │ │ │ isimkernel.log
│ │ │ │ libPortability.dll
│ │ │ │ netId.dat
│ │ │ │ sin_wave_sim_isim_beh.exe
│ │ │ ├ tmp_save
│ │ │ │ └ _1
│ │ │ ├ work
│ │ │ │ │ a_1520091539_2372691052.c
│ │ │ │ │ a_1520091539_2372691052.didat
│ │ │ │ │ a_1520091539_2372691052.nt64.obj
│ │ │ │ │ a_2472967528_1607153440.c
│ │ │ │ │ a_2472967528_1607153440.didat
│ │ │ │ │ a_2472967528_1607153440.nt64.obj
│ │ │ │ │ sin_wave_sim_isim_beh.exe_main.c
│ │ │ │ └ sin_wave_sim_isim_beh.exe_main.nt64.obj
│ │ │ └ xilinxcorelib
│ │ │ │ a_0006162580_3212880686.c
│ │ │ │ a_0006162580_3212880686.didat
│ │ │ │ a_0006162580_3212880686.nt64.obj
│ │ │ │ a_1243855295_3212880686.c
│ │ │ │ a_1243855295_3212880686.didat
│ │ │ │ a_1243855295_3212880686.nt64.obj
│ │ │ │ a_1579366007_3212880686.c
│ │ │ │ a_1579366007_3212880686.didat
│ │ │ │ a_1579366007_3212880686.nt64.obj
│ │ │ │ a_2178031336_3212880686.c
│ │ │ │ a_2178031336_3212880686.didat
│ │ │ │ a_2178031336_3212880686.nt64.obj
│ │ │ │ a_2948401865_3212880686.c
│ │ │ │ a_2948401865_3212880686.didat
│ │ │ │ a_2948401865_3212880686.nt64.obj
│ │ │ │ a_3854613474_3212880686.c
│ │ │ │ a_3854613474_3212880686.didat
│ │ │ │ a_3854613474_3212880686.nt64.obj
│ │ │ │ a_3934962489_3212880686.c
│ │ │ │ a_3934962489_3212880686.didat
│ │ │ │ a_3934962489_3212880686.nt64.obj
│ │ │ │ p_1837083571.c
│ │ │ │ p_1837083571.didat
│ │ │ │ p_1837083571.nt64.obj
│ │ │ │ p_1849098369.c
│ │ │ │ p_1849098369.didat
│ │ │ │ p_1849098369.nt64.obj
│ │ │ │ p_2602938013.c
│ │ │ │ p_2602938013.didat
│ │ │ │ p_2602938013.nt64.obj
│ │ │ │ p_3155556343.c
│ │ │ │ p_3155556343.didat
│ │ │ │ p_3155556343.nt64.obj
│ │ │ │ p_3160202542.c
│ │ │ │ p_3160202542.didat
│ │ │ │ p_3160202542.nt64.obj
│ │ │ │ p_3381355550.c
│ │ │ │ p_3381355550.didat
│ │ │ │ p_3381355550.nt64.obj
│ │ │ │ p_3743709326.c
│ │ │ │ p_3743709326.didat
│ │ │ └ p_3743709326.nt64.obj
│ │ ├ top_sim_isim_beh.exe.sim
│ │ │ │ isimcrash.log
│ │ │ │ ISimEngine-DesignHierarchy.dbg
│ │ │ │ isimkernel.log
│ │ │ │ libPortability.dll
│ │ │ │ netId.dat
│ │ │ │ top_sim_isim_beh.exe
│ │ │ ├ tmp_save
│ │ │ │ └ _1
│ │ │ ├ work
│ │ │ │ │ a_1335952598_3212880686.c
│ │ │ │ │ a_1335952598_3212880686.didat
│ │ │ │ │ a_1335952598_3212880686.nt64.obj
│ │ │ │ │ a_1503986837_3212880686.c
│ │ │ │ │ a_1503986837_3212880686.didat
│ │ │ │ │ a_1503986837_3212880686.nt64.obj
│ │ │ │ │ a_1881823395_3212880686.c
│ │ │ │ │ a_1881823395_3212880686.didat
│ │ │ │ │ a_1881823395_3212880686.nt64.obj
│ │ │ │ │ a_2472967528_1607153440.c
│ │ │ │ │ a_2472967528_1607153440.didat
│ │ │ │ │ a_2472967528_1607153440.nt64.obj