2021-10-31 07:47:44 索煒達(dá)電子 1000
項(xiàng)目編號(hào):E2020
文件大?。?M
源碼說(shuō)明:帶中文注釋
開(kāi)發(fā)環(huán)境: ISE 14.7
簡(jiǎn)要概述
信號(hào)發(fā)生器用于產(chǎn)生穩(wěn)定的頻率及幅度信號(hào)。直接數(shù)字頻率合成(DDS)技術(shù)由于其結(jié)構(gòu)簡(jiǎn)單,精度高等特點(diǎn),被廣泛應(yīng)用于信號(hào)發(fā)生電路中。本次實(shí)驗(yàn)利用搭載Xilinx公司的xc3s200a-4ft256芯片開(kāi)發(fā)板及DAC電路設(shè)計(jì)一個(gè)簡(jiǎn)易的信號(hào)發(fā)生器,該信號(hào)發(fā)生器操作簡(jiǎn)單、頻率可調(diào)節(jié)范圍廣。經(jīng)測(cè)試表明,該信號(hào)發(fā)生器低頻輸出穩(wěn)定、幅值高,可以作為頻率信號(hào)源應(yīng)用于各種電路中。
本次項(xiàng)目系統(tǒng)采用分模塊設(shè)計(jì),除 DAC、有源濾波為實(shí)際電路外,其余功能均在 FPGA 開(kāi)發(fā)板上實(shí)現(xiàn)。 主要模塊:分頻模塊、按鍵消抖模塊、按鍵控制模塊、碼制轉(zhuǎn)換模塊、數(shù)碼管動(dòng)態(tài)顯示模塊、相位累加模塊、波形產(chǎn)生模塊、波形調(diào)整模塊、數(shù)模轉(zhuǎn)換及濾波模塊。
設(shè)計(jì)報(bào)告:
Xilinx 公司硬件設(shè)計(jì)工具 ISE 14.7(Integrated Software Environment);基于超高速集成電路硬件描述語(yǔ)言(VHDL)實(shí)現(xiàn)。
電子科技大學(xué) xc3s200a-4ft256 開(kāi)發(fā)板
RIGOL DS1102E 雙通道示波器
綠揚(yáng) YB1732A 3A 直流穩(wěn)壓電源
8 位的 D/A 轉(zhuǎn)換集成芯片 DAC0832
德州儀器集成運(yùn)算放大器芯片 LM324N
項(xiàng)目設(shè)計(jì)過(guò)程的重點(diǎn)與難點(diǎn)
??本次實(shí)驗(yàn)重點(diǎn)在于對(duì)DDS原理的理解以及模塊化編程思維,深入理解每一個(gè)模塊,并將其用硬件描述語(yǔ)言表述出來(lái),同時(shí)要有全局觀,如何連接每一個(gè)模塊,確保其能共同工作而不發(fā)生沖突。
??難點(diǎn)在于對(duì)VHDL語(yǔ)言及ISE工具的熟練程度,事實(shí)上ISE是一款比較老的設(shè)計(jì)軟件,在綜合的過(guò)程中對(duì)于一些邏輯正確但表述略為復(fù)雜的語(yǔ)句無(wú)法正常完成綜合,這些都要化為重復(fù)的簡(jiǎn)單語(yǔ)句來(lái)完成,因此需要操作者對(duì)語(yǔ)言及軟件工具有比較深入的了解。
項(xiàng)目設(shè)計(jì)過(guò)程中遇到的主要問(wèn)題及處理方法
??模塊的連接:通過(guò)原理圖進(jìn)行連接是一種直觀且快捷的連接方法,但連接錯(cuò)誤后較難發(fā)現(xiàn),因此我采用申明和例化的方式,通過(guò)port map準(zhǔn)確地連接信號(hào)和各個(gè)模塊。
??語(yǔ)句重構(gòu):由于ISE不支持在復(fù)雜語(yǔ)句下進(jìn)行復(fù)雜語(yǔ)句的嵌套,對(duì)于按鍵控制模塊,例程給出的語(yǔ)句針對(duì)單個(gè)按鍵是正確的,但對(duì)于多個(gè)按鍵的嵌套判斷控制就無(wú)法完成綜合,因此需要將復(fù)雜語(yǔ)句重構(gòu)為簡(jiǎn)單語(yǔ)句的結(jié)合。
目錄│文件列表:
└ 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