FPGA至簡設(shè)計法案例4 【12401003385】_第1頁
免費預(yù)覽已結(jié)束,剩余2頁可下載查看

下載本文檔

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

文檔簡介

1、fpga至簡設(shè)計法案例4 【12401003385】至簡設(shè)計法經(jīng)典案例4案例4. 當(dāng)收到en=1時,dout間隔1個時鐘后,產(chǎn)生2個時鐘周期的高電平脈沖,并且重復(fù)3次。上面波形圖顯示了描述的功能。第3個時鐘升高沿收到en=1,所以dout間隔1個時鐘后變1并且持續(xù)2個時鐘周期,這個動作重復(fù)3次,結(jié)束??吹酱笥?的數(shù)字,就知道要計數(shù)。下面的計數(shù)方式十分普遍:即用一個計數(shù)器,從頭數(shù)到尾。這個計數(shù)器的設(shè)計很容易,但產(chǎn)生dout信號就不簡單了。明德?lián)P推舉的計數(shù)方式如下:利用2個計數(shù)器。cnt0就如案例2一樣,數(shù)的是間隔和高電平常鐘;而計數(shù)器cnt1數(shù)的是重復(fù)次數(shù)。如案例2相同,需要添加信號flag_a

2、dd來指示cnt0的加1區(qū)域,波形如下圖。所以cnt0的加1條件是flag_add=1,計數(shù)3個就清零。認(rèn)真觀看cnt1可以看到,每次cnt0數(shù)完后,cnt1就會加1。所以cnt1的加1條件是end_cnt0,計數(shù)3個就清零。從而我們可以設(shè)計出cnt0和cnt1的代碼,輸入jsq2,即可調(diào)出模板。flag_add有兩個變幻點:變1和變0。變1是由于en=1,變0是由于重復(fù)次數(shù)都完了,也就是end_cnt1。所以flag_add代碼如下。dout有兩個變幻點:變1和變0。在cnt0數(shù)到1時(一個間隔)時變1,在cnt0數(shù)完時變0,所以dout的代碼如下。至此,本工程的主體程序已經(jīng)設(shè)計完畢,之后需

3、要讀者補(bǔ)充信號定義、輸入輸出定義了。將module的名稱定義為my_ex3。并且我們已經(jīng)知道該模塊有5個信號:clk、rst_n、en和dout。為此,代碼如下:其中clk、rst_n、en是輸入信號,dout是輸出信號,并且4個信號都是1比特的,按照這些信息,我們補(bǔ)充輸入輸出端口定義。代碼如下:接下來定義信號類型。cnt0是用always產(chǎn)生的信號,因此類型為reg。cnt0計數(shù)的最大值為2,需要用2根線表示,即位寬是2位。add_cnt0和end_cnt0都是用assign方式設(shè)計的,因此類型為wire。并且其值是0或者1,1個線表示即可。因此代碼如下:cnt1是用always產(chǎn)生的信號,

4、因此類型為reg。cnt1計數(shù)的最大值為2,需要用2根線表示,即位寬是2位。add_cnt1和end_cnt1都是用assign方式設(shè)計的,因此類型為wire。并且其值是0或者1,1個線表示即可。因此代碼如下:dout是用always方式設(shè)計的,因此類型為reg。并且其值是0或者1,1根線表示即可。因此代碼如下:flag_add是用always方式設(shè)計的,因此類型為reg。并且其值是0或者1,1根線表示即可。因此代碼如下:至此,囫圇代碼的設(shè)計工作已經(jīng)完成。整體代碼如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

5、25 26 27 28module my_ex4( clk , rst_n , en , dout );input clk ; input rst_n ; input en ; output dout ;reg 1:0 cnt0 ; wire add_cnt0 ; wire end_cnt0 ;reg 1:0 cnt1 ; wire add_cnt1 ; wire end_cnt1 ; always (posedge clk or negedge rst_n)begin if(!rst_n)begin cnt0 end else if(add_cnt0)begin if(end_cnt0) c

6、nt0 else cnt0 end endassign add_cnt0 = flag_add=1; assign end_cnt0 = add_cnt0 && cnt0=3-1 ;always (posedge clk or negedge rst_n)begin if(!rst_n)begin cnt1 end else if(add_cnt1)begin if(end_cnt1) cnt1 else cnt1 end endassign add_cnt1 = end_cnt0; assign end_cnt1 = add_cnt1 && cnt1=3-1

7、;reg flag_add ;always (posedge clk or negedge rst_n)begin if(rst_n=1'b0)begin flag_add end else if(en=1)begin flag_add end else if(end_cnt1)begin flag_add end endreg dout ;always (posedge clk or negedge rst_n)begin if(rst_n=1'b0)begin dout end else if(add_cnt0 && cnt0=1-1)begin dout end else if(end_cnt0)beg

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論