單口ram計(jì)數(shù)器的課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  單口RAM計(jì)數(shù)器</b></p><p><b>  設(shè)計(jì)題目</b></p><p>  用一個(gè)8×256的單口RAM完成256個(gè)8位計(jì)數(shù)器,計(jì)數(shù)器的初值分別為0-255,時(shí)鐘頻率為10MHz,計(jì)數(shù)器計(jì)數(shù)頻率為5/256MHz。</p><p><b>  設(shè)計(jì)規(guī)范<

2、;/b></p><p>  1、功能:完成一個(gè)模為256的計(jì)數(shù)器。</p><p><b>  2、輸入輸出變量:</b></p><p>  Clk(輸入時(shí)鐘)、rst_n(復(fù)位信號(hào))、outdata(輸出信號(hào))</p><p>  Clk:時(shí)鐘信號(hào),10MHZ</p><p>  rs

3、t_n:復(fù)位信號(hào),低電平有效,當(dāng)復(fù)位信號(hào)有效時(shí),對(duì)存儲(chǔ)單元進(jìn)行復(fù)位,具體設(shè)計(jì):</p><p>  if(!rst_n)</p><p><b>  begin</b></p><p>  for(i=0;i<256;i=i+1)</p><p>  RAM[i]<=i; </p><p&

4、gt;<b>  end </b></p><p>  outdata: 輸出變量,對(duì)存儲(chǔ)單元的計(jì)數(shù)情況進(jìn)行檢驗(yàn),方便檢查。</p><p><b>  3、實(shí)現(xiàn)方案</b></p><p>  首先對(duì)整個(gè)系統(tǒng)的功能進(jìn)行研究,將整個(gè)系統(tǒng)進(jìn)行模塊劃分:</p><p><b>  模塊劃分說

5、明:</b></p><p>  二分頻功能塊:對(duì)系統(tǒng)時(shí)鐘進(jìn)行而分頻,形成5MHZ的時(shí)鐘;</p><p>  輸入變量clk(10MHZ),輸出變量為clk1(5MHZ)。</p><p>  一個(gè)地址自加模塊:當(dāng)一個(gè)時(shí)鐘上升沿來時(shí),觸發(fā)地址器加一,從而對(duì)ram單元進(jìn)行選擇,也就是實(shí)現(xiàn)了對(duì)5MHZ的256分頻,所以通過以上兩個(gè)模塊,共同完成了頻率為5/

6、256MHZ的時(shí)鐘。輸入信號(hào)為clk1(5MHZ),輸出變量為8位寬的地址信號(hào)。</p><p>  存儲(chǔ)單元:存儲(chǔ)功能,存放每個(gè)計(jì)數(shù)器的值。</p><p>  存儲(chǔ)容量:256*8,</p><p>  輸入變量:地址信號(hào)、時(shí)鐘信號(hào)clk1</p><p>  輸出變量:outdata(檢驗(yàn)結(jié)果正確性,可有可無)</p>&

7、lt;p><b>  總體實(shí)現(xiàn)方式</b></p><p><b>  最終模塊</b></p><p><b>  模塊劃分</b></p><p><b>  模塊功能</b></p><p>  二分頻:對(duì)時(shí)鐘頻率進(jìn)行分頻,得到5MHZ的頻率信

8、號(hào)clk1</p><p>  8bit地址:由每個(gè)時(shí)鐘信號(hào)clk1進(jìn)行觸發(fā),將地址信號(hào)addr進(jìn)行加一,并將結(jié)果送至存儲(chǔ)單元進(jìn)行單元選擇。</p><p>  256*8的RAM:實(shí)現(xiàn)8個(gè)模為256的計(jì)數(shù)器,并有地址線進(jìn)行選擇輸出。</p><p><b>  模塊源代碼</b></p><p><b>  

9、1、二分頻</b></p><p>  module diff_f(clk,out);//分頻器</p><p>  input clk;</p><p>  output out;</p><p><b>  reg out;</b></p><p><b>  initi

10、al</b></p><p><b>  out=0;</b></p><p>  always @(posedge clk) //分頻</p><p>  out = out+1;</p><p><b>  endmodule</b></p><p><

11、b>  2、地址自加</b></p><p>  module address(clk1,addr1);</p><p>  input clk1; //輸入時(shí)鐘</p><p>  output [7:0]addr1;//輸出地址</p><p>  reg [7:0]addr1;</p><p>

12、  always@(negedge clk1 or negedge rst_n)</p><p>  if(!rst_n)</p><p>  addr1<=8'b0000_0000;</p><p>  else //if(clk1)</p><p>  addr1<=addr1+1; //地址加</p>

13、<p>  endmodule </p><p><b>  3、RAM存儲(chǔ)單元</b></p><p>  module ram256_8(clk2,addr2,rst_n,outdata);</p><p>  input clk2; //輸入時(shí)鐘</p><p>  inpu

14、t rst_n; //復(fù)位信號(hào)</p><p>  input [7:0]addr2; //地址信號(hào)</p><p>  output [7:0]outdata; //輸出驗(yàn)證</p><p>  reg [7:0] outdata;</p><p>  reg [7:0] RAM [255:0];</

15、p><p>  integer i;</p><p>  always @(negedge clk2 or posedge rst_n ) </p><p>  if(!rst_n) //系統(tǒng)復(fù)位</p><p><b>  begin</b></p><p>

