FPGA实验报告北航电气技术实验.docx
六、试验代码I四位二进制加法计数器(已修改)entitycount4isport(clk:instd_logic;-waishizhong.fpga_cx2_6!,st:inStdJogici-Hlpin-abl5q:outstd_logic_vector(3downto0);-led4-1end:architectureblofcount4issignalqI:sKl_logic_vcctor(3downtoO);beginProeCSS(Clk.rst)beginif(rst="O,)thcnif(clk'eventandelk-)thenq1<=q1-1;endif;elseql<="llll"endif;endprocess;q<=qI;end2一位半加器七、结果分析I若在加载运行文件后试验箱上无反应,可以通过更换不同缴率输入管脚查看是否为试验箱自带时钟的故障。2试验箱上1.ED显示灯与设计逻辑相反时可以通过修改程序逻辑或给电路图添加非门实现正逻辑显示。试验二16×161.ED点阵四字循环显示试验时间:2017.11.08(周三)晚试验编号20一、试验目的1、驾驭VllD1.编程技巧和各种输入输出显示方法。2、学习并分析指导书中实例,从中发觉感爱好的题目,并以此自设计个有内容.功能稍困难的主、子程序综合应用例程,实现调试与验证。3、实现1.ED点阵“高山仰止”四字清楚循环显示。二、试验原理.11.ED显示原理I6X16扫描1.ED点阵的工作原理同8位扫描数码管类似,其结构示意图(图I)与等效电路图(图2)如下。它有16个共阴极输出端口,每个共阴极对应有16个1.ED显示灯,所以其扫描译码地址需4位信号线(管脚对应CO1.I-Co1.4),从右起为第一列且CO1.I4对应“0000”。其汉字扫描码由16位段地址(从卜至上管脚对应ROWl-ROW16>输入.,本设计选用的1.ED列扫描,汉子信号行输入的方式,显示完整汉字。图116X161.ED点阵图216X16点阵1.ED等效电路-,-浮索手手-(->>,>>>>>>-II.I.,二FF-F-/F-,.?TrtTnT二二列循环扫描,通过对每一列的扫描来完成对字母的现实,本设计为使列扫描符合视觉暂招要求,扫描频率至少大于l6X8=128Hz,周期小于78ms,以此绐人以连续的感觉。2汉字的信息储存用动态分时扫描技术使1.ED点阵模块显示图像,须要进行两步工作。第一步是在程序中建立汉字数据库。其次步是在扫描模块的限制下,协作列扫描的次序正确地输出这些数据.获得图像数据的步骤是,先将要显示的每一幅图像画在一个如(图3)所示的被分成16×16共256个小方格的矩形框中,再在有箔划卜落处的小方格里填上“I”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,汉字取模可由专用软件进行。aaaaaaaaaaaa图316*16点阵显示模块由于本试脸箱为从右至左依次对应"XNX)''列到"1111''列,从下至上为最高位到最低位,于平常习惯的认字方向相反,所以留意在逐列扫描的设计中要对字取“反模”。例如要在右边起笫2列的从上到下数2、4、6、8行亮,则列编号为''0001''、行输入为''00000000IOIOlOl(T就可以实现了。3延时环节为使汉字不断地循环显示,并且使每个汉子显示后停留,就须要在中间加肯定的延时和循环环节。在这一环节中,可以通过修改每个显示和停留周期包含的总时钟脉冲数值来限制每个字的显示时间,运用状态机设计方法绐四个汉字对应的不同输入状态进行编码,即可使汉字依次清楚显示。三、试验设备1可编程逻辑试骁箱EP3C55F4S4C8台(包含16×161.ED点阵组等)2计郛机及开发软件QUarIUS【I一台套四、调试步骤1建立工程,命名为Iedgi616.建立VHD1.程序文件命名为IedI616grq.vhd,2依据第六部分原程序输入代码,并按所示表格绑定管脚。编写程序及绑定管脚时时留意其次部分中所叙述的扫描显示依次以及对应取反字模的方法。3编译无误后开启试验箱,生成sof传输文件并下教至试验箱,确保运行模式为1,且CPR1.-Sw拨码开关为“00XX”。4视察试验箱上现象,通过改接不同频率的脉冲输入管脚或变更每个字符停留周期包含的总脉冲数来保证在足够快的扫描频率与大约每个字大约秒多的足够停留时间,并查看是否有“离山仰止”四字依次有停顿的清楚的循环显示。五、试验现象当时钟输入线接FRQH_Q2(3()OOOOOHz)管脚时,设定每个周期为5()O(X)OO个脉冲时,实现“高山仰止”在16×I61.ED点阵上清楚循环显示。六、试验代码Iibrarj'ieee;useieee.NdOgiC_1164.all;useieee.sidjlogic_unsigned.alI;entityIedl6l6gr<isport(clk:insldogic;一时钟data:outstdOgiJVCCtOrd5downloO);彳了输入addrs:outSldJogiJveCtor(3downto0):“列地址endIcdl6l6grq;architecturechw_arcofIedl6l6grqissignalfenpin:std_logic_vector(1downto0);-分频信号signalad:std_logic_vcctor(3downto0):“地址中转信号beginProCeSS(Ck)-产生个大约IS的分频信号模块variablecnt:integer:=O;variabletinp:sid_logic_vector(IdowntoO);beginifclk'eventandelk-thenifcnl<5(X)0000thencnc=cn(+l;elsecnt:=O;iftnp="11"thentmpz="(X)w;elsetinp:=tmp+l;endif;endif;endif;fc11pin<=lmp;endprocess;ProCeSS(CIk)-送16位地址程序variablejs:integer:=。:variablecnt:sid_logic_veetor(3downtoO);beginifclk'cvcntandclk='thenifjs<100(X)thenjs:=js+l:elsejs:=0;ifcnt="1lll"thenCnc=-(XXX)"dscc11C=cn(+l;endif;endif;endif;ad<=cnt;endprocess:process(fenpin.ad)begincasefenpinisbcsurctogettheopposite11lclofthewordandexchangethehight8billothelow8biithenwritebeginIlllto0000when"00',=>easeadis-''高"的字模when"(XXX)"=>data<="(XXMXXXMXXXMXKX)()"r-(X)()()when"0100"=>data<="0000001000000100">>0402when"1100"=>data<="000(XX)l(XX)00()l,-0402when"1101"=>data<="000000l000000100',-0402when"1111"=>data<="0000000000000100-;-0400whenothers=>nu1l;endcaie;when"0l"=>山''的字模easeadiswhen,000()'=>data<="000000()()00()(KKX)0'i-(KXX)when',0,=>data<=-00()()000000()000()0''i-000()when"IIOI"=>data<="0000()000(X)000(X)0,-(XM)0when"UI0"=>datav="0000000000000000”;-OoOowhen',1111"=>data<="()OOO()OOO(X)OOO(X)O':-(XXX)whenothcrs=>nul:endcase:when"1()"=>caseadiswhen-O(Xxr=>data<="000000(XXXXXXXXXr;-(X)OO“仰”的字模when"(XX)I"=>data<=M000000()000()000()()"-0000when"0100"=>data<=,00001Oo(X)OoO10">-(¼04when"0110"=>data<="()(XXX)(XXX)(XXXXXX)'>-(X)(X)when"IOl(=>databOOO()OOOOOOOOOOOO”.OoOOwhen"1011"=>data<="0000(X)00()0(XX)l11":-()007when"1IOl"=>data<="(XXXXXXXX)ll(XXXX)'>-(X)60when-IIl()"=Xlata<="(MXXKXXX)l(XXXXXX)'-(X)8()when11ll"=>data<="(XXXXXX)l(XXMXXXX)"-()l(X)whenothers=>null;endcase;when"11',=>caseadiswhen"OOO(r=>data<="OOOOoooooOoOOooo”100o(F止”的字模whenothcrs=>nul:endcase:whenothers=>null;endcase:endprocess;addrs<=ad;endchw_arc;管脚绑定如E:NodN*wOonIiec4tonI*IfiFGu>IXJSUndMdKAl4WW产5Y(U>)mmsCMMp?Nltf(dr三三s三305=33t>3">t>3J3Gt.:,R.5R.5E.5R,mt:Q4t,ARcMCMjtOJUtQ9ut,83¾w.pwj*.R7pIMJKPW.C1511HJ11F.C13闭身m平网/5“8mWJO>ZJ<1q典.更MBeg87Jil.B7JU87JU87JU87J41SSN68”.88Neaj“,(*”2,y(deA)2,>v(deA)!Xv(deA)v(de<)2SYfcJJe)oeJt)XSY(de)XSY(de)Z5(<fefM)Z5Y(de)15(defM)ZSY(def*Jl)Z5V(dH*JK)七、结果分析设备调试与程序调试一样均为FPGAFl标器件功能实现的必需工作,依据加载后实际显示状况,同样可以反推出QuartusII无法干脆报错的引脚绑定方面的问题以及程序书写逻辑问题,试脍中详细出现的状况如下:(1)显示为一团不断闪耀的重件形态缘由:可能为间隔时间太短措施:应增大间隔周期数,延长停帧(2)字符形态与设计不同/错位缘由:假如为行依次借位或乱序,但每一列仍为从右至左扫棍可能为R0W1-I5管脚绑定错位:假如为列出现依次及显示正确但位置错位,可能为C1.K1.3管脚绑定错位;上述两种状况也可同时发生。措施:将时钟输入频率放缓至可以看清每一列出现的依次位置及显示内容,与所设计的字模比照,推断是哪几个ROW管脚及C1.K错位,应新绑定即可。(3)试喊箱开启后定无显示缘由:可能是工作模式的拨码开关并非'W)XX”,或时钟管脚故障.措施:选用其他频率的管脚忒接:若解除管脚问题,查看模式显示数码管数值是否为I,如不是,变更工作模式,重新加载文件。试验三蜂鸣器/扬声器电子音乐演奏试验时间:2017.11.15(周三)晚试验编号20一、试验目的1、娴熟驾驭QuartusII平台各模块操作及试验箱调试方法.2,用元件例化语句调用方式,随意自选题设计个有内容,功能较困难的主、T-程序综合应用的多模块集成例程,并实现调试与验证。3、实现电子音乐学天空之城的主旋律循环播放,并通过1.ED灯指示音符。二、试验原理、电子音符演奏乐曲硬件电路产生.音乐是和音乐频率和音乐的持续时间有关:音符的持续时间需依据乐曲的速度和每个音符的节拍数来确定。设计所用简谱及音符和频率的关系如下:天空之城表I员请中育符与频率的关系«JH-:i*1»-UI音符11率/Hz音符费率/H,音符发率/Ht低音I261.63中音IJ23.25Kflr1IMS.W1»-三l<><I低我2293.67中音2587.33三2117466»-1.i1.iR-'««I»-O<jI低讦3329.63中音3(59.25高音31318.51低音4349.23中青4«98.46Aft41396.92iIIa17-u.II低音$391-99中青5783-99XftS1567.98*-u41.f1.1111.-I低开6440.00中开680.00*61760.00i7«7»Ic-低音7493.88*7§87.76育吝71975.522,演奏节拍限制该演奏电路演奏的乐曲是天空之城,其最小的节拍为1拍,将1拍的时长定位0.25S,则只须要再供应一个4Hz的时钟缴率即可产生I拍的时长(5Hz由24MHz的基准频率分频产生),对于占用时间较长的节拍,(肯定是节拍的整数倍),如全音符为4拍,2,4音符为2拍,1/4音符为I拍。3、演奏电路模块乐曲哽件演奏电路系统主要有音调分频器和乐曲存储模块两个部分组成,其余还有音乐节拍发生落等等。音调分频落对24MHz(由基准频率产生.)的频率进行分频,得到与各个音节对应的频率傩出。乐曲存储模块产生节拍限制和音阶选择信号,即在此模块中写入一个乐曲曲谱其值序列,由一个计数器来限制此序列的输出,而由计数器的计数时钟信号作为乐曲节拍限制信号。4程序设计思路试验中采纳层次化设计思路,音乐发生器的设计包括四个模块:时钟分频模块、自动演奏模块、音符显示模块、音调分频模块。分好层次之后,编写每个模块的程序。时钟分频模块通过基准时钟频率clk(24MHz)产生两个时钟信号。自动演奏模块接收4hz的时钟信号,输出音调代码。显示模块利用音调代码查找并输出对应1.ED灯显示状况。同时将自调对应的给8盏1.ED指示灯,分别显示中学低音符。音调分频模块接收音调代码对应的分频系数,并据此分频,将对应频率的信号输出给扬声器供其发声。三、试验设备I可编程逻辑试验箱EP3C55F484C8一白(含蜂呜器、扬声器、若干1.ED灯等)2计莫机及开发软件QUarIUSIl一台套四、调试步骤1建立工程,命名为grqbeepOl。建立Verik)gHD1.程序文件命名为grqbeepO1.%2依据第六部分原程序输入代码,并按所示表格绑定管脚。3编译无误后开启试验箱,将时钟输入管脚P20接Q0(24000000Hz).4生成Sof传输文件并下载至试验箱,确保运行模式为3,且CPRI-SW拨码开关为“0110”。5视察试验箱上现象,确定蜂鸣器与扬声器的器件运用设定方法,对比其效果差异,五、试验现象I跳线BZl未调整时下载完毕,听到完整的由蛭鸣器播放的循环&天空之城3音乐,可是声音很小,1.ED指示灯显示没有错误。2跳线BZI由23调整到12时下载测试,听到声音喷亮的循环播放的学天空之城音乐,并且音调很好,数码管显示音符正常,实现预期功能。六、试验代码'timescalelnsIpsmodulegrqbcepI(clk.bccp.led);inputCIkH时钟管脚outputbeep:蜂鸣器管脚output|7:0led;/led指示管脚regbeep;reg122:0)1;regclk_4hz;reg|7:01led;reg116:0count,div_num;reg6z0music;以下为主体always(poscdgeclk)4hz生成部分beginif(i=23'h47868c)begini<=0:clk_4hz=-clk_4hz:endelsei=i+bl:endalways(posedgeclk_4hz)beginif(music7'd122)总共的音符节拍数music<=0;elsemusic<=music+bl;endalways(poscdgcelk)beginif(count=div_num)begincount<=0;beep=beep;endelsecount<=count+bl;endParamCICM输入查表可得的低中高音符赫兹数1.O=IThOOOOO,1.l=l7'hl754e.1.2=l7,hl4c81,1.3=17'hl284a.1.4=l7'hll7A8.1.5=17'hl4e7O.1.6=l7h()ddf2.1.7=l7'h()c5ba.MI=17'h0ba9e,M2=17,h0a648,M3=7'hO941f,M4=l7'hO8bcf.M5=17'hO7c9O.M6=l7'hO6cf9.M7=17'hO62dd.HI=17'hO5d68.H2=17'h()5322.H3=17'h()4all.H4=17,h045e9,H5=l7'h3e48,H6=l7'h377d,H7=l7'h3l6f;always(poscdgcclk_4hz)beginCaSC(music)乐谱输入7dO:div_num=M6:7,dl:div_num=M7;7'd2:div_num=Hl;7'd3:div_num=Hl;7'd6:div_num=HI:7'd7:div_num=HI:7d8:div_nuin=H3;7d9:div_nuin=H3:7,d10:div_num=M7;7'dll:div_num=M7;7'd12:div_num=M7;7,d13:div_num=M7;7,d14:div_num=M7;7'd15:div_num=M7;7,dl6:div_num=M3:7'd17:div_num=M3;7,dl8rdiv-nun=M6;7,dl9div-nun=M6;7'd20:div_nuin=M6;7,d21:div_num=M5;7'd22:div_num=M6;7'd23:div_num=M6;7'd24:div_num=HI:7'd25:div_num=Hl:7'd26:div_num=M5;7'd27:div_num=M5;7'd28:divnum=M5;7'd3l:div_num=M5;7,d32div-num=M2:7d33:div_num=M3;7'd34:div_num=M4:7'd35:div_num=M4;7'<l36:<liv_nuin=M4;7'd37:div_num=M3;7'd38:div_num=M4;7'd39:div_iIUm=M4;7'd40:div_num=HI:7'd4l:div_num=Hl;7'd42:div_num=M3;7'd43:div_nuin=M3;7'd44:div_num=M3;7'd45:div_nuin=M3;7'd46:div_num=Hl;7'd47:div_num=HI:7'd48:div_nuin=M7;7'd49:div_num=M7;7,d5O:div_num=M7:7,d5kdiv-num=M3:7'd52:div_num=M4;7'd53:div_nuin=Hl;7'd56:div_num=M7:7'd57:div_num=M7;7,d58:div_nuin=M7;7,d59:div_num=M7;7'd60:div_mnn=M7;其次段乐谱7'd61:div_innn=M6;7'<l62:div_num=M7;7'<i63:div_num=HI;7'd64:div_nuin=Hk7,d65:div_num=HI;7,d66:div_num=M7;7d67:div_num=Hl:7d68:div_num=Hi;7<169:div_num=H3;7'd7():div_nuin=H3;7,d7l:div_num=M7;7'd72:div_num=M7;7'<J73;div_nuin=M7;7'd74:div_num=M7;7,d75div-num=M7;7,d76:div_num=M7:7,d77:div_nuin=M3:7'd80:div_num=M6;7,d8kdiv-num=M6;7d82:div_num=M5:7d83:div_num=M6;7'd84:div_num=M6;7,d85;diV-num=HI;7'd86xiiv-nu11=l11;7'd87:div_num=M5;7'd88:div_num=M5;7'd89:div_num=M5;7,d90:div_num=M5:7'd9l:div_num=M5:7,d92rdiv-nun=M5;7d93:div_num=M2:7,<194:div-nun=M3;7'd95:div_num=M4;7'<196:div_num=M4;7,d97Jiv.num=HI;7'd98:div_num=HI;7d99:div_num=Hk7'dlOO:div_num=M7:7d101:div_num=Hl;7'd102:div_num=H2;7,dl04:div_num=H3;7,dlO5:div_num=H3;7'dlO6:div_num=Hl;7,dlO7rdiv-num=H1;7'dIO8:div_nUm=H1;7'(ll()9:div_num=M7;7'dl1():div_num=M6;7'dl1l:div_nuin=M6;7'd112:<liv_num=M7;7'dll3:div_nuin=M7:7'dl14:div_num=M5;7,dl15:div_num=M5;7,d116:div_num=M6;7,d117:div_num=M6:7,dll8:div_num=M6:7,dl19:div_num=M6;7,dl2():div_num=M6;7'd121:div_num=M6;CndCaSCendalways(div_num)定义每一种音符的1.ED指示方案begincase(div_num)1.5,H5Jed=8bllll-lllI;1.7.Ml:lcd=8'b0011_llll;M2.M3:lcd=8'MX)0l_llll;M4.1.4.H4,M5Jcd=8,bOOOO-l111;M6.M7:led=8'b(XKX)_0111:HI.1.kled=8M)(XMHX)ll;H2,I.2Jed=8HMXX)JXM)l;H3,I.31ed=8,b(XXX)JXMM);default:led=8,bx;CndCaSCCndinodule管脚绑定如F:M×>f<MreIOecton1.ocator12Br*JVWOoIX)Srwrd1ObIOUWPINa8MJO2.SV(CfeSJt)21*&gPWF20SBSJiO5V(deUt)3OW7outputPlNQBBBJg2.5V(defadt)4OM6)OUt3小贤8J*>2.SV(def3J05OMS)6utitPWJ7网决2.5VMJt)63Pq入,小学47b7Hl2.SV(Mt)71>WJIOUMgas7MJa2.5V(deJt)83WIZ0t.PIsI7卬如2.5V(deJt)9opi(OurwtM37iB7J412.5VdefeJt)>0>Ml00ulput叫11Iz2.SVdefKh)七、结果分析1试验指导书由于篇幅有限,并未介绍全部硬件的管脚连接与运用方法,但是试验室中的完整试脸箱说明书可以查阅到全部馍件资料.例如本试验中,指导书上只是概略提及了模式3中有BZSP接口可以实现蜂鸣器/扬声器放音,却并未提及调用切换方法,在老雨帮助下在试购箱完整说明书中找到BZl跳线运用方法,用终实现扬声器洪亮播放。2试验中的实际运行输入时钟频率必需与程序设计频率完全一样,设计程序也要优先参考试验箱所供应的自身时钟,否则输出音调和分频后的输出节拍均会因基准频率不符而有明显变更,可能有完全变调或频率过低而声音失也的状况。试验感想本次试验前后时间跨度有-:周,从中收狭的不仅仅是指导书中的一种新的Ada类编程语言的运用方法,更是一种对于短时间内接纳新的理论并快速结合已知储备,实现实践运用与二次创新的实力熬燎.能够借此机会下定决心,实现很久之前就有的学习Veribg的目标,更加深刻感受到C类编程语法的强大之处,Im时也再一次熬炼/查找学习资源与阅读自学的实力.为了能够深刻学习并学以致用,以上三个试验只是成果的-小部分,关于TET_1.CD以及1.CDl602的驱动限制,以及VCriIOg语法规范与设计思路所读的40多篇文献,与两本课本,调忒的17组程序,虽然来不及在课堂上展示,但是在我自己购置的手册齐全的DJ5I单片机与我的TMS32OF28335的DSP开发板上,均实现特别令人喜悦的显示效果。而且事实上我所缺的,不能很便利找到的资源,其实就是那本完整的硬件说明书,但是至于其他,收获惊喜的比想象多了不少。对于硬件限制设计的理解也从大二的“仅仅是单片机”“不就是驱动个电机吗”,有了更多的深化的思索“终归,“高山仰止,景行行止,虽不能至,心慢怪之各种编程语言与平台,最终都是用不同的方式叙述同种逻第1.编程的运用,只是让构思的逻辑与想法最快生成可以感受到的成果的途径,是表达的工具,也是最基础的链接理论到实物的媒介,但是其中最不行为代的只是始终存在的想法而已。