freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于veriloghdl的異步fifo設(shè)計畢業(yè)設(shè)計-資料下載頁

2025-06-19 12:40本頁面
  

【正文】 (讀時鐘域產(chǎn)生,異步于寫時鐘域)的增加,所以要把異步信號full同步到讀時鐘域產(chǎn)生wfull信號。當full/empty信號有效時,wfull/rempty會立即變?yōu)橛行?,當full/empty信號由有效變?yōu)闊o效時,可以看出wfull/rempty要進經(jīng)過2個周期的延時才從有效變?yōu)闊o效,把這種空滿標志稱作保守空滿標志,但是不會影響FIFO的性能。 仿真驗證根據(jù)以上分析,以深度為1數(shù)據(jù)寬度為8位的異步FIFO為例,用Verilog HDL編寫了各個模塊,并采用Mentor公司的仿真工具Modelsim SE 。設(shè)寫時鐘(wclk)周期為100MHz,讀時鐘(rclk)周期為 133MHz,F(xiàn)IFO寫、讀時序仿真結(jié)果分別下圖48所示。當FIFO寫滿時,滿標志wfull馬上由0變1,禁止寫數(shù)據(jù)并且寫地址也不再增加, FIFO只讀不寫;當FIFO讀空時,空標志rempty馬上由0變1,禁止讀數(shù)據(jù)并且讀地址也不再增加,F(xiàn)IFO只寫不讀???滿信號的變化情況滿足設(shè)計要求。圖48 仿真圖形5 總結(jié) 異步FIFO設(shè)計的總結(jié)本文討論了一種異步FIFO的設(shè)計方法,應(yīng)用Verilog HDL語言采用自頂向下的設(shè)計方法實現(xiàn)了FIFO的數(shù)據(jù)緩沖功能。它有四種FIFO態(tài)。經(jīng)驗證,該異步FIFO能夠安全的實現(xiàn)數(shù)據(jù)的跨時鐘域傳遞有數(shù)據(jù)緩沖作用,可以應(yīng)用到URAT(通用異步收發(fā)器),SPI(服務(wù)提供商接口)等通訊外設(shè)中。 設(shè)計方法的不足之處本文的異步FIFO設(shè)計使用格雷碼降低了亞穩(wěn)態(tài)的產(chǎn)生,但是還沒有完全消除,所以從設(shè)計上來說還沒有滿足要求,所以還需要改進。如果在設(shè)計跨不同時鐘域電路時,使用一些技術(shù)來降低通信失敗的風(fēng)險,則處理跨時鐘域的信號就不再是艱巨的任務(wù)。同步機制可以防止接收跨時鐘域信號的觸發(fā)器出現(xiàn)亞穩(wěn)態(tài),從而避免導(dǎo)致不可預(yù)知的電路行為。對于在多個時鐘周期內(nèi)一直保持有效的信號來說,電平同步器的效果很好。對于要轉(zhuǎn)換成新時鐘域脈沖的較慢時鐘域電平信號,要采用邊沿檢測同步器。最后,對跨時鐘域的脈沖信號應(yīng)使用脈沖同步器。而且,當一個信號總線跨越時鐘域時,整個總線要在同一個時鐘周期內(nèi)到達新的時鐘域。不要分別同步每一個信號,而要采用一個保持寄存器和握手方式。握手用來表示寄存器中的信號何時有效,何時可以采樣。對數(shù)據(jù)總線來說,握手和一個保持寄存器很有用,但每次向新時鐘域傳送的數(shù)據(jù)字都不能超過一個。附錄一 異步fifo的設(shè)計代碼module asynfifo(wrclk,rdata,reclk,wdata,wrst_n,rrst_n,wfull,rempty)。input wrclk,reclk。input wrst_n,rrst_n。input [7:0] wdata。output [7:0] rdata。output wfull,rempty。wire [7:0] wptr,rptr。wire wfulle,remptye。re_wr_logic re_wr_logic_a(.wrclk(wrclk),.wrst_n(wrst_n),.wfull(wfull),.wptr(wptr),.reclk(reclk),.rrst_n(rrst_n),.rempty(rempty),.rptr(rptr))。duralportram1 duralportram_a(.data(wdata),.wrclock(wrclk),.rdclock(reclk),.rdaddress(rptr),.rden(remptye),.wraddress(wptr),.wren(wfulle),.q(rdata))。assign wfulle=!wfull。assign remptye=!rempty。endmodule(產(chǎn)生讀寫指針和空滿標志)module re_wr_logic(wrclk,wrst_n,wfull,wptr,reclk,rrst_n,rempty,rptr)。parameter n=8。input wrclk。//input wren。//is it needed?input wrst_n。output reg wfull。output reg [n1:0] wptr。input reclk。input rrst_n。output reg rempty。output reg [n1:0] rptr。reg [7:0] wbin,rbin。wire [7:0] wbnext,wgnext,rbnext,rgnext。wire full,empty。wire dirset,dirrst,dirrst2。wire high=1。//???ok!reg direction。reg wfull2,rempty2。//reg [n1:0] wptr0,wptr1,rptr0,rptr1。always @(posedge wrclk or negedge wrst_n)//generate wptr if(!wrst_n) begin wptr=839。d0。 wbin=839。d0。 wfull2=839。d0。 wfull=839。d0。 end else begin wbin=wbnext。 wptr=wgnext。 endassign wbnext=wfull?wbin:wbin+1。assign wgnext=(wbnext1)^wbnext。always @(posedge reclk or negedge rrst_n)//generate rptr if(!rrst_n) begin rptr=0。 rbin=0。 rempty2=839。d0。 rempty=839。d0。 end else begin rbin=rbnext。 rptr=rgnext。 endassign rbnext=rempty?rbin:rbin+1。assign rgnext=(rbnext1)^rbnext。//generate full,wfull,empty,remptyassign dirset=~((wptr[n1]^rptr[n2])amp。(~(wptr[n2]^rptr[n1])))。assign dirrst=(~(wptr[n1]^rptr[n2]))amp。(wptr[n2]^rptr[n1])。assign dirrst2=~(dirrst||wrst_n)。always @(posedge high or negedge dirset or negedge dirrst2) if(!dirrst2) direction=0。 else if (!dirset) direction=1。 else direction=high。assign full=~((wptr==rptr)amp。(~direction))。assign empty=~(directionamp。(wptr==rptr))。always @(posedge wrclk or negedge full or negedge wrst_n) if (!wrst_n) {wfull,wfull2}=239。b00。 else if(!full) {wfull,wfull2}=239。b11。 else {wfull,wfull2}={wfull2,~full}。always @(posedge reclk or negedge empty) if(!empty) {rempty,rempty2}=239。b11。 else {rempty,rempty2}={rempty2,~empty}。endmodule(使用altera的lpm_ram_dp產(chǎn)生)module duralportram1 (data,rdaddress,rdclock,rden,wraddress,wrclock,wren,q)。input[7:0] data。input[7:0] rdaddress。input rdclock。input rden。input[7:0] wraddress。input wrclock。input wren。output[7:0] q。wire [7:0] sub_wire0。wire [7:0] q = sub_wire0[7:0]。altsyncramaltsyncram_ponent (.wren_a (wren),.clock0 (wrclock),.clock1 (rdclock),.address_a (wraddress),.address_b (rdaddress),.rden_b (rden),.data_a (data),.q_b (sub_wire0),.aclr0 (139。b0),.aclr1 (139。b0),.addressstall_a (139。b0),.addressstall_b (139。b0),.byteena_a (139。b1),.byteena_b (139。b1),.clocken0 (139。b1),.clocken1 (139。b1),.data_b ({8{139。b1}}),.q_a (),.wren_b (139。b0))。defparam = CLOCK1, = BYPASS, = BYPASS, = BYPASS, = Cyclone II, = altsyncram, = 256, = 256, = DUAL_PORT, = NONE, = CLOCK1, = FALSE, = CLOCK1, = 8, = 8, = 8, = 8, = 1。endmodule 參考文獻[1] 陳曦,:中國水利水電出版社,~84.[2] 潘松,:科學(xué)出版社,~46.[3] 鄭亞民,:國防工業(yè)出版社,~58.[4] :北京航空航天大學(xué)出版社,~87.[5] :電子工業(yè)出版社,~58. [6] 夏宇, :~70.[7] 朱永峰,陸生禮,,2003.(11)。60~61.[8] 魏芳,劉志軍,. 電子技術(shù)應(yīng)用,~102.[9] Cummings C E, Alfke P. Simulation and synthesis techniques for asynchronous FIFO design with asynchronous pointer parisons [Z]. SNUG, ~18.[10] :電子工業(yè)出版社,~225.第 39 頁 共 39 頁
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1