16、;  for(i=0;i<256;i=i+1)</p><p>  RAM[i]<=i; </p><p><b>  end </b></p><p><b>  else</b></p><p><b>  begin</b></p><p&

17、gt;  RAM[addr2] = RAM[addr2]+1; //計(jì)數(shù)器值加一 </p><p><b>  end </b></p><p>  always @(negedge clk2 ) </p><p>  outdata <= RAM[addr2];</p><p>  /* always @

18、(posedge clk2)</p><p>  outdata <=RAM[addr2-1]; */ </p><p>  endmodule4、頂層模塊</p><p>  module top(clk0,rst_n0,outdata0);</p><p><b>  //輸入信號(hào)說明</b></p

19、><p>  input clk0;</p><p>  input rst_n0;</p><p><b>  //輸出信號(hào)</b></p><p>  input clk0;</p><p>  input rst_n0;</p><p>  output [7:0]out

20、data0;</p><p>  wire clk_t;</p><p>  wire [7:0]addr_t;</p><p>  wire[7:0] outdata0;</p><p>  diff_f duv1(.clk(clk0),.out(clk_t));//模塊實(shí)例化</p><p>  address

21、 duv2(.clk1(clk_t),.addr1(addr_t),.rst_n(rst_n0));</p><p>  ram256_8 duv3(.clk2(clk_t),.addr2(addr_t),.rst_n(rst_n0),.outdata(outdata0)); </p><p><b>  endmodule</b></p>&l

22、t;p><b>  5、驗(yàn)證模塊</b></p><p>  `timescale 1ns/100ps //時(shí)間精度</p><p>  module test;</p><p><b>  reg CLK;</b></p><p>  reg RST_N;</p><p

23、>  wire [7:0]OUT;</p><p>  top cc(.clk0(CLK),.rst_n0(RST_N),.outdata0(OUT)); //頂層模塊實(shí)例化 </p><p><b>  initial</b></p><p><b>  begin</b></p><p>

24、;  RST_N=0; //對(duì)系統(tǒng)進(jìn)行清零</p><p>  #3 RST_N=1; //復(fù)位信號(hào)無效</p><p><b>  end</b></p><p><b>  initial </b></p><p><b>  begin </b></p>

25、<p><b>  CLK=1;</b></p><p>  forever #1 CLK=~CLK;</p><p><b>  end</b></p><p>  endmodule </p><p><b>  設(shè)計(jì)驗(yàn)證</b></p>

26、<p>  通過對(duì)設(shè)計(jì)的模塊進(jìn)行仿真,得到計(jì)數(shù)器的功能正確,其輸出波形如下:</p><p><b>  經(jīng)驗(yàn)證結(jié)果正確。</b></p><p>  綜合布線所得圖形如下:</p><p><b>  后仿波形</b></p><p><b>  試驗(yàn)心得</b>&

27、lt;/p><p>  通過本段時(shí)間的學(xué)習(xí),最大的感觸便是能學(xué)到新的知識(shí),能將學(xué)到的知識(shí)學(xué)以致用,更深的體會(huì)了Verilog、fpge的實(shí)際應(yīng)用。</p><p>  首先在實(shí)驗(yàn)設(shè)計(jì)開始,一定要明白整個(gè)系統(tǒng)的功能以及工作原理,也就是進(jìn)行系統(tǒng)分析,然后可采用自頂向下進(jìn)行各個(gè)子模塊的具體分析,進(jìn)行相應(yīng)的設(shè)計(jì),并且對(duì)每個(gè)模塊進(jìn)行分別得設(shè)計(jì)與驗(yàn)證,然后再進(jìn)行整體綜合與驗(yàn)證,檢驗(yàn)設(shè)計(jì)的設(shè)計(jì)完整與正確性。

28、</p><p>  在實(shí)驗(yàn)中遇到的問題是:對(duì)于變量的設(shè)計(jì)以及定義線網(wǎng)(wire)、還是寄存器(reg)類型至關(guān)重要,比如說在模塊與模塊之間連線時(shí),上一級(jí)的輸出作為下一級(jí)的輸入時(shí),應(yīng)該定義成wire類型,但作為輸入時(shí),應(yīng)定義成reg類型。</p><p>  其次是,在時(shí)鐘的設(shè)計(jì)方面,盡量避免時(shí)鐘延遲,因?yàn)橐患?jí)延遲可能導(dǎo)致后面模塊出現(xiàn)以外而不可避免的錯(cuò)誤,所以在設(shè)計(jì)時(shí),要細(xì)致認(rèn)真的設(shè)計(jì)時(shí)鐘

29、信號(hào)。且,在每個(gè)使用的if語(yǔ)句過程中,要盡量與else進(jìn)行匹配,以免產(chǎn)生鎖存。</p><p>  再次是,在試驗(yàn)中,應(yīng)學(xué)習(xí)模塊設(shè)計(jì)過程中的分析問題的方法,比如采用自頂向下還是采用自底向上的思路,要將每個(gè)模塊劃分清楚,明白每個(gè)模塊的具體內(nèi)容與功能,且明白每個(gè)模塊所需的端口以及變量定義。先寫好可行性報(bào)告,分析方案的可行性,然后再書寫電路,進(jìn)行設(shè)計(jì)。我想,在模塊設(shè)計(jì)中,一定要先驗(yàn)證可行性,為后面工作做好鋪墊,且此工作

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論