版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、西安郵電學(xué)院fpga課程設(shè)計(jì)報(bào)告題 目: 基于ram的十口8位計(jì)數(shù)器 院 系: 通信與信息工程學(xué)院 專業(yè)班級: 電科0902班 學(xué)生姓名: 趙荷 導(dǎo)師姓名: 劉正濤 起止時(shí)間: 2012-9-10 至 2012-9-21 年 月 日fpga課程設(shè)計(jì)報(bào)告提綱1 任務(wù) 用一個(gè)108的雙口ram完成10個(gè)8位計(jì)數(shù)器,計(jì)數(shù)器的初值分別為110,時(shí)鐘頻率為1mhz,計(jì)數(shù)器計(jì)數(shù)頻率為1hz。 用fpga開發(fā)板上的按鍵作為計(jì)數(shù)器計(jì)數(shù)值的輸出選擇控制,數(shù)碼管 (或led)作為選擇計(jì)數(shù)器的計(jì)數(shù)值輸出。2 目的采用ram實(shí)現(xiàn)計(jì)數(shù)器及fpga功能驗(yàn)證3 使用環(huán)境 (軟件/硬件環(huán)境,設(shè)備等)前仿 modelsim 6
2、.1f后仿 quartus ii10.14 fpga課程設(shè)計(jì)詳細(xì)內(nèi)容4.1 技術(shù)規(guī)范功能:1 先由復(fù)位鍵從選定的ram地址中讀出預(yù)置的8位初值存入計(jì)數(shù)模塊。 2. 由開始鍵開始計(jì)數(shù),暫停鍵暫停計(jì)數(shù)并同時(shí)存入ram中以選定的存儲單元。 3. 雙端口ram為108ram由一個(gè)地址切換鍵按順序切換110個(gè)地址端口。 4.系統(tǒng)工作流程: 切換端口讀出數(shù)據(jù)開始計(jì)數(shù) 暫停計(jì)數(shù) 存入數(shù)據(jù) 計(jì)數(shù)流程 5切換端口讀出數(shù) 七段顯示譯碼器譯碼 輸出到數(shù)碼管顯示 讀取結(jié)果輸出流程6 分頻:1hz的秒計(jì)時(shí)頻率,用來進(jìn)行秒計(jì)時(shí);4.2 設(shè)計(jì)方案信號定義:分頻模塊clk_50mhzclk_1hz reset clk_1mh
3、z分頻:1hz的秒計(jì)時(shí)頻率,用來進(jìn)行秒計(jì)時(shí)分頻:時(shí)鐘信號clk_50mhz; 分頻信號 clk_1hz; 分頻信號 clk_1mhz; 計(jì)數(shù)模塊由ram讀出初值dout clkclk_1hz dout 7:0din7:0 start startreset切換端口 讀出數(shù)據(jù) 開始計(jì)數(shù) 暫停計(jì)數(shù) 存入數(shù)據(jù)計(jì)數(shù):開始計(jì)數(shù) start計(jì)數(shù)器復(fù)位 reset; 計(jì)數(shù)輸出 din7:0; 計(jì)數(shù)置數(shù) add;七段顯示譯碼器數(shù)碼管dout顯示模塊 wr7:0dinclk_50mhz108ram計(jì)數(shù)器dout7:03:0wr_addressrd3:0rd_adddressreseteetetstartaddra
4、m:108的ram存儲陣列10個(gè)字每個(gè)子8位輸入端 輸入地址 wr_address 3:0; 輸入數(shù)據(jù) din7:0; 上升沿有效寫入信號 wr; 輸出端 輸出地址rd_address3:0; 輸出數(shù)據(jù) dout7:0; 上升沿有效讀信號 rd;端口i/o功能rd i讀使能,高電平有效;系統(tǒng)使能工作,將din數(shù)據(jù)寫入ram的存儲單元中wr o寫使能,高電平有效;將ram存儲單元中的數(shù)據(jù)讀出dout.wr_address3:0i寫地址din7:0 i數(shù)據(jù)輸入口,內(nèi)部接口dout7:0 o數(shù)據(jù)輸出,內(nèi)部數(shù)據(jù)傳送reset i復(fù)位端,時(shí)鐘下降沿有效add i計(jì)數(shù)器置數(shù)端starti開始/暫停鍵,高電
5、平開始,低電平暫停rd_address3:0i讀地址rd_clki讀時(shí)鐘,下降沿觸發(fā)wr_clki寫時(shí)鐘,上升沿觸發(fā)地址劃分:ain3:0ram存儲單元00010000_000100100000_001000110000_001101000000_010001010000_010101100000_011001110000_011110000000_100010010000_100110100000_1010en數(shù)碼管(或led)顯示模塊startram輸入/輸出 110clk_1hzclk計(jì)數(shù)模塊置數(shù)控制分頻模塊控制模塊:開始、暫停、返回初值,計(jì)數(shù)器顯示切換4.3 功能驗(yàn)證方案(1)驗(yàn)證對象
6、及目的 本驗(yàn)證方案將描述對雙端口ram計(jì)數(shù)器的驗(yàn)證。在本文中驗(yàn)證指使用軟件工具對其功能進(jìn)行驗(yàn)證。 雙端口ram計(jì)數(shù)器功能和指標(biāo)的詳細(xì)描述請參見雙端口ram計(jì)數(shù)器技術(shù)規(guī)范.doc在本文所描述的驗(yàn)證過程中側(cè)重對ram數(shù)據(jù)的讀取進(jìn)行驗(yàn)證,指標(biāo)主要在硬件驗(yàn)證和測試過程中完成。在本驗(yàn)證過程中將驗(yàn)證以下內(nèi)容:(2)驗(yàn)證環(huán)境及工具 根據(jù)情況驗(yàn)證過程將使用以下的環(huán)境和工具進(jìn)行:a)windows環(huán)境下使用modelsim仿真工具;b)windows環(huán)境下使用quartusii工具。 為進(jìn)行驗(yàn)證還應(yīng)當(dāng)建立仿真激勵(lì)模塊(3)預(yù)確認(rèn)a.系統(tǒng)主要技術(shù)參數(shù); 經(jīng)分析,系統(tǒng)的的主要參數(shù)包括:引腳數(shù)目,引腳工作電壓,電源電
7、壓,系統(tǒng)的工作頻率。 b.系統(tǒng)的模塊數(shù)目及各模塊實(shí)現(xiàn)的功能及如何知道模塊工作正常;c.總模塊驗(yàn)證,看總系統(tǒng)是否正常工作。( 4)仿真確認(rèn):a.目的 初步確認(rèn)系統(tǒng)是否完成預(yù)期設(shè)計(jì)的功能;先分析芯片所有模塊連接關(guān)系,如下圖 時(shí)鐘分頻模塊計(jì)數(shù)模塊,實(shí)現(xiàn)計(jì)數(shù),暫停,和與ram之間的數(shù)據(jù)存取clk(50m)en clk_1hz顯示模塊led顯示clk (50m)地址控制108ramenb.逐個(gè)完成各個(gè)模塊的驗(yàn)證 分頻模塊:由于系統(tǒng)提供的頻率為50mhz而計(jì)數(shù)時(shí)需要的是每秒那樣計(jì)數(shù),故需要將50mhz分頻為1hz.可為該程序編寫激勵(lì),得到輸出,用輸出的頻率與想要得到的1hz的信號進(jìn)行比較,即可驗(yàn)證。 計(jì)數(shù)
8、模塊:編寫完成后可通過查看仿真圖形確認(rèn)計(jì)數(shù)范圍,位寬等功能的正確。 ram存取模塊:需在仿真中編寫測試激勵(lì)對ram進(jìn)行存取驗(yàn)證,在仿真圖形中確認(rèn)ram的存取功能的正確性。顯示模塊:把計(jì)數(shù)的結(jié)果通過七段顯示譯碼器顯示在數(shù)碼管上,觀察數(shù)碼管上的數(shù)字變化規(guī)律即可驗(yàn)證顯示模塊是否正確。c.驗(yàn)證空標(biāo)志產(chǎn)生邏輯:先將復(fù)位信號置0(有效),在一定時(shí)間內(nèi)看系統(tǒng)是否產(chǎn)生空標(biāo)志;d.驗(yàn)證正常情況下的信號:系統(tǒng)運(yùn)行時(shí),讓復(fù)位信號為1(即復(fù)位無效),根據(jù)輸入信號得出輸出信號,與想要得到的信號進(jìn)行比較。4.4 電路設(shè)計(jì)源代碼,功能仿真激勵(lì)源代碼及功能仿真結(jié)果報(bào)告分頻器模塊:module fpq (clk_50mhz,c
9、lk_1mhz,reset,clk_1hz); input clk_50mhz,reset; output clk_1mhz,clk_1hz; reg clk_1hz=0; reg clk_1mhz=0; reg 31:0 cnt1=32d0; reg 31:0 cnt2=32d0; always(posedge clk_50mhz or negedge reset) begin if(!reset) clk_1hz=32d0; else begin if(cnt1=32d100) begin cnt1=32d0;clk_1hz=clk_1hz; end else cnt1=cnt1+32d1
10、; end end always(posedge clk_50mhz or negedge reset) begin if(!reset) clk_1mhz=32d0; else begin if(cnt2=32d255) begin cnt2=32d0; clk_1mhz=clk_1mhz; end else cnt2=cnt2+32d1; end end endmodule分頻器模塊激勵(lì):module fpq_test; reg clk_50mhz,reset; wire clk_1mhz;wire clk_1hz; always # 2 clk_50mhz=clk_50mhz; fpq
11、fpq(.reset(reset),.clk_50mhz(clk_50mhz),.clk_1mhz(clk_1mhz),.clk_1hz(clk_1hz); initial begin reset=0; clk_50mhz=0; #100 reset=1; endendmodule計(jì)數(shù)器模塊:module jsq(start,data,clk_1hz,add,c_out); input clk_1hz,add;input start;input 7:0data; output c_out; reg 7:0 c_out; always(posedge clk_1hz or negedge add
12、 ) begin if(!add) begin c_out=data; end else begin if(start) begin c_out=c_out+8d1; if(c_out=8d255) begin c_out=0; end else c_out=c_out+8d1; end else c_out=c_out; end end endmodule計(jì)數(shù)器激勵(lì):module jsq_test; reg start,add; reg clk_1hz; reg 7:0data; wire 7:0 c_out; always #1 clk_1hz=clk_1hz; jsq jsq(.star
13、t(start),.add(add),.clk_1hz(clk_1hz),.data(data),.c_out(c_out); initial begin clk_1hz=0; add=0; start=0; data=8d1; #15 add=1; #15 start=1; #600 start=0; end endmodule 數(shù)碼管顯示模塊:module smg (clk_1mhz,data,data_g,data_s,data_b); input7:0 data; input clk_1mhz; output data_b; output data_s;output data_g; r
14、eg6:0data_b; reg6:0data_s;reg6:0data_g; reg 7:0mid_b; reg 7:0mid_s; reg 7:0mid_g; always(posedge clk_1mhz) begin mid_b=data/100; mid_s=data%100/10; mid_g=data%10; end always(mid_b) begin case(mid_b) 7d0:data_b=7hc0; 7d1:data_b=7hf9; 7d2:data_b=7ha4; 7d3:data_b=7hb0; 7d4:data_b=7h99; 7d5:data_b=7h92;
15、 7d6:data_b=7h82; 7d7:data_b=7hf8; 7d8:data_b=7h80; 7d9:data_b=7h90; default:data_b=7hc0; endcase end always(mid_s) begin case(mid_s) 7d0:data_s=7hc0; 7d1:data_s=7hf9; 7d2:data_s=7ha4; 7d3:data_s=7hb0; 7d4:data_s=7h99; 7d5:data_s=7h92; 7d6:data_s=7h82; 7d7:data_s=7hf8; 7d8:data_s=7h80; 7d9:data_s=7h
16、90; default:data_s=7hc0; endcase end always(mid_g) begin case(mid_g) 7d0:data_g=7hc0; 7d1:data_g=7hf9; 7d2:data_g=7ha4; 7d3:data_g=7hb0; 7d4:data_g=7h99; 7d5:data_g=7h92; 7d6:data_g=7h82; 7d7:data_g=7hf8; 7d8:data_g=7h80; 7d9:data_g=7h90; default:data_g=7hc0; endcase end endmodule數(shù)碼管顯示模塊激勵(lì):module sm
17、g_test; reg7:0 data; reg clk_1mhz; wire 6:0data_g; wire 6:0data_s; wire 6:0data_b;smg smg(.data(data),.clk_1mhz(clk_1mhz),.data_g(data_g),.data_s(data_s),.data_b(data_b);always # 10 clk_1mhz=clk_1mhz;initial begin data=0;clk_1mhz=0; #25 data=35; #25 data=15; #25 data=93 end endmoduleram模塊:module ram
18、(reset,wr,wr_clk,wr_address,din,rd,rd_clk,rd_address,dout); input wr,wr_clk,reset; input 3:0wr_address; input 7:0din; input rd,rd_clk; input 3:0rd_address; output 7:0dout; reg 7:0dout=0; reg7:0 mem 1:10; always(posedge wr_clk or negedge reset)begin if(!reset) begin mem1=8d1; mem2=8d2; mem3=8d3; mem4
19、=8d4; mem5=8d5; mem6=8d6; mem7=8d7; mem8=8d8; mem9=8d9; mem10=8d10; end else begin if(wr) begin if(wr_address=4d10) memwr_address=din; end endend always( posedge rd_clk or negedge reset)begin if(!reset) dout=8d0; else begin if(rd) begin dout=memrd_address; end end end endmoduleram模塊激勵(lì):module ram_tes
20、t; reg reset,wr,rd; reg wr_clk,rd_clk; reg 3:0wr_address,rd_address; reg 7:0 din; wire 7:0 mem 1:10; wire 7:0 dout;ram ram(.reset(reset),.wrn(wr),.wr_clk(wr_clk),.wr_address(wr_address),.rd(rd),.rd_clk(rd_clk),.rd_address(rd_address),.din(din),.dout(dout); always #1 wr_clk=wr_clk; always #1 rd_clk=r
21、d_clk; initial begin wr_clk=0; rd_clk=0; reset=0; wr=0; rd=0; wr_address=4d0; rd_address=4d0; din=8d0; #15 reset=1 #15 rd=1; #25 rd_address=4d4;wr=1; #35 din=8d5;wr_address=4d1;rd_address=4d1; #15 din=8d8;wr_address=4d6;rd_address=4d6; #15 reset=0;rd_address=4d4; end endmodule頂層模塊:module ram_count (
22、reset,add,start,clk_50mhz,wr,wr_address,din,rd,rd_address,data_g,data_s,data_b); input reset,add,start,wr,rd,clk_50mhz; input 3:0wr_address,rd_address; input7:0 din; output 6:0data_g,data_s,data_b; wire 6:0 data_g,data_s,data_b; wire 7:0 dout; wire 7:0 mid_data; wire mid_clk_1hz; wire mid_clk_1mhz;
23、fpq fpq(.reset(reset),.clk_50mhz(clk_50mhz),.clk_1mhz(mid_clk_1mhz),.clk_1hz(mid_clk_1hz); ram ram(.reset(reset),.wr(wr),.wr_clk(mid_clk_1mhz),.wr_address(wr_address),.din(din),.rd(rd),.rd_clk(mid_clk_1mhz),.rd_address(rd_address),.dout(mid_data); jsq jsq(.add(add),.data(mid_data),.clk_1hz(mid_clk_1
24、hz),.start(start),.c_out(dout); smg smg(.clk_1mhz(mid_clk_1hz),.data(dout),.data_g(data_g),.data_s(data_s),.data_b(data_b);endmodule頂層模塊激勵(lì):module ram_count_test; reg reset,add,start,wr,rd; reg clk_50mhz; reg 3:0wr_address,rd_address; reg 7:0 din; wire 6:0 data_g,data_s,data_b; ram_count ram( .reset(
25、reset),.add(add),.start(start),.wr(wr),.rd(rd),.clk_50mhz(clk_50mhz), .wr_address(wr_address), .rd_address(rd_address),.din(din),.data_g(data_g),.data_s(data_s),.data_b(data_b); always #1 clk_50mhz=clk_50mhz; initial begin reset=1;start=1;din=1;wr=0;rd=1; wr_address=4d1;rd_address=4d1;clk_50mhz=0; a
26、dd=1; # 125 reset=0; # 250 reset=1; #250 add=0; # 250 add=1; # 250 wr=0;rd=1; # 10000 start=0; # 250 wr=1;rd=0; end endmodule4.5 綜合及布局布線報(bào)告和引腳分布報(bào)告綜合圖:管腳分配圖:時(shí)鐘分配圖:4.6 后仿真結(jié)果報(bào)告4.7 硬件測試結(jié)果報(bào)告測試結(jié)果符合設(shè)計(jì)初衷,實(shí)現(xiàn)了將一個(gè)108的ram變成十個(gè)8位的加法器,設(shè)置初始值為110,可以寫入和讀出數(shù)據(jù)進(jìn)行加法操作。4.8 對結(jié)果和結(jié)論的問題討論實(shí)驗(yàn)結(jié)果基本上符合設(shè)計(jì)要求和初衷,主體功能可以很好的實(shí)現(xiàn),但是在一些細(xì)節(jié)上沒有做到很好的規(guī)劃,比如在后仿真時(shí)出現(xiàn)了部分高阻狀態(tài),后檢查發(fā)現(xiàn)是由于在ram模塊中的復(fù)位有問題。5.課程設(shè)計(jì)的心得體會(huì)經(jīng)過兩周的fpga課程設(shè)計(jì),使我對這門課程有了一個(gè)更加深刻地認(rèn)識和感受,更加深入的了解了自己在課程學(xué)習(xí)上的不足以及理論學(xué)習(xí)和實(shí)踐相互結(jié)合的重要性。在電路的設(shè)計(jì)初始時(shí)刻,我沒有按照設(shè)計(jì)電路時(shí)從上到下的設(shè)計(jì)方法,而是盲目的對電路的模塊進(jìn)行設(shè)計(jì)。結(jié)果在最后的設(shè)計(jì)綜合的時(shí)候,設(shè)計(jì)的各個(gè)模塊不能進(jìn)行順利的綜合和仿真。尤其是在數(shù)碼管和ram模塊中出現(xiàn)了較大的問題,單個(gè)模塊測試時(shí),都是正確的,但是綜合在一起時(shí),就出現(xiàn)了問題。后來在老師和同學(xué)的幫助下,我發(fā)現(xiàn)原來是時(shí)鐘不匹配的問題。經(jīng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度茶葉企業(yè)融資顧問服務(wù)合同4篇
- 2025年度地質(zhì)勘探沉降監(jiān)測合同4篇
- 二零二五年度代持股份及股權(quán)激勵(lì)實(shí)施監(jiān)管協(xié)議4篇
- 二零二五年度路燈照明設(shè)備節(jié)能環(huán)保采購合同4篇
- 2025年度特色苗木種植基地建設(shè)項(xiàng)目合作協(xié)議4篇
- 二零二五年度動(dòng)漫游戲展攤位租賃協(xié)議3篇
- 2025年度精密模具購銷合作協(xié)議書4篇
- 二零二五年度存量房買賣合同范本模板(含合同履行與監(jiān)督)4篇
- 2025版互聯(lián)網(wǎng)平臺用戶服務(wù)協(xié)議示范文本4篇
- 二零二五年度生態(tài)平衡維護(hù)與蟲害防治合作協(xié)議4篇
- C及C++程序設(shè)計(jì)課件
- 帶狀皰疹護(hù)理查房
- 公路路基路面現(xiàn)場測試隨機(jī)選點(diǎn)記錄
- 平衡計(jì)分卡-化戰(zhàn)略為行動(dòng)
- 國家自然科學(xué)基金(NSFC)申請書樣本
- 幼兒教師干預(yù)幼兒同伴沖突的行為研究 論文
- 湖南省省級溫室氣體排放清單土地利用變化和林業(yè)部分
- 材料設(shè)備驗(yàn)收管理流程圖
- 培訓(xùn)機(jī)構(gòu)消防安全承諾書范文(通用5篇)
- (完整版)建筑業(yè)10項(xiàng)新技術(shù)(2017年最新版)
- 第8期監(jiān)理月報(bào)(江蘇版)
評論
0/150
提交評論