FPGA基礎(chǔ)試驗之流水燈_第1頁
FPGA基礎(chǔ)試驗之流水燈_第2頁
FPGA基礎(chǔ)試驗之流水燈_第3頁
FPGA基礎(chǔ)試驗之流水燈_第4頁
FPGA基礎(chǔ)試驗之流水燈_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

綜合試驗報告第四組組長:韓歡02081535陳潔鈺02081536侯旭濤02081514高耀02081510李欣昊02081508李昊02081506FPGA根底試驗之流水燈一、試驗?zāi)康腝uartusIIVerilog語言的編程方法。學習簡潔時序電路的設(shè)計分析和硬件測試。二、試驗內(nèi)容生疏信號產(chǎn)生板中的FPGA的一般I/O的連接;Verilog語言的編程產(chǎn)生相應(yīng)時序;QuartusIICycloneFPGA的程序開發(fā)、編譯與調(diào)試;把握Cyclone系列FPGA的程序加載,嫻熟把握將.sof文件加載到試驗板的FPGA中,實現(xiàn)流水燈的效果。三、試驗原理流水燈,顧名思義就是讓LED像水一樣的點亮。假設(shè)把流水做慢動作播放,初始狀態(tài)時,四個燈都不亮,每來一個時鐘脈沖,CLK,計數(shù)器就加1.這樣通過向右流水的現(xiàn)象;反之,向左流水。四、試驗要求4LED進展花式顯示,依據(jù)硬件設(shè)施設(shè)計兩種模式:S0:從全亮到全滅,再到全亮,依次循環(huán);S1:從LED0開頭依次點亮,為LED1亮,LED2亮,LED3LED2亮,LED1亮,LED0亮,不停循環(huán)。即輸出為:S0時,不斷循環(huán)。五、試驗步驟建立工程Verilog文件,編寫相關(guān)程序verilog文件編譯為可視化電路圖文件將可視化電路圖文件添加輸入輸出組合成電路圖文件編譯語法及驗證原理圖依據(jù)需要安排管腳并進展編譯.so〔在線方式.po〔離線方式線方式。顯示試驗結(jié)果六、電路符號:流水燈的電路符號如以以下圖所示。sw1為模式選擇輸入。rst_n為復位信號,接高電平,sys_clk為時鐘信號輸入,led[3..0]LED顯示信號輸出端。liushuidengliushuidengsw1sys_clkrst_nled[3..0]inst七:設(shè)計方法:承受文本編輯法,即利用verilogHDL語言描述流水燈,代碼如下:moduleliushuideng(sw1,sys_clk,rst_n,led);//接口定義//50MHz,復位輸入output[3:0]led;//輸出:3led產(chǎn)生流水現(xiàn)象,輪番點亮+reg[25:0]count;//系統(tǒng)時鐘頻率過高,需要計數(shù)的方式來產(chǎn)生延時,使led保持狀態(tài)一段時間reg[3:0]led;//led低電平點亮[2:0]flag;//ledalways@(posedgesys_clk)beginif(!rst_n)//復位,給存放器賦初值beginflag<=3”b0;count<=26”b0;end//else//sys_clk上升沿到來//beginif(count==26”d20)begincount<=26”d0;//count歸零,便于下次重開頭計數(shù)b10flag==2’b112’b00,而并非當flag==’b102’b00〕flag<=3”b000;else

