




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、西安郵電學(xué)院FPGA課程設(shè)計(jì)報(bào)告題目:基于RAM的十口8位計(jì)數(shù)器院系:通信與信息工程學(xué)院專業(yè)班級(jí):電科0902班學(xué)生姓名:趙荷導(dǎo)師姓名:劉正濤起止時(shí)間:2012-9-10至2012-9-21年月日FPGA課程設(shè)計(jì)報(bào)告提綱1 任務(wù)用一個(gè)10×8的雙口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.1f后仿 Q
2、uartus II 10.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中以選定的存儲(chǔ)單元。 3. 雙端口RAM為10×8RAM由一個(gè)地址切換鍵按順序切換110個(gè)地址端口。 4.系統(tǒng)工作流程:切換端口讀出數(shù)據(jù)開始計(jì)數(shù) 暫停計(jì)數(shù) 存入數(shù)據(jù)計(jì)數(shù)流程 5切換端口讀出數(shù) 七段顯示譯碼器譯碼 輸出到數(shù)碼管顯示 讀取結(jié)果輸出流程6 分頻:1Hz的秒計(jì)時(shí)頻率,用來(lái)進(jìn)行秒計(jì)時(shí);4.2設(shè)計(jì)方案信號(hào)定義:分頻模塊Clk_50MHzclk_1Hzreset clk_1MHz
3、分頻:1Hz的秒計(jì)時(shí)頻率,用來(lái)進(jìn)行秒計(jì)時(shí)分頻:時(shí)鐘信號(hào)clk_50MHz; 分頻信號(hào) clk_1Hz; 分頻信號(hào) clk_1MHz;計(jì)數(shù)模塊由RAM讀出初值doutclkclk_1hzdout 7:0din7:0startstartreset切換端口 讀出數(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_50MHz10×8RAM計(jì)數(shù)器dout7:03:0wr_addressrd3:0rd_adddressreseteetetstartaddRAM:
4、10×8的RAM存儲(chǔ)陣列10個(gè)字每個(gè)子8位輸入端 輸入地址wr_address3:0; 輸入數(shù)據(jù) din7:0; 上升沿有效寫入信號(hào) wr; 輸出端 輸出地址rd_address3:0; 輸出數(shù)據(jù) dout7:0; 上升沿有效讀信號(hào) rd;端口I/O功能rd I讀使能,高電平有效;系統(tǒng)使能工作,將din數(shù)據(jù)寫入ram的存儲(chǔ)單元中wr O寫使能,高電平有效;將ram存儲(chǔ)單元中的數(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存儲(chǔ)單元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)證對(duì)
6、象及目的本驗(yàn)證方案將描述對(duì)雙端口RAM計(jì)數(shù)器的驗(yàn)證。在本文中驗(yàn)證指使用軟件工具對(duì)其功能進(jìn)行驗(yàn)證。雙端口RAM計(jì)數(shù)器功能和指標(biāo)的詳細(xì)描述請(qǐng)參見雙端口RAM計(jì)數(shù)器技術(shù)規(guī)范.doc在本文所描述的驗(yàn)證過程中側(cè)重對(duì)RAM數(shù)據(jù)的讀取進(jìn)行驗(yàn)證,指標(biāo)主要在硬件驗(yàn)證和測(cè)試過程中完成。在本驗(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)地址控制10×8RAMenb.逐個(gè)完成各個(gè)模塊的驗(yàn)證分頻模塊:由于系統(tǒng)提供的頻率為50MHz而計(jì)數(shù)時(shí)需要的是每秒那樣計(jì)數(shù),故需要將50MHz分頻為1Hz.可為該程序編寫激勵(lì),得到輸出,用輸出的頻率與想要得到的1Hz的信號(hào)進(jìn)行比較,即可驗(yàn)證。計(jì)數(shù)模
8、塊:編寫完成后可通過查看仿真圖形確認(rèn)計(jì)數(shù)范圍,位寬等功能的正確。RAM存取模塊:需在仿真中編寫測(cè)試激勵(lì)對(duì)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ù)位信號(hào)置0(有效),在一定時(shí)間內(nèi)看系統(tǒng)是否產(chǎn)生空標(biāo)志;d.驗(yàn)證正常情況下的信號(hào):系統(tǒng)運(yùn)行時(shí),讓復(fù)位信號(hào)為1(即復(fù)位無(wú)效),根據(jù)輸入信號(hào)得出輸出信號(hào),與想要得到的信號(hào)進(jìn)行比較。4.4 電路設(shè)計(jì)源代碼,功能仿真激勵(lì)源代碼及功能仿真結(jié)果報(bào)告分頻器模塊:module FPQ (clk_50MHz,clk
9、_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=32'd0; reg 31:0 cnt2=32'd0; always(posedge clk_50MHz or negedge reset) begin if(!reset) clk_1Hz<=32'd0; else begin if(cnt1=32'd100) begin cnt1<=32'd0;clk_1Hz&l
10、t;=clk_1Hz; end else cnt1<=cnt1+32'd1; end end always(posedge clk_50MHz or negedge reset) begin if(!reset) clk_1MHz<=32'd0; else begin if(cnt2=32'd255) begin cnt2<=32'd0; clk_1MHz<=clk_1MHz; end else cnt2<=cnt2+32'd1; end end endmodule分頻器模塊激勵(lì):module FPQ_test; reg c
11、lk_50MHz,reset; wire clk_1MHz;wire clk_1Hz; always # 2 clk_50MHz=clk_50MHz; FPQ 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;i
12、nput start;input 7:0data; output c_out; reg 7:0 c_out; always(posedge clk_1Hz or negedge add ) begin if(!add) begin c_out<=data; end else begin if(start) begin c_out<=c_out+8'd1; if(c_out=8'd255) begin c_out<=0; end else c_out<=c_out+8'd1; end else c_out<=c_out; end end en
13、dmodule計(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(.start(start),.add(add),.clk_1Hz(clk_1Hz),.data(data),.c_out(c_out); initial begin clk_1Hz=0; add=0; start=0; data=8'd1; #15 add=1; #15 start=1; #600 start=0; end endmodule 數(shù)
14、碼管顯示模塊: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; reg6: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<=da
15、ta%10; end always(mid_b) begin case(mid_b) 7'd0:data_b<=7'hC0; 7'd1:data_b<=7'hF9; 7'd2:data_b<=7'hA4; 7'd3:data_b<=7'hB0; 7'd4:data_b<=7'h99; 7'd5:data_b<=7'h92; 7'd6:data_b<=7'h82; 7'd7:data_b<=7'hf8; 7'd8:
16、data_b<=7'h80; 7'd9:data_b<=7'h90; default:data_b<=7'hC0; endcase end always(mid_s) begin case(mid_s) 7'd0:data_s<=7'hC0; 7'd1:data_s<=7'hF9; 7'd2:data_s<=7'hA4; 7'd3:data_s<=7'hB0; 7'd4:data_s<=7'h99; 7'd5:data_s<
17、;=7'h92; 7'd6:data_s<=7'h82; 7'd7:data_s<=7'hf8; 7'd8:data_s<=7'h80; 7'd9:data_s<=7'h90; default:data_s<=7'hC0; endcase end always(mid_g) begin case(mid_g) 7'd0:data_g<=7'hC0; 7'd1:data_g<=7'hF9; 7'd2:data_g<=7'h
18、A4; 7'd3:data_g<=7'hB0; 7'd4:data_g<=7'h99; 7'd5:data_g<=7'h92; 7'd6:data_g<=7'h82; 7'd7:data_g<=7'hf8; 7'd8:data_g<=7'h80; 7'd9:data_g<=7'h90; default:data_g<=7'hC0; endcase end endmodule數(shù)碼管顯示模塊激勵(lì):module SMG_test; r
19、eg7: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(reset,wr
20、,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<=8'd1; mem2<=8'd2; mem3&
21、lt;=8'd3; mem4<=8'd4; mem5<=8'd5; mem6<=8'd6; mem7<=8'd7; mem8<=8'd8; mem9<=8'd9; mem10<=8'd10; end else begin if(wr) begin if(wr_address<=4'd10) memwr_address<=din; end endend always( posedge rd_clk or negedge reset)begin if(!reset) dou
22、t<=8'd0; else begin if(rd) begin dout<=memrd_address; end end end endmoduleRAM模塊激勵(lì):module RAM_test; 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;RAMram(.reset(reset),.wrn(wr),.wr_clk(wr_clk),.wr_address(wr_address),.rd(rd),
23、.rd_clk(rd_clk),.rd_address(rd_address),.din(din),.dout(dout); always #1 wr_clk=wr_clk; always #1 rd_clk=rd_clk; initial begin wr_clk<=0; rd_clk<=0; reset=0; wr<=0; rd<=0; wr_address<=4'd0; rd_address<=4'd0; din<=8'd0; #15 reset<=1 #15 rd<=1; #25 rd_address<
24、=4'd4;wr<=1; #35 din<=8'd5;wr_address<=4'd1;rd_address<=4'd1; #15 din<=8'd8;wr_address<=4'd6;rd_address<=4'd6; #15 reset<=0;rd_address<=4'd4; end endmodule頂層模塊:module RAM_count (reset,add,start,clk_50MHz,wr,wr_address,din,rd,rd_address,data_
25、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; FPQ fpq(.reset(reset),.clk_50MHz(clk_50MHz),.clk_1MHz(mid_clk_1
26、MHz),.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_1Hz),.start(start),.c_out(dout); SMG smg(.clk_1MHz(mid_clk_1Hz),
27、.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(reset),.add(add),.start(start),.wr(wr),.rd(rd),.clk_50MHz(clk_5
28、0MHz), .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=4'd1;rd_address=4'd1;clk_50MHz=0; add=1; # 125 reset=0; # 250 reset=1; #250 add=0; # 250
29、 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 硬件測(cè)試結(jié)果報(bào)告測(cè)試結(jié)果符合設(shè)計(jì)初衷,實(shí)現(xiàn)了將一個(gè)10×8的RAM變成十個(gè)8位的加法器,設(shè)置初始值為110,可以寫入和讀出數(shù)據(jù)進(jìn)行加法操作。4.8 對(duì)結(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ì),使我對(duì)這門課程有了一個(gè)更加深刻地認(rèn)識(shí)和感受,更加深入的了解了自己在課程學(xué)習(xí)上的不足以及理論學(xué)習(xí)和實(shí)踐相互結(jié)合的重要性。在電路的設(shè)計(jì)初始時(shí)刻,我沒有按照設(shè)計(jì)電路時(shí)從上到下的設(shè)計(jì)方法,而是盲目的對(duì)電路的模塊進(jìn)行設(shè)計(jì)。結(jié)果在最后的設(shè)計(jì)綜合的時(shí)候,設(shè)計(jì)的各個(gè)模塊不能進(jìn)行順
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保河道清淤合同協(xié)議書范文
- 傳統(tǒng)食品工業(yè)化生產(chǎn)2025年技術(shù)改造食品生產(chǎn)智能化生產(chǎn)線設(shè)備選型與市場(chǎng)競(jìng)爭(zhēng)力研究報(bào)告
- 傳統(tǒng)食品行業(yè)2025年技術(shù)改造食品添加劑使用規(guī)范研究報(bào)告
- 北京聯(lián)合大學(xué)《中醫(yī)藥文化實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 山西水利職業(yè)技術(shù)學(xué)院《數(shù)字營(yíng)銷》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東省龍口市第五中學(xué)2024-2025學(xué)年八年級(jí)數(shù)學(xué)第一學(xué)期期末復(fù)習(xí)檢測(cè)模擬試題含解析
- 江西省萍鄉(xiāng)市蘆溪縣2024-2025學(xué)年九年級(jí)化學(xué)第一學(xué)期期末聯(lián)考試題含解析
- 山東省青島市西海岸、平度、膠州2025屆九上化學(xué)期末復(fù)習(xí)檢測(cè)試題含解析
- 低碳城市案例研究:2025年城市規(guī)劃與城市安全風(fēng)險(xiǎn)防范措施001
- 部編本七年級(jí)語(yǔ)文上冊(cè)課題研究計(jì)劃
- 魚塘回填改耕地協(xié)議書
- T/CIE 150-2022現(xiàn)場(chǎng)可編程門陣列(FPGA)芯片時(shí)序可靠性測(cè)試規(guī)范
- T/CEPPEA 5028-2023陸上風(fēng)力發(fā)電機(jī)組預(yù)應(yīng)力預(yù)制混凝土塔筒施工與質(zhì)量驗(yàn)收規(guī)范
- 肥胖癥診療指南(2024年版)解讀課件
- 2025-2030年中國(guó)誘導(dǎo)多能干細(xì)胞(iPSC)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2024-2025學(xué)年江蘇省連云港市高二上學(xué)期期末調(diào)研考試物理試題(選修)(解析版)
- 從“全屋定制”到“整家定制”商業(yè)模式全景洞察課件
- GB/T 4948-2025鋁合金犧牲陽(yáng)極
- 醫(yī)院院長(zhǎng)競(jìng)聘試題及答案
- 掘進(jìn)專業(yè)試題庫(kù)及答案
- 2025年全省卷煙營(yíng)銷知識(shí)理論多選題含答案
評(píng)論
0/150
提交評(píng)論