異步時鐘域數據復用設計_第1頁
異步時鐘域數據復用設計_第2頁
異步時鐘域數據復用設計_第3頁
異步時鐘域數據復用設計_第4頁
異步時鐘域數據復用設計_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上精選優質文檔-傾情為你奉上專心-專注-專業專心-專注-專業精選優質文檔-傾情為你奉上專心-專注-專業異步時鐘域數據復用設計5 吳艷兵1,設計思路: 在FIFO的輸入端是兩路數據同時輸入,但要將第二路DIN的數據插入TS_IN的空幀當中,就需要將DIN進行存儲,由于DIN的時鐘頻率比TS_IN的頻率低,因此需要異步的FIFO來實現復用,而TS傳輸流中的空幀足夠多,這就保證了能夠將DIN的數據不丟失的插入到TS_IN的空幀中去,并輸出,而且是按照TS傳輸流格式進行傳輸。這里因為TS_IN的空幀中有7個是空位,因此我選擇FIFO的存儲深度為16個8位的,這樣能夠保證在存到一

2、半左右的數據時就會從FIFO中讀取數據輸出,而保證了FIFO不會被存滿的情況。2,設計流程:本次設計分為3個模塊。第一個模塊,分為四種狀態。,CHECKOUTTWO(開始檢測輸出模式),此狀態在SYNC高電平到來的時候就進入,然后檢測后來數據是否是EE:是,則進入OUTTWO(模式二確定狀態);不是,則進入OUTONE(輸出模式一態),輸出的是TS_IN的數據,并且FIFO繼續存儲DIN的數據。,OUTTWO(模式二確定狀態),檢測后來數據是否是EE,如果不是,進入OUTONE(輸出模式一態),輸出TS_IN的數據,并輸出!en低電平;如果是EE,進入OUT_TWO(輸出模式二態),并輸出en

3、高電平,驅動FIFO輸出,此時輸出保存在FIFO中的數據。,OUTONE(輸出模式一態),輸出TS_IN的數據,并持續保持在該狀態,維持輸出!En低電平,直到下一個SYNC高電平的到來。,OUTTWO(輸出模式二態),輸出保存在FIFO中的數據,并持續保持該狀態,未出輸出en高電平,直到下一個SYNC高電平的到來。3,第二個模塊,FIFO,我是直接調用的Quartus自帶的異步時鐘FIFO來處理DIN數據的存儲。4,第三個模塊,我編寫的是一個兩路選擇模塊,實現的是檢測第一個模塊的en輸出,如果是高,則將通路切換到第二路,輸出FIFO中存儲的DIN數據。如果是低,則將通路切換到第一路,輸出TS_

4、IN的數據,這樣進行兩路的切換也就相當于是實現了兩路異步時鐘數據的插入操作。5,狀態轉移圖:,模塊一MY狀態轉移:OUT_TWOOUTTWO EE EEOUT_TWOOUTTWOCHECKOUTTWOSYNC CHECKOUTTWO !EEOUTONEOUTONE !EE,模塊三choose狀態轉移則比較簡單:START SYNC START !en en輸出第一路TS_IN輸出第二路DIN輸出第一路TS_IN輸出第二路DIN6,Quartus硬件布局:7,仿真結果,由于Quartus的觀察長度有限,我在這里只能設定另外的clk和clk_w時鐘。為了區別兩路數據,我將第一路TS_IN都設置為有

5、A-F的字母組成的16進制數據,第二路DIN都設置為有0-9組成的16進制數據。可以看到,TS_IN和d兩路輸入和各自在模塊一和FIFO的處理之后的輸出,以及經過choose選擇模塊選擇通路之后的輸出,當enr變高時,d路數據完全插進到TS_IN數據的空幀當中輸出了。4,程序代碼: /*模塊一MY代碼*module MY( clk_in, ts_in,state, en_out, sync, ts_out );inputsync,clk_in;/同步表示及時鐘input7:0ts_in; /輸入數據流outputen_out;/使能輸出output7:0 ts_out;/數據輸出口output

6、3:0 state;/狀態寄存器/*狀態定義*parameterCHECKOUTTWO = 3b001;/開始檢測輸出模式parameterOUTTWO = 3b010;/模式二確定態parameterOUT_TWO = 3b011;/輸出模式二態parameterOUTONE= 3b100;/輸出模式一態/ regs & wiresreg3:0state;reg7:0 ts_out;reg en_out;/*狀態轉移部分*always ( negedge clk_in )if ( sync=1 )begin state = CHECKOUTTWO;en_out=0;ts_out=ts_in;

7、endelsecase ( state )/*開始檢測輸出模式*CHECKOUTTWO : begin ts_out=ts_in; if (ts_in = 8HEE)begin state = OUTTWO; /當檢測到第一個EE時,進入模式二確定態,并抑制FIFO,不讓他輸出存在其中的DIN數據。 en_out=0;endelse state =OUTONE;/當沒有檢測到EE時,立刻進入輸出模式一態。end/*模式二確定態*OUTTWO: begin ts_out=ts_in; if (ts_in = 8HEE)begin state = OUT_TWO; /搜索到第二個EE時,立刻進入輸

8、出模式二態。end elsestate = OUTONE; /第三個字不是EE時,進入輸出模式一態。 end/*輸出模式二態*OUT_TWO: begin en_out=1; /輸出一個使能,使能FIFO輸出存儲在其中的DIN數據,并維持在此狀態直到下一個SYNC高的到來重新進行狀態判斷。 state=OUT_TWO;end/*輸出模式一態*OUTONE:beginstate=OUTONE; /此時輸出TS_IN數據,并輸出一個低的en,讓FIFO不輸出,繼續存數據直到下一個SYNC高電平的到來再重新進行狀態的判斷。ts_out=ts_in; en_out=0;endendcaseendmodule/*模塊三choose代碼*module choose(en,input_one,input_two,clk,sync,data);inputen,clk,sync;/使能,時鐘,同步標志input7:0input_one;/第一路輸入數據input7:0input_two; /第二路輸入數據output7:0data; /輸出數據reg7:0data; /數據輸出口/*通路選擇部分*always

溫馨提示

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

評論

0/150

提交評論