flag<=flag+3”b001;endcount<=count+26”d1;//count沒計數(shù)到指定值是,count執(zhí)行加一操作endalways@(posedgesys_clk)if(sw1==1”b1)begincase(flag)//flag會不斷變化,并且flag在從一個值變成另一個值的時候,會保持一段很長的時間,我們利用它來產(chǎn)生流水燈現(xiàn)象3”b000:led<=4”b0000;//點亮全部燈,都為低電平3”b001:led4”b1111;//沒有點亮燈,都為高電平3”b010:led<=4”b0000;//點亮全部燈,都為低電平3”b011:led4”b1111;//沒有點亮燈,都為高電平3”b100:led<=4”b0000;//點亮全部燈,都為低電平3”b101:led4”b1111;//沒有點亮燈,都為高電平3”b110:led4”b0000;//點亮全部燈,都為低電平3”b111:led4”b1111;//沒有點亮燈,都為高電平endcaseendelsebegincase(flag)//flag會不斷變化,并且flag在從一個值變成另一個值的時候,會保持一段很長的時間,我們利用它來產(chǎn)生流水燈現(xiàn)象3”b000:led4”b0111;//3”b001:led<=4”b1011;點亮其次個燈低電平點亮//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++3”b010:led4”b1101;//3”b011:led4”b1110;//3”b100:led4”b1101;//3”b101:led4”b1011;//3”b110:led4”b0111;//3”b111:led<=4”b1111;endcaseendendmodule七:仿真結(jié)果:1:當swl=1時,時序仿真結(jié)果如以下圖功能仿真結(jié)果為:2swl=0時,時序仿真結(jié)果為:功能仿真結(jié)果為:FPGA根底試驗之正弦波形產(chǎn)生一、試驗?zāi)康耐ㄟ^此試驗進一步了解、生疏和把握QuartusII開發(fā)軟件的使用方Verilog語言的編程方法。學習簡潔時序電路的設(shè)計分析和硬件測試。二、試驗內(nèi)容生疏信號產(chǎn)生板中的FPGAI/O的連接;Verilog語言的編程產(chǎn)生相應(yīng)時序;生疏集成開發(fā)工具QuartusII,學會使用QuartusIICyclone系列FPGA的程序開發(fā)、編譯與調(diào)試;Cyclone系列FPGA.sof文件加載到試驗板的FPGA中,實現(xiàn)正弦波形產(chǎn)生。三、試驗原理DDS(DirectDigitalSynthesis)是一種應(yīng)用直接數(shù)字合成技術(shù)來產(chǎn)DDS據(jù)查詢表。在輸出信號波形時,從數(shù)據(jù)表依次讀出數(shù)據(jù),產(chǎn)生數(shù)字信號。四、試驗步驟1、通過matlab產(chǎn)生一組正弦信號:a=1:1:1023;b=127*cos((1/512)*pi*a)+128;b=round(b’);10241~255之間的數(shù)存入ROM之中。2、將產(chǎn)生的數(shù)據(jù)保存為sin.hex文件;IP核的產(chǎn)生。3、選中單口rom添加文件名。4、將q outputport勾選去掉。5、添加產(chǎn)生的sin.hex文件到rom中。6、依據(jù)需要安排管腳并進展編譯。7、完成rom的設(shè)置,添加輸入輸出端口。8、驗證結(jié)果:利用波形仿真看結(jié)果,建波形文件。9、雙擊Name下面的空白處,點擊NewFolder。10、點擊list。12、將輸入及輸出添加到仿真文件中。13、給相應(yīng)的輸入進展賦值;對時鐘進展賦值。14、點擊工具欄中的時鐘標志。15a16進制顯示。16、賦值完畢后,開頭時序仿真。17、選擇相應(yīng)的仿真文件,開頭仿真,完畢后查看report185的顯示,得到相應(yīng)的波形,a和b的值打算了顯示波形的頻率及相位。五、電路符號addaddclka[31..0]b[31..0]addq[31..0]INPUTVCCINPUTVCCINPUTVCCclk c[31..0]a[31..0]b[31..0]inst1rom2rom2addq[31..22]address[9..0]q[7..0]OUTPUTq[7..0]8ow21clkclockinstBlocktype:AUTO六、設(shè)計程序Rom1modulerom1(address,clock,q);input [9:0] address;input clock;output [7:0] q;wire[7:0]sub_wire0;wire[7:0]q=sub_wire0[7:0];altsyncram altsyncram_component(.clock0(clock),.address_a(address),.q_a(sub_wire0),.aclr0(1”b0),.aclr1(1”b0),.address_b(1”b1),.addressstall_a(1”b0),.addressstall_b(1”b0),.byteena_a(1”b1),.byteena_b(1”b1),.clock1(1”b1),.clocken0(1”b1),.clocken1(1”b1),.clocken2(1”b1),.clocken3(1”b1),.data_a({8{1”b1}}),.data_b(1”b1),.eccstatus,.q_b,.rden_a(1”b1),.rden_b(1”b1),.wren_a(1”b0),.wren_b(1”b0));defparamaltsyncram_component.address_aclr_a=“NONE“,`ifdefNO_PLIaltsyncram_component.init_file=“boxing.rif“`else`endif,

altsyncram_component.init_file=“boxing.hex“altsyncram_ended_device_family=“Cyclone“,altsyncram_component.lpm_hint=“ENABLE_RUNTIME_MOD=NO“,altsyncram_component.lpm_type=“altsyncram“,altsyncram_component.numwords_a=1024,altsyncram_component.operation_mode=“ROM“,altsyncram_component.outdata_aclr_a=“NONE“,altsyncram_component.outdata_reg_a=“UNREGISTERED“,altsyncram_component.widthad_a=10,altsyncram_component.width_a=8,altsyncram_component.width_byteena_a=1;endmodulemodulemy_add(clock,dataa,datab,result);input clock;input [31:0] dataa;input [31:0] datab;output [31:0] result;wire[31:0]sub_wire0;wire[31:0]result=sub_wire0[31:0];lpm_add_sublpm_add_sub_component(.dataa(dataa),.datab(datab),.clock(clock),.result(sub_wire0)//synopsystranslate_off,.aclr,.add_sub,.cin,.clken,.cout,.overflow//synopsystranslate_on);defparamlpm_add_sub_component.lpm_direction=“ADD“,lpm_add_sub_component.lpm_hint =“ONE_INPUT_IS_CONSTANT=NO,CIN_USED=NO“,lpm_add_sub_component.lpm_pipeline=1,lpm_add_sub_component.lpm_representation=“UNSIGNED“,lpm_add_sub_component.lpm_type=“LPM_ADD_SUB“,lpm_add_sub_component.lpm_width=32;endmodulemoduleadd(clk,a,b,c);inputclk;input[31:0]a;input[31:0]b;output[31:0]c;reg[31:0]c;reg[31:0]d;initialbegind<=b;endalways@(posedgeclk)beginc<=a+d;d<=c;endendmodulestranslate_off`timescale1ps/1ps//synopsystranslate_onmodulerom(address,clock,q);input [9:0] address;input clock;output [7:0] q;wire[7:0]sub_wire0;wire[7:0]q=sub_wire0[7:0];altsyncram altsyncram_component(.clock0(clock),.address_a(address),.q_a(sub_wire0),.aclr0(1”b0),.aclr1(1”b0),.address_b(1”b1),.addressstall_a(1”b0),.addressstall_b(1”b0),.byteena_a(1”b1),.byteena_b(1”b1),.clock1(1”b1),.clocken0(1”b1),.clocken1(1”b1),.clocken2(1”b1),.clocken3(1”b1),.data_a({8{1”b1}}),.data_b(1”b1),.eccstatus,.q_b,.rden_a(1”b1),.rden_b(1”b1),.wren_a(1”b0),.wren_b(1”b0));defparamaltsyncram_component.address_aclr_a=“NONE“,`ifdefNO_PLIaltsyncram_component.init_file=“boxing.rif“`else`endif,

altsyncram_component.init_file=“boxing.hex“altsyncram_ended_device_family=“Cyclone“,altsyncram_component.lpm_hint=“ENABLE_RUNTIME_MOD=NO“,altsyncram_component.lpm_type=“altsyncram“,altsyncram_component.numwords_a=1024,altsyncram_component.operation_mode=“ROM“,altsyncram_component.outdata_aclr_a=“NONE“,altsyncram_component.outdata_reg_a=“UNREGISTERED“,altsyncram_component.widthad_a=10,altsyncram_component.width_a=8,altsyncram_component.width_byteena_a=1;endmodule七、試驗結(jié)果八、試驗總結(jié)生器的設(shè)計,學習和把握了DA轉(zhuǎn)換,更加嫻熟地使用Verilog語言據(jù)的把握,運用quartusII仿真和調(diào)用modelsim仿真。生疏軟件在編譯過程中消滅的錯誤和排解這些錯誤。試驗三開關(guān)把握燈連續(xù)閃耀一、試驗?zāi)康腝uartusIIVerilogDSP的使用方法。學習簡潔時序電路的設(shè)計分析和硬件測試。二、試驗內(nèi)容生疏信號產(chǎn)生板中的FPGA的一般I/O的連接;依據(jù)實際程序分析,體會用Verilog語言的編程產(chǎn)生相應(yīng)時序;QuartusIICycloneFPGA的程序開發(fā)、編譯與調(diào)試;生疏DSP軟件的操作環(huán)境,并學會連接DSP硬件進展調(diào)試實現(xiàn)相應(yīng)功能。DSP程序,使得兩局部同時工作,F(xiàn)PGA局部供給信號,使得實現(xiàn)燈連續(xù)閃耀的結(jié)果。三、試驗要求〔DSP〕中主要實現(xiàn)外部的開關(guān)按鈕S1的觸發(fā)產(chǎn)生中斷,DSP接HL4FPGA局部供給中斷信號,DSP局部實現(xiàn)由開關(guān)把握的燈閃耀。FPGA局部程序,中斷閃燈〔DSP〕文件夾DSP工作中所需要的相S1的觸發(fā)產(chǎn)生中斷,DSPHL4開頭閃耀。利用FPGA產(chǎn)生相關(guān)信號DSP的工作時鐘,DSPDSPDSP的0。利用DSP程序產(chǎn)生對應(yīng)的指示燈的輸入電平,初始程序中利用了DSP的flag8。五、試驗步驟1:FPGA局部建立工程Verilog文件,編寫相關(guān)程序verilog文件編譯為可視化電路圖文件將可視化電路圖文件添加輸入輸出組合成電路圖文件編譯語法及驗證原理圖依據(jù)需要安排管腳并進展編譯管腳FPGA上的安排FPGA上的連接管腳說明clk_inresetPIN_1640M240M復位信號,直接拉高clk_outPIN_320MDSP20Mclk_in分頻得到d1PIN_126FLAG8連接到燈HL5,使其處于熄滅狀態(tài)dout1PIN_130DSPRESETADSP-21065L復位信號sw3PIN_4KEYRESET連接到開關(guān)S1,用于發(fā)出中斷脈沖Irt0PIN_10IRQ0DSP0DSPled[0]PIN_127FLAG9連接到燈HL4,使其處于熄滅狀態(tài)led[1]PIN_128FLAG10連接到燈HL3,使其處于熄滅狀態(tài)led[2]PIN_129FLAG11連接到燈HL2,使其處于熄滅狀態(tài).so〔在線方式.po〔離線方式線方式。中斷產(chǎn)生2:DSP局部預備工作:1切入燒寫環(huán)境2選擇芯片型號連接燒寫器的狀況下選擇Emulator,否則可以選擇PCIHPPCI,使用USBHPUSB建立工程選擇芯片型號sourcefile中l(wèi)df文件按挨次直接到完畢開頭編譯,先單步運行幾步,然后再點擊run,由于在DSP慣狀況下,我們在起始幾步承受單步運行。主要參見程序說明局部:因d1連接到FLAG8上,故在DSP程序中只能把握HL5。利用開關(guān)S1把握燈HL5的閃滅,閃滅次數(shù)在DSP程序內(nèi)部設(shè)定。六、試驗設(shè)計FPGA所需信號1:moduletry001(reset,clk_in,clk_out,d1,dout1);inputclk_in,reset;outputclk_out,d1,dout1;reg[2:0]led;regclk_out;regd1;reg[12:0]cnt;reg[9:0] regdout1;regclkout8k;initialbegind1=1”bz;cnt=0;cnt1=0;dout1=0;endalways@(posedgeclk_in)beginif(!reset) clk_out=0;else clk_out=~clk_out;endalways@(posedgeclk_in)begincnt=cnt+1;if(cnt<=3999)beginclkout8k=0;endelsebeginclkout8k=1;endif(cnt==7999)begincnt=0;endendalways@(posedgeclkout8k)beginif(cnt1<=1000)cnt1=cnt1+1;elsecnt1=cnt1;if(cnt1<900)begindout1=0;endelsebegindout1=1;endendendmodule2:modulekaiguan(led,sw3,irt0);inputsw3;outputled,irt0;reg[2:0]led;reg irt0;initialbeginirt0=1”b1;endalways@(sw3)begincase(sw3)1”b0:beginled=3”b111;irt0=1”b0;end1”b1:beginled=3”b111;irt0=1”b1;enddefault:led=1”bx;endcaseendendmodule對應(yīng)電路符號為:1DSP工作條件2通過把握撥碼開關(guān)來把握相關(guān)燈閃滅DSP局部程序#defineADDR10x20230.section/PM seg_rth; //中斷向量表NOP;NOP;NOP;NOP; lib_rst1: nop;JUMP main;//初始復位中斷,當系統(tǒng)硬件復位時跳到該中斷指定的位置。

NOP;NOP;NOP;NOP;NOP;NOP; lib_SOVFI: RTI;RTI;RTI;RTI; lib_TMZHI: RTI;RTI;RTI;RTI; lib_VIRPTI: RTI;RTI;RTI;RTI; lib_IRQ2I: RTI;RTI;RTI;RTI; lib_IRQ1I: 信號,表示接收到數(shù)據(jù),該中斷地有效。NOP;NOP;NOP;NOP; lib_IRQ0I: NOP;JUMPshandeng;NOP;NOP; //IRQ0被觸發(fā)后,進入此中斷跳轉(zhuǎn)到閃燈程序 lib_SPR0I: 進中斷 lib_SPR1I: 中斷。 lib_SPT0I: RTI;RTI;RTI;RTI; lib_SPT1I: RTI;RTI;RTI;RTI;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP; lib_EP0I: RTI;RTI;RTI;RTI; lib_EP1I: RTI;RTI;RTI;RTI;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP; lib_CB7I: RTI;RTI;RTI;RTI; lib_CB5I: RTI;RTI;RTI;RTI; lib_TMZLI: RTI;RTI;RTI;RTI;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;.SECTION/PMseg_pmco; //主程序.globalmain;main:中斷初始化/////////////////////////////////////////nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;BITSETMODE1IRPTEN; //全局中斷使能// BITCLRMODE2IRQ0E; //0BITSETMODE2IRQ0E; nop;nop;nop;nop;//BITCLRMODE2IRQ1E; //電平觸發(fā)中斷1BITSETIMASKIRQ0I; //BITSETIMASKIRQ1I; //1kkk:

nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;jumpkkk(db);idle;main.END:shandeng:ustat1=dm(IOCTL); bitSETustat1FLG8;dm(IOCTL)=ustat1;lcntr=20,doLEDuntillce; //中斷后的閃燈次數(shù)ustat1=dm(IOSTAT); //FLAG8置零bitclrustat1FLG8;dm(IOSTAT)=ustat1;lcntr=65535,dowait1untillce; nